1Objektumorientált elemzés és tervezés - Alapfogalmak Gyurkó György Objektumorientált elemzés és tervezés Alapfogalmak
2Objektumorientált elemzés és tervezés - Alapfogalmak 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).
3Objektumorientált elemzés és tervezés - Alapfogalmak Az objektum (a szerkezet és a viselkedés egysége)
4Objektumorientált elemzés és tervezés - Alapfogalmak Osztály (= típus) 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. Azonos osztályba tartoznak az azonos szerkezetű és viselkedésű objektumok.
5Objektumorientált elemzés és tervezés - Alapfogalmak Osztály és példánya
6Objektumorientált elemzés és tervezés - Alapfogalmak 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.
7Objektumorientált elemzés és tervezés - Alapfogalmak Általánosítás és specializáció Általánosítás > < Specializáció
8Objektumorientált elemzés és tervezés - Alapfogalmak Az öröklődés
9Objektumorientált elemzés és tervezés - Alapfogalmak 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ő!)
10Objektumorientált elemzés és tervezés - Alapfogalmak Megjegyzés: Az öröklődés az újrafelhasználás egyik módja. Minimális redundancia a tervezésben - egyértelműség
11Objektumorientált elemzés és tervezés - Alapfogalmak 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.
12Objektumorientált elemzés és tervezés - Alapfogalmak 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).
13Objektumorientált elemzés és tervezés - Alapfogalmak 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).
14Objektumorientált elemzés és tervezés - Alapfogalmak 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.)
15Objektumorientált elemzés és tervezés - Alapfogalmak 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.
16Objektumorientált elemzés és tervezés - Alapfogalmak 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
17Objektumorientált elemzés és tervezés - Alapfogalmak Objektumok kapcsolatai Asszociá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.
18Objektumorientált elemzés és tervezés - Alapfogalmak Objektumok kapcsolatai Asszociáció (folytatás) Kapcsolat neve (+szerepnevek) multiplicitása navigáció iránya (láthatóság) minősítése
19Objektumorientált elemzés és tervezés - Alapfogalmak Objektumok kapcsolatai Aggregáció és kompozíció Általában a kompozíciónak közvetlen attribútuma a komponens. Általában az aggregációnak a részobjektum mutatója képezi egy attribútumát.
20Objektumorientált elemzés és tervezés - Alapfogalmak Objektumok (osztályok) kapcsolatai Függőség Ez a kapcsolat nem látszik az osztályok szerkezetéből.
21Objektumorientált elemzés és tervezés - Alapfogalmak 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.
22Objektumorientált elemzés és tervezés - Alapfogalmak Osztályok közötti függőségek