Miért van szükség, hogy magukba mi változik verem túlcsordulás az orosz
Párosítani mi változik. szükséges, mert ez megment az időt és erőfeszítést, hogy ezen változtassak attól függ, mit lehet változtatni.
Egy gyakorlati példa
Azon a tényen alapul, hogy az változó tokozás általában értelmezni az absztrakció elrejteni egy sajátos működési elve, hogy lehetséges, hogy az alábbi példa.
Design tárgy bankszámla, aki most dolgozik ugyanabban az adatbázisban. Ha elképzeljük, hogy a számla tárgy lehet üzemeltetni egy teljesen más adatbázis (vagy szöveges fájlok), akkor ha csak megállapításáról rajta a tervezés a felület a tárgy, akkor nem kell átírni a kódot. mely egy tárgy fiókot.
Ha a számla egyenlege által okozott változások módszer, beleértve azokat a paramétereket, amelyek csak az összeg és az igazolás, a felhasználói objektum lesz egyáltalán nem kell tudni, hogy milyen adatbázis hozzáfér a számla tárgy a módosítások mentéséhez.
Például ez a funkció nincs különbség, hogy azt használja áthalad valamilyen adatbázis, vagy fájlok - teszi a különbséget a fiók zárt:
addToAccount működni fog egyformán jól mind a példány a számla osztályban. és egy példányát az osztálynak DatabaseAccount:
Egyedi tervezésű felület Account osztály akkor önkényesen megváltoztatni elveinek megőrzése adatait a számla, nem kell változtatni valamit az osztályban, a számla osztályban.
Miért más lehetne szükség?
Amellett, hogy a kényelem a későbbi módosítások során figyelembe kell venni a tényező a kognitív terhelés a programozó. És az absztrakció és az információ visszatartása lehetővé teszi, hogy csökkentsék. Például, hogy ugyanazt a fiókot a programozó objektum nem kell gondolni az adatbázis, vagy a kézi anyagmozgatás kivételek. Encapsulation teszi irreleváns a részleteket, hogy a programozónak nem kell változtatni, az ideális esetben teljesen feleslegessé rájuk gondolni.
Révén kapszulázó létrehozott egy entitást az ismert viselkedését (külső felület). Ugyanakkor az összes szükséges információt a „működése” a lényeg benne lévő is.
Ie tette a felület és a végrehajtás szétválasztása. Feltételezzük, hogy a felület lesz stabil (nem gyakran változik), és a végrehajtás mehetnek keresztül gyakori változások. Anélkül, beágyazás, hogy meg lehet csinálni csak funkciók (magatartás), de nem a személyek (osztályok).
A megfelelő tervezés a felület csak egy része egy osztály nélküli feltételezések belső végrehajtását. Ennek köszönhetően az eladások (akár radikális) Egy osztály nem befolyásolja a másik, így könnyebb változtatni a programokat, valamint a folyamat teszi kevésbé hajlamos a hibákra.
Például, az irányt a járműirányító rendszer a vezető tartalmaz egy kereket, amelynek forgása vezet a kerekek elfordulását (az interfész). Ebben az esetben a rendszer maga is különböző módon valósítható meg, és a különböző elemek (a fogaslécet, trapéz stb - végrehajtás). Azonban, mivel a tokozás az elválasztását felületet és megvalósítást változás járművek kormányzási szempontból is van, szinte láthatatlan a vezetők.
Általában az a gondolat, tokozás jól szemlélteti (és látszólag kilépett) fogalmának absztrakt adattípusok (elolvashatja például Aho, Hopcroft, Ullman. Adatszerkezetek és algoritmusok). Például, van egy halom a módszerek (interfész) nyomja, és a pop. Ebben az esetben a verem megvalósítása bármi lehet, de tekintve a felület nincs különbség. Eljövetele előtt támogatja ezt a fogalmat a programozási nyelvek, hogy észre tokozás kellett magát, hogy követelményeket támaszt az önfegyelem. De akkor ez a fogalom már jóváhagyta a programozási nyelv konstrukciók szintjén. Ez a különbség jól látható a C és C ++ nyelven kapcsolódó.
Válaszol március 7 '16 at 10:37
Felölelik mindazt, amit változik - magukba mi fog változni
Ui Körülvenni a szót nem érdemes szó szerint érteni az elvet a PFSZ.
Az egyik alapvető elveit alkalmazások tervezése, felül számos könyv tervezési minták, mint például ez az első az O'Reilly Head First Design Patterns.
Az elképzelés az, hogy amikor a kódot írni, hogy keresse meg, hogy a jövőben is bonyolult / változás miatt az új követelmények, hogy ezek a változások nem érintik más részein a kérelmet. Általában, interfészek használják ezt, absztrakt osztályok és a sablon módszerek.
A legegyszerűbb példa - ha nem kacsa szimulátor, akkor nem kell háp () metódus végre az alap osztály kacsa, mert a gumi kacsa nem quacking. Persze lehet azt mondani, hogy ez a módszer lehet felülbírálni egy üres csonk a gumi kacsa, de lehetnek mások nem quacking kacsa. Az ötlet az, hogy előre a változó részt az alkalmazás (végrehajtása kuruzsló), és keresse meg a többi alkalmazás (a könyv használata a minta stratégia).
Válaszol március 7 '16 at 22:12
Így lehet elválasztani az objektum interfész a végrehajtás. Például:
Export interfészek széles körben használják, például a Windows COM technológia (Component Object Model), amely felváltotta az OLE (Object csatolása és beágyazása).
Amikor együtt használják, a létrehozott objektumok belsejében DLL, és használják az alkalmazás kódját, fontos, hogy az objektum törlésre került a memóriából az idő - azaz, ha már nincs rá szükség, és nem később, és nem előtte. Erre a célra a felület referencia számlálási funkciók.
A könyvtár exportál függvénye UUID interfész kérésére - az egyedi azonosító a felület.
A kliens kéri a felületet, kap, és felhívja AddRef () függvény növelésével a referencia értékének eggyel. Ha a felület már nincs szükség, az ügyfél kéri a Release () függvény, amely csökkenti a referencia értékének eggyel. Ha a referencia száma nullára csökken, a funkció a Release () eltávolítja a COM által létrehozott objektumot.
Válaszol március 8 '16 at 09:51
Kapszulázást elsősorban azért van szükség annak érdekében, hogy elrejtse a végrehajtás részleteit, hogy senki meg ne tudja. Vegyük például egy osztály elvont elemző:
Írásakor egy osztály, már el van rejtve a legtöbb munkát a magán gyakorlat, így csak egy nyilvános. Miért tettünk így, mert lehetséges, hogy a minden nyilvános módszerek? - ha mégis minden módszer nyilvános, az osztály nem kell védeni a visszaélés, amely könnyen eredményez hibát.
Sootvetsvteno használata tokozás védi az adatokat a tárgy a lehetséges hibák kerülhetnek közvetlen hozzáférést biztosít az adatokhoz.
Válaszol március 6. '16 at 18:04
Minden igazad van, csak nem erre a kérdésre válaszolni. TC vajon miért van szükség, hogy magukba logika, amely gyakran változik. - Dmitriy Simushev március 6. '16 at 18:19
Az interfész fokozatmentes logika ugyanaz maradt, és ennek megfelelően állítja kompatibilitás a többi alkalmazás kódját. Azt hiszem, valami ilyesmi. - S. Pronin a március 6 '16 at 19:03
Ki ez és mit elrejteni? Talán csak egy szánalmas próbálkozás govnokod a szőnyeg alá Licensing Co. söpörni? Mivel decompiling és refkleshen senki, hogy elrejtse sokáig nem. És elrejti végrehajtása mindig érteni, hogy minimalizálja a függőségeket. ami úgy érhető el kis számú állami módszerekkel. és később, és egy részüket, ami hozza a felületeket. - Webaib március 7 '16 at 00:42