A szoftver mint komplex rendszer: objektumorientált megközelítés.

Slides:



Advertisements
Hasonló előadás
Osztály leszármaztatás
Advertisements

ADATBÁZISOK.
Tervezési minták és a PHP 5
C++ programozási nyelv Gyakorlat hét
Programozás III OOP ALAPOK.
BANKFIÓK Egy elképzelés tényleges megvalósítása valós tervek alapján.
EE/R adatmodell (Extended E/R) 1 Az objektum orientált szemlélet elterjedésével egyre nőtt az igény az olyan SDM (Semantic Data Model) modellek iránt,
Objektum-orientált adatbázisok Alapfogalmak
Öröklődés 2..
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
OBJEKTUMORIENTÁLT PROGRAM
Öröklődés Polimorfizmus Csomagok Absztrakt osztályok, interfészek
Osztályok Garbage collection.  általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása:  [láthatóság] [static] [final]
Vizuális modellezés Uml és osztálydiagram UML eszközök
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 5. Gyakorlat Öröklődés, virtuális függvények,
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Tömbök ismétlés Osztályok Java-ban Garbage collection
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
A C++ programozási nyelvSoós Sándor 1/12 C++ programozási nyelv Gyakorlat - 8. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
Java programozási nyelv 5. rész – Osztályok III.
JSP és JavaBean JavaServer Pages és Java Beans Fabók Zsolt Általános Informatikai Tanszék Miskolci Egyetem.
Reprezentációs függvény. Adva egy adattípus absztrakt és konkrét specifikációja: d a = ( A, F, E a ); d c = ( C, G, E c ); A = {A 0,..., A n };C = {C 0,...,
Made with OpenOffice.org 1 ANALYSIS PATTERNS MARTIN FOWLER ANALYSIS PATTERNS Általános ismertető és Accountability Patterns ELTE, Herczeg.
© Kozsik Tamás Csomagok. © Kozsik Tamás A program tagolása Típusdefiníciók (osztályok, interfészek) Metódusok Blokk utasítások Csomagok.
Az UML kiterjesztési lehetőségei
Szoftvertechnológia Rendszertervezés.
Objektumok. Az objektum információt tárol, és kérésre feladatokat hajt végre. Az objektum adatok (attribútumok) és metódusok (operációk,műveletek) összessége,
A valós világ modellezése. Az embert a valós világ modellezésekor a következő gondolatok vezérlik: Absztrakció Megkülönböztetés Osztályozás Általánosítás,
1Objektumorientált elemzés és tervezés - Alapfogalmak Gyurkó György Objektumorientált elemzés és tervezés Alapfogalmak.
Objektumorientált tervezés és programozás II. 3. előadás
HEFOP 3.3.1–P /1.01 Az OOP elve A programozási paradigma (vagy elv) a számítógépes programok tervezésének és programozásának módszerét jelenti.
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Bevezetés az UML-be az E/K modellen keresztül
Információ, adat, jel, kód
Hernyák Zoltán Programozási Nyelvek II.
Objektumorientált programozás
Objektumorientált tervezés
Objektumorientált tervezés Út az objektumig Az objektum fogalma, jellemzői Objektummal kapcsolatos fogalmak Hardverfogalmak A rendszer modell nézetei Objektumorientált.
Komponens-absztrakció. Objektum-orientált paradigma korlátai Feltételezés az interfészekről: 1. öröklés és aggregáció alkalmazható, 2. közös programozási.
1 Objektum orientált programozás Öröklődés: többszörös öröklődés, konstruktorok, destruktorok, overloading Nagy Szilvia.
Objektum orientált programozás
Objektumvezérelt rendszerek tervezése
Programozás III OOP ALAPOK.
Programozás III OOP ÖRÖKLŐDÉS.
7. kurzus Az objektum-orientált tervezés alapelemei
Funkciós blokkok A funkciós blokkok áttekintése Az alkalmazás előnyei.
Gyurkó György. Az állapotmodellezés célja Általánosságban ugyanaz, mint a többi dinamikus modellezési technikáé: Jobban megismerni a problémát. Finomítani.
UML modellezés 3. előadás
Objektumorientált alapjai ISZAM III.évf. részére Bunkóczi László.
Adatbáziskezelés. Adat és információ Információ –Új ismeret Adat –Az információ formai oldala –Jelsorozat.
Ficsor Lajos CPP2 / 1 Származtatási mechanizmus a C++ nyelvben Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék.
1 Objektum orientált programozás Az objektumok és az osztályok – bevezetés Nagy Szilvia.
Ficsor Lajos A C++ programozási nyelv I. CPP1/ 1 Osztály és objektum fogalma.
Haladó C++ Programozás Programtervezési minták – alapok Sonkoly Balázs
1 Objektum orientált programozás Az objektumok és az osztályok – példányosodás Nagy Szilvia.
Programozás I. 3. gyakorlat.
5. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
Adatbázisszintű adatmodellek
Programozás III ÖTLETEK A FELADATMEGOLDÁSHOZ. A HF-EK APROPÓJÁN Néhány javaslat: 1. Jó lenne, ha a feladatmegoldás előtt átnéznék az előadás-anyagokat.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
Strukturális tervezési minták
Viselkedési minták Behavioral patterns.
Operációs rendszerek.
Neumann János Informatikai Kar
Hernyák Zoltán Programozási Nyelvek II.
Adatbáziskezelés 12. alkalom.
OOP és Python Vincellér Zoltán.
Gráfok - 1 Definíció: Irányított gráf (digráf) G=(V,E) rendezett pár.
6. kurzus Az objektum-orientált tervezés alapelemei
Előadás másolata:

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