Objektumorientáció, objektumorientált szemlélet Adatbáziskezelés és könyvtári rendszerszervezés 1 2014 Objektumorientált elemzés/tervezés Azt a fejlesztési szemléletet, amelyben a modellezett rendszer statikus és dinamikus elemeit a fejlesztési cél szempontjából egyetlen objektumként kezelik, és amelyben érvényre jutnak a hagyományosból hiányzó, illetve csupán törekvésként megfogalmazott célok úgymint rugalmasság, időszerűség, alacsony fenntartási költség, hordozhatóság, újrafelhasználhatóság stb. objektumorientált filozófiának nevezzük. 1
IGÉNYEK Elemzési dokumentáció OO Felhasználó Fejlesztő ELVEK, MÓDSZEREK ELEMZÉS TERVEZÉS IMPLEMENTÁCIÓ OBJEKTUM-MODELL DINAMIKUS FUNKCIONÁLIS Software termék Újrafelhasználható objektum-tárház Az objektumorientált fejlesztés életciklusa Az objektumorientáció sajátosságai I. modellszemléletre épít valósághűség, mint a modellezés kulcstényezője hatékonyan valósítja meg a szervezet alrendszereinek és folyamatainak modellezését, absztrakcióját jobban teljesíti a minőségi követelményeket 2
Az objektumorientáció sajátosságai II. a modell leírása UML szimbolikával alacsonyabb megvalósítási költségek rövidebb átfutási idők alacsony fenntartási és karbantartási költségek egyszerű, gyors módosíthatóság újrafelhasználhatóság Objektumorientált szemlélet legfontosabb paradigmái az absztrakció: a bonyolultság kezelésének hatékony mechanizmusa lehetővé válik komplex rendszerek megértése modellezés modell: a valóság leegyszerűsített változata, egy terv. A valós rendszer absztrakciója, amely tartalmazza a fejlesztési cél szempontjából lényeges, tartós és általános jegyeket, és figyelmen kívül hagyja a cél szempontjából kevésbé meghatározó komponenseket. 3
A modellezés szerepe A valós rendszert különböző aspektusokból közelítve ismerjük meg, amelynek eredménye a rendszert leíró önálló, majdnem független modellek modellnézetek. Modellek kialakítása A modellezés egy általános eszköz. Már elkezdődik a problémaértékelés, a megoldások keresése során a leendő rendszer specifikációja és terve segít az adatok, az adatfolyamok, a funkcionalitás és a viselkedés, valamint az információtartalom megértésében. A kialakított modellek alapját képezik a szoftvertervezési munkának és a megvalósításnak. Elvárások a modellspecifikációval szemben A modellezési tevékenység eredményének pontos leírását, a modell elemeinek, a jellemzőknek, a kapcsolatoknak, az elemek mozgásának, időbeli változásának leírását a modellspecifikáció tartalmazza. Elvárások: legyen könnyen érthető egységes, hatékony terminológiát alkalmazzon (fogalmak, értelmezések) legyen könnyen változtatható a megváltozott feltételekhez való illeszthetőség számolni kell a modellezési tevékenység korlátaival elkészítéséhez számtalan technikát alkalmazhatunk 4
Objektumorientált szemlélet legfontosabb paradigmái Egységbezárás: olyan mechanizmus, amely egy objektumban egységesen értelmezi a statikus adat-jellemzőket és a dinamikus elemeket, és elrejti a többi objektum és a külvilág elől az adott objektum implementációját, belső struktúráját, vagyis a megvalósítás részleteit. Öröklődés: olyan, osztályok közötti viszony, amely lehetővé teszi, hogy egy osztály sajátjaként kezelje a nála általánosabb osztályban definiált attribútumokat és műveleteket. Az általános osztályt szuper vagy szülő-osztálynak, a speciális tulajdonságokkal rendelkezőt pedig szub vagy gyerek osztálynak nevezzük. szülő osztály {root} szemely szemelyid : String nev : String lakcim : String szuldatum : Date nemzetiseg : String olimpelerhetoseg : String anyjaneve : String nem : String <<Actor>> egyebresztvevo <<business worker>> ocogmunkatars <<Actor>> bira (from resztvevok) <<Actor>> versenyzo (from resztvevok) kepviseltorsz : String sportegyesulet : String indulkod : Code csapatid : String rajtszam : Integer <<create>> rbekerul() <<destroy>> inaktivval() adatmod() <<class>> find() 1..* +felkeszito +felkeszítzettjátékos 1 <<business actor>> partner <<Actor>> trener (from resztvevok) kizaras() <<control>> kiszurdoppingvra() benevez() gyerek osztályok 5
Többszörös öröklődés szemely {root} <<powertype>> alkalmazott beosztas : String vegzettseg : code $ munkaido : Integer fizetes : Integer a gráf köztes szintén helyezkedik el dolgozik() szabagsag() <<Actor>> bira (from alkalmazottak) ocogmunkatars (from alkalmazottak) {leaf} Objektumorientált szemlélet legfontosabb paradigmái Polimorfizmus többalakúság: az objektumok azon képessége, amely lehetővé teszi adatainak, illetve műveleteinek egymástól eltérő formában való megjelenését, vagyis egy objektum több különböző formát is képes ölteni attól függően, hogy milyen hatás éri. Újrafelhasználhatóság: a fejlesztés során a különböző szinteken kidolgozott modell-elemeknek többszörös, ismételt felhasználási lehetősége, akár más fejlesztésekben, vagy más alkalmazásokban. 6
Objektumorientált szemlélet legfontosabb paradigmái Komponenselv érvényesítése a komponens alapú fejlesztés olyan alkalmazásfejlesztési technológia, amely lehetővé teszi, hogy a rendszer a fejlesztés teljes életciklusában előre definiált elemekből komponensek építkezzen. Egyéb sajátosságok: láthatóság, osztott használat Az OO technológia előnyei a valós folyamatok reális tükrözése statikus és dinamikus elemek egységben történő kezelése: objektum szigorúbb minőségi elvárások komponens-szemlélet újrafelhasználhatóság egyszerű kezelhetőség 7
OO módszertanok Unified Software Development Process 98 UM Unified Method Rational Objectory Process 97 Yourdon féle OOA/D 90, 94 Jacobson OOSE 94, Objectory Booch OOADA 93 Martin-Odell OOIE 92 Rumbaugh OMT 91 Lorensen 86 RUP Rational Unified Process SSADM B.S.P. demarco, ISAC, SADT, DSSD IEM Gane-Sarson Yourdon SDM Pandata, SDM Hoskyns, DOMINO, Warnier-Orr, DAFNE, SADT, MERISE,Vorgesehensmodell Fejlesztési módszertanok összehasonlítása 2. helyzetfelmérés és -elemzés 3. tervezés logikai fizikai 4. kivitelezés 5. rendszerfelügyelet A fejlesztés életciklusa DOMINO, Martin-Odell, OMT, OOADA, Lorensen, HOOD, OOA/OOD, OOSE, Objectory, RUP 8
RUP Rational Unified Process A RUP két dimenziós modellje OO versus strukturált Strukturált adat-szemlélet egyed komponens adatfolyam analízis modularitás tiszta, világos lépéssor, szerkezet háttérben a dinamizmus új szemlélet Objektumorientált adatok és műveletek egysége: objektum mélyebb absztrakció állapotok, funkciók, attribútumok egysége öröklődés, polimorfizmus újrafelhasználhatóság 9
Az objektum- modell Az objektum-modell az objektumok jól szervezett, hierarchikus rendszere, amelyben a hierarchia különböző szintjein levő, meghatározott tulajdonságokkal és műveletekkel rendelkező elemek egy meghatározott viszonyrendszerben egymással kommunikálnak, üzeneteket küldenek egymásnak, és öröklik mások tulajdonságait Az objektum-modell Kialakítása: objektumok attribútumok műveletek a többi objektumhoz való kapcsolódás jellege és módja asszociáció egyéb speciális sajátosságok: aggregáció, öröklődési viszonyok, származtatás stb. 10
Objektumok Attribútumok Asszociáció név cím életkor személy autó gyártó modell ID number alvázszám szín karosszéria típus tulajdonos Az objektum-modell elemei és szintjei Absztrakt szint Fogalmi kategória Osztály Attribútum Konkrét előfordulás Megvalósulás kategória Objektum, példány, instancia Érték, állapot Művelet Metódus 11
Az objektum Az objektum egy olyan dolog, amely egy objektumtípus példányaként tekinthető. Minden objektumnak saját azonossága van, amely megkülönbözteti és függetleníti a hasonló sajátosságokkal rendelkező többi objektumtól. [OMG Konzorcium] Objektum: a rendszer működési képességének probléma-domén absztrakciója, amelynek célja az informálás és az együttműködés megvalósítása. [COAD-YOURDON] Az objektum egy sor valós világbeli dolog absztrakciója, amelyek azonos sajátosságokkal rendelkeznek, ugyanolyan szabályok szerint működnek és azonos politikát követnek. [SHLAER-MELLOR] Az objektum Az objektum a valós világ valamely elemének, vagy az elem egy absztrakciójának egy konkrét megnyilvánulása, amely lehet érzékelhető, de lehet az ember számára érzékelhetetlen is. 12
Az objektumok sajátosságai Az objektum egy alkalmazásban levő dolgot, entitást modellez (emberek, fizikai megnyilvánulások csoportja, állhat tevékenységekből, célokból is) Az objektum magába foglalja a rá vonatkozó sajátosságokat, jellemzőket (attribútum) és a vele végzendő műveleteket Az objektum sajátosságai, jellemzői meghatározzák az objektum állapotát Az objektumok egymásra üzenetek formájában fejtik ki hatásukat, viselkedésük egyik kifejezési módja a kommunikáció Az objektumok sajátosságai minden objektum rendelkezik azonosítóval, ami az egyes objektumokat megkülönbözteti a többi objektumtól az azonos viselkedésű és sajátosságú, közös jellemzőkkel rendelkező objektumok osztályokba sorolhatók az objektumok a valós szituációknak megfelelően meghatározott kapcsolatban, egyfajta logikai függőségben vannak egymással Az objektumok az objektum-modell (az objektumok jól szervezett, hierarchikus rendszere) kialakításának építőkövei 13
Osztály? Objektum valamilyen szempontból összetartozó elemek reprezentációja az osztály egy konkrét eleme, megnyilvánulása, előfordulása gyár Siemens IBM Az osztály Az azonos viselkedésű és sajátosságú, közös jellemzőkkel rendelkező objektumok osztályokba rendezhetők. Az osztály az azonos sajátosságokkal rendelkező, a rendszer célja szempontjából összetartozó objektumok összessége, amelyek attribútumokkal és műveletekkel jellemezhetők. Az osztály olyan fogalmi kategória, amely a valós világ konkrét dolgainak (személyek, cégek, termékek stb.), az objektumoknak valamilyen szempontból egységes, absztrahált halmazát reprezentálja. 14
Osztály? Objektum valamilyen szempontból összetartozó információk reprezentációja az osztály egy konkrét eleme, megnyilvánulása, előfordulása pl. autó: gyártó modell ID number szín kar. típus pl. a HF123 ID numberrel rendelkező, fekete színű, kombi VW Passat Az osztály meghatározottsága Az osztály meghatározott, ha névvel rendelkezik, névvel egyértelműen hivatkozhatunk rá röviden, verbálisan értelmezünk véges számú attribútummal jellemezhető, ahol az attribútumokra egyértelműen tudunk hivatkozni azonosítója van, amely alkalmas az osztály előfordulásainak (instanciáinak) meghatározására ismert az előfordulások (instanciák) halmaza 15
Az UML osztályszimbólum láthatóság szemely szemelyid : String nev : String lakcim : String szuldatum : Date nemzetiseg : String olimpelerhetoseg : String anyjaneve : String nem : String név attribútumok <<create>> rbekerul() <<destroy>> inaktivval() adatmod() <<class>> find() műveletek Az alkalmazott osztály és objektumai alkalmazot t beosztas fizetes : alkalm azott vezeto: alkalmazott Horvath 16
Láthatóság A láthatóság kifejezi, hogy mennyire fedhetők fel a külvilág számára az objektum különböző sajátosságai, metódusai. Az UML az osztályjellemzőkhöz három láthatósági szintet javasol: a + public: minden külső objektum számára láthatóvá és hozzáférhetővé teszi az adott osztályhoz tartozó objektumok attribútumait és műveleteit, a - private: csak az adott objektum számára elérhetők, a # protected: a gyermek és a barát osztályok műveletei számára elérhetők. Absztrakt, root és leaf osztályok absztrakt osztály: nincsenek példányai, az osztály-nevet dőlt betűkkel kell írni root osztályok: a hierarchia viszonyban nem örökölnek másoktól sajátosságokat, vagyis nincsenek szüleik, az osztály neve alá vagy megjegyzésbe a {root} szócska kerül leaf osztályok: nincsenek gyerekeik, vagyis nem örökítenek tovább sajátosságokat, az osztály neve alá vagy megjegyzésbe a {leaf} szócska kerül 17
Többszörös öröklődés szemely {root} <<powertype>> alkalmazott beosztas : String vegzettseg : code $ munkaido : Integer fizetes : Integer a gráf köztes szintén helyezkedik el dolgozik() szabagsag() <<Actor>> bira (from alkalmazottak) ocogmunkatars (from alkalmazottak) {leaf} Attribútumok az objektumok meghatározott tulajdonságokkal rendelkeznek attribútumok az attribútum-érék az attribútum egy konkrét előfordulása, egy adott pillanatban felvett állapot, az objektumpéldányban tárolt elemi adat az attribútumokat egyértelmű név azonosítja Szerepe: az osztály egy adott objektumának azonosítása azonosító attribútum: az osztály egy adott instanciájának megkeresésére szolgál az objektum leírása, jellemzése leíró attribútum (descriptive) biztosítja a kapcsolatot az osztály egy adott objektumának egy másik osztály objektumával kapcsoló attribútum (referential) 18
Az attribútumok specifikációjának általános formája [láthatóság] név [multiplicitás] [: típus] [= kezdeti érték] [{jelleg}] orszag orszagid : String nev : String <<voice>> himnuszhang aranydb : integer = 0 ezustdb : integer = 0 bronzdb : integer = 0 / osszesendb : integer = 0 <<class>> find() kizarjak() Források Kuki Attila: Rendszerszervezés, http://irh.inf.unideb.hu/user/kuki/rsz.html Rendszerfejlesztési módszertanok, http://turul.kgk.uniobuda.hu/oldalak/rszervezes/rendszerfejl_ pk.ppt 19