OOP, objekti, razredi. Dedovanje in vmesniki

Sodobni razvijalec naj bi začel pisati program najprej razmisliti o arhitekturi prihodnjega projekta. Z vidika objektno usmerjenega pristopa k razvoju programske opreme to pomeni, da mora programer ustvariti kodo, ki bo sestavljena iz logičnih blokov (razredov in objektov), ​​in razmišljati o njihovi interakciji. Koda mora biti podprta. To pomeni, da bo v prihodnosti ta program lahko brez bolečin dopolnjen ali razširjen, ne da bi se pri tem spremenile njegove glavne komponente.

V objektno orientirani razvojni paradigmi razvijalci uporabljajo tri glavna orodja za pisanje dobre kode:
  • Encapsulation.
  • Dedovanje.
  • Polimorfizem.
  • Dedovanje.
  • Dedovanje

    To je proces ustvarjanja novega razreda, ki temelji na obstoječem. Objektno usmerjen pristop se uporablja predvsem za opis konceptov in pojavov realnega sveta v programskem jeziku. Zato, da bi razumeli OOP, se morate naučiti opisati nalogo, s katero se sooča programer, jezik razredov in predmetov.


    Da bi razumeli bistvo procesa dedovanja, lahko dajemo zgled življenja. Obstaja abstrakten pojem "človeka". Vsaka oseba ima splošne značilnosti, ki jih je mogoče opisati. To je višina, teža, barva las, ton glasu in tako naprej. Ivanov Ivan, študent 1. stopnje, "A" je konkretni predstavnik pojma "človek", to je v jeziku objektno usmerjenega pristopa, pojem Ivan Ivan -dedič koncepta človeka. Ali, na primer, sosednja mačka Barsik - dedič pojma "mačka". Lahko naredimo bolj zapleteno dediščino: koncept Barsika, podedovan iz koncepta maine-kun, ki pa je podedovan od pojma "mačka".


    Kako je to opisano v programskem jeziku?

    Pri razvoju programske opreme proces dedovanja omogoča ustvarjanje razreda, ki temelji na drugih. Roditeljski razred se imenuje baza, ostali pa dediči. Zadolževanje je, da potomci prenesejo metode, lastnosti in polja staršev. Sintaksa dedovanja razreda v programskem jeziku C # lahko izgleda takole. Na primer:

    razred Ivan: Oseba
    {
    //telo razreda
    {

    Primer mehanizma dedovanja razredov:

    razred Oseba
    {
    javno int Starost {get; set;}
    }
    class Ivan: Oseba
    {
    javni void Talk ()
    {
    //Ivan govori
    }
    }
    razred Peter :(Oseba
    {
    public void Walk () {40} {{41} //Peter goes
    }
    }
    razred Program
    {
    statični void Glavni (niz) [] args)
    {
    Ivan ivan = novi Ivan ();
    ivan.Age = 29; //označimo starost
    Peter peter = novi Peter ();
    peter.Age = 35
    ivan.Talk ();
    peter.Walk () ();
    }
    }

    Na podlagi osnovnega razreda oseb se ustvarijo dediči in lastnost Age je na voljo za oba razreda.

    Baselski konstruktor

    Ustvarjanje razreda z deklariranim konstruktorjem in dedičem razreda je logično vprašanje: za katere oblikovalce bodo odgovorni pri ustvarjanju objektov teh razredov?

    Če je podan samo v podedovanem razredu, se konstruktor privzeto imenuje pri ustvarjanju predmeta dediča.(nadrejeni) in nato njegov prejemnik.

    Če so konstruktorji podani tako v nadrejenem kot v pomožnem razredu, se osnovna ključna beseda uporablja za klicanje osnovnega. Ko prijavljate to strukturo dedovanja dedovanja, uporabite naslednjo skladnjo:


    & lt; script type = "text /javascript" & gt;
    lahko blockSettings2 = {blockId: "R-A-271049-5", renderTo: "yandex_rtb_R-A-70350-39", async: 0};
    if (document.cookie.indexOf ("abmatch =") & gt; = 0) blockSettings2.statId = 70350;
    Funkcija (a, b, c, d, e) {a [c] = a [c] || [], a [c] .push (funkcija () {Ya.Context.AdvManager.render (blockSettings2)}), e = b.getElementsByTagName ("script") , d = b.createElement ("script"), d.type = "text /javascript", d.src = "//an.yandex .ru /system /context.js ", d.async =! 0e.parentNode.insertBefore (d, e)} (ta, ta.dokument," yandexContextAsyncCallbacks ");
    javno Ivan (int age): baza (starost)
    {
    //konstruktorsko telo
    }

    Naslednje metode razredov so najpomembnejša lastnost OOP Pri ustvarjanju predmeta razreda-dediča se posredujejo argumenti konstruktorja osnovnega razreda, nato pa se imenuje njegov konstruktor, nato pa se izvedejo drugi klici konstruktorja dediča.

    Dostop do pomožnih polj

    Dedovanje dostopa do lastnosti in metod osnovnega razreda iz razreda dediča postane mogoče, če so vse deklarirane z naslednjimi ključnimi besedami:

    1. Javno

    Omogoča neomejen dostop članom razreda: Main, iz zaporednih razredov, od drugih sodelavcev.

    2. Zaščitena.

    Dostop do člana ostane le iz prvotnega razreda ali izpeljan iz analogov.

    3. Notranji.

    Omejitev na člana je omejena samo s tem projektnim sklopom.

    4. Zaščitena notranja.

    Omejitev na člana je omejena samo s tem dodatkomprojektnih ali izpeljanih razredov.

    Dedovanje članov razreda je odvisno od ključnih besed. Če član ni določen kot tak, je razpoložljivost nastavljena na zasebno (zasebno).

    Večkratno dedovanje

    Vmesniki so pogodba, ki zagotavlja, da se bo niz metod izvajal v vmesniku razreda naslednika. Slednji ne vsebujejo statičnih članov, polj, konstant ali konstruktorjev. To je nelogično in ne morete ustvariti vmesniških objektov.


    & lt; script type = "text /javascript" & gt;
    lahko blockSettings3 = {blockId: "R-A-271049-6", renderTo: "yandex_rtb_R-A-70350-44", async:!
    if (document.cookie.indexOf ("abmatch ="))> = 0) blockSettings3.statId = 70350;
    Funkcija (a, b, c, d, e) {a [c] = a [c] || [], [c] .push (funkcija () {Ya.Context.AdvManager.render (blockSettings3)}), e = b.getElementsByTagName ("script") , d = b.createElement ("script"), d.type = "text /javascript", d.src = "//an.yandex .ru /system /context.js ", d.async =! 0e.parentNode.insertBefore (d, e)} (ta, ta.dokument," yandexContextAsyncCallbacks ");

    Te strukture so ustvarjene zunaj razreda, deklariranega z uporabo vmesnika ključnih besed:

    vmesnik IMyInterfave
    {
    void MyMethod (int someVar);
    }

    Pravilo dobrega tona pri ustvarjanju vmesnikov je začeti ime konstrukcije s kapitalizacijo črke I, da bi jih dodatno ločili. V telesu vmesnika so napovedani podpisi njegovih članov.

    Da bi označili, da bo razred izvedel vmesnik, je treba, tako kot se običajno podeduje, podati ime konstrukcije po deklaraciji razreda:

    class MyClass: IMyInterface
    ) {
    public void MyMethod (int someVar)
    }

    Za izvedbo večkratne dediščine so potrebni vmesniki. V programskem jeziku C ++možno je klasično dedovanje razredov; V C # se za te namene uporabljajo vmesniki. Razred lahko izvede veliko število vmesnikov, v tem primeru se po deklaraciji razredov prenesejo z vejicami:

    razred }

    Privzeto so vse lastnosti in metode vmesnikov javne, ker morajo definirati funkcijo, ki bo izvedena v razredu. Dedovanje v C # skoraj vedno vključuje uporabo tega priročnega orodja.

    Malo o dedovanju razredov

    Java, C #, C ++ - vsi objektno usmerjeni jeziki na svoj način izvajajo mehanizem dedovanja. Vendar je bistvo vsepovsod: prenesti lastnosti nadrejenega matičnega objekta. Vmesniki, abstraktni razredi so vse priročno orodje za to nalogo.

    Sorodne publikacije