< Programozás
UML
Szerző: Sallai András
Copyright © 2011, Sallai András
Szerkesztve: 2011, 2014, 2020, 2023
-
-
Bevezetés
Az UML az Unified Modeling Language szavakból alkotott betűszó.
Magyarul Egységesített Modellező Nyelv.
Egy grafikus modellező nyelv a szoftverrendszerek különböző nézeteinek modellezésére,
de alkotóik szerint általános célú.
Grady Booch, James Rumbaugh és Ivar Jacobson munkája, amely 1.0 verzióként, 1997-ben az USA-ban készült.
Az OMG csoport szabványosítja, amelynek tagja a következő cégek:
A szoftverfejlesztés során a tervezésben használjuk, a megbízható és áttekinthető
tervezet létrehozása érdekében.
A következő nyelvek mellett előszeretettel használják:
Mit modellezhetünk vele:
Diagramok
Struktúramodellezés
A rendszer struktúráját ábrázoló diagramok
Osztálydiagram (class diagram)
Objektumdiagram (object diagram)
Megadja a rendszer objektumait, és az azok közötti kapcsolatokat
Az osztálydiagram egy „pillanatfelvétele”.
Komponensdiagram (component diagram)
Telepítési diagram (deployment diagram)
Viselkedés modellezés
A rendszer viselkedését ábrázoló diagramok.
Használati eset diagram (use case diagram)
Megadja, hogy a felhasználó mire tudja használni a rendszert.
Megadja, milyen esetekben használható egy szoftver
Szekvenciadiagram (sequence diagram)
Aktorokat, objektumokat és az azok közötti kapcsolatokat, kölcsönhatásokat (üzeneteket) ábrázoló diagram.
A szekvenciadiagramot és az együttműködési diagramot együttesen interakció diagramoknak nevezzük.
A szekvenciadiagram olyan interakció diagram, mely az idő múlására helyezi a hangsúlyt.
Együttműkösi diagram (collaboration diagram)
Megadja a rendszer objektumait, az azok közötti kapcsolatokat és üzeneteket.
Az együttműködési diagram az osztálydiagram egy „pillanatfelvétele”.
Az együttműködési diagram a szekvenciadiagram egy más formája
Állapotdiagram (state diagram):
Aktivitásdiagram (activity diagram)
Leír egy folyamatot (tevékenységek egymásutánját).
Az üzleti folyamat diagram egy speciális aktivitá sdiagram, mely leírja a rendszert körülvevő folyamatokat,
illetve azt a környezetet, amelybe a rendszert el kell helyezni.
Rajzelemek
Osztály diagram
Az UML-ben az osztályokat egy téglalapban ábrázoljuk, amelyet
vízszintesen három részre osztunk.
Legfelülre írjuk az osztály nevét, középre az adattagokat,
alulra pedig a metódusokat.
Egy osztályból létrehozott objektumot is téglalapban ábrázolunk, de
az objektum nevét aláhúzzuk,
Osztályok közötti kapcsolatok
Asszociáció
Az asszociáció többféle kapcsolatot is takarhat. Jelölése:
- Prog.java
class Dolgozo {
String nev;
int kor;
}
class Kezelo {
public Dolgozo ujDolgozo() {
Dolgozo janos = new Dolgozo();
janos.nev = "Nagy János";
janos.kor = 35;
return janos;
}
}
- Prog.java
class Dolgozo {
String nev;
int kor;
}
class Kezelo {
public void kiir(Dolgozo dolgozo) {
System.out.println(dolgozo.nev);
System.out.println(dolgozo.kor);
}
}
A Kezelo osztály egyik metódusa, hívja a Dolgozo osztály egyik metódusát.
A Kezelo osztály egyik metódusa (lokálisan) példányosítja a Dolgozo osztályt.
- Prog.java
class Dolgozo {
String nev;
int kor;
public void kiirMinden() {
System.out.println(this.nev);
System.out.println(this.kor);
}
}
class Kezelo {
public void kiir() {
Dolgozo janos = new Dolgozo();
janos.nev = "Nagy János";
janos.kor = 35;
janos.kiirMinden();
}
}
Aggregáció
- Prog.java
class Dolgozo {
String nev;
int kor;
Lakcim lakcim;
public beallitLakcim(String telepules, String cim) {
this.lakcim = new Lakcim(telepules, cim);
}
}
class Lakcim {
String telepules;
String cim;
public Lakcim(String telepules, String cim) {
this.telepules = telepules;
this.cim = cim;
}
}
Ha a beallitLakcim() metódust a Dolgozo osztály konstruktorában hívnám meg, akkor már erős kötést, vagyis kompozíciót hoznék létre, mivel együtt jönne létre a lakcim objektum és a Dolgozo objektummal.
Kompozíció
- Prog.java
class Dolgozo {
String nev;
int kor;
Lakcim lakcim;
public Dolgozo(Lakcim lakcim) {
this.lakcim = lakcim;
}
}
class Lakcim {
String telepules;
String cim;
}
Ha Dolgozo osztály konstruktora public Dolgozo(String nev) { this.name = name } lenne, nem szokás aggregációról beszélni, mivel egyszerű adattípus a String.
Öröklés
Függőség
- Prog.java
class Dolgozo {
String nev;
public void ir() {
System.out.println(this.nev);
}
}
class Kezelo {
Dolgozo dolgozo;
public void csinalValamit() {
dolgozo.ir();
}
}
Konstruktor
A Dia programban jelöljük a műveletek között:
[o] Osztály hatáskör - ez aláhúzza
Sztereotípia: constructor - így jelenik meg: «constructor»
Sztereotípia: C - így jelenik meg: «C»
Mindkettő jó megoldás, de nem kötelező.
Függvények
Sztereotípia: function
Osztálynév: elhagyva
Komponens diagram
Használati eset diagram
Hogyan kezdjük egy ilyen diagram készítését?
Követelmények összegyűjtése az alkalmazáshoz.
Az eredményeket használati-eset diagrammal mutatjuk be.
Ez a használati-eset diagram lesz az alapja a
szoftverfejlesztés többi szakaszában.
Elsőként rajzoljunk egy téglalapot, ami a rendszer
határait ábrázolja. Tegyük fel milyen szereplők vannak,
és azok mit csinálnak a rendszerben.
Szekvencia diagram
Állapot diagram
Aktivitás diagram
Telepítési diagram példa
Függelék
UML 2.2 diagram típusok
osztály diagram
csomag diagram
vegyes szerkezeti diagram
komponens diagram
profil diagram
használati eset diagram
statikus gép diagram
aktivitás diagram
kölcsönhatás áttekintő diagram
szekvencia diagram
kommunikációs diagram
objektum diagram
ütemezési diagram
telepítés diagram
Linkek