Szoftver-technológia II. Modulok és OOP. Irodalom

Hasonló dokumentumok
Komponens alapú fejlesztés

Programozás III. - NGB_IN001_3

Szoftver-technológia II. Architektúrák dokumentálása UML-lel. Irodalom. Szoftver-technológia II.

Objektumorientált paradigma és a programfejlesztés

Szoftver-mérés. Szoftver metrikák. Szoftver mérés

Objektum orientált programozás Bevezetés

OOP. Alapelvek Elek Tibor

Absztrakció. Objektum orientált programozás Bevezetés. Általános Informatikai Tanszék Utolsó módosítás:

Bánsághi Anna 2014 Bánsághi Anna 1 of 31

Programfejlesztési Modellek

Szoftver-technológia II. Szoftver újrafelhasználás. (Software reuse) Irodalom

Szoftver újrafelhasználás

Rendszer-modellezés, modellezési technikák

Programozási nyelvek Java

Objektumorientált paradigma és programfejlesztés Bevezető

Szoftver architektúra, Architektúrális tervezés

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Objektum orientált software fejlesztés (Bevezetés)

Szoftver-technológia II. Tervezési minták. Irodalom. Szoftver-technológia II.

OOP #1 (Bevezetés) v :39:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj.

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Osztálytervezés és implementációs ajánlások

Osztálytervezés és implementációs ajánlások

GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és. Függvénysablonok

Programozás módszertan p.1/46

Programozási nyelvek Java

Programozás. Objektum Orientált Programozás (OOP) Alapfogalmak. Fodor Attila

Programozási alapismeretek 4.

Már megismert fogalmak áttekintése

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

Java és web programozás

Rendszer-modellezés, modellezési technikák

A szoftver-folyamat. Szoftver életciklus modellek. Szoftver-technológia I. Irodalom

Adatstruktúrák, algoritmusok, objektumok

Szoftverminőségbiztosítás

Szoftver-technológia I.

Interfészek. PPT 2007/2008 tavasz.

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Java programozási nyelv

A TANTÁRGY ADATLAPJA

Software Engineering Szoftver fejlesztés

A hierarchikus adatbázis struktúra jellemzői

ISA szimulátor objektum-orientált modell (C++)

Objektum Orientált Tervezés

Eljárások és függvények

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Objektumorientált programozás C# nyelven

Objektum orientált alapelvek

Objektum orientált programozás (Object Oriented Programming = OOP)

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

1. előadás Alapfogalmak Modellezés, a Bachman-féle fogalomrendszer, adatmodell,

Programozás. Bevezetés. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

Adatbázis rendszerek. dr. Siki Zoltán

Formális módszerek GM_IN003_1 Bevezetés

Bevezetés. Szendrei Rudolf Informatikai Kar Eötvös Loránd Tudományegyetem. Programozási technológia I. Szendrei Rudolf. Bevezetés. Szoftvertechnológia

Adatszerkezetek 1. előadás

10. előadás. Alapfogalmak. Adatbázisrendszerek előadás november 28.

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok

OO rendszerek jellemzői

A szerzõrõl... xi Bevezetés... xiii

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Kogníció, koncepciók, modellek

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Programozás I. 5. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Modellinformációk szabványos cseréje. Papp Ágnes, Debreceni Egyetem EFK

és az instanceof operátor

Programozási nyelvek Java

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés.

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

C++ programozási nyelv

Software Engineering

1. Bevezetés A C++ nem objektumorientált újdonságai 3

C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Planning and Design of Information Systems. André Blokdijk, Paul Blokdijk ACADEMIC PRESS, 1987.

Q = Átadandók Elvárások. Szoftver min ség és menedzsment -22. Tartalom. A szoftver min sége 2001 / Összefoglalás. Dr.

Bevezetés a C++ programozási nyelvbe

Adatstruktúrák, algoritmusok, objektumok

Szoftver követelmények meghatározása

Objektum orientált programozás (Object Oriented Programming = OOP)

Elosztott rendszer architektúrák

PROGRAMOZÁS tantárgy. Gregorics Tibor egyetemi docens ELTE Informatikai Kar

Verifikáció és validáció Általános bevezető

Lehetséges óraelemzési szempontok (matematika) vázlat

Objektumelvű programozás

ADATBÁZIS-KEZELÉS. Adatbázis-kezelő rendszerek

Szoftver tervezés és design

Ismeretanyag Záróvizsgára való felkészüléshez

Programozási nyelvek JAVA EA+GY 1. gyakolat

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

SZOFTVERFEJLESZTÉSI TECHNOLÓGIÁK

S0-02 Típusmodellek (Programozás elmélet)

Programozás alapjai. 7. előadás

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra

Programozási technológia 1.

Átírás:

Modulok és OOP Irodalom Steven R. Schach: Object Oriented & Classical Software Engineering, McGRAW-HILL, 6th edition, 2005, chapter 7. 2

Modulok és objektumok Modulok Lexikálisan folytonos utasítás sorozatok, határoló elemekkel és saját azonosítóval ez egy tág definíció 3 Tervezési példa Melyik megoldás jobb? Miért? 4

A kívánatos struktúra Modulok maximális bels! kapcsolatok maximális interakció a modulon belül minimális küls! kapcsolatok minimális küls! interakció a modulok között Modul kohézió bels! interakció foka Modul csatolás modulok közötti interakció foka 5 Kohézió Modulon belüli interakciók foka, jellege 7 kategória: Információs Funkcionális Kommunikációs Procedurális Id!beli Logikai Esetleges 6

Esetleges kohézió Többféle, egymástól teljesen független tevékenységek egy modulba szervezve általában a modulméretre vonatkozó el!írások szüleménye pl.: print_next_line, reverse_string_of_characters_comprising_second_parameter, add_7_to_fifth_parameter, convert_fourth_parameter_to_floating_point 7 Esetleges kohézió (folyt.) Jellemz!k: nehéz karbantartani nem újra felhasználható 8

Logikai kohézió Logikailag (formálisan) hasonló tevékenységek, hívó modul választja ki, hogy pontosan melyik kerüljön végrehajtásara pl.: function_code = 7; new_operation (op code, dummy_1, dummy_2, dummy_3); // dummy_1, dummy_2, and dummy_3 are dummy variables, // not used if function code is equal to 7 9 Logikai kohézió (folyt.) Jellemz!k: interfészt nehéz megérteni több különböz! tevékenység kódja összefügghet nehéz az újra felhasználás 10

Id!beli kohézió Id!ben összefügg! tevékenységek sorozata egy modulban pl.: open_old_master_file, new_master_file, transaction_file, and print_file; initialize_sales_district_table, read_first_transaction_record, read_first_old_master_record (a.k.a. perform_initialization) 11 Id!beli kohézió (folyt.) Jellemz!k: tevékenységek egymással kevéssé függnek össze er!s kapcsolatok más modulok tevékenységeivel nem újra felhasználható 12

Procedurális kohézió Olyan tevékenységek végrehajtása, melyek a szoftvertermék használatához kapcsolódó eljárásokkal vannak összhangban pl.: read_part_number_and_update_repair_record_on_master_file 13 Procedurális kohézió (folyt.) Jellemz!: egyáltalán nem újra felhasználható 14

Kommunikációs kohézió A szoftvertermék használatához kapcsolódó tevékenységek, melyeket ugyanazokon az adatokon kell elvégezni pl.: update_record_in_database_and_write_it_to_audit_trail Jellemz!: nem újra felhasználható 15 Funkcionális kohézió A modul pontosan egy adott funkciót megvalósító tevékenységet végez pl.: write_to_floppy_disk 16

Funkcionális kohézió (folyt.) Jellemz!k: jobban újra felhasználható javító karbantartás egyszer"bb könnyebb hibalokalizálás kevesebb regressziós hiba könnyebb a termék b!vítése 17 Információs kohézió külön (saját) belépési pontú, független kódú m"veletek, azonos adatszerkezeteken végrehajtva pl.: 18

Csatolás Két modul közötti interakció foka, jellege 5 kategória: adat csatolás adatszerkezet csatolás vezérlési csatolás közös terület csatolás tartalom csatolás 19 Tartalom csatolás Az egyik modul a másik modul tartalmát közvetlenül (nem néven keresztül) eléri (adatok, vezérlés) Problémák a hivatkozott modul megváltoztatása a hivatkozó megváltoztatásával jár a két modul csak együtt újra felhasználható 20

Közös terület csatolás Csatolás globális adatterületen (globális változókon) keresztül pl.: 21 Közös terület csatolás (folyt.) olvashatatlan kód pl.: mellékhatások globálisok változtatása egy modulhoz a többi modul változtatásával jár nehéz újra felhasználás 22

Közös terület csatolás (folyt.) rejtett csatolás csatolási fok n!, pedig a modul nem változott (újabb modulok megjelenése a rendszerben) nehéz karbantartás, regressziós hibák pl. Linux kernel kód méret lineárisan n!tt a verziószámmal, összcsatolás exponenciálisan 23 Vezérlés csatolás Az egyik modul megváltoztatja a másik vezérlési folyamát vezérlési döntésekben szerepl! adatok átadása Nem független modulok ismerni kell a másik modul vezérlését 24

Adatszerkezet csatolás Összetett adatszerkezetek átadása, de csak részekre van szükség pl.: satellite_altitude kell, de satellite_coordinates_rec megy 25 Adatszerkezet csatolás (folyt.) Problémák melyik mez!k érdekesek, változnak? nehéz újra felhasználás adat hozzáférési, biztonsági kérdések 26

Adat csatolás Modulok között átadott adatok egységes, homogén adatelemeket jelentenek egyszer" adatok teljesen felhasznált összetett adatok Egyszer" karbantarthatóság, újra felhasználás 27 A megfelel! struktúra kialakítása Cél Nagyfokú kohézió Alacsony csatolás Tervezési elvek (absztrakciók) adat egységbezárás, betokozás információ elrejtés 28

Adat egységbezárás Nem alacsonyszint" adatszerkezetek és rajtuk elvégzend! m"veletek, hanem koncepcionális elemek m"veletek, funkciók valamint adatszerkezet koncepcionális függetlenség összes lényeges elem a modulban 29 Hagyományos (struktúrált) megközelítés problémái Hagyományos megközelítés adat absztrakció eljárás absztrakció egyik dominál a másikkal szemben 30

Adat egységbezárás OO nyelvekben 31 Információ elrejtés T.k. módosíthatósági architektúrális taktika Implementációs részletek elrejtése Közös terület csatolás csökkentése 32

Információ elrejtés OO nyelvekben 33 Absztrakt adattípusok adatokat reprezentáló adatszerkezetek + példányaikon elvégezhet! m"veletek adat absztrakció eljárás absztrakció könnyen b!víthet!k új m"veletekkel jól újra felhasználhatók 34

Szervezési koncepciók Modulok Modulok magas kohézióval, alacsony csatolással Adat egységbezárás Absztrakt adattípusok Információ elrejtés Objektumok 35 Objektumok Objektum absztrakt adattípus példánya információs kohéziós modul adatok (attribútum, adattag) m"velet (metódus, tagfüggvény) örökl!dés 36

Örökl!dés Új típusok hozhatók létre a korábban definiáltakból pl.: 37 Örökl!dés OO nyelvekben 38

Osztályok közötti kapcsolatok Generalizálás <-> Specializálás Asszociáció Aggregáció Kompozíció 39 Több-alakúság Klasszikus paradigma típusnak megfelel! függvény hívása pl.: 40

Több-alakúság (folyt.) OOP paradigma Eltér! megvalósítás az alosztályokban Automatikus kiválasztás Kés!i (futási idej") kötés 41 Több-alakúság OOP paradigma (folyt.) 42

Több-alakúság (folyt.) Polimorfizmus és kés!i kötés nehezen követhet! kód fordításkor nem derülnek ki hibák speciális tesztelés kell 43 Az OO paradigma Sikeres egyenl! súly az adatoknak és m"veleteknek jól tervezett osztályokkal modellezhet! az összes lényeges szempont az implementációs részletek rejtve maradhatnak alkalmas nagyméret" projektekhez lépésenkénti finomítás jó újra felhasználhatóság 44

Az OO paradigma (folyt.) Implementációs különbség a két paradigmában Eljárás 1 Eljárás 2 Üzenet M!velet 1 M!velet 2 Üzenet Adat szerkezet Attrib. M!velet 3 Eljárás 3 Üzenet Klasszikus OOP 45 Az OO paradigma (folyt.) El!nyök elemzési és tervezési fázis szorosabb kapcsolata objektumok (osztályok) az életciklus elején megjelennek könnyebb átmenet a fejlesztési fázisok között iterációs lehet!ség 46

Az OO paradigma (folyt.) Problémák törékeny bázis osztály bázis osztály változatása hatással van a leszármaztatottakra gondos el!zetes tervezés igénye öröklési lánc alján komplex osztályok nincs garancia jó kód írására nehezebb tanulási folyamat 47 OO programozási nyelvek 1960-as évek: Simula Osloi Számító Központ 1970-es évek: Smalltalk Xerox PARC 1980-as évek: C++ AT&T, B. Stroustrup Objective-C, Brad Cox 1995 Java Sun Microsystems 48