• DASTURIY INJENERING Mavzu: Entitiy frameworkda vorislash
  • Smartphone
  • Dasturiy injinering 1-mustaqil ish




    Download 192.9 Kb.
    Sana23.10.2023
    Hajmi192.9 Kb.
    #90441
    Bog'liq
    Dasturiy injinering 1-mustaqil ish
    Sillabus komp.arx sirtqi, Сайлов участкаси учун, Ilk o\'spirinlikning psixologik xususiyatlari by Yusupova Hilola, Abduqodir Qurolov, МАЖМУА Студ ЛОТИН (2), Qanday o’zbek piravayderlarini bilasiz, Qo\'llanma tarjima, KIRISIW omir qawipsizligi, Qawplerdi kvantifiaciylardin sani, 30D535HB, Ketma-ketlik limiti-fayllar.org (2), Ariza (javob olish), 4, ma\'navyat soati bayonnoma tayyor




    MIRZO ULUG`BEK NOMIDAGI
    O`ZBEKISTON MILLIY UNIVERSITETI


    JIZZAX FILIALI

    Amaliy matematika va informatika fakulteti


    “Axborat tizimlari va texnologiyalari kafedrasi”:


    DASTURIY INJENERING


    Mavzu: Entitiy frameworkda vorislash

    Bajardi: Sultonqulova Dilnoza


    Tekshirdi: Normatov Nizomiddin


    Mavzu: Entitiy frameworkda vorislash
    Reja:
    1. Voris sinf yaratish.
    2. Merosxo’rlikdan foydalanish.
    3. TPH , TPT , TPС yondashuvi
    Vorislik - (inheritance) Obyektga Yonaltirilgan Dasturlash(OYD)ning muhim tamoyillaridan biridir. Voris orqali bir sinf boshqa sinfning funksionalligini o’zlashtirishi mumkin, ya’ni voris sinflar umumiy xususiyatlarni vorislik bilan olgan holda, ayrim xususiyatlarni qayta aniqlash orqali yoki yangi xususiyat kiritish orqali tayanch sinfga o’zgartirish mumkin. Shu sababli hosilaviy sinflarni aniqlash sezilarli ravishda kamayadi, chunki unga tayanch sinfdan farqli elementlar qo’shiladi. Aytaylik, bizda alohida shaxsni tavsiflovchi quyidagi Person sinfi mavjud:
    Class Person
    {
    Private string _name;
    Public string Name
    {
    get {return _name;}
    ser {_name=value;}
    }
    public void Displey()
    {
    Console.WriteLine(Name);
    }
    }
    Ammo korxona ishchisini tavsiflovchi sinf kerak bo’lib qoldi deylik - bu Employee sinfi. Ushbu sinf Person sinfi bilan bir xil funksiyani amalga oshirishi sababli, xodim ham o'z navbatida shaxs bo'lganligi sababli, Employee sinfini Person sinfining vorisi (yoki sinf osti) ga aylantirish mantiqan to'g'ri bo'ladi. Bu sinf o’z navbatida ajdod (yoki superklass) tayanch sinf deb nomlanadi:

    class Employe : Person


    {

    }

    Ikki nuqtadan keyin ushbu sinf uchun tayanch sinfni ko'rsatiladi. Person sinfi Employee sinfi uchun tayanch sinf hisoblanadi, va shuning uchun Employee sinfi Person sinfining barcha barcha xususiyatlarni, metodlarni, maydonlarni meros qilib oladi. Meros bo’lib o'tmaydigan yagona narsa bu tayanch sinfning konstruktorlari. Shunday qilib, Vorislik is-a munosabatini amalga oshiradi, Employee sinfining ob'ekti o’z navbatida Person sinfining ham ob'ekti hisoblanadi

    static void Main(string[] args)


    {
    Person p= new Person { Name= “ Dilnoza”};
    p.Displey ();
    p= new Employee{Name=”Abduhoshim”};
    p.Display();
    Console.Read();
    }
    Employee sinfining obyekti o’z navbatida Person sinfining ham obyekti bo’lganligi sababli, o'zgaruvchini quyidagicha aniqlay olamiz :


    Person p = new Employee();

    Vorislik oshkor ravishda ko’rsatilmasa ham, barcha sinflar Object tayanch sinfining vorisi hisoblanadi. Shuning uchun ham, yuqorida keltirilgan Person hamda Employee sinflari o'zlarining metodlaridan tashqari, Ob'ekt sinfining quyidagi metodlariga ham ega: ToString(), Equals(), GetHashCode() va GetType(). Kelishuv bo'yicha barcha sinflar voris qilib olinishi mumkin. Biroq, bu yerda bir qator cheklovlar mavjud: Person va Employee



    • To’plamli vorislik qo'llanilmaydi, sinf faqat bitta sinfdan voris olishi mumkin.

    • Hosilaviy sinfni yaratishda tayanch sinfning kirish kaliti ham hisobga olinilishi zarur, yani hosilaviy sinfning kirish kaliti tayanch sinfniki bilan bir xil bo’lishi yoki undanda cheklovliroq bo'lishi talab etiladi. Ya'ni, agar tayanch sinf internal kirish kalitiga ega bo'lsa, hosilaviy sinf (voris sinf) ham internal yoki private kirish kalitiga ega bo’lishi mumkin, lekin public kirish kalitiga ega bo’lishi bo’la olmaydi.

    • Shuni hisobga olish kerakki, agar tayanch va hosilaviy sinflar har xil loyihalarda bo'lsa, unda hosilaviy sinf faqat public modifikatorga ega bo'lgan sinfdan voris olinishi mumkin.

    • Agar sinf sealed modifikator bilan e'lon qilingan bo'lsa, u holda ushbu sinfdan voris olib bo’lmaydi. Masalan, quyidagi sinfdan voris olib bo'lmaydi:

    sealed class Admin
    {
    }

    • Statik sinfdan voris olib bo’lmaydi.

    Odatiy bo'lib, biz merosni aniq belgilamagan bo'lsak ham, barcha sinflar Ob'ektning asosiy sinfidan meros bo'lib qoladi. Shuning uchun, yuqorida tavsiflangan Person va Employee sinflari o'z usullaridan tashqari, Object sinfining usullariga ham ega bo'ladi: ToString(), Equals(), GetHashCode() va GetType(). Olingan sinfni yaratishda asosiy sinfga kirish turini hisobga olish kerak - olingan sinfga kirish turi asosiy sinf bilan bir xil yoki undan qattiqroq bo'lishi kerak. Ya'ni, agar bizning asosiy sinfimiz ichki kirish turiga ega bo'lsa, u holda olingan sinf ichki yoki shaxsiy kirish turiga ega bo'lishi mumkin, lekin umumiy emas. Keling, Shaxs va Xodimlar darslariga qaytaylik. Xodim barcha funksiyalarni Person sinfidan meros qilib olsa ham, keling, quyidagi holatda nima sodir bo'lishini ko'rib chiqamiz:
    Vorislik OOPning asosiy tushunchalaridan biridir. Meros orqali bir sinf ikkinchi sinfning funksionalligini egallashi mumkin.
    TPH yondashuvi asosida klasslar ierarxiyasi uchun bitta jadval shakllantiriladi. Bosh va vorislanuvchi klass ma’lumotlari yagona jadvalda saqlanadi. Jadval ma’lumotlarini farqlash uchun jadvalda qo’shimcha ustun hosil qilinadi. Quyida telefon va smart telefonlarni ifodalovchi klasslar ierarxiyasi keltirilgan:

    public class Phone


    {
    public int Id { get; set; }
    public string Name { get; set; }
    public string Company { get; set; }
    public int Price { get; set; }
    }

    public class Smartphone : Phone


    {
    public string OS { get; set; }
    }

    class MobileContext : DbContext


    {
    public MobileContext()
    : base("DefaultConnection")
    { }
    public DbSet
    Phones { get; set; }
    public DbSet Smarts { get; set; }
    }

    Ushbu klasslar ierarxiyasida Smartphone klassi Phone klassidan vorislangan bo’lib, unga mos jadval tuzilmasi quyidagicha:






    Download 192.9 Kb.




    Download 192.9 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Dasturiy injinering 1-mustaqil ish

    Download 192.9 Kb.