Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

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

Hasonló előadás


Az előadások a következő témára: "Haladó C++ Programozás Programtervezési minták – alapok Sonkoly Balázs 2014.11.20."— Előadás másolata:

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

2 Programtervezési minták - alapok 2 Á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

3 Programtervezési minták - alapok 3 Tervezés 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

4 Programtervezési minták - alapok 4 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

5 Programtervezési minták - alapok 5 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”

6 Programtervezési minták - alapok 6 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.”

7 Programtervezési minták - alapok 7 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

8 Programtervezési minták - alapok 8 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

9 Programtervezési minták - alapok 9 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)

10 Programtervezési minták - alapok 10 Ö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!

11 Programtervezési minták - alapok 11 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!

12 Programtervezési minták - alapok 12 Öröklés és paraméterezett típusok 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

13 Programtervezési minták - alapok 13 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

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


Letölteni ppt "Haladó C++ Programozás Programtervezési minták – alapok Sonkoly Balázs 2014.11.20."

Hasonló előadás


Google Hirdetések