300 likes | 378 Views
Objektumorientált tervezés és programozás II. 2. előadás. Gyurkó György. A tervezés vetületei és modellezési technikái (UML). Használati eset vetület (nézet) Funkcionális követelmények leírása Statikus modellek (szerkezeti modellezés)
E N D
Objektumorientált tervezés és programozás II.2. előadás Gyurkó György
A tervezés vetületei és modellezési technikái (UML) • Használati eset vetület (nézet) • Funkcionális követelmények leírása • Statikus modellek (szerkezeti modellezés) • Osztályok definiálása, osztályok közötti viszonyok (általánosítás/specializáció, asszociációk, függések) esetleg objektumok és azok viszonyai • Dinamikus modellek (viselkedésmodellezés) • Objektumok együttműködése/kommunikációja, állapotváltozásai (cél az osztályok metódusainak meghatározása, a statikus modell finomítása) • Üzleti folyamatok leírása tevékenységdiagrammal (cél: a követelmények meghatározása, pontosítása) • Alkalmazás / komponensmodul működésének leírása tevékenységdiagrammal • Kivitelezési modellek (architektúramodell) • Komponensdiagram (az alkalmazás felépülése kódkomponensekből) • Telepítési diagram
A statikus modellezés Célja: • Osztályok definiálása (a tagjainak definiálásával) • Osztályok közötti viszonyok (általánosítás / specializáció, asszociációk, függések) megadása Technikái: • Osztálydiagram • Objektumdiagram (előzetes elemzés osztálydiagram készítéséhez vagy példányszintű részletek utólagos kifejtése)
Statikus modellek típusai • Elemzési modell (a szakmai tartalomra koncentrál) • Tervezési modell (figyelembe veszi a megvalósítás architektúráját, lehetőségeit; a programnyelvi környezet lehetőségeit)
Az előbbi objektumdiagramból származtatott osztálydiagram
Példa az„Egy szupermarket parkolási rendszere” esettanulmányból
Példa az „Egy szupermarket parkolási rendszere” esettanulmánybólAz előbbi osztálydiagramból származtatott osztály-diagram (elemzési modell)
Példa az „Egy szupermarket parkolási rendszere” esettanulmánybólOsztálydiagram - tervezési modell változat (figyelembe veszi a szálakat)Az elemzési modelltől való eltérés jellemzőbb okai:- Különböző forrásnyelvi környezetek- Különböző készen adott osztálykönyvtárak.
Az asszociáció speciális változatai A B • Kompozíció: Tartalmazási asszociáció. Az A tartalmazza B-t. A B egy példányát az A-nak legfeljebb egy példánya tartal-mazhatja; és a Begy már tartalmazott példánya más osztály példányaival sem lehet tartalmazotti viszonyban. • Aggregáció: Gyengébb tartalmazási reláció. A B egy példányát az A-nak több példánya is „tartalmazhatja”; illetve más osztályú objektumok is „tartalmazhat-ják”. A B A B A B
A specializáció két változata • Kiterjesztés: A B osztály plusz képességet ad hozzá az az A ősosztály képességeihez, vagy valamit az ősosztálytól eltérő módon old meg. (Két interfész között csak kiterjesztés viszony lehet.) • Megvalósítás: A B osztály megvalósítja (1) az Ainterfészt vagy (2) egy <<type>> sztereotípusú osztály műveleteit. (A (2) eset a C# és a Java nyelvekben nem értelmezhető.) A B A B
Osztályok közötti függés fogalma • Tágabban értelmezve: A B osztály függ az Aosztály-tól, ha valamilyen módon használja az A osztályt (annak definícióját). Ezen értelmezés szerint aspeci-alizáció és az asszociáció is függés. • Szűkebben értelmezve: A tágabb értelemben vett függések olyan esetei, amelyek mind a specializáció-tól, mind az asszociációtól különböznek. A szűkebb értelemben vett függés jelölése: A B
Miért kell megjelölni a függéseket? • Mert ha a B osztály függ az Aosztálytól, akkor az A osztály definíciójának megváltoztatása kihathat a Bosztály működésére is . • Tehát a függések jelzésével azt dokumentáljuk, hogy valamely osztály definíciójának megváltoztatása mely más osztályok működésére lehet hatással.
Még egy példa függőségre Program.cs: ... namespace OO_szemléltetés { staticclass Program { /// <summary> /// The main entrypointfortheapplication. /// </summary> [STAThread] staticvoid Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } }
Az osztálydiagram szimbólumai • Osztály (interfész, típus, C#-ban struktúra is) • Általánosítás / specializáció (kiterjesztés, megvalósítás) • Asszociáció • Aggregáció, kompozíció • Függőség