A szoftver mint komplex rendszer: objektumorientált megközelítés
Attribútum Az attribútum (attribute) az objektum valamilyen jellemzője vagy komponense, különféle típusú (egyszerű vagy összetett) adatot jelenthet. Egy konkrét objektum attribútumai vala- milyen konkrét értéket vesznek fel. Közülük egyesek időben megváltozhatnak (mint pl. az egyenleg). Egy objektum pillanatnyi belső állapotán az attribútumai aktuális értékeinek együttesét értjük. A szoftver mint komplex rendszer: objektumorientált megközelítés
Művelet (metódus) A művelet (operation, method) alatt az attribútumokon végzett összetett műveletet kell érteni, amely megvalósítására a fejlesztés során valamilyen eljárást kell programozni. (Korábbi értelmezés szerint a metódus a művelet megvalósítása; újabban a kettő egymás szinonímája, a programozásban a metódus olyan eljárás, amely tagja valamely objektumosztály definíciójának.) A szoftver mint komplex rendszer: objektumorientált megközelítés
Elrejtés elve: a külvilág számára csak az fontos, hogy az egyes műveletek mit csinálnak, és közömbös, hogyan csinálják. A gyakorlatban azt jelenti, hogy az objektum környezete nem feltételez semmit a műveletek megvalósításáról, azaz a műveletek bármilyen környezetben változtatás nélkül felhasználhatók; másrészt a műveletek megvalósítása anélkül kicserélhető, hogy azt az objektum környezete érzékelné, és ezért az is változtatásra szorulna. A szoftver mint komplex rendszer: objektumorientált megközelítés
Objektumok osztályozása Két objektum azonos típusú, ha mindegyiket az attribútumoknak azonos halmaza (azonos szerkezet) jellemzi, továbbá mindegyiken a műveleteknek azonos készlete értelmezhető. Az azonos típusú objektumok egy osztályt (class) alkotnak. Osztály: ● a bele tartozó objektumok halmaza ● olyan absztrakció, ami az azonos típusú objektumok közös szerkezetét és közös viselkedési módját képviseli, azaz a példányainak közös sémája. A szoftver mint komplex rendszer: objektumorientált megközelítés
Példány: Valamely osztályba tartozó objektum: pl. egy konkrét folyószámla objektum a Bankszámla objektum egy példánya. Azonos típusú objektumokra elég egyszer meghatározni a közös szerkezetet, ill. hogy mit csinál valamely közös művelet. Pl. a Bankszámla osztály egy attribútuma az egyenleg, mert minden ide tartozó példánynak van egyenlege. A szoftver mint komplex rendszer: objektumorientált megközelítés
Egy osztály definíciójába (sémájába, felelősségébe) pontosan azok a műveletek tartoznak, amelyekkel közvetlenül elérhetők (lekérdezhetők, változtathatóak) az adott osztályú objektumok attribútumainak értékei. (Szigorúan OO környezetben, például egy szigorúan OO programnyelvben nem is léteznek önálló eljárások, hanem csak olyanok, amelyek valamely osztály metódusai. Ezt másképpen úgy mondják, hogy minden eljárásért felelős valamely osztály.) A szoftver mint komplex rendszer: objektumorientált megközelítés
Létrehozunk egy, az adott osztályba tartozó objektumot: saját attribútumpéldányok, hivatkozás az osztály műveleteire. A szoftver mint komplex rendszer: objektumorientált megközelítés
Példányosító hivatkozás: Ha a bankszámla1 objektumra kell végrehajtani a kamatjóváírás műveletét, akkor azt a bankszámla1.kamatjóváírás() alakú hivatkozással, általában pedig objektum.művelet(paraméterek) alakú példányosító hivatkozással írjuk le. A példányosítás az újrafelhasználás egyik esete, hiszen minden új példány létrehozása felhasználja az osztállyal adott közös sémát. A szoftver mint komplex rendszer: objektumorientált megközelítés
Konstruktor: egy osztály definícióján belül speciális művelet, adott osztályból egy új objektumot (példányt) lehet vele létrehozni, azaz a konstruktor példányosítja az osztályt. Közelebbről ez azt jelenti, hogy a konstruktor a memóriában lefoglalja azt a helyet, amelyben az objektum tárolódik, és beállítja az objektum kezdeti állapotát, azaz az objektum attribútumainak kezdeti értékét. A szoftver mint komplex rendszer: objektumorientált megközelítés
Általánosítás: Ha több osztály sémája közös résszel rendelkezik, definiálható egy általánosabb főosztály, amelynek sémája az egyes sémák közös része, példányhalmaza az alosztályok példányhalmazainak egyesítése. Pl.: halak+emlősök+madarak → gerincesek A szoftver mint komplex rendszer: objektumorientált megközelítés
Specializáció: Ha egy osztály (főosztály) bizonyos példányai különösek abban az értelemben, hogy azokat vagy valamilyen plusz attribútum is jellemzi, és/vagy valamilyen plusz művelet is értelmezhető rájuk, és/vagy valamely művelet másképpen hajtható végre rajtuk, akkor megalkotható e speciális példányokat tartalmazó szűkebb osztály (alosztály). A szoftver mint komplex rendszer: objektumorientált megközelítés
Öröklődés a specializáció mentén alkalmazott mechanizmus: Ha egy B osztály alosztálya valamely A osztálynak, akkor a B osztály automatikusan rendelkezik az A osztály minden példányattribútumával és példányműveletével (másképpen megörökli azokat), így a modellben közvetlenül a B osztályra csak az A osztály definícióján felüli attribútumokat és/vagy műveleteket kell definiálni. Ebben az értelemben a főosztályt másképpen szülő (ős) osztálynak, az alosztályt pedig az előbbi utódjának vagy leszármazottjának nevezzük. Az öröklődés viszony szimbóluma értelemszerűen azonos az általánosítás/specializáció viszonyéval. A szoftver mint komplex rendszer: objektumorientált megközelítés
Az öröklődés az újrafelhasználás egy újabb esete. Az utódosztályban felhasználjuk a szülőosztály struktúráját és viselkedését. Egyetlen kivétel: a konstruktor nem örökölhető. A szoftver mint komplex rendszer: objektumorientált megközelítés Eredmény: redundanciamentes terv.
Polimorfizmus Többalakúság: azonos (példány)műveletnek különböző osztályoknál különböző megvalósításai (implementációi) lehetnek. Voltaképp a specializáció egy esete: azért különítünk el egy alosztályt, mert bizonyos műveletek másképp hajtódnak végre. Egy műveletet az határoz meg, hogy mit csinál: milyen bemenetre milyen kimenettel reagál. A szoftver mint komplex rendszer: objektumorientált megközelítés
Pl. Területszámítás: Téglalap: a*b Háromszög: a*m a /2 Kör: r 2 *π Ugyanaz a területszámítás metódus, más-más megvalósítással. A szoftver mint komplex rendszer: objektumorientált megközelítés
A polimorfizmus tökéletessé teszi a felszínre nem tartozó részletek elrejtését, ezért nagyon nagy a jelentősége az OO alkalmazások szilárdságának megalapozásában. A szoftver mint komplex rendszer: objektumorientált megközelítés
Absztrakt művelet Egy osztály valamely művelete absztrakt, ha az adott osztályban a műveletnek csak specifikációja van (mit csinál), de megvalósítása (hogyan csinálja) nincs, azaz a műveletnek csak az adott osztály utódosztályai határozzák meg a megvalósítását. A szoftver mint komplex rendszer: objektumorientált megközelítés
Absztrakt műveletet akkor használunk, ha: az osztály ● mindegyik elemére értelmezhető egy adott művelet (ezért ennek az általános osztálynak a szintjén kell az adott műveletet specifikálni), ● de a művelethez nem határozható meg olyan közös megvalósítás, amely az osztály minden példányára működőképes lenne (ezért alosztályonként különböző megvalósítást kell az adott művelethez adni.) A szoftver mint komplex rendszer: objektumorientált megközelítés
Pl.: Absztrakt: kétdimenziós idomok területszámítása Megvalósítás: téglalap, kör, háromszög területszámítása. A szoftver mint komplex rendszer: objektumorientált megközelítés
Absztrakt osztály, konkrét osztály, interfész Absztrakt osztály: nincsenek konkrét példányai, csak az alosztályainak. Minden nem absztrakt osztály konkrét osztály. Pl. : emlős: absztrakt; macska, kutya: konkrét példány. Az osztályhierarchia tetején szükségszerűen jönnek létre olyan osztályok, amelyeknek csak az örökítés a szerepük. Interfész: olyan nagyon absztrakt osztály, amelynek csak absztrakt műveletei vannak és nincsenek attribútumai. A szoftver mint komplex rendszer: objektumorientált megközelítés