Létrehozása osztályok fák

22. fejezet OOP: összkép

miért ez a modell az úgynevezett objektum-orientált - mindig van a tárgy fölött milyen műveleteket. Több Rea listichnom például nevezhetnénk eljárás nevű giveRaise, csatolt egy attribútum a Munkavállaló osztály, - hívja ezt a módszert értelmetlen lenne anélkül, hogy a munkavállaló, hogy ad órabér.

Mint később látni fogjuk, a Python továbbítja a módszer egy speciális esetben az első érv szerint a meghívók úgynevezett self. Azt is tudjuk, hogy a módszerek, ha mind a kötelező tárgyak (pl bob.giveRaise ()), és a vágás osztályok (pl Employee.giveRaise (bob)), mindkettő képező ur rayut ugyanezt a szerepet a forgatókönyveket. Megtekintheti, hogy Meto dy veszik állítólagos esetben meg kell vizsgálni a programozási példákat.

Annak ellenére, hogy a elvontsága beszélgetések azonban a Ku rókák mindezen elképzelések egy igazi kódot. Elkészítjük a fák és tárgyak őket az utasításokat osztály és hívás osztályok, amelyek később nézzük meg részletesebben. Dióhéjban:

• Minden használati osztály létrehoz egy új objektum osztály.

• Minden alkalommal, amikor egy osztály neve, akkor létrehoz egy új objektumot ekv zemplyara.

• A másolatok automatikusan kapcsolódó osztályok, amelyek létrehozták őket.

• Az osztályok társítva superclasses felsorolt ​​zárójelben szempontjából pároztatni fejléc osztály utasítás - sorrendben a listán megadott sorrendben a fa.

Létrehozásához a fa ábrán látható. 22,1, például tudtuk használni az alábbi kódot (itt Leeresztettem végrehaj zatsiyu osztály):

# Associated osztályaikkal

Itt egy osztály tárgyak fa követve három instruk CIÓ osztály, és két példányban a tárgy hívja a C1 osztályú kétszer, arra vonatkozóan, hogy az EU lenne ez volt rendszeres jellemzője. Másolatok emlékszik az osztály koto cerned ők hozták létre, és a C1 osztályú tudatában van annak mikrotörzs.

Egy műszaki szempontból, ez a példa az úgynevezett többszörös öröklés. ami azt jelenti, hogy nincs dákó osztály egynél több õse egy osztály a fán.

OOP magasból 30.000 láb

A Python nyelvet, amikor a használati osztály felsorolható kerek zárójelben Leno több superclass (abban az esetben a C1 osztályú a legalább) a sorrend határozza meg, balról jobbra pois ka attribútumokat a superclasses.

Mivel a keresési funkciók a leszármazási fát nagy értékei, amelyek a tárgyak csatlakozott egyik vagy másik attribútum - ily módon meghatározott alkalmazási köre. Attribútumok be mye az esetek tartoznak csak ez a konkrét kereteket, de attribútumokat, hogy csatolja egy osztály, ossza meg mosolyog alosztályok és példányok. Később meg fogjuk vizsgálni részletesen a kódot, amely elvégzi kapcsolatot tulajdonít ezeket az objektumokat. Láthatjuk, hogy:

• attribútumok általában csatolt osztályokat instruk megbízás TIONS osztályba tanításomat, és nem a beágyazott def a mellékelt tájékoztatót, amely meghatározza a funkciót.

• Az attribútumok általában csatolták példányt értékek svaivaniya különleges érv a nevét én, újra, hogy adott funkciókat osztályok.

Például osztályok határozzák meg a viselkedését a példányok Pomo schyu funkciókat, hogy utasítsa def osztályba utasítást. Mivel az ilyen beágyazott def utasítást hajtunk végre svaivanie nevek egy osztályon belül, a hozzájuk kapcsolódó tárgyak formájában osztályok és attribútumok kerülnek öröklődik minden esetben és alosztályok:

Syntax def utasítást ebben az összefüggésben - teljesen normális. Egy funkcionális szempontból, ha a def kijelentés osztályba tartozó utasítást, mint ebben a példában ez a leggyakrabban hívott + Todd és automatikusan elkészíti a speciális első érv IME ez az én, amely utalást tartalmaz a másolat a kezében. 1

Mivel az osztályok malmok, amely képes a példánykészletet, azok a módszerek általában használja ezt kapott

1. Ha valaha is kell használni a nyelvet C ++ vagy Java, akkor könnyű belátni, hogy az önálló Python neve - ez ugyanaz, mint a mutatót a ezt, de Python érv önálló mindig használható kifejezetten ETS lat kezelési tulajdonságok még nyilvánvalóbb .

22. fejezet OOP: összkép

automatikus, önálló érv vagy módosíthatja egy adott esetben az attribútum értékek, amelyek feldolgozása Meto házat. Az előző kódrészlet önálló nevet használják etsya menteni a nevét egy munkavállaló egy konkrét esetben.

Mint egyszerű változók, osztályokat és az egyedeket attribútumok nem előre bejelentett, és ott, amikor először végre a feladat az értékek. Amennyiben a módszer rendel egy attribútum értéket a neve az önálló, ő ezzel létrehoz egy példányt az attribútum séta az alacsonyabb szintű osztályok fát (azaz az egyik téglalap), mert a név automatikusan önálló kifejezés egy példánya Tyva gabona.

Sőt, annak a ténynek köszönhető, hogy minden objektum az osztály fa - ez csak egy névtér tárgyak, tudjuk fogadni, vagy mi nem hoz létre saját attribútumokat, a hozzájuk tartozó neveket. Például, C1.setname ugyanazon kifejezés érvényes I1.setname, azzal a megkötéssel, hogy a C1 és I1 a nevek a VD Mosti kódot.

Jelenleg C1 osztály nem adja hozzá a nevét attribútum ekzemp lyaram amíg nevBeallitas metódus. Tény, hogy a kísérlet nevét Obra titsya I1.name I1.setname up call hibát eredményez tájékoztatta a meghatározatlan nevét. Ha egy osztály kell biztosítaniuk kell, hogy az attribútum, például név, mindig az nem jelenik meg a másolatok, akkor az attribútum létre kell hozni a színpadon az osztály, az alábbiak szerint:

Ebben az esetben a Python automatikusan hívja a módszer elemzi __init__ minden alkalommal létrehoz egy példányát az osztálynak. Az új példány kerül át a __init__ módszer, mint az első érv az én, és minden értékeket, amelyek zárójelben hívás esetén az osztály, továbbítják a második és az azt követő érvek mögött. Ennek eredményeként, a kezdeti példányban lesz tartani abban a pillanatban a létrehozásuk, anélkül, hogy hívja a hirdetés ditional módszereket.

__init__ módszer ismert, mint a kivitelező. hiszen kezdődik a tervezési szakaszban például. Ez a módszer képviselője egy nagy osztálya módszerek nevezett módszer E + operátor túlterhelés. Részletek a fenti módszerek tekinthetők a következő fejezetekben. Az ilyen módszerek örökölt az osztályban fa, mint máskor, és nevüket kezdődik és végződik, két

OOP magasból 30.000 láb

aláhúzza, hogy hangsúlyozzák a speciális a kijelölt. A Python-értelmező emeli őket automatikusan ekzemp lyary hogy támogassa őket, részt vesznek a vonatkozó tranzakciókra, és ezek többnyire egyszerű alternatívája a kihívásokra todov NE. Sőt, vannak választható: ezek hiányában az esetekben megfelelő műveletet nem támogatja.

Például megvalósítani metszi a készletek, az osztály előtti dusmotret végrehajtása metszik módszer vagy túlterhelés a Leírja a logika munkáját eljárás nevű __and__. Mivel már a másolatot a kijelentések miatt több, mint a beépített típusok, ez lehetővé teszi, hogy bizonyos osztályok neprotivore hajszol és nemzeti felület és összeegyeztethető az NYM szoftverkódrészeket számos olyan műveletek objektum E beépített típusokkal.

OOP - ez újrafelhasználásának kód

Itt alapvetően és minden leírásai OOP Python nyelven (kivéve néhány szintaktikai). Természetesen a PFSZ jelenlét létezik nem csak öröklés. Például operátor túlterhelés lehet használni sokkal szélesebb körben, mint az eddig ismertetett - mo gut osztályok saját maga biztosítja a műveletek, mint a dos dumb elemeket azok index megszerzése tulajdonság értékeket, akkor a víz és még sokan mások. De általánosságban elmondható, hogy a PFSZ végrehajtja keresési attribútumok elvtárs a fák között.

Akkor miért van szükségünk, hogy belevetik magukat a bonyolult létre egy fa tárgyak, és keresni őket? Be kell szerezni némi tapasztalat, és hogyan, ha használt osztályok támogatják újrafelhasználhatósági a kód od Bami, amelyek nem találhatók meg más szoftver komponenseket. Mi kell használni osztályok, programozzuk, testre a szoftver az írás, ahelyett, hogy változtat a meglévő kódot, vagy újraírható minden új projekt.

Egy alapvető szempontból, az osztályok - ez tényleg csak egy eleme csomagok, és más neveket, hogy a modulok hasonlítanak sok. Azonban az automatikus keresést attribútumok a fán Nasledova Niya, amit kap használatával osztályok lehetőséget biztosít alkalmazkodás szoftver szélesebb, mint lehetséges modulok és funkciók. Sőt, az osztályok, ideális szerkezeti felépítése olyan kompakt elrendezése végrehajtható kódot és változók, amely segít nyomon követni.

Például módszerek - amelyek közös jellemzői a különleges első érv, így tudjuk emulálni bizonyos jellemzői magatartásuk, kézzel elhaladó tárgyak kezelni a szokásos funkciójukat

22. fejezet OOP: összkép

tsiyam. Azonban a módszerek részt az öröklési osztályok lehetővé teszi számunkra, hogy természetesen alkalmazkodni a meglévő szoftver szükséges sütés, új alosztályok meghatározása az új módszereket, ahelyett, hogy változtatni a meglévő kódot. Noah hasonlóság lehetetlen abban az esetben, modulok és funkciók.

Példaként tegyük fel, hogy vonzódnak a végrehajtás egy adatbázis-alkalmazás, amely információkat tárol alkalmazottak. A programozónak objektumorientált szingularitás Python, akkor elkezdeni a végrehajtását egy közös superclass, amely meghatározza a közös viselkedését minden kategóriában ry A szervezet alkalmazottainak:

# Hívja a változat az eljárás az objektumról

Ez egy másik fajta polimorfizmus - egy ötlet, hogy az előtte a 4. fejezetben, és újra tárgyalt a 15. fejezet Ne feledje, polimorfizmus azt jelenti, hogy a jelentését a működése függ a tárgy, amelyen fut. Itt computeSalary módszer határozza meg a ho de keresés minden objektumot a leszármazási fát előtti kerül meghívásra. Más alkalmazásokban a polimorfizmus is használható IP elrejteni (azaz beágyazás) különbségek Intézet terfeysov. Például egy program, amely kezeli az adatáramlást, hogy az tud dolgozni objektumokat, amelyek a bemeneti és kimeneti módszert, nem törődve a tény, hogy ezek a módszerek valójában:

def processzor (olvasó, átalakító, író): míg 1:

adatok = olvasó. read (), ha nem az adatok: törés data = átalakító (adat) író. write (adatok)

Objetumpéldányt osztályok a szükséges felületet NE todami írni és olvasni, szakosodott különböző forrásokból származó adatok, akkor is használhatja ugyanazt a processzort funkció, hogy bármilyen adatforrás, a meglévő és a láthatóan a jövőben:

1 Felhívjuk figyelmét, hogy a lista a cég ebben a példában lehetne megmenteni kemping egy fájlba, hogy tartós tárolása az adatbázis információt CIÓ alkalmazottak (a lé modul be 9. fejezet

"A Files" című részt). Ezen kívül a készítmény tartalmaz egy Python modulus idő polcra, akik megengedhették maguknak, hogy példányai osztályok

fájlok hozzáférési kulccsal - egyoldalú fejlesztése, a ZODB rendszer lehetővé teszi az egyik, hogy észre ugyanaz a dolog, de azt jobban támogatja az objektum-orientált adatbázisok kereskedelmi használatra.

22. fejezet OOP: összkép

Ezen túlmenően, annak a ténynek köszönhető, hogy a belső végrehajtását olvasási és írási módszerek oszlott adatforrástípusok, akkor cserélje ki, hogy ne érjen a kódot, hasonlóan az egyik, hogy használja őket. Tulajdonképpen processzor funkció is lehet az osztály a végrehajtási logika az átalakító konverziós függvény, amely örökli alosztályok, és lehetővé teszi, hogy beágyazza esetekben működő olvasás és írás, elve szerint a SCM készítmény (a továbbiakban ezt a részét mutatjuk rea lizuetsya ).

Ha megszokja, hogy a program ebben a stílusban (alkalmazkodás szoftverének), meg fogja találni, kezdve hogy írjon egy új pro gram, hogy a legtöbb probléma már megvalósult, és a per nyaraló alapvetően attól függ, hogy annak érdekében, hogy vegye fel a meglévő Su perklassy megvalósító magatartás szükséges a programok NE. Például talán valaki más, egy teljesen más program már írt az Employee osztály, az Olvasó és író ebben a példában. Ebben az esetben, akkor már kész mintegy grammnym kód „erre.”

A gyakorlatban számos alkalmazási területen, akkor kap, vagy vesz egy superclass gyűjtemény, vagyis a platform. A Coto ryh végrehajtott közös feladatok Prog osztály-alapú, használatra kész a Ap Niyah. E platformok nyújthat interface az adatbázisokhoz adat, hogy a vizsgálati eljárások, eszközök létrehozására grafikus interfész, és így tovább. D. A környezet és a platform akkor gyakran elég ahhoz, hogy hozzon létre egy alosztálya hozzá egy vagy két az ő módszerét és az alapok naya munkát fog végezni, osztályok szerint platform elhelyezett fenti E a leszármazási fát. Programozás OOP világban - ez csak egy kérdés, az összeszerelés már hibamentesített kódot, és konfigurálja azt írásban a saját alosztályok.

Természetesen az a tény, hogy megértsük, hogyan kell használni az osztályok Hon zheniya ez az ideális objektum-orientált, ez időt vesz igénybe. OOP gyakorlatban együtt jár a nagy mennyiségű pre-engineering, amelyek megérthető lépésben előnyöket nyert a használatát osztályokba; e célból a programozók ott kezdődött, hogy egy listát a közös megoldások a PFSZ, az úgynevezett tervezési minták -, hogy segítsen megoldani a problémát a design. Ebben az esetben az objektum-orientált kódot grammny a nyelv annyira egyszerű, hogy önmagában nem akadály a fejlesztés a PFSZ. Ennek ellenőrzéséhez, akkor lépni a 23. fejezet.

A letöltés folytatásához össze kell rakni egy képet: