220 likes | 327 Views
Objektumorientált elemzés és tervezés. Alapfogalmak. Gyurkó György. Amiben az OO megközelítés különös. Feltalálta a szoftverépítés, az absztrakció (vele az elrejtés), az újrafelhasználás
E N D
Objektumorientáltelemzés és tervezés Alapfogalmak Gyurkó György
Amiben az OO megközelítés különös Feltalálta a szoftverépítés, az absztrakció (vele az elrejtés), az újrafelhasználás optimális alapegységét az objektumot (típusszinten az osztályt); és arra ráépített néhány igen hasznos konstrukciót (öröklődés, polimorfizmus).
Osztály (= típus) Azonos osztályba tartoznak az azonos szerkezetű és viselkedésű objektumok. Az osztály: • egyrészt a bele tartozó objektumok halmaza, • másrészt a közös vonásokat (a közös sémát) hordozó kategória.
Megjegyzések: Egy objektum tökéletes másolata egy új objektumot képez. - Tehát bár két objektum minden attribútum-értékében azonos mégis két különböző objektum. Következmény: Az objektum nem azonosítható valamely attribútumával. Minden objektumnak belső azonosítója van, ami a memóriában mutatóra (memóriacímre) képeződik le.
Általánosítás és specializáció Általánosítás---------> <---------Specializáció
Az öröklődés(folytatás) Analitikus öröklődés Utódnál: plusz attribútum vagy plusz művelet vagy valamely műveletének más a megvalósítása Korlátozó öröklődés Az utódnál valamely attribútum vagy művelet nem értelmezhető. Pl. a négyzet (mint a téglalap utódja) esetén az egyik oldallal párhuzamos nyújtás. (A szoftvertervezésben általában kerülendő!)
Megjegyzés: Az öröklődés az újrafelhasználás egyik módja. Minimális redundancia a tervezésben - egyértelműség
Polimorfizmus Az ős egy művelete új metódust (megvalósítást) kap az utódnál, valamely attribútum új értelmezést kap.
Megjegyzés: A polimorfizmus teljessé teszi az elrejtést. Elrejti azt a tényt, hogy azonos műveletnek különböző osztályoknál más a megvalósítása. Szilárd, hordozható alkalmazás. A polimorfizmus következménye: A program egy változója futási időben a programkódban adott típusának (=sztatikus típusának)bármely leszármazott osztályából vett példányt hivatkozhat (=dinamikus típus).
A polimorfizmus haszna: idomA: Téglalap; idomB: Kör; IF idomA.Terület() < idomB.Terület() THEN … Ugyanez polimorfizmus nélkül: idomA: Téglalap; idomB: Kör; IF Tégla_Terület(idomA) < Kör_terület(idomB) THEN … Az utóbbi kód érzékeny arra, ha egy téglalap helyett kört (vagy fordítva) kell venni. Az objektumorientált kódot akkor sem kell módosítani, ha a valamelyik objektum egy később definiált osztályba tartozik (pl. háromszög).
Absztrakt osztály Csak olyan objektumok tartoznak bele, amelyek valamely alosztályának is példányai. (Nincsenek közvetlen példányai.) Absztrakt művelet: A műveletnek az ős osztálynál nincs megvalósítása (metódusa), az csak az alosztályokban rendelődik a művelethez. – A műveletet csak azért tüntetik fel a magasabb osztály szintjén, hogy utaljanak arra a legszélesebb objektumhalmazra, amire a művelet értelmezhető. (Java: Van legalább egy absztrakt művelete.)
Példányattribútum: Minden példányra új másolat jön létre belőle. Osztályattribútum: Az osztály egy példányban létezik. Osztály attribútumai: példányattribútumok + osztályattribútumok. Példányművelet: Példány hajtja végre. Közvetlenül példányattribútumokat kezel. Osztályművelet: Osztály hajtja végre. Közvetlenül csak osztályattribútumokat ér el. Konstruktor: Ez hozza létre az osztály egy új példányát, és beállítja annak kezdeti állapotát. (Se nem osztályművelet, se nem példányművelet.) Nem példányosodó osztály: Akár közvetlenül, akár örökölten csak osztályattribútumai és osztályműveletei vannak.
Az újrafelhasználás esetei • Példányosítás • Öröklődés (kiegészülve a polimorfizmussal) • Kész objektumok újrafelhasználása
Objektumok kapcsolataiAsszociáció Az asszociáció olyan kapcsolat, ami kifejezésre jut az egyik vagy mindkét objektum szerkezetében: Az egyik objektumot vagy annak mutatóját attribútumként tartalmazza a másik objektum szerkezete.
Objektumok kapcsolataiAsszociáció (folytatás) • Kapcsolat • neve (+szerepnevek) • multiplicitása • navigáció iránya (láthatóság) • minősítése
Objektumok kapcsolataiAggregáció és kompozíció Általában az aggregációnak a részobjektum mutatója képezi egy attribútumát. Általában a kompozíciónak közvetlen attribútuma a komponens.
Objektumok (osztályok) kapcsolataiFüggőség Ez a kapcsolat nem látszik az osztályok szerkezetéből.
Megjegyzések: Egy OO alkalmazás (program) nem utasítások sorozata, hanem objektumok együttműködése. Az objektumok közötti kapcsolat mindig azt jelenti, hogy az egyik objektum (az ügyfél = a kliens) használja a másikat (a szolgáltatót = a szervert). Az ügyfél objektumnak „látni” kell a szolgáltató objektumot, különben nem tudja felkérni a szolgáltatásra. - Ha két objektum kölcsönösen használja egymást, akkor kölcsönösen látniuk kell egymást. Egy x objektum általában úgy látja az y objektumot, hogy az x-nek egyik attribútuma vagy maga az y, vagy az y mutatója.