< Programozás

UML

Szerző: Sallai András

Copyright © 2011, Sallai András

Szerkesztve: 2011, 2014, 2020

Licenc: CC BY-SA 4.0

Web: https://szit.hu

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.

1.0 - 1997

2.0 - 2004

Az OMG csoport szabványosítja, amelynek tagja a következő cégek:

Hewlett-Packard

IBM

MS

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:

Java

C++

Ada

Smalltalk

Mit modellezhetünk vele:

szervezetek

rendszerek

szereplők (egy rendszer, egy szervezet szereplője)

üzleti tevékenység folyamatai

logikai összetevők

szoftverek

adatbázisok

Diagramok

Struktúramodellezés

A rendszer struktúráját ábrázoló diagramok

Osztálydiagram (class diagram)

Megadja a rendszer osztályait, azok közötti kapcsolatokat és az öröklési hierarchiát

Objektumdiagram (object diagram)

Megadja a rendszer objektumait, és az azok közötti kapcsolatokat

Az osztálydiagram egy „pillanatfelvétele”.

Komponensdiagram (component diagram)

Megadja egy szoftver milyen komponensekből épül fel.

Telepítési diagram (deployment diagram)

Megadja, hogy milyen szoftver elemeket milyen hardverre telepítünk.

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

olyan interakció diagram, mely az objektumok közötti kapcsolatra helyezi a hangsúlyt.

Állapotdiagram (state diagram):

Egy adott osztály vagy alrendszer állapotváltozásait írja le.

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:

A Kezelo osztály egyik metódusa a Dolgozo osztály típussal tér vissza.

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; } }

A Kezelo osztály egy metódusának paramétere Dolgozo típusú.

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.

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ó

A Dolgozo osztály tartalmaz egy Lakcim adattagot, de a lakcim objektum nem a Dolgozo osztály példányával együtt jön létre.

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ás 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ó

A Dolgozo osztály tartalmaz egy Lakcim adattagot, és a lakcim objektum a Dolgozo osztállyal együtt jön létre, és együtt szűnik meg.

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

A Mernok osztály a Dolgozo osztályból származik.

class Dolgozo { String nev; int kor; } class Mernok extends Dolgozo { String diploma; }

Függőség

class Dolgozo { String nev; public void ir() { System.out.println(this.nev); } } class Kezelo { Dolgozo dolgozo; public void csinalValamit() { dolgozo.ir(); } }

Komponens diagram

Használati eset diagram

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

http://www.uml.org/

http://migdf.atw.hu/jegyzet/problemamegoldas.pdf (Angster Erzsébet)

http://hu.wikipedia.org/wiki/Unified_Modeling_Language

https://wiki.sch.bme.hu/images/f/f5/Szofttech_diplomamunkaUML2.pdf

https://www.baeldung.com/java-composition-aggregation-association (2020)