Ha tud 4 ajtós ingázó autót vezetni, akkor pickupot is vezethet. Ha belső égésű motorral hajtott autót, akkor elektromos autót is vezethet.
A személygépjárművek alakja és mérete eltérő lehet. A motor, amely ezeket a járműveket működteti, teljesen más is lehet. De ez nem számít a sofőrnek.
Csak beszállsz, lecsatolod, beindítod a járművet, sebességbe teszed, és vezetsz. Ez azért van, mert az autók, teherautók és kisteherautók igen polimorf.
Polimorfizmus: lebontása
Nézzük a polimorfizmus szót. Le lehet bontani poli, morfium, és ism.
Poli sokat jelent, például a sokszög sok szöget jelent. Főnévként használva a morfium faj egyik változata. És ism rendszert jelenthet.
Tehát a polimorfizmus egyszerűen sok variáció rendszerét jelenti. Ez még mindig nem árul el sokat arról, hogyan használják a programozásban. Ez a következő.
Ha úgy jár, mint a kacsa... Miért félelmetesek a polimorf tárgyak?
Amikor létrehoz egy osztályt a kódjában, amely egy másik osztálytól örököl, akkor az új osztályt szerződéshez köti. A szerződés kimondja, hogy a szülő minden változója és függvénye a gyermekben is megtalálható lesz.
Minden jármű rendelkezik kormánykerékkel, gáz- és fékpedállal, valamint irányjelzővel. Az autó vezetéséhez nem kell kinyitni a motorháztetőt. Csak az számít, hogy autó.
Ugyanez vonatkozik a más osztályokból öröklődő osztályokra is. Íme egy példa a TypeScriptben:
osztályú jármű {
privát _motor: string;
privát _abroncsok: szám;
kivitelező (motor: string = "égés", gumiabroncsok: szám = 4) {
this._engine = motor;
this._tires = gumik;
}
gyorsítani (sebesség: szám) {
console.log ("gyorsulás" + sebességgel);
}
fék (nyomás: szám) {
console.log ("alkalmazás" + nyomás + "nyomás");
}
forduljon balra() {
console.log ("balra fordulás");
}
jobbra() {
console.log ("jobbra fordulás");
}
}
osztályú autó meghosszabbítja a járművet {
}
osztályú Tesla kiterjeszti az autót {
konstruktor () {
szuper ("elektromos");
}
}
Ebben a példában a Jármű osztály. Az Autó osztály örököl a Jármű osztály. És Tesla tőle örököl Autó. Most hozzunk létre pár objektumot, és nézzük meg őket.
hadd myCoupe: Autó = új jármű ();
console.log (myCoupe);
console.log (myCoupe.constructor.name);
hadd mySedan: Jármű = új Tesla ();
console.log (mySedan);
console.log (mySedan.constructor.name);
myCoupe.turnLeft ();
mySedan.turnLeft ();
Láthatja, hogy kijelentettük myCoupe lenni Autó és mySedan lenni Jármű. Aztán példányosítottunk myCoupe mint új Jármű és mySedan mint új Tesla. Ha te látogasson el a TypeScript homokozóba, és futtassa a kódot, és látni fogja, hogy hiba nélkül működik. És úgy viselkedik, ahogy elvárnád, a szerződés alapján.
Más szóval, minden jármű balra kanyarodhat, mert örökölték a Jármű osztály. A fordító tudja, hogy minden gyermeke Jármű beleegyezett a szerződésbe. Tehát feltételezi, hogy minden rendben van, függetlenül attól, hogy az objektumok milyen osztályokban voltak gépelve vagy példányosítva.
Ezt néha "kacsa gépelésnek" is nevezik. A fordító azt feltételezi, hogy ha úgy jár, mint a kacsa, és úgy beszél, mint a kacsa, akkor akár kacsa is lehet. A fordító tehát nem törődik a részletekkel, és csak úgy kezeli az objektumot, mint egy kacsát.
A polimorfizmus golyóállóvá teszi a kódot
A polimorfizmus szerződés másik előnye a kód működésének garanciája. Ha erősen beírta az összes változóját és azt, hogy az egyes függvények mit adnak vissza, akkor tudja, hogy minden gyermek mindig egyezik a változókkal, függvényekkel és típusokkal.
Ez azt jelenti, hogy anélkül adhatja hozzá és módosíthatja az osztályok kódját, hogy megszakítaná a programját. Minden objektum, amely hivatkozik a Jármű objektum mindig megkapja az elvárásoknak megfelelő adatokat és funkcionalitást, bármennyire is Autó változtatások.
Előfordulhat, hogy a függvényben található kód nem adja ki a megfelelő eredményeket. De ez másfajta probléma. Amíg a függvény követi a szerződést és visszaadja a várt típusú változót, addig nem eredményez kódtörési hibát.
A polimorfizmus hatalmas, és itt van még 10 programozási elv, amit tudnia kell.
A polimorfizmus gyakorlása
- Használja a fenti homokozó linket a létrehozásához Hajó osztály.
- Instantiate egy új csónak objektumot oly módon, hogy a Jármű típusú, de mégis úgy néz ki, mint egy csónak.
- Győződjön meg arról, hogy a hajó továbbra is járműként viselkedik.
A polimorfizmus utolsó példája
A polimorfizmus trükkös fogalom lehet kezdetben. De miután megkapta, hatalmas lépést tett annak megértése felé, hogy valójában mi is az objektum-orientált programozás. A koncepció még mindig elméletinek tűnhet. Tehát itt van egy szilárd valós példa, amely segít megérteni, mennyire hasznos.
Képzelje el, hogy egy webes alkalmazást épít, amely MySQL adatbázishoz kapcsolódik. Ezután a főnök úgy dönt, hogy PostgreSQL adatbázisra vált. Ez azt jelenti, hogy újra kell írnia az adatbázis -hívásokat?
Nem, nem. Ha alkalmazása a Adat hozzáférés osztály olyan alosztályokkal, amelyek valójában összezavarják az adatokat, szerencséje van. Az Adat hozzáférés osztály határozza meg, hogy az alkalmazás hogyan lép kapcsolatba az adatokkal, nem pedig az, hogy hogyan lép kapcsolatba az adatbázissal.
Vannak olyan alosztályai, mint a MySQLAccess és PostgresQLAccess amelyek elvégzik az összes piszkos munkát. De ha az alkalmazás csak Adat hozzáférés objektumok, akkor cserélheti ki az adatbázisokat anélkül, hogy az alkalmazáskód egyetlen sorát újraírná.
Az objektumorientált programozás helyes beállítása azt jelenti, hogy tudnia kell az öröklődésről, valamint arról, hogyan lehet egyszerűsíteni a kódolást és csökkenteni a hibákat.
Olvassa tovább
- Programozás
- Programozás
- Objektumorientált programozás
Lee főállású nomád, és sok szenvedéllyel és érdeklődéssel rendelkező polihisztor. A szenvedélyek egy része a termelékenység, a személyes fejlődés és az írás körül forog.
Iratkozzon fel hírlevelünkre
Csatlakozz hírlevelünkhöz, ahol technikai tippeket, véleményeket, ingyenes e -könyveket és exkluzív ajánlatokat találsz!
Feliratkozáshoz kattintson ide