A programkód és az Unified Modeling Language (UML) osztálydiagramjának kapcsolata



Hasonló dokumentumok
Osztály szint tagok. Krizsán Zoltán 1 [2012. március 12.] Objektumorientált programozás C# alapokon tananyag

Események C#-ban Krizsán Zoltán iit

Programozás I gyakorlat

C# osztályok. Krizsán Zoltán

EPER E-KATA integráció

Objektumorientált programozás C# nyelven

Árverés kezelés ECP WEBSHOP BEÉPÜLŐ MODUL ÁRVERÉS KEZELŐ KIEGÉSZÍTÉS. v ECP WEBSHOP V1.8 WEBÁRUHÁZ MODULHOZ

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

4. Öröklődés. Programozás II

A táblázatkezelő felépítése

DEBRECENI EGYETEM INFORMATIKAI KAR. Az UML gyakorlati alkalmazásának bemutatása az AutoWorld rendszer tervezésén keresztül

FORTE MAP 5.0 Felhasználói tájékoztató

HENYIR felhasználói dokumentáció

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

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Osztály és objektum fogalma

A Microsoft Visual Studio 2005 fejlesztőkörnyezet

E-ADÓ RENSZER HASZNÁLATI ÚTMUTATÓ

Az éves statisztikai összegezés STATISZTIKAI ÖSSZEGEZÉS AZ ÉVES KÖZBESZERZÉSEKRŐL A KLASSZIKUS AJÁNLATKÉRŐK VONATKOZÁSÁBAN

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK KÖZÉPSZINT Függvények

A döntő feladatai. valós számok!

AWP TELEPÍTÉSE- WINDOWS7 64 OPERÁCIÓS RENDSZEREN

1. forduló. MEGOLDÁSOK Pontszerző Matematikaverseny 2015/2016-os tanév

JAVA PROGRAMOZÁS 3.ELŐADÁS

A Felhasználónév és Jelszó mezőkbe írjuk be az adatainkat, majd kattintsunk a Bejelentkezés gombra, vagy üssük le az Enter billentyűt.

KOVÁCS BÉLA, MATEMATIKA I.

Access adatbázis elérése OLE DB-n keresztül

G Szabályfelismerés feladatcsomag

Áramlástechnikai gépek soros és párhuzamos üzeme, grafikus és numerikus megoldási módszerek (13. fejezet)

Bánsághi Anna

OmniTouch 8400 Instant Communications Suite 4980 Softphone

BOLYAI MATEMATIKA CSAPATVERSENY FŐVÁROSI DÖNTŐ SZÓBELI (2005. NOVEMBER 26.) 5. osztály

Bánsághi Anna

Vizuális és eseményvezérelt programozás , II. félév BMF NIK

C++ programozási nyelv

FTP-kapcsolat létrehozása FlashFXP alatt

Programozás 1. 2.gyakorlat

Objektumorientált programozás C# nyelven

Fordítóprogramok Készítette: Nagy Krisztián

KOVÁCS BÉLA, MATEMATIKA I.

Algebra es sz amelm elet 3 el oad as Rel aci ok Waldhauser Tam as 2014 oszi f el ev

Az éves statisztikai összegezés STATISZTIKAI ÖSSZEGEZÉS AZ ÉVES KÖZBESZERZÉSEKRŐL A KLASSZIKUS AJÁNLATKÉRŐK VONATKOZÁSÁBAN

Felhasználói útmutató Dahua gyártmányú digitális képrögzítő eszközökhöz

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

Ablakok használata. 1. ábra Programablak

Emelt szintű érettségi feladatsorok és megoldásaik Összeállította: Szászné Simon Judit; dátum: november. I. rész

Számrendszerek közötti átváltások

Koszorúslány katalógus

Shared IMAP beállítása magyar nyelvű webmailes felületen

Emlékeztető: a fordítás lépései. Szimbólumtábla-kezelés. Információáramlás. Információáramlás. Információáramlás.

Tartalomjegyzék. Bevezetés...2

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

MAGYAR NYELV a 4. évfolyamosok számára. MNy2 JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

Útmutató a vízumkérő lap kitöltéséhez

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia

Származtatási mechanizmus a C++ nyelvben

Fókuszban a formahibák. Konzultációs nap Minőségfejlesztési Iroda szeptember 18. Fekete Krisztina

Számítógépes vírusok

OOP és UML Áttekintés

Digitális technika (VIMIAA01) Laboratórium 1

Épületvillamosság laboratórium. Villámvédelemi felfogó-rendszer hatásosságának vizsgálata

MATEMATIKA ÍRÁSBELI VIZSGA május 3.

Javítóvizsga témakörei matematika tantárgyból

Előzmények

Azonosító jel: Matematika emelt szint

Objektumorientált programozás C# nyelven

Programozás II gyakorlat. 4. Öröklődés

irányítószám: Ország: Magyarország

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

Conjoint-analízis példa (egyszerűsített)

Országos Középiskolai Tanulmányi Verseny 2011/2012 Matematika I. kategória (SZAKKÖZÉPISKOLA) Döntő. x 3x 2 <

Vodafone GPRS Kapcsolat létrehozása Win2000 alatt a Connect Me használata nélkül

SZAKÁLL SÁNDOR, ÁsVÁNY- És kőzettan ALAPJAI

8. melléklet a 92/2011. (XII. 30.) NFM rendelethez A SZERZŐDÉS TELJESÍTÉSÉRE VONATKOZÓ INFORMÁCIÓK I. SZAKASZ: A SZERZŐDÉS ALANYAI

117. AA Megoldó Alfréd AA 117.

2000 db speciális komposztláda, 0,3 m3 térfogatú

MBLK12: Relációk és műveletek (levelező) (előadásvázlat) Maróti Miklós, Kátai-Urbán Kamilla

Az informatika oktatás téveszméi

Erste MobilBank Felhasználói kézikönyv

Analízis elo adások. Vajda István október 3. Neumann János Informatika Kar Óbudai Egyetem. Vajda István (Óbudai Egyetem)

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

MÁTRIXOK SAJÁTÉRTÉKEINEK ÉS SAJÁTVEKTORAINAK KISZÁMÍTÁSA. 1. Definíció alkalmazásával megoldható feladatok

Dial-UP Kapcsolat létrehozása angol nyelvű Windows 2000 alatt

BOLYAI MATEMATIKA CSAPATVERSENY ORSZÁGOS DÖNTŐ SZÓBELI (2012. NOVEMBER 24.) 3. osztály

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉPSZINT Trigonometria

Halmazok és függvények

C#, OOP. Osztályok tervezése C#-ban

Borkereskedő. Dokumentáció a Programozási módszertan elmélete című tárgy beadandó programjához. Magyar Attila mattila@inf.elte.hu

Vegyes tételek könyvelése felhasználói dokumentum Lezárva:

Egyszerű áramkörök vizsgálata

1. 14 PONTOS MÉRET, NAGYBETŰS SZEDÉS, KÖZÉPRE IGAZÍTVA, MINDIG ÚJ OLDALON KEZDVE,

A TŰZVÉDELMI TERVEZÉS FOLYAMATA. Dr. Takács Lajos Gábor okl. építészmérnök BME Építészmérnöki Kar Épületszerkezettani Tanszék

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Címzett: Markus Goddemeier Fax: +49 (0)

A SZERZŐDÉS TELJESÍTÉSÉRE VONATKOZÓ INFORMÁCIÓK

MATEMATIKA ÍRÁSBELI VIZSGA május 8.

TMS Learning: Vezetői extrák

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

Házi dolgozat. Minta a házi dolgozat formai és tartalmi követelményeihez. Készítette: (név+osztály) Iskola: (az iskola teljes neve)

Átírás:

A programkód és az Unified Modeling Language (UML) osztálydiagramjának kapcsolata Kiegészítés a Szoftvertechnológia I. tárgy UML témaköréhez Készítette: Erdélyi Krisztina, PhD Jelen segédlet az UML osztálydiagramjának mélyebb megértése céljából bemutatja az osztálydiagram és a hozzá tartozó kód kapcsolatát. A kód C# nyelven íródott, a diagramok Enterprise Architectben (EA) és Visual Studio 2012-ben (VS) készültek. A Visual Studio diagramszerkesztőjét a.net-es nyelvekhez fejlesztették ki. Alapelve, hogy a kód és a diagram ugyanannak a funkciónak a két megjelenítési formája. Éppen ezért: a diagramot is a kód alapján generálja, a diagramot leíró fájlban csak annak megjelenítésére vonatkozó információt tárol, a diagramot és a kódot folyamatosan és automatikusan szinkronban tartja, csak azt jeleníti meg a diagramon, ami a kódból kiolvasható, igazodik a.net-es nyelvek sajátosságaihoz. Tehát a Visual Studio nem szabványos UML jelöléseket használ, de C#-ban a használata kényelmes. Az Enterprise Architect pontosan követi az UML jelölésrendszerét. Sztereotípiák speciális nyelvi elemek megjelenítéséhez Az UML jelölései nyelvfüggetlenek, ezért a modellezési nyelv a speciális programozási nyelvi elemek megjelenítéséről nem rendelkezik. A sztereotípiák nyújtanak lehetőséget az UML kiterjesztésére. Sztereotípiák segítségével speciális jellemzőket rendelhetünk egy-egy UML elemhez, így jelezve annak egyedi tulajdonságát. Például a C# nyelvben használt tulajdonság az UML-ben olyan metódus, amely <<Property>> sztereotípiával rendelkezik. (A sztereotípiákat mindig << és >> közé írjuk.) Az EA-ben ezt a megoldást látjuk. A sztereotípiák jelentenek megoldást az események megjelenítésére is. Az 1. ábra példát mutat tulajdonságok és események ábrázolására EA-ben (bal) és VS-ban (jobb). Form «property» + AcceptButton() : IButtoncontrol + CancelButton() : IButtonControl «Event» + Closing() : CancelEventHandler + Load() : EventHandler public class Form : ContainerControl public IButtonControl AcceptButton get; set; public IButtonControl CancelButton get; set; public event CancelEventHandler Closing; public event EventHandler Load; 1. ábra Tulajdonságok és események jelölése 1

Különböző típusok jelölése Absztrakt osztály jelölése UML-ben dőlt betű. Interfész jelölésére UML-ben használhatunk téglalapot <<interface>> sztereotípiával vagy kört (szárral a megvalósító osztályhoz csatlakoztatva). (2. ábra) ButtonBase «interface» IButtonControl Button public abstract class ButtonBase : Control public class Button : ButtonBase, IButtonControl 2. ábra Interfész és absztrakt osztály jelölése Generikus típus jelölése az alábbiakban látható (3. ábra). List T public class List<T> : 3. ábra Generikus típus jelölése A struktúra, a statikus osztály, a felsorolás és a delegált jelölése szabványos UML-ben sztereotípiákkal oldható meg. A VS egyéb, megkülönböztető jegyeket használ: struktúra: vastag keret (4. ábra), statikus osztály: szaggatott keret (5. ábra), felsorolás: lila háttér (6. ábra), delegált: rózsaszín háttér (7. ábra). «structure» Color public struct Color 4. ábra Struktúra jelölése 2

«static» File public static class File 5. ábra Statikus osztály jelölése «enumeration» FileMode public enum FileMode 6. ábra Felsorolástípus jelölése «delegate» Ev enthandler public delegate void EventHandler(object sender, EventArgs e); 7. ábra Delegált jelölése Tagok ábrázolása Az osztályok ábrázolásánál a mezők és a metódusok része elkülönül. VS-ban ehhez jön még hozzá a tulajdonságok és az események része. (Az események és tulajdonságok jelölését lásd a Sztereotípiák speciális nyelvi elemek megjelenítéséhez című fejezetben.) Az UML lehetőséget biztosít az osztályok részletesebb vagy áttekintőbb megjelenítésére. Az EA-ban láthatósági szintenként adhatjuk meg, hogy mely tagok jelenjenek meg az osztály ábrázolásán, VS-ban a tagokat külön-külön elrejthetjük. A láthatóságot az EA a szabványos módon (8. ábra), a VS külön jelekkel ábrázolja. A statikus tagokat aláhúzással jelzi az UML. Kezdőérék megadása az = jel után történhet. A változó típusának megadása a változónév : típus szintaktikával történik. Figyelem! Ez elért a C nyelvekben megszokottól. A diagram részletességétől függ, hogy megadjuk-e a mezők típusát és a metódusok paramétereit, visszatérési értékét (és ezek típusait). (8. ábra) 3

- privatefield: string = This is a priva... readonly # PublicProperty: string + InternalMethod() : string + protectedmethod(string) : string «property» + PublicProperty() : string public class private const string privatefield="this is a private constant."; protected string protectedmethod(string parameter); internal static string InternalMethod(); public string PublicProperty get; set; 8. ábra Osztályok tagjainak jelölése Osztályok közötti kapcsolatok Generalizáció: két osztály közötti általános-speciális viszonyt fejez ki. Az objektumorientált nyelvek öröklődési kapcsolatát jelzi. Jele: üresfejű háromszög. A 2. ábra Button és ButtonBase osztálya között látható generalizációs kapcsolat (ős/általános: ButtonBase, utód/speciális: Button). Az asszociációs, az aggregációs és a kompozíciós kapcsolat a kódban adattagként jelenik meg. Az ismerő/tartalmazó osztály adattagja a másik (ismert/tartalmazott) osztály egy példánya. Tehát a mezőket ábrázolhatjuk asszociációként is. A kapcsolaton megadhatjuk a mező nevét (szerepnév) és annak láthatóságát. Mivel a kódban nincs különbség a három kapcsolat között, a VS nem ábrázolja a különbséget. Alapos tervezésnél azonban szükség van a kapcsolatok megkülönböztetésére (pl. a kompozíciós kapcsolatnál a tartalmazó felel a tartalmazott példány felszabadításárért, ezért ilyen esetekben a szabványos UML jelöléseket kell használni tervezőszoftverben. A kapcsolatban részt vevő példányok számát (multiplicitását) az UML-ben egyértelműen (számmal) megadhatjuk, VS-ban csak tudjuk jelölni, hogy egy vagy több objektum kapcsolódik az osztályhoz. A 9. ábra három diagramja ugyanazt a kódot jeleníti meg: a formnak tagja egy ListBox, egy példány és egy Button lista. EA-ben tudjuk megjeleníteni a kompozíciót, vagyis, hogy a Form szerves részei a vezérlők, a Formnak gondoskodnia kell megszűnésekor a vezérlők nem felügyelt részének felszabadításáról (Dispose pattern). 4

-myinstance public partial class MyForm : Form List<Button> buttons; myinstance; ListBox listboxa; MyForm -listboxa ListBox -buttons * Button 9. ábra Asszociáció, aggregáció és kompozíció jelölése Függőség van két osztály között, ha az egyik használja (metódusának paramétere vagy visszatérési értéke, esetleg metódusában változó típusa) a másikat. Ezt UML-ben szaggatott nyíllal jelöljük. A VS nem jelöli ezt a fajta kapcsolatot (minden függőségi viszonyt így jelöl az UML). (10. ábra) MySecondClass + Method1(MySecondClass) : void public class public void Method(MySecondClass s) MyThirdClass th; MyThirdClass 10. ábra Függőség jelölése 5