Oop, tárgyak, osztályok. Öröklés és interfészek

A program írásakor a modern fejlesztőnek először át kell gondolnia a jövőbeli projekt architektúráját. A szoftverfejlesztés objektum-orientált megközelítésének szempontjából ez azt jelenti, hogy a programozónak olyan kódot kell létrehoznia, amely logikai blokkokból (osztályokból és objektumokból) áll, és átgondolja az interakciójukat. A kódot támogatni kell. Ez azt jelenti, hogy a jövőben ez a program fájdalommentesen kiegészíthető vagy bővíthető anélkül, hogy megváltoztatná fő összetevőit.

Az objektum megközelítése

Az objektum-orientált fejlesztési paradigmában három fő eszköz létezik, amelyeket a fejlesztők jó kód írására használnak:

  • Kapszulázás.
  • Öröklés.
  • Polimorfizmus.
  • Öröklés.

Öröklés

Ez egy új osztály létrehozásának folyamata egy meglévő alapján. Az objektumorientált megközelítést elsősorban a valós világ fogalmainak és jelenségeinek programozási nyelven történő leírására használják. Ezért az OOP megértése érdekében meg kell tanulni, hogyan kell leírni a programozó előtt álló feladatot, az osztályok nyelvét és az objektumokat.

Az öröklés fogalma

Az öröklési folyamat lényegének megértése érdekében példát adhat az életből. Van egy elvont fogalom az "ember". . Bármely személynek közös jellemzői vannak, amelyek leírhatják őt. Ezek magasság, súly, hajszín, hangszín stb. Ivanov Ivan, az 1. osztály " a " hallgatója az "ember" fogalmának sajátos képviselője, vagyis az objektumorientált megközelítés nyelvén Ivanov Ivan fogalma az ember fogalmának örököse. Vagy például a szomszéd macskája, Barsik a "macska"fogalmának örököse. Összetettebb örökséget hozhat létre: a Borz fogalmát a maine coon fogalmából örököljük, amely viszont a "macska"fogalmából származik.

Hogyan írja le a programozási nyelv?

A szoftverfejlesztés , az öröklési folyamat lehetővé teszi egy osztály létrehozását mások alapján. A szülőosztályt alaposztálynak nevezzük, a többi örökös pedig származékos. A hitelfelvétel abban rejlik, hogy a szülők módszereit, tulajdonságait, területeit átadják az utódoknak. Öröklési szintaxis osztályok a nyelvben A C # programozás így néz ki. Például:

osztály Ivan: személy {//osztály test{

Példa az osztály öröklési mechanizmusára:

osztály személy{public Int Age { get; set;}} osztály Ivan: személy{public void Talk () {//Ivan talks}} osztály Peter: személy{public void Walk () {//Peter walks}} osztály Program{statikus void Main (string [] args) {Ivan ivan = új Ivan (); ivan.Kor = 29; / / jelölje Péter Péter korát = új Péter (); Péter.Életkor = 35ivan.Beszélgetés (); Péter.Séta () ();}}

Az öröklődő osztályok a személy alaposztály alapján jönnek létre, az Age tulajdonság pedig mindkét osztály számára elérhető.

Base Class Kivitelező

Egy deklarált konstruktorral és egy inheritor osztállyal rendelkező osztály létrehozásakor logikus kérdés merül fel: mely konstruktorok lesznek felelősek az ilyen osztályok objektumainak létrehozásakor?

Ha csak az öröklött osztályban van beállítva, akkor az örökölt objektum létrehozásakor az alapértelmezett konstruktort (szülőt) hívják meg, majd a Vevőt.

Ha a konstruktorok mind a szülő, mind a gyermek osztályban vannak beállítva, akkor az alap kulcsszót használják az alap meghívására. Egy ilyen öröklési struktúra deklarálásakor a következő szintaxist használjuk a konstruktor beállításához:

nyilvános Ivan (int kor): alap (kor) {//konstruktor test}

Az osztálymódszerek öröklése az OOP legfontosabb tulajdonsága. Az utód osztály objektumának létrehozásakor az alaposztály konstruktorának argumentumai átkerülnek hozzá, majd meghívják a konstruktorát, majd végrehajtják az utód konstruktor fennmaradó hívásait.

Mezők elérése gyermekosztályból

Az alaposztály tulajdonságaihoz és metódusaihoz való hozzáférés öröklése az utódosztályból akkor válik lehetővé, ha mindegyik a következő kulcsszavakkal van deklarálva:

1. Nyilvános.

Korlátlan hozzáférést biztosít az osztály tagjaihoz: fő, leszármazott osztályokból, más analógokból.

2. Védett.

A taghoz való hozzáférés csak a forrásosztályból vagy származtatott analógokból marad.

3. Belső.

A tagra vonatkozó korlátozást csak a projekt ezen összeállítása lokalizálja.

4. Védett belső.

A tagra vonatkozó korlátozást csak a projekt ezen összeállítása vagy származtatott osztályok korlátozzák.

Hozzáférés-Módosítók

Az osztálytagokhoz való hozzáférés öröklődése a kulcsszavaktól függ. Ha egy tag nincs megadva, mint olyan, amikor deklarál, akkor a hozzáférhetőség alapértelmezés szerint be van állítva (privát).

Többszörös öröklés

Az interfészek olyan szerződés, amely garantálja, hogy egy metóduskészlet megvalósul az interfészt öröklő osztályban. Ez utóbbiak nem tartalmaznak statikus tagokat, mezőket, állandókat vagy konstruktorokat. Illogikus és lehetetlen interfészobjektumokat létrehozni.

Példák interfészekre

Ezeket a struktúrákat az osztályokon kívül hozzák létre, a kulcsszó felületével deklarálva:

interfész IMyInterfave{void MyMethod (int someVar);}

Az interfészek létrehozásakor a jó forma szabálya az, hogy a szerkezet nevét nagybetűvel kezdjük, hogy a jövőben könnyen megkülönböztethetők legyenek. A tagok aláírásait az interfész törzsében deklarálják.

Annak jelzésére, hogy az osztály megvalósítja az interfészt, meg kell adni a konstrukció nevét az osztály deklarációja után ugyanúgy, mint a normál öröklésnél:

osztály MyClass: IMyInterface{nyilvános void myMethod (int someVar)}

Interfészek szükség van a sorrendben, többszörös öröklés megvalósítása. a programozási nyelv C++, az osztályok megelőző öröklése lehetséges, a C# - ban interfészeket használnak ezekre a célokra. Egy osztály nagyszámú interfészt valósíthat meg, ebben az esetben vesszővel elválasztva vannak felsorolva az osztály deklarációja után:

MyClass osztály: IMyFirstInterface, IMySecondInterface {//osztálytest}

Alapértelmezés szerint az interfészek összes tulajdonsága és módszere nyilvános hozzáféréssel rendelkezik, mert meg kell határozzon meg néhány olyan funkciót, amelyet a jövőben az osztályban hajtanak végre. Az öröklés A C# - ban szinte mindig magában foglalja ezt a praktikus eszközt.

Bináris kód

Egy kicsit többet az osztály örökléséről

Java, C#, C++ - minden objektumorientált nyelv a maga módján valósítja meg az öröklési mechanizmust. De a lényeg mindenütt ugyanaz: a szülő tulajdonságainak átvitele a leszármazott objektumra. Az interfészek, az absztrakt osztályok mind kényelmes eszközök a feladat végrehajtásához.

Cikkek a témában