Programozási technológia 1.

Hasonló dokumentumok
Bánsághi Anna 2014 Bánsághi Anna 1 of 31

Bevezetés a Programozásba II 5. előadás. Objektumorientált programozás és tervezés

UML (Unified Modelling Language)

Előzmények

Programozás 1. 2.gyakorlat

Software Engineering Babeş-Bolyai Tudományegyetem Kolozsvár

Programfejlesztési Modellek

Szoftvertechnológia 8. gyakorlat. Tervezés. Tervezés A szoftver életciklus

Models are not right or wrong; they are more or less useful.

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT 6. kurzus

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

S01-7 Komponens alapú szoftverfejlesztés 1

Models are not right or wrong; they are more or less useful.

Interfészek. PPT 2007/2008 tavasz.

Modellalkotás UML-ben

Programozási technológia 1.

Objektumelvű alkalmazások fejlesztése 6. gyakorlat. Öröklődés, polimorfizmus. Öröklődés Kódismétlődés objektum-orientált szerkezetben

Szoftvertechnológia 8. előadás. Szoftverrendszerek tervezése. Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

OOP. Alapelvek Elek Tibor

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

01. gyakorlat - Projektalapítás

Szoftvertechnológia 8. előadás. Szoftverrendszerek tervezése Giachetta Roberto

Programozási technológia II 3. előadás. Objektumorientált tervezés Giachetta Roberto

JAVA PROGRAMOZÁS 3.ELŐADÁS

Metamodellezés. Simon Balázs BME IIT, 2011.

Bevezetés a Programozásba II 8. előadás. Polimorfizmus Giachetta Roberto

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

Név: Neptun kód: Pontszám:

Objektumorientált paradigma és a programfejlesztés

Programozás III. - NGB_IN001_3

Objektumorientált paradigma és programfejlesztés Bevezető

és az instanceof operátor

A SZOFTVERTECHNOLÓGIA ALAPJAI

ELTE, Informatikai Kar december 12.

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

Programozási nyelvek Java

Magas szintű adatmodellek Egyed/kapcsolat modell I.

Már megismert fogalmak áttekintése

Programozási technológia

Komponens alapú fejlesztés

Objektum orientált programozás Bevezetés

III. OOP (objektumok, osztályok)

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

Utolsó módosítás:

Szoftvertechnológia 8. gyakorlat. Tervezés Giachetta Roberto

Programozási technológia

Az UML2 és a modell-vezérelt alkalmazásfejlesztés

Interfészek. Programozás II. előadás. Szénási Sándor.

Szoftvertechnológia ellenőrző kérdések 2005

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

Bevezetés a Programozásba II 1. előadás. Szoftverfejlesztés, programozási paradigmák

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

Komplex záróvizsga témakörök Gazdaságinformatikus szak Pénzintézeti informatikus szakirány 2018

Bevezetés a Programozásba II 12. előadás. Adatszerkezetek alkalmazása (Standard Template Library)

A dokumentáció felépítése

Objektumelvű programozás

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

UML Feladatok. UML Feladatok

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

Modell alapú tesztelés mobil környezetben

Bevezetés a Programozásba II 10. előadás. Dinamikus memóriakezelés

Kölcsönhatás diagramok

Webes alkalmazások fejlesztése 12. fejezet. Szolgáltatás alapú kommunikáció (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Programozási Technológia előadás bevezetés. Előadó: Lengyel Zsolt

Adatstruktúrák, algoritmusok, objektumok

Komponens modellek. 3. Előadás (első fele)

Programozási nyelvek Java

A Java EE 5 plattform

UML. Unified Modeling Language Egységesített Modellező Nyelv

7. rész: A specifikációtól az implementációig az EJB rétegben

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

Programozás II. ATM példa Dr. Iványi Péter

CIM Core Model. Paller Gábor Internet és mobil rendszerek menedzselése

Szakterületi modell A fogalmak megjelenítése. 9. fejezet Applying UML and Patterns Craig Larman

Utolsó módosítás:

Alkalmazott Modul III 6. előadás. Objektumorientált programozás: öröklődés és polimorfizmus

OOP és UML Áttekintés

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

CORBA Áttekintés. Mi a CORBA? OMG and OMA. Ficsor Lajos. Miskolci Egyetem Általános Informatikai Tanszék

Információtartalom vázlata

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

JAVA PROGRAMOZÁS 2.ELŐADÁS

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

Rendszer szekvencia diagram

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

S01-8 Komponens alapú szoftverfejlesztés 2

Objektum Orientált Szoftverfejlesztés (jegyzet)

Dinamikus modell: állapotdiagram, szekvencia diagram

Tartalom. Szoftverfejlesztési. Szoftver = Termék. módszertan. la Rational XDE CASE eszköz. Az előállításához technológiára van szükség

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

Bánsághi Anna 1 of 67

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

Programozási alapismeretek 4.

Unit Teszt. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Unit Teszt / 22

CORBA bevezetés. Paller Gábor Internet és mobil rendszerek menedzselése

Eseményvezérelt alkalmazások fejlesztése I 11. előadás. Szoftverek tesztelése

Alkalmazott Modul III 4. előadás. Objektumorientált programozás: objektumok és osztályok. Procedurális programozás Koncepció

Folyamatmodellezés és eszközei. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Átírás:

ELTE-IK + st: boo ol Programozási technológia 1. 3. gyakorlat: Objektumorientált tervezés, az UML nyelv Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto

Objektumorientált programozás Az objektumorientált programozásban egymással kommunikáló objektumok összessége valósítja meg a feladatot minden objektum képes önálló működésre, és megvan a saját feladatköre az objektumok egymásnak üzeneteket küldenek, amelynek hatására az objektumok valamilyen működést végeznek, objektumok kapcsolatát relációnak nevezzük az objektumok állapottal rendelkeznek, ahol az állapot a benne tárolt összes érték összessége, és ami üzenet vagy a működés hatására megváltozhat minden objektum önállóan azonosítható, és két objektum még akkor is különbözik egymástól, ha teljesen azonos állapotban vannak 2

Objektumorientált programozás Az objektumoknak típusa van, amit osztálynak hívunk, ez szabályozza milyen műveletekre képes az egyed és milyen jellemzőkkel ruházható fel (tehát magában foglalja a metódusokat és attribútumokat, ez az enkapszuláció) az, hogy az osztályt mivel ruházzuk fel attól függ, milyen absztrakciót választunk, hiszen nagyobb absztrakciós szintnél elhanyagoljuk a lényegtelenebb tulajdonságokat, mindig a feladat határozza meg, mennyire kell precízen modelleznünk a feladatot szabályozhatjuk, hogy az osztály mely tulajdonságai mely további objektumok számára láthatóak, a metódusok pontos működését persze elrejtjük a külvilágtól (láthatóság szabályozás), de biztosítanunk kell megfelelő publikus felületet (interfészt) az üzenetátadáshoz 3

Objektumorientált programozás Az osztályok is kapcsolatban állhatnak egymással, ahol osztályból származtatunk további osztályokat, és a speciálisabb osztályok átveszik az általánosabbak tulajdonságait, ezt öröklődésnek nevezzük általában egyszeres, de lehet többszörös is megadható minden objektumnál, hogy melyik osztályból lett példányosítva, de ugyanakkor az az objektum az osztályának összes ősének is példánya, és adott helyzetben adott osztályúnak tekinthető, ez a polimorfizmus 4

Objektumorientált modellezés Az objektumorientált programozásnak sokáig nem volt egységes modellező felülete, azaz nem volt olyan eszköz, amely objektumorientált programok tervezését nyelvtől függetlenül meg tudta volna adni 1989-ben megszületett az Object Management Group (OMG), amelynek feladata az objektumorientált tervezés szabványosítása 1997-re megszületett a Unified Modelling Language (UML), mely egy vizuális programozási nyelv szoftverrendszerek absztrakt modelljeinek megalkotására Ebből fejlődött ki 2001-re a Modell Driven Architecture (MDA), amely egy teljes tervezési és platform független modellezési eljárást foglal magába, amely üzleti modelleket is képes előállítani 5

Objektumorientált modellezés Az UML segítségével szabványos módon lehet rendszerek terveit elkészíteni alkalmas üzleti folyamatok és programfunkciók, és adatbázis-sémák leírására a modellek automatikusan kódba fejthetőek, tehát tetszőleges objektumorientált nyelvre átültethetőek a nyelv kiterjeszthető, és lehetőséget ad a személyesítésre a nyelv leginkább diagramok keretében mutatkozik meg, noha a nyelv nem a diagramokat magukat adja meg, hanem a diagramok által reprezentált modell specifikációját 2003-ban készült el az UML 2.0-s specifikációja, amely 13 diagramtípust vezet be 6

Objektumorientált modellezés Az UML a szoftverrendszert a következő szempontok szerint tudja jellemezni: funkcionális modell: a szoftver funkcionális követelményeit adja meg és a felhasználóval való interaktivitást, pl.: felhasználói esetek diagramja, kihelyezési diagram szerkezeti modell: a program felépítését adja meg, milyen osztályok, objektumok, relációk alkotják a programot, pl.: osztálydiagram, objektumdiagram dinamikus modell: a program működésének lefolyását, az objektumok együttműködésének módját ábrázolja, pl.: állapotdiagram, szekvenciadiagram 7

Az UML diagramjai Diagram + st: boo ol Szerkezeti diagram Komponens Kihelyezési Csomag Viselkedési diagram Felhasználói esetek Állapot Aktivációs Osztály Objektum Összetett struktúra Szekvencia Időzítés Interakciós Kommunikációs Interakciós áttekintés 8

Komponensdiagram Amennyiben a rendszer több komponensből (programegységből) áll, akkor azokat függőségeikkel együtt ábrázolja A komponensek interfészeit portokkal ábrázolja, ezek adják meg a kommunikációs felületet cmp Component Model ImporterClient ImporterInterface ImporterServ ice SQLServerPort TypeManagement SQLServerPort XMLPort Types SQLServer 9

Kihelyezési diagram Megadja a szoftverrendszer kihelyezésének környezetét, illetve az egyes komponensek elhelyezkedését a környezetben Láthatóak a szoftver működéséhez szükséges előfeltételek, illetve a kapcsolódó adattárak deployment Deployment Model Client Machine «execution environment» ETR Serv er «device» Database Serv er ImporterClient Dataflow ImporterServ ice «datastore» ETR.NET Framew ork Log.NET Framew ork 10

Csomagdiagram Az egyes komponensek logikai felépítését taglalja, azaz milyen csoportokat alakítanak az osztályok Általában a csomagok a program névtereit adják meg + st: boo ol class Client Model Program - Main() : void ImportSystem + DataImporter + ExcelDataImporter + TextDataImporter GUISystem + FormItems + ImportRowIdForm + MainForm + NewTableForm + RowTypeForm + SettingsForm + StartForm + TypesForm DataSystem + Column + Connection + DataFormat + DataHandler + LocalDataType + RowType + SettingsReader + TableObject + TableType + TableTypesData 11

Osztálydiagram Megadja a rendszer osztályait és azok kapcsolatát (általában egy komponensen, vagy csomagon belül) Általában ábrázolja az attribútumokat és metódusokat láthatóságukkal és paraméterlistával class Application Widget # is_focused: bool # is_visible: bool # pos_x: int # pos_y: int # size_x: int # size_y: int + HandleEvent(genv::event) : void + Hide() : void + MouseOver(int, int) : bool + SetFocus(bool) : void + SetPosition(int, int) : void + Show() : void + Widget(int, int, int, int, bool) + Widget(Widget&) Table # data: std::vector<data*> # filter_first: std::string # filter_second: std::string # sort_order: int # start_pos: int + AddData(std::string, std::string) : void + Clear() : void + Filter(std::string, std::string) : void + First(int) : std::string + HandleEvent(genv::event) : void + Second(int) : std::string + Show() : void + Size() : int + Table(int, int, int, int, bool) «struct» Data + first: std::string + second: std::string + Data(std::string, std::string) 12

Objektumdiagram A programban szereplő objektumokat és relációikat ábrázolja Minden objektumot egy adott állapotban ad meg, azaz az attribútumok konkrét értékeket kapnak object Application -widgets my_application :MyApplication -widgets first_table :Table size_x = 200 size_y = 200 pos_x = 120 pos_y = 130 is_visible = true is_focused = false second_table :Table size_x = 200 size_y = 200 pos_x = 120 pos_y = 300 is_visible = false 13

Összetett struktúra diagram Egy osztály belső szerkezetét adja meg, és hogy az osztály milyen együttműködéseket végezhet Megjelennek az osztály metódusai, mint a kommunikáció részesei, illetve paraméterei és attribútumai, mint az adatok forrásai composite structure Table Application Run focus ev MouseOv er ev Table «role binding» HandleEv ent ev is_focused Focus is_focused 14

Felhasználói esetek diagramja Megadja a szoftverrendszer és a felhasználó interakciójának lehetőségeit, a külső programfunkciókat programegységekre, illetve csomagokra csoportosítva + st: boo ol uc Use Case Model Felhasználó Kliens Adatok szerkesztése Táblakezelés «include» Helyesség ellenőrzés Közvetítő Esemény naplózás Adatok feltöltése Sorok szűrése Tábla feltöltése Felhasználó kezelése Beállítások Bejelentkezés Rendszergazda 15

Állapotdiagram Reprezentálja az egyes osztályok állapotait, illetve állapotváltozásait a futás során beleértve a létrehozást és terminálást is Részletesen megadható, milyen események milyen feltételek mellett vezetnek az állapotváltozáshoz stm Passengers Do() [ Ship(i) in OnStation) and (money<100) ] OnStation OnShip Initial Do() [ (Ship(i) in OnStation) ] 16

Aktivációs A programfolyamatban keletkező aktivációkat kezeli, azaz, hogy milyen tevékenységeket hajt végre egy adott objektum a futás során + st: boo ol act Test MyApplication() Do() Action : RollDow n(int) Table() IsFocused() True RollDow n(int) Final Final 17

Szekvencia diagram A program futása során időben az egyes objektumok közötti életfolyamot mutatja az üzenetátadásokkal Megadja, mely objektumoknál van a vezérlés az adott időpillanatban sd CivilShipSequence Starbase DockWorker Dock() :bool true :bool Civilship Arrive() Passenger Trader GetTrader(int id) :bool true :bool GetCost() :int cost :int 18

Kommunikációs diagram Az objektumok közötti üzenetátadást és azok sorrendjét ábrázolja Az üzenetátadáson kívül megegyezik az objektum diagrammal sd StarbaseCommunication 1.8: Refuel() 1.7: GetCivilship(int id) w orker :DockWorker 1.2: Dock() 1.4: Fight() ms :Militaryship ship :Civ ilship 1: Dock() 1.1: IsIdle() base :Starbase 1.3: AttackStart() 1.5: Damage() 1.6: Damage() r :Raider 19

Időzítés diagram Időben (konkrétan, vagy viszonyítási alapon) adja meg az objektumok állapotváltozásait, illetve az üzenetek lefolyását sd Table + st: boo ol TimeLine2 :MyApplication Running Visualizing Construction MyApplication() {9} Show() {10} Do() Do() Show() Show() {10} Do() Show() Show() {10} le TimeLine3 :Tabl Construction Table() {1} Visualizing Modification Show() {10} Show() Mov edown() {5} 0 10 20 30 40 50 60 70 80 90 100 20

Interakciós áttekintés diagram Olyan aktivációs diagram, ahol minden aktivációt egy szekvencia ad meg, azaz minden aktivációs pont egy szekvenciadiagramot tartalmaz + st: boo ol 21

UML diagramok használata A szoftverfejlesztés különböző szakaszaiban az UML különböző diagramjait kell alkalmaznunk: 1. elemzés: felhasználói esetek, komponens, kihelyezési 2. specifikáció: komponens, kihelyezési 3. tervezés: 1. statikus tervezés: csomag, osztály, objektum 2. dinamikus tervezés: állapot, szekvencia, aktivációs, interakciós áttekintési, kommunikációs 4. tesztelés: időzítés Persze a későbbi fázisokban a korábban létrehozott diagramok újra alkalmazhatóak, esetlegesen módosíthatóak A diagramoknak a fázist követő dokumentációban szerepelnie kell 22