Methods in Delphi

Delphi szakemberek számára. Az objektum-orientált programozás

A fentiekből anyag olvasók megtudta, hogy a működése által biztosított különböző módszereket, amelyek különböznek funkciók végrehajtására örökséget. Most van itt az ideje, hogy ezeket a módszereket részletesebben.

Úgynevezett absztrakt metódus az osztályban, de nem tartalmaz minden olyan intézkedés, soha nem kérte, és meg kell felülbírálni leszármazott osztályokban. Abstract csak akkor lehet a virtuális és dinamikus módszerekkel. Object Pascal Ilyen módszerek nyilvánították az azonos nevű irányelv. Ezt jelzi a módszer leírását:

eljárás NeverCallMe; virtuális; elvont;

Ebben az esetben nem kell kódot nem kell írni ezt a módszert. Hívjon NeverCallMe módszer vezet létrehozását kivételes helyzet EAbstractError (kivételes helyzetekben szentelt Ch. 4).

Egy példa egy osztály TField Sec. „A polimorfizmus” E fejezet megmagyarázza, hogy miért kell használni az absztrakt módszereket. Ebben az esetben a TField osztály nem használható önmagában; fő célja -, hogy az őse a hierarchia konkrét osztályok - „mezők”, és lehetővé teszik, hogy eltekinthessünk adatokat. Bár a paraméter showData eljárások és le, mint TField. de ha adsz meg egy objektumot az ebbe az osztályba, nem lesz kivétel hívni egy absztrakt módszer.

Statikus módszerek, valamint bármely területén azonos módon viselkednek a leszármazott objektumokat: lehet korlátozás nélkül átfedik a régi neveket, és ezzel megváltoztatják a fajta technikát. A kód az új statikus módszer teljesen blokkolja (helyettesíti) a régi módszer kód:

eljárás SetData (AValue: Extended);

T2ndObj = osztály (TlstObj)

eljárás SetData (AValue: Egész szám);

öröklött SetData (0,99);

Ebben a példában a különböző módszerek elemzi SetData értékeket rendelhet különböző területeken a neve i. Átfedés (az azonos nevű) mező a leszármazottja ős N; igen, persze, két azonos nevű mező nevét i - képtelenség; így készül csak példa.

A gyakorlatban a programozás szokás minden azonosítók a program (beleértve a mezők tárgyak) értelmes neveket. Ez nagyban megkönnyíti a munkát a forráskódot, nemcsak más fejlesztők, hanem te.

Ha úgy gondolja, a fenti példák, nyilvánvaló, hogy a fordító nem lehet meghatározni, az osztály az objektum valójában továbbított showData eljárást. Szükségünk van egy mechanizmus határozza meg ezt a futás során. Egy ilyen mechanizmus az úgynevezett késői kötődés (Késői kötés).

Természetesen ez a mechanizmus valahogyan összefügg azzal az átadott objektumot. Ez használ virtuális módszer táblázatot (virtuális módszer táblázat, VMT), és a táblázat a dinamikus módszerek (Dynamic módszer táblázat, DMT).

Fedezésére és a virtuális és dinamikus módszerek a felülírás irányelvet. amelyben (és csak vele!) felülbírálhatja, ha mindkét típusú módszerek. Itt egy példa:

eljárás VirtMethodl; virtuális;

eljárás VirtMethod2; virtuális;

eljárás DynaMethodl; dinamikus;