"Szia, Amigo! Ma egy új és érdekes világot nyitok meg a szemed előtt. Az objektum-orientált programozásról (OOP) beszélek . Már megismerted az osztályokat és az objektumokat. Ma mész többet megtudni róluk, sokkal többet."
Kezdjük az OOP négy pillérével. Ezek az absztrakció, a tokozás, az öröklődés és a polimorfizmus. (Régebben három volt, de később hozzáadták az absztrakciót)
1) Absztrakció.
Az absztrakció jó példája a való életben a munkaköri leírások egy vállalatnál. A munkakör egy dolog, de a feladatai egészen más.
Képzelje el, hogy létrehozza leendő vállalata szervezeti diagramját. Feloszthatja a titkári feladatokat, és több más pozícióra is szétoszthatja. A vezérigazgató munkáját több különálló pozícióra oszthatja fel: pénzügyi igazgató, technológiai igazgató, marketing vezérigazgató, humán erőforrás vezérigazgató. Vagy egyesítheti az irodavezetői és a toborzói pozíciókat egybe.
Tegyük fel, hogy kitalál egy neveket a cégénél lévő pozíciókra, majd „kiosztja” ezeknek a pozícióknak a felelősségét. Ez az absztrakció – valami nagy és monolit dolog több kis részre osztása.
A programozó szemszögéből az absztrakció azt jelenti, hogy megfelelően osztja fel a programot objektumokra.
Egy nagy program általában kölcsönható objektumként ábrázolható a tucatnyi különböző módon. Az absztrakció segítségével kiválaszthatja az objektum főbb jellemzőit, és kihagyhat minden kevésbé fontosat.
Az absztrakció olyan, mint egy katonai stratégia. Ha rossz stratégiát választ, semmilyen zseniális taktika nem menti meg a helyzetet.
2) Kapszulázás.
A tokozás célja az objektumok közötti interakció javítása azok egyszerűsítésével.
A legjobb módja annak, hogy leegyszerűsítsünk valamit, ha bármi bonyolultat elrejtünk azok elől, akiknek nem kell tudniuk róla. Például, ha egy Boeing repülőgép pilótavezérlői mögé ül, sok időbe telne, amíg megérti, hogyan működnek:
Másrészt a gépen utazók számára minden egyszerűbbnek tűnik: jegyet vesznek és felszállnak a gépre, amely aztán fel- és leszáll. Könnyedén repülhet kontinensről kontinensre, csak azt tudva, hogyan kell «jegyet venni» és «repülőre szállni». Nem látjuk a gép repülésre, felszállásra, leszállásra és különféle lehetséges vészhelyzetekre való felkészítésével kapcsolatos bonyolultságokat. És nem tettünk említést a műholdas navigációról, az autopilotáról és a légiforgalmi irányító központokról. Ez leegyszerűsíti az életünket.
A programozás szempontjából a beágyazás „elrejti a megvalósítást”. Tetszik ez a meghatározás. Osztályunk több száz módszert tartalmazhat, és rendkívül összetett viselkedést valósíthat meg különféle helyzetekben. De elrejthetjük az összes módszerét a kíváncsi szemek elől (azzal, hogy " privát " jelöléssel látjuk őket), és csak két-három metódus marad más osztályokkal való interakcióhoz (a " nyilvános " megjelöléssel ). Ekkor a programunk összes többi osztálya csak ezt a néhány metódust fogja látni és meghívni ezen az osztályon . Az osztály minden komplexitása elrejtőzik benne, ahogy a pilótafülke is a boldog utasok szeme elől.
3) Öröklés.
Az öröklődés egy fogalom a programozásban és a való életben. A programozásban az öröklődés egy speciális kapcsolat két osztály között. De a való életben való öröklés sokkal érdekesebb.
Ha valamit a valóságban kell létrehoznunk, két lehetőségünk van:
1) a semmiből készítsük el, amire szükségünk van, és sok időt és energiát fordítunk rá.
2) elkészítjük azt, amire szükségünk van, a már meglévő dolgok felhasználásával.
A legjobb stratégia a következő: Meglévő jó megoldást veszünk, átdolgozzuk és szükségleteinkhez igazítjuk, majd használjuk.
Gondoljunk csak az emberi evolúcióra. Ha visszavezetjük kezdetüket a bolygó életének kezdetéig, azt látjuk, hogy évmilliárdok teltek el. De ha úgy gondoljuk, hogy az ember a majmokból indul ki, akkor még csak pár millió év telt el. Valaminek a semmiből történő létrehozása tovább tart. Sokkal hosszabb.
Hasonlóan a programozásban is létrehozhatunk egy osztályt egy másik alapján. Az új osztály egy meglévő osztály leszármazottja (örököse) lesz. Ez rendkívül hasznos, ha már van egy osztály, amely a szükséges adatok és metódusok 80-90%-át tartalmazza. Egyszerűen egy megfelelő osztályt nyilvánítunk új osztályunk szülőjének. A szülőosztály összes adata és metódusa automatikusan az új osztály részévé válik. Kényelmes, igaz?
4) Polimorfizmus.
A polimorfizmus olyan programozási koncepció, amely leírja azt a helyzetet, amikor különböző megvalósítások rejtőznek ugyanazon interfész mögött. Ahhoz, hogy a való életben analógot találjunk, nézzük meg az autóvezetés folyamatát.
Ha valaki tud teherautót vezetni, akkor mentőautó vagy sportautó volánja mögé is beülhet. Egy személy vezethet autót függetlenül attól, hogy milyen autóról van szó, mert mindegyiknek ugyanaz a kezelőfelülete: kormánykerék, pedálok és sebességváltó. Az autók belül másképpen vannak felszerelve, de mindegyik ugyanazt a vezérlőfelületet használja.
Visszatérve a programozáshoz, a polimorfizmus lehetővé teszi, hogy a különböző osztályokba tartozó objektumokkal (általában közös ősökkel) azonos módon kommunikáljunk. Ennek jelentőségét nem lehet eléggé hangsúlyozni. A program bővülésével egyre fontosabbá válik.
Az OOP alapelvek. Programozási törvények. Mindegyik korlátoz minket valamilyen módon, de cserébe óriási előnyökkel jár , ahogy a programok nagyra nőnek. Az OOP négy alapelve olyan, mint a szék négy lába. Ha csak egyet is elvesznek közülük, az egész rendszer instabillá válik.
GO TO FULL VERSION