Polimorfizmus (programozás)

Polimorfizmus (programozási nyelven) - a lehetőséget tárgyakat azonos specifikáció különböző végrehajtását.

A programozási nyelv támogatja polimorfizmus, ha ugyanaz a specifikáció osztályok eltérő végrehajtását - például a végrehajtását az osztály lehet változtatni a folyamat egymás után [1].

Röviden értelmében polimorfizmus lehet kifejezni a mondat: „Egy felület, sok implementáció.”

Polimorfizmus - az egyik a négy legfontosabb objektum-orientált programozási mechanizmus (valamint absztrakció, tokozás és öröklés).

Polimorfizmus írhatunk elvontabb programokat és növeljék az együttható kód újrafelhasználásának. Általános tulajdonságok Az objektumok egyesítjük a rendszerben, amely lehet különbözőképpen hívják - egy interfész osztály. A egységesítés a külső és a belső expresszió:

külső egységesítés jelenik meg ugyanazokat a módszereket az azonos nevű és aláírások (ún módszerek, és a bővítmények és számuk);

belső közösség - az azonos funkciót technikákat. Meg lehet leírni ösztönösen vagy kifejezett formában szigorú törvények, szabályok, amelynek meg kell felelnie a módszerekkel. Az a lehetőség, hogy attribútum különböző funkciók egy módszer (funkcióművelet) A módszer neve overdrive (overdrive funkció túlterhelés műveletek).

Osztály geometriai formák (ellipszis, sokszög) lehetnek módszerek geometriai transzformációk (eltolás, forgatás, skálázás).

Class stream van módszereket soros adatátvitelhez. Flow információ lehet a felhasználó által bevitt terminál, kommunikáció számítógépes hálózaton keresztül, a fájlt (ha a soros feldolgozást igénylő, például elemzés forráskódú programok).

Az objektum-orientált nyelvek

Az objektum-orientált nyelvek, egy osztály egy absztrakt adattípus. [Megjegyzés. 1] Polimorfizmus valósul segítségével öröklési osztályok és virtuális függvények. Leszármazottja osztály örökli a szülő-osztály aláírás technikák, és a végrehajtás, ami egy felülbíráló módszerrel, ezek a módszerek eltérő lehet, megfelelő leszármazottja osztály-specifitás. Más funkciók nem működnek a tárgyat, mint egy osztály például a szülő, de ha ez az objektum valójában egy példánya leszármazottja, akkor futás közben az úgynevezett módszer felülbírálni leszármazottja osztályban. Ez az úgynevezett késői kötés. [Egy használati példa lehet kötegelt feldolgozás, amely esetekben, mint egy osztály a szülő és a leszármazott osztály: nyilvánvaló, hogy egy ilyen elrendezés csak nyilvánítható tömbként-típusú szülő osztály és a tárgyak a tömb csak akkor hívják módszerek az osztály, de ha leszármazott osztály néhány módszert felülírható, a futási példányok ezen osztály fogják hívni őket, és nem a szülő osztály módszerek.]

Leszármazott osztály maga is lehet egy szülő. Ez lehetővé teszi, hogy komplex öröklési rendszerek - fa vagy hálószerű.

Absztrakt (vagy tisztán virtuális) módszerekkel nincs végrehajtás egyáltalán (sőt, egyes nyelvek, mint a C ++, hogy a végrehajtás az absztrakt módszerek mikrotörzs). Ezek kifejezetten öröklés. Ezek végrehajtása kell meghatározni leszármazott osztályok.

Egy osztály örökölhet funkciók több osztály. Ez az úgynevezett többszörös öröklés. Többszörös öröklés létrehoz egy ismert probléma (C ++), amikor egy osztály örökli egynél több osztályba közvetítő, aki viszont örökölt egy osztály (az úgynevezett „rombusz probléma”): amennyiben a közös ős módszert felülírható közvetítők, nem lehet tudni, hogy a módszer megvalósítása örökölje közös leszármazottja. Mi megoldjuk ezt a problémát, elkerülve a többszörös öröklés osztályok és a többszörös öröklés állásfoglalást teljesen absztrakt osztályok (azaz interfészek) (C #, Delphi, Java), vagy egy virtuális öröklés (C ++).

A funkcionális nyelvek

Polimorfizmus funkcionális nyelvek tekinthető példát Haskell.

A Haskell kétféle polimorfizmus - egy parametrikus (nettó) és speciális (az osztályok [Megjegyzés 2].). Különleges is nevezik ad hoc (a latin ad hoc -. Különösen). Úgy lehet megkülönböztetni az alábbiak szerint:

Kapcsolódó cikkek