Objektum Orientált Tervezés

Hasonló dokumentumok
Programfejlesztési Modellek

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

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

Programozás III. - NGB_IN001_3

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

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

V. Félév Információs rendszerek tervezése Komplex információs rendszerek tervezése dr. Illyés László - adjunktus

OOP. Alapelvek Elek Tibor

Objektumorientált paradigma és programfejlesztés Bevezető

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

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

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

S01-7 Komponens alapú szoftverfejlesztés 1

Objektumorientált paradigma

Programozási alapismeretek 4.

Objektum orientált programozás Bevezetés

Objektumorientált paradigma és a programfejlesztés

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

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

OOP és UML Áttekintés

01. gyakorlat - Projektalapítás

Programozás módszertan p.1/46

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

Interfészek. PPT 2007/2008 tavasz.

Adatstruktúrák, algoritmusok, objektumok

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?

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

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

Dr. Mileff Péter

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

Objektumelvű programozás

Szekvencia diagram. Szekvencia diagram Dr. Mileff Péter

Már megismert fogalmak áttekintése

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

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

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

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

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

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

Információtartalom vázlata

Miskolci Egyetem Alkalmazott Informatikai Intézeti Tanszék A minőségbiztosítás informatikája. Készítette: Urbán Norbert

Programozási technológia

Java programozási nyelv 5. rész Osztályok III.

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

Osztályok. 4. gyakorlat

Java programozási nyelv 4. rész Osztályok II.

Programozás alapjai Bevezetés

Programozási technológia 2.

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

Sike Sándor, Varga László Szoftvertechnológia és UML. Második, bővített kiadás

Programozási nyelvek Java

Bevezetés a Python programozási nyelvbe

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

Adatstruktúrák, algoritmusok, objektumok

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

S01-8 Komponens alapú szoftverfejlesztés 2

Előzmények

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

Java és web programozás

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

MUNKAANYAG. Szabó Mária. Programozás - Objektumorientált. gyakorlatban. A követelménymodul megnevezése: Informatikai ismeretek

Nagy bonyolultságú rendszerek fejlesztőeszközei

Programozási technológia 1.

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

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

Szoftverminőségbiztosítás

és az instanceof operátor

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.

Bevezetés a programozásba előadás: Alapvető programtervezési elvek

Miskolci Egyetem Általános Informatikai Tanszék

A tesztelés feladata. Verifikáció

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

Bánsághi Anna 1 of 67

Bevezetés a programozásba

JAVA PROGRAMOZÁS 2.ELŐADÁS

Részletes szoftver tervek ellenőrzése

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

Kölcsönhatás diagramok

Java programozási nyelv

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

Programtervezés. Dr. Iványi Péter

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

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

Projectvezetők képességei

Rekurzió. Dr. Iványi Péter

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

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

Software engineering (Software techológia) Bevezetés, alapfogalmak. Történelem 1. Történelem as évek Megoldandó problémák: Fejlesztő: Eszköz:

Bevezetés, a C++ osztályok. Pere László

Webes alkalmazások fejlesztése

Komponens alapú fejlesztés

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

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

Információs rendszerek Információsrendszer-fejlesztés

III. OOP (objektumok, osztályok)

Azonnali fizetési rendszer megvalósítása

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

Átírás:

Objektum Orientált Tervezés Felhasznált szakirodalom Sike Sándor-Varga László: Szoftvertechnológia és UML Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai Wikipédia Hibákkal kapcsolatban illetve legújabb változatért írj a falu@nyf.hu-ra. Mindenkinek engedélyezett, hogy ezt a dokumentumot a kapott formában bármilyen médiumon terjessze, vagy baráti alapon másolatokat készítsen róla, biztosítva azt, hogy ez a copyright és engedélyező megjegyzés megmarad, és terjesztő lehetővé teszi a további terjesztést ezen megjegyzés értelmében. 1. Történet SIMULA 67 [60] (ALGOL jellegű, öröklődés, overloading, statikus és dinamikus kötés, szemétgyűjtés, korutin) Smalltalk [72;74;76;78;80; V](Simula 67+LISP, 1970-es évek, tiszta OO, GUI) Objective-C (Smalltalk jellegű, Macintosh), C with classes, C++ [80] (SIMULA 67, bonyolult, nincs szemétgyűjtés, index határ ellenőrzés) Eiffel [80](tiszta OO) Pascal [86] (Object Pascal, Turbo PAscal, Delphi) Java (Oak)[90](egyszerűsített C++, van sz.gy., i.h.e., platformfüggetlen, nagy osztály könyvtár, nem hatékony) Hibrid, ha csak támogatja az OO-t (objektum azonosság, osztályozás, bezártság, de nincs öröklődés, specializálás). 2. A szoftver minősége (h) (i) (j) Helyesség: a specifikációnak megfelel Hibatűrés: abnormális esetben is normálisan működik Karbantarthatóság, bővíthetőség Újrafelhasználhatóság Kompatibilitás (belső/külső) Felhasználóbarátság Hordozhatóság (hardver/szoftver) Hatékonyság (idő/hely) Ellenőrizhetőség Szabványosság 3. A szoftver fejlesztés lépései Feladatmegfogalmazása; Szemléleti szint Elemzés vagy analízis: a feladat felbontása részekre; Koncepcionális szint, csak a "MIT" az érdekes, a "HOGYAN0" nem Tervezés: a számítógépes megvalósítás körvonalazása (adatstruktúrák, nyelvek); Technikai szint Programozás: az ami a neve; Implementációs szint Gépi kód 4. Az Objektum Orientált Tervezés 70-től: Szoftverkrízis: a hagyományos módszer már alkalmatlan a jó szoftver fejlesztésére: paradigmaváltás (szemléletmód) Strukturált szemlélet: i. A teljes feladat egy absztrakt utasítás Időbeli sorrendiség alapján történik a részekrebontás i Felülről lefelé építkezik A szorosabban összetartozó adatelemek a folyamattól függetlenül csoportosíthatóak. v. Az adatcsoportok kezelése a programban szétszórva találhatóak. vi. Legkisebb modulja az eljárás, melynek adatai elvesznek. globális változókat kell általában használni Objektum orientált szemlélet: i. Objektumok üzenetei alkotják a programot Nincs igazi időbeliség i Lentről felfelé építkezik Az adatokhoz kapcsoljuk az őket kezelő programrészeket v. Legkisebb modulja az objektum

5. A valós világ modellezése Absztrakció: leegyszerűsítés, csak a lényeges dolgokat vesszük figyelembe Megkülönböztetés: eltérő tulajdonság kiemelése "azonos" dolgoknál Osztályozás: Kategorizálás Általánosítás: Több objektum leírásából kiemeljük a közös jellemzőket "mindegyik ugyanolyan lényegileg" (Osztály alkotás) Specializálás: Egy objektum leírásához egyedi jellemzőket adunk "olyan mint, de..." (Öröklés) Kapcsolatok felépítése, részekrebontás: "Ez valamihez tartozik"; "Ez valamiket tartalmaz" i. ismeretség: függetlenül is létezhetnek, legalább az egyik ismeri/használja a másikat egész-rész: a tartalmazó megszünése esetén megszűnik a tartalmazott is. Kompozíciónak nevezzük, ha nem vehető ki a rész. 6. Objektum orientált program jellemzői Objektum: Információt tárol és kérésre feladatot hajt végre. Az objektum felelős a feladatainak korrekt elvégzéséért. Adatok (attribútomok) és metódusok (operációk, műveletek, azaz függvények, eljárások) összessége. Az objektum állapota az adatok pillanatnyi értékei Objektumorientált program: Egymással kommunikáló objektumok összessége, melyben minden objektumnak megvan a jól meghatározott feladata. (A "mit" az érdekes, nem a "hogyan".) A program a vezérlő objektum megszólításával indul (általában rögtön várakozik a felhasználóra). Információ elrejtése: Az objektumokat CSAK üzeneteken keresztül kérhetjük meg a feladatok elvégzésére, csak ún. interfészen keresztül lehet kommunikálni vele. Az üzenet egy kívülről is elérhető metódus. i. Kliens, aktor, ügyfél, kérő: a feladatot végeztető "aktív" objektum pl. vezérlők. Nincs "export" felülete. i Szerver, kiszolgáló, végrehajtó: a feladatot elvégző "passzív" objektum pl. printer, konténer. Nincs "import" felülete Ágens, ügynök: kér és végrehajt. Láthatóság i. +public: Bárki bárhonnan -private: Osztályon kívül senki sem i protected: Csak bizonyos helyekről (csak öröklésen keresztül) (h) (i) (j) Az objektum inicializálása a kezdeti adatok megadása, kezdeti tervékenységek elvégzése. Általában ez konstruktor is egyben. Konstruktor: az objektum létrehozója, általában inicializál is. Destruktor: az objektum megszüntetője. Az objektum belseje sérthetetlen. Objektum típusok (k) (l) (m) (n) (o) (p) (q) (r) (s) (t) (u) i. Határobjektum: Interfész objektum i Konténer objektum: Objektumok kollekciója, s a kollekciót karbantartó metódusok. Riport objektum: bekér, feldolgoz, kiír Kontrol objektum: Vezérel, számol this, self paraméter: magát az objektumot jelenti Egybezárás: Az adatok és metódusok összezárása Kód újrafelhasználhatósága: Az osztályok. Polimorfizmus/többalakúság: Ugyanarra a kérelemre különböző objektumok különbözően reagálhatnak. Az üzenet küldőjének nem kell tudni a szerver osztályát. Az objektumokat osztályokba soroljuk (Osztályozás, valójában az osztályból jön létre az objektum.) Az osztály (típus) egy objektum minta, mely alapján példányokat (objektumokat) hozhatunk létre. Egy objektum csak egy osztályhoz tartozhat, s ismeri is az osztályát. Egy osztály örökölhet tulajdonságokat (változók) és viselkedésformákat (metódusok) egy másik osztálytól, ekkor csak az eltéréseket kell megadni. Öröklődés: Egy már meglévő osztály továbbfejlesztése. Az utódosztály az ősosztály (szuper )specializálása. Lehet több ős is. i. Új adatok i Új metódusok Régi metódusok átírása Osztályhierarchia: Az öröklődések diagramja. Késői kötés: csak később a futás alatt derül ki a hogy melyik operációt kell végrehajtani.(futás alatti kötés, vagy dinamikus kötés) Virtuális metódus: címét a program csak futáskor oldja fel. Ha egy metódus virtuális, akkor öröklés után is az kell, hogy maradjon. (v) Absztrakt metódus: Üres virtuális metódus, csak örökítési célt szolgál

(w) Absztrakt osztály: Absztrakt metódust tartalmazó osztály, nem példányosítjuk, csak örökítési célt szolgál (x) Osztálykönyvtár: Osztályok (komponensek) gyűjteménye Programfejlesztési modellek A program termékké vált (szolgáltatási funkció, minőség, előállítási költség, határidő), előállításához technológiára van szükség. Különleges termék. 1. A nagy méretű programrendszerek jellemzői Nagy bonyolultságú rendszer (nem lehet fejben egy embernek átlátni) Csapatmunkában készül Hosszú élettartamú (verziók, stb) 2. A nagy méretű programrendszerek esetén felmerülő feladatok, melyekért a projektmenedzser felelős A követelményeket előre pontosan írásban meg kell határozni A program kidolgozásának menetét meg kell határozni (mérföldkövek, határidők, feladatok) ( ) i. A projekt részfeladatainak meghatározása F 1 F 2 A részfeladatok megoldásiidejének megbecslése F 1 10 F 2 20 i A részfeladatok függőségeinek meghatározása Mérföldkövek (ellenőrzési pontok) kijelölése M 1 2006.09.25 M 2,4 2006.12.24 Példa: Sike 20 Erőforrások meghatározása, beszerzése (szoftver, hardver, pénz, szakember) A fejlesztés menetét is dokumentálni kell Szervezni és irányítani kell a munkát, erőforrásokat Igazolni kell a program jóságát i. Verifikáció: A specifikáció szerinti helyesség bizonyítása Validáció: Az előírt minőségi tulajdonságok ellenőrzése (erőforrásigény, robosztusság, hatékonyság, bonyolultság, felhasználó barátság) Validation: "Are we building the right product?", i.e., does the product do what the user really requires? Verification: "Are we building the product right?", i.e., does the product conform to the specifications? A rendszer követésének, karbantartásának megszervezése/tervezése 3. Egyszerű programfejlesztési modell Megoldandó feladat Programozás Program az adott programozási nyelven Program gépi kódban Eredmény 4. Specifikációra épülő programfejlesztési modell Megoldandó feladat Követelmények megfogalmazása Informális leírás Specifikáció Formális leírás (absztrakt program) Implementáció Program az adott programozásinyelven

Program gépikódban Eredmény Az absztrakt szintaxis és szemantika szempontjából pontos megoldás korai fázisban Az absztrakt leírás formális elemezhetősége A konkrét leírás (program) helyességének bizonyíthatósága az absztrakt leírás szerint Magas matematikai ismeretek szükségesek a formális specifikációs módszerek alkalmazásánál A formális specifikáció alkalmazása nagyobb feladatoknál nehézkes és áttekinthetetlen A matematikai bizonyítás automatizálható, de a tételek megfogalmazása összetettebb esetekben már nehéz feladat. (Lsd. Floyd-Naur- Hoare féle parciális helyesség bizonyítás) 5. Nagy rendszerek általános fejlesztési modellje A formális specifikációs módszereket kisebb részfeladatoknál alkalmazzuk. A formális leírás helyébe a programrendszer tervének elkészítése lép. Megoldandó feladat Követelmények megfogalmazása Informális leírás Tervezés Program rendszerterve Implementáció Program az adott programozásinyelven Program gépikódban Eredmény A programkészítés hagyományos fázisai Követelmények leírása Specifikáció Tervezés (vázlatos, finom) Implementáció, integráció Verifikáció, validáció Rendszerkövetés, karbantartás Fázisok közötti kapcsolatok leírására szolgáló modellek: Vízesés modell Probléma Követelmények definíciója Szoftverrendszer vázlatos terve Szoftverrendszer finom terve Implementáció+egységek tesztjei Integráció+rendszer tesztje +karbantartás A gyakorlat szülte A project munkájának megszervezése nagyon nehézkes (Párhuzamos munka, ellenőrzési pontok) Új szolgáltatás utólagos bevezetése mindenütt módosítást okoz A validáció az egész megismétlését követelheti meg Evolúciós modell A megoldás iterációs folyamat eredménye, prototípusok sorozata. Előnye: Nem kell részletes specifikáció

Rövid idő alatt létrehozható rendszereknél eredményes A rendszer utólagos módosítása, bővítése nehézkes Nem tekinthető jól át a projekt A gyors fejlesztés a dokumentálás rovására megy Boehm-féle spirális modell (1988) A programok iterációval készülnek, ezek spirálba olvaszthatóak, egy "spirál-menet" egy iteráció, melynek 4 szakasza van: Cél: i. Célok, alternatívák, korlátozások i Korlátozás: Alternatívák kiértékelése, kockázatok elemzése PROTOTÍPUS(OK) A fázis termékének megvalósítása, validáció A következő fázis megtervezése az elemzés tárgya Alternatívák: Kockázatok: Kockázat kezelése: ami a megvalósításban határt szab a lehetőségnek a célokmegvalósításának különböző útjai az egyes alternatívák nagy valószínűséggel hibát okozó forrásai stratégia felállítása a kockázat hatásának a csökkentésére Jó dokumentáltság A projekt strukturáltsága, az iterációs fázisok szabadon megválaszthatóak A fázisbeli szakaszok szintén iterálhatóak A fejlesztést mindig validáció követi Újabb fázisok lehetségesek minden ciklusban Munkaigényes, bonyolult, költséges és nehezen oldható meg Nem gazdaságos a szakemberek foglalkoztatása, alig van párhuzamos munka