Haladó C++ Programozás Programtervezési minták – alapok Sonkoly Balázs

Slides:



Advertisements
Hasonló előadás
7. előadás.  Zend_Auth komponens  Authentikációs típusok  Az authentikáció menete  Zend_Acl_Resource  Zend_Acl_Role  Jogosultságkezelés ZF-ben.
Advertisements

ADATBÁZISOK.
Tervezési minták és a PHP 5
Hatékonyságvizsgálat, dokumentálás
C++ programozási nyelv Gyakorlat hét
Programozás III OOP ALAPOK.
Projektoktatás április 8. Papp Dolli.
Az integrált áramkörök (IC-k) tervezése
Számvitelszervezés Az adatmodelltől az adatbányászatig SZIE-KVA, október 15.
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,
Fekvőbeteg adatbázis szervezés GyógyinfokPirisa Levente.
Programozás III FACTORY, KOMPOZÍCIÓ és EGYEBEK.
© 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.
Bevezetés a Java programozásba
Vizuális modellezés Uml és osztálydiagram UML eszközök
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.
Az objektum-orientált tervezési alapelvek kritikai vizsgálata
Pályázat és projekt menedzsment
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.
6. előadás Hatókör, láthatóság, élettartam. Változók leképzése a memóriára. Blokkszerkezetes nyelvek. Kivételkezelés.
6. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
Szervezetfejlesztési Program
Döntéselőkészítés, döntéstámogatás
Operációkutatás eredete
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,
Objektumorientált tervezés és programozás II. 3. előadás
Szakértők és rendszerek
Jelentések Tábla vagy lekérdezés nyomtatásban alkalmas megjelenítése.
Magas szintű hardware szintézis
Prezentáció a prezentációról
Hernyák Zoltán Programozási Nyelvek II.
Hernyák Zoltán Programozási Nyelvek II.
11. tétel Adatbázis táblái közti kapcsolatok optimalizálása
Budapesti Műszaki Főiskola Neumann János Informatikai Kar Informatikai Automatizált Rendszerek Konzulens: Vámossy Zoltán Projekt tagok: Marton Attila Tandari.
Generics Krizsán Zoltán. Bemutató A.NET 2.0 verziótól. A.NET 2.0 verziótól. Típusparaméter Típusparaméter Más nyelvben ez a template (sablon). Más nyelvben.
Az üzleti rendszer komplex döntési modelljei (Modellekkel, számítógéppel támogatott üzleti tervezés) II. Hanyecz Lajos.
„Kapocs” Kapcsolatokat (címek, telefonszámok stb
1 Objektum orientált programozás Öröklődés: többszörös öröklődés, konstruktorok, destruktorok, overloading Nagy Szilvia.
Objektumvezérelt rendszerek tervezése 4.óra – Composite, Decorator © Fülöp Lajos.
Objektumvezérelt rendszerek tervezése
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.
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Programozás, programtervezés
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.
Gyurkó György. Az OO programozás és tervezés története 1960-as évek: SIMULA (véletlen folyamatokat szimuláló programok írása) az OO nyelvek őse 1970-es.
1 Objektum orientált programozás Az objektumok és az osztályok – példányosodás Nagy Szilvia.
Grafikus programozás Készítette: Csernok László
Készítette: Kokrák Mihály Konzulens: Smid László
5. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
Opencms modul fejlesztés Krizsán Zoltán. Modulok fajtái Nincs előírás, csak tipikus tennivalók: –Content type: új típus(oka)t vezet be. –Template: új.
Adatbázisszintű adatmodellek
A Mozilla magyar nyelvű szerkesztőjének használata
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.
Egyedül vagy partnerségben?. Konzorcium fogalma  több érdekelt vagy egy érdekcsoport időleges együttműködése valamely közös cél megvalósítása érdekében.
A szoftver mint komplex rendszer A fejlesztési módszertanok általános céljai: Összetett problémák kezelhetővé tétele A fejlesztési és megtérülési jellemzők.
A szoftver mint komplex rendszer: objektumorientált megközelítés.
Strukturális tervezési minták
Programtervezési minták
Önértékelési projektterv
Beépített függvények használata programozáskor
Neumann János Informatikai Kar
Hernyák Zoltán Programozási Nyelvek II.
Beépített függvények használata programozáskor
Az interaktív vizsga jellegzetes feladattípusainak áttekintése
Mesterséges intelligencia
Nagy Attila1,2, Rovó László1, Kiss József Géza1
Előadás másolata:

Haladó C++ Programozás Programtervezési minták – alapok Sonkoly Balázs 2014.11.20.

Programtervezési minták - alapok Áttekintés Programtervezési minták – alapötletek Minták megadása Milyen tervezési problémákat oldanak meg? Minták csoportosítása 2014.11.20. Programtervezési minták - alapok

Programtervezési minták - alapok Hatékonyság ↔ átláthatóság Most: hangsúly a tervezésen „Sokkal könnyebb egy jól működő programot hatékonnyá tenni, mint egy hatékonyt jól működővé.” [Yourdon] Jól tervezett program (pl. minták használata): általában több munka, mint az alkalmi megoldásokkal, de megéri újrahasznosíthatóság rugalmasság 2014.11.20. Programtervezési minták - alapok

Programtervezési minták (1) Cél: jobb újrahasznosíthatóság nagyobb rugalmasság ötletek rögzítése a tervezéshez ne kelljen minden problémára új megoldást kidolgozni Objektumközpontú programozás előnyei rugalmasság modularitás átláthatóság Már bevált, működőképes megoldások újrahasznosítása nem kezdeti ötletek, hanem hosszú évek alatt kidolgozott megoldások többszöri újratervezés, újrakódolás 2014.11.20. Programtervezési minták - alapok

Programtervezési minták (2) NEM egyszerű építőelemek, melyek egy osztályként megvalósíthatók összetett, teljes alkalmazások vagy alrendszerek készítéséhez használható tervezetek HANEM egymással együttműködő objektumok és osztályok leírásai, amelyek testre szabott formában valamilyen általános tervezési problémát oldanak meg egy bizonyos összefüggésben tulajdonképpen „receptek”, „megoldás sablonok” 2014.11.20. Programtervezési minták - alapok

Programtervezési minták - alapok Minták – alapötlet Christopher Alexander – 1977 Épületek és városok mintái „Minden MINTA olyan problémát ír le, ami újra és újra felbukkan a környezetünkben, s aztán leírja hozzá a megoldás magját, oly módon, hogy a megoldás milliószor felhasználható legyen, anélkül, hogy valaha is kétszer ugyanúgy csinálnánk.” 2014.11.20. Programtervezési minták - alapok

Programtervezési minták - alapok Minták megadása Minta neve jó név választása mindig fontos tudunk beszélni róla, hivatkozni rá Probléma leírása mikor alkalmazzuk a mintát a probléma és összefüggései Megoldás terv felépítéséhez szükséges elemek (osztályok, objektumok), viszonyaik, hatáskörük, együttműködési lehetőségeik nem konkrét megvalósítás – sablon, ami különböző helyzetekben alkalmazható Következmények előnyök, hátrányok értékelés – tervezési alternatívák 2014.11.20. Programtervezési minták - alapok

Tervezési problémák (1) Minták: fontos tervezési problémákra adnak megoldást Megfelelő objektumok keresése Szükséges objektumok kiválasztása Objektumfelületek meghatározása alapfogalmak: művelet szignatúrája: név, input (objektum-) paraméterek, visszatérési érték objektum felülete: összes szignatúrája típus: egy bizonyos felület (objektumnak több típusa is lehet!) egyforma felületek  futásidőben cserélhetők (polimorfizmus) kulcselemek azonosítása felületen áthaladó adatok mit ne tegyünk a felületbe felületek közötti kapcsolatok 2014.11.20. Programtervezési minták - alapok

Tervezési problémák (2) Objektummegvalósítások meghatározása objektum típusa ↔ osztálya felületöröklés ↔ osztályöröklés felületöröklés: egy objektum mikor használható egy másik helyett osztályöröklés: objektum megvalósítása egy másik objektum megvalósításának segítségével C++ nem tesz különbséget, de tipikusan (tiszta) osztályöröklés: privát öröklés (tiszta) felületöröklés: nyilvános öröklés tisztán elvont osztályoktól 1. alapelv: Programozzunk a felületre a megvalósítás helyett! Az elvont osztályban meghatározott felületet bővítsük (felületöröklés) Változásra tervezve: új igények és változó igények megérzése (benne van a mintákban) 2014.11.20. Programtervezési minták - alapok

Öröklés vagy összetétel (kompozíció)? Öröklés („fehér dobozos”) előnyök statikus (fordításkor) egyértelmű könnyebb az újrahasznosított megvalósítás módosítása (szülőnél) hátrányok örökölt megvalósítás futási időben nem változtatható megszegi az egységbezárást ez a függőség korlátozza az újrahasznosíthatóságot, rugalmasságot javaslat: csak elvont osztályoktól örököljünk Összetétel („fekete dobozos”) előnyök dinamikus (futási időben) figyelmesen tervezett felületek kellenek nem szegjük meg az egységbezárást kompatibilis típusú objektumok cserélhetők kevesebb megvalósítási függőség egyszerűbb osztályhierarchia hátrányok nehezebb érthetőség 2. alapelv: Használjunk objektum-összetételt osztályöröklés helyett, amikor csak lehet! 2014.11.20. Programtervezési minták - alapok

Képviselet (delegáció) Speciális összetétel Örökléshez hasonló kód újrahasznosítási módszer Résztvevők: fogadó objektum és képviselője Példa: Ablak – Téglalap kapcsolat az Ablak egy Téglalap (osztályöröklés) helyett az Ablaknak van egy Téglalap példánya (képviselője), akire bizonyos műveleteket átruház Előnyök viselkedés kialakítása futási időben összetétel módja változtatható Hátrányok nehezebb érthetőség, mint statikusabb programoknál Javaslat: Csak akkor használjuk, ha többet egyszerűsít, mint bonyolít! 2014.11.20. Programtervezési minták - alapok

Öröklés és paraméterezett típusok C++: sablonok Egy típus meghatározása anélkül, hogy minden általa felhasznált típust megadnánk Paraméterek Korábban volt részletesen Ezekkel most nem foglalkozunk 2014.11.20. Programtervezési minták - alapok

Objektummodell – jelölések (ism.) Fontosabb relációk Öröklés (szülő-gyermek kapcsolat) („háromszög”) Komponens (összetétel, aggregáció) reláció („rombusz”) Hivatkozás (ismeretség) („folytonos vonal”) Példányosítás („szaggatott vonal”) Egy összetettebb példa 2014.11.20. Programtervezési minták - alapok

Minták csoportosítása Cél szerint létrehozási szerkezeti viselkedési Hatókör szerint osztály objektum 2014.11.20. Programtervezési minták - alapok