Mi a lényege a programozási felületek

Linux rendszergazda

A felület valójában a szabályokat a kölcsönhatás.
Az osztályt, amely megvalósítja az interfészt kell hajtania minden módszereket.
A felületen eljárást ismertettek aláírásokat, hogy van, akkor adja meg, hogy az osztály örökös képesnek kell lennie arra, hogy nem, de ő fogja csinálni, ő maga dönti el.
Tehát akkor biztos, hogy ha egy osztály megvalósítja az adott felületet, az összes objektum az ebbe az osztályba van egy bizonyos sor módszerekkel.
PFSZ - egy olyan világban, absztrakciók :) Engedd be magát :) interfészek Yeshe egyik absztrakció lehetővé teszi számunkra, hogy elkülönítse az realziatsii.

„Gyere fel a megfelelő osztály nevét” - így nem tudja, hogy a „örökösei”, hogy végre funkciókat.

A felületek találhatók, a magasabb szintű osztályok, hogy úgy mondjam. Ezek implicite „egyesíteni” hasonló osztályok néhány közös vonás, és köteles (logikája szerint az alkalmazás), hogy végre ezeket, vagy más módszerekkel.

p.s: programozók kiegészíti és javítani.

„A felületet eljárást ismertettek aláírásokat, hogy van, akkor adja meg, hogy az osztály örökös képesnek kell lennie arra, hogy nem, de ő fogja csinálni, ő maga dönti el.
Tehát akkor biztos, hogy ha egy osztály megvalósítja az adott felületet, az összes objektum az ebbe az osztályba van egy bizonyos sor módszereket. "

Miért nem tudok csinálni, közvetlenül az osztályban? Miért Interface? Az I. és nélküle lehet abban, hogy a létesítmények lesz funkcionáljaira leíró módszerek az osztályban. Miért van szükség, hogy valaki (interface) mond milyen módszerekkel jöttem rá? Ha tudom, hogy kell leírni a lejátszás (), akkor én is csinálni az osztályban, nem használja a felületet. És így tudok csinálni mindazoknak, akik szeretnék a lejátszás (). Nem világos, hogy milyen konkrét előnyökkel?

Nézd meg a másik oldalon.
Azt, hogy valaki a megoldást, és hagyjuk, hogy „bontsa ki”. De a kompatibilitás biztosítása érdekében az Ön oldalán, meg kell bizonyosodni arról, hogy minden fog történni később a felület, amely adtál, majd egy sor módszer (minden objektum).
Ha le ezeket az osztályban, és otnasleduete - lehet, hogy Danae konkrét végrehajtási eljárás nem alkalmas az objektumot. Nem lehet semmilyen módon szabályozzák a módszert kéne csinálni. A felület csak az ehhez szükséges szabályozás.

Mondom interfészek van szükség, nem pedig azok, akik „lent”, és azok számára, akik „fent”.
Ez a megállapodás egyrészt lehetőséget kapnak a funkcionalitás és a felület, a maga részéről, akkor elfogadja az interfészt megvalósító használni ezt a funkciót.

Kosvennnym plusz mindez kiszámítható viselkedése az objektum. Tudva, hogy ez végre a felületen, akkor már tudni valamit a viselkedését.

Anélkül interfész (mint fogalom) elképzelhetetlen három a négy legfontosabb fogalmak OOP.

Pontosabban, a Java interfészek különálló entitásként van szükség, mert nincs többszörös öröklődés. A C ++ és sok más nyelven, amely támogatja a több interfész öröklés, mint önálló szervezet nem (tisztán virtuális osztály - egy speciális esete a szokásos absztrakt osztály).

Igen, ez megtörtént humán olvasható kódot. Világítási program, ami nem túl sok sornyi kódot, nem túl bonyolult az emberi érzékelés és programok, amelyek több ezer sornyi kódot, ennek megfelelően meg kell osztani, a fájlok egy fájlban vannak feltételei „mit kell tenni?”, Míg mások „hogyan kell csinálni „?.

Ott van a moduláris elven, amely azt mondja, hogy a program osztható modulokat vagy egység. A blokk tartalmazza a header fájlokat és a futtatható fájlokat, hogy már említettem korábban.

Ha a program hatalmas, és akkor tudni róla előre, akkor meg kell törni előre be modulokat. Miért vagy miért nem? Az első ok az átvételi kódot ember, ami már tárgyaltuk, a második sokkal könnyebb lesz megtalálni a hibákat a forráskódot, hogy írsz, és hogy lesz.

Ui Még ha írsz valamit, vagy kérdéseket feltenni osztható szövegtömböt, mint írtam, így könnyebben észlelhető, mint ami meg van írva a kupac. nem igaz?

Először meg kell érteni egyszerre, hogy a felület egy speciális esete egy osztály. De a Java, hogy van egy-egy kulcsszó, de a C ++ csak egy osztály nélküli végrehajtását. Ezért a felület egyszerűen szabványt állít munka egy csomó különböző megvalósítások.

Például a Iterable interfész azt mondja, hogy az osztály megvalósítja az interfészt azok az elemek, és lehet több mint egy hurok hívja a next () metódus. Ez azt jelenti, hogy ha létre valamiféle tároló vagy gyűjtemény, akkor végre Iterable. Nem feltalálás saját módszert kínál tartályban. Így van egy közös szabvány - interfész dolgozni konténerek.

És ha egy játékot, akkor egy interfész egység és ily módon egy bizonyos magatartást osztályok. Például, egységet kell szükségszerűen atack () módszer, isDead (), stb

És akkor, a ciklus csinálni vizsgálat az összes egység:
loop (). if (unit.isDead ())
removeFromMap (egység);
>

És persze az egység csak egy osztály vagy egy absztrakt osztályt, amely megvalósítja a atack és isDead, hanem csak isDead, mert megtámadják minden egység típus-külön és igényli a saját végrehajtását. Ie Azért jöttünk, hogy az a tény, hogy a felület is egy speciális esete egy absztrakt osztály.

Ie Itt már hatályba lép polimorfizmus, azaz sőt felületek adnak polimorfizmus. Nos, a Java, lehetővé teszik azt is, hogy a többszörös öröklés, vagy más szavakkal, kérje az osztály néhány tulajdonságának viselkedés, például egység talán még a Iterable, így adható egységek és berendezések rendezi az elemeket is.

És ennek megfelelően, ha a készülék akkor van egy osztály vagy egy absztrakt osztály, hogy öröklődik egység Java, akkor egyszerűen nem tud adni az örökös is Iterable viselkedés, ha Iterable is osztályban.

OrcWarrior végrehajtja Unit, Iterable - így Ön

OrcWarrior kiterjed Unit, Iterable - mint Java lehetetlen, de ez lehet C ++, és a készülék Iterable és akkor nem lesz mindig közölni kell, mint egy osztály.

Emiatt a Java nem szívesen öröklés és összetételét. Ie mi minden egyes alkalommal, hogy észre Unit.isDead, ha ez egy szabvány? Ezért létrehoz egy osztály, és azt mondják UnitAI tenni a következőket:

osztály OrcWarrior végrehajtja Unit, Iterable UnitAI ai;

Interface Unit void támadás ();
UnitAI getAI ();
>

Ez az úgynevezett készítmény, azaz a A OrcWarrior, HumanWarrior akkor söntölje UnitAI, ami már megvalósult isDead, és így nem szükséges minden alkalommal végrehajtja ugyanazt a kódot. A C ++, ez nem tudja, van támogatása a többszörös öröklést, de megvannak a maga hátrányai. Azonban, mivel a készítmény előnye / hátránya.