Könyvhöz tartozó online melléklet

Könyv: UML földi halandóknak (Robert A. Maksimchuk, Eric J. Naiburg)

Melléklet: Olvasson bele!

Alkalmazásmodellezés

Alkalmazásmodellezés

A fe­je­zet­ben tár­gyalt té­mák

Mi­ért szük­sé­ges az al­kal­ma­zá­sok mo­del­le­zé­se?

– A má­sik vá­lasz

– A kér­dés hát­te­re

A tel­jes al­kal­ma­zást mo­del­lez­ni kell?

Mi a he­ly­zet a prog­ra­mo­zá­si nyel­vek­kel?

Mi­lyen rész­le­tes­ség­gel kell mo­del­lez­ni az al­kal­ma­zá­so­kat?

Ho­gyan mo­del­le­zi az al­kal­ma­zá­so­kat az UML?

– Az osz­tály­di­ag­ra­mok alap­ja­i­nak át­te­kin­té­se

Osz­tá­lyok

Mű­ve­le­tek

Tár­sí­tá­sok

Egyéb társításjelzések

– Az osz­tály­di­ag­ra­mok­ról bő­veb­ben

Hal­maz és össze­té­tel

Ál­ta­lá­no­sí­tás

Társításosztályok

Meg­szo­rí­tá­sok

– A sor­rend­di­ag­ra­mok­ról bő­veb­ben

Ha­la­dók­nak

Ki­fe­je­zé­sek

Össze­fog­la­lás

El­len­őr­ző kér­dé­sek

Mi­ért szük­sé­ges az al­kal­ma­zá­sok mo­del­le­zé­se?

Meg­le­pő mó­don er­re a kér­dés­re elő­ször azt a vá­laszt ad­hat­juk, hogy van­nak ese­tek, ami­kor az al­kal­ma­zás mo­del­le­zé­se va­ló­szí­nű­leg in­do­ko­lat­lan. Nem fel­tét­le­nül szük­sé­ges pél­dá­ul, ha hét­köz­na­pi al­kal­ma­zás­ról van szó, vagy ha a fej­lesz­tő­esz­kö­zök elég ha­té­ko­nyak az al­kal­ma­zás egy je­len­tős ré­szé­nek „össze­ál­lí­tá­sá­hoz”, il­let­ve ha a fej­lesz­tők ko­ráb­ban már ké­szí­tet­tek ha­son­ló al­kal­ma­zá­so­kat, ezért pon­to­san tud­ják, ho­gyan va­ló­sít­sák meg az adott meg­ol­dást.

Az üz­let szem­pont­já­ból nél­kü­löz­he­tet­len, ko­moly al­kal­ma­zá­sok lét­re­ho­zá­sa­kor azon­ban el­en­ged­he­tet­len az al­kal­ma­zás­mo­del­le­zés. A 2. fe­je­zet­ben fel­so­rol­tunk né­hány okot, ami­ért fon­tos a vál­lal­ko­zá­sok mo­del­le­zé­se, és ezen okok jó ré­sze igaz az al­kal­ma­zá­sok mo­del­le­zé­sé­re is. Elő­ször is, rend­kí­vül fon­tos át­lát­ni, hogy mi az, ami már ren­del­ke­zés­re áll, hi­szen a leg­több fej­lesz­tés nem érin­tet­len te­rü­le­ten tör­té­nik. Ál­ta­lá­ban adott va­la­mi­lyen meg­lé­vő rend­szer, il­let­ve szoft­ver, ame­lyet a csa­pat eset­leg nem is­mer, és ame­lyet mó­do­sí­ta­ni vagy bő­ví­te­ni kell. A meg­lé­vő al­kal­ma­zá­so­kat könnyebb egy mo­dell át­te­kin­té­sé­vel meg­ér­te­ni, mint a kód­ju­kat ol­vas­gat­va.

Sta­fé­ta­bot (is­mét)

A 2. fe­je­zet­ben tár­gyal­tuk azt az ese­tet, ami­kor egy olyan, rend­kí­vül fon­tos al­kal­ma­zást örö­köl­tem, ami nem ren­del­ke­zett le­írás­sal, a kód és az adat­ál­lo­má­nyok egy ré­sze hi­ány­zott, és sen­ki nem ér­tet­te (szá­mos fej­lesz­tő ke­rült már ilyen hely­zet­be). Em­lé­kez­he­tünk, hogy két hét­be telt meg­is­mer­ni az al­kal­ma­zást, és még több idő­re volt szük­ség a mö­göt­te hú­zó­dó el­kép­ze­lé­sek meg­ér­té­sé­hez és az al­kal­ma­zás új­ból mű­kö­dő­ké­pes­sé té­te­lé­hez. To­váb­bi el­vesz­te­ge­tett időt és fel­me­rü­lő költ­sé­get jelen­tett az olyan fel­hasz­ná­lók­kal fog­lal­koz­ni, akik nem ér­tet­ték, hogy az al­kal­ma­zás hogyan, il­let­ve mi­ért mű­kö­dik úgy, ahogy mű­kö­dik. Ha ren­del­ke­zés­re állt vol­na az al­kal­ma­zás mo­dell­je, a prob­lé­mák és az azok­kal já­ró ki­adá­sok el­ke­rül­he­tő­ek let­tek vol­na.

Lás­suk azon­ban a tör­té­net töb­bi ré­szét. Az al­kal­ma­zás né­mi „fel­újí­tás” után na­gyon jó ál­la­pot­ba ke­rült, min­de­ne mű­kö­dött, min­den ré­szé­nek sze­re­pe tisz­tá­zó­dott, és vál­to­zat­kö­ve­tő rend­szer fel­ügyel­te. Még elő­ze­tes do­ku­men­tá­ció is ké­szült hoz­zá. Min­den sí­nen volt te­hát, vi­szont az al­kal­ma­zás­nak nem volt mo­dell­je (a szer­ve­zet, ahol dol­goz­tam, nem fog­lal­ko­zott al­kal­ma­zás­mo­del­le­zés­sel).

Volt né­hány ki­sebb, nem je­len­tős hi­ba, ame­lyek­nek még a nyo­má­ra kel­lett buk­kan­ni, de ezek nem gá­tol­ták a mű­kö­dést, és nem aka­dá­lyoz­ták vol­na az át­adást. Ilyen­kor kell sza­bad­ság­ra men­ni. Meg is tet­tem, és fel­fris­sül­ten tér­tem vissza, ké­szen ar­ra, hogy foly­tas­sam az alkal­ma­zás fel­újí­tá­sát. Mun­ka köz­ben fel­fi­gyel­tem né­hány kü­lö­nös ese­mény­re, amit koráb­ban nem ta­pasz­tal­tam. Az al­kal­ma­zás to­vább­ra is elég jól mű­kö­dött, de olyan dol­go­kat csi­nált, ami­ket nem kel­lett vol­na, pél­dá­ul időn­ként két üze­ne­tet kül­dött a ke­ze­lő­nek. Va­jon szán­dé­ko­san, mond­juk az al­kal­ma­zás egy olyan el­du­gott ré­sze mi­att mű­kö­dött így, ame­lyet nem vizs­gál­tam meg, vagy hi­bás vi­sel­ke­dés­ről van szó? Biz­tos vol­tam ben­ne, hogy az al­kal­ma­zás nem így mű­kö­dött, mi­e­lőtt el­men­tem.

Mi­u­tán pár na­pig bön­gész­tem a kó­dot, ész­re­vet­tem, hogy né­hány ap­róbb vál­toz­ta­tás tör­tént ben­ne. To­váb­bi nyo­mo­zás után ki­de­rült, hogy az egyik új fel­hasz­ná­ló a fe­let­te­sem­nél pa­nasz­ko­dott a prog­ram mű­kö­dé­sé­re, és a fő­nök va­la­mi­ért úgy dön­tött, hogy „rend­be hoz­za” a kó­dot anél­kül, hogy bár­ki­nek is szól­na. Igen, meg­vál­toz­tat­ta az al­kal­ma­zás mű­kö­dé­sét csu­pán azért, hogy en­nek az egy fel­hasz­ná­ló­nak a ked­vé­ben jár­jon. Eköz­ben szá­mos új, való­di hi­bát idé­zett elő. Ha ren­del­ke­zés­re állt vol­na a prog­ram mo­dell­je, ké­pes lett vol­na meg­fe­le­lő vál­toz­ta­tást vé­gez­ni, de csak­úgy, mint sok prog­ra­mo­zó, aki va­la­mi­lyen szoft­vert örö­költ, nem ren­del­ke­zett mo­del­lel. Gyor­san fel­mér­te a kó­dot, és mó­do­sí­tá­so­kat vég­zett, ami­vel anél­kül „ol­dot­ta meg” a „prob­lé­mát”, hogy fel­is­mer­te vol­na az ez­zel lét­re­ho­zott mellék­ha­tá­so­kat (hi­bá­kat).

1. ‑Az al­kal­ma­zá­sok mo­dell­je­it – kü­lö­nö­sen a bo­nyo­lul­tabb, ké­nye­sebb progra­mo­két – idő­be te­lik lét­re­hoz­ni, de még több időt ta­ka­rít­hat­nak meg, ami­kor vál­toz­ta­tá­so­kat kell vé­gez­ni a szoft­ve­ren.

4. ‑Ha sza­bad­ság­ra me­gyünk, zár­juk le a kó­dot. A beállításkezelés lét­fon­tos­sá­gú a si­ke­res fej­lesz­tés­hez.

 

 

Az is in­do­kol­ja az al­kal­ma­zá­sok mo­del­le­zé­sét, hogy új al­kal­ma­zá­sok ter­ve­zé­se­kor a vál­to­zá­sok gyak­ran a ter­ve­zé­si sza­kasz köz­ben tör­tén­nek. Ha ren­del­ke­zés­re áll egy mo­dell, sok­kal könnyeb­ben fel­mér­het­jük a mó­do­sí­tá­sok ha­tá­sát, mi­vel lát­juk az al­kal­ma­zás azon ré­sze­it, ame­lye­ket be­fo­lyá­sol­nak. Ahogy a Sta­fé­ta­bot (is­mét) rész­ben le­ír­tak mu­tat­ják, ha meg kell vál­toz­tat­ni a kó­dot, a ter­ve­zé­si mo­del­lek vizs­gá­la­tá­val meg­ál­la­pít­ha­tó, hogy a ja­va­solt vál­to­zá­sok nem tesz­nek-e kárt az al­kal­ma­zás­ban egy má­sik he­lyen.

Az al­kal­ma­zás gra­fi­kus mo­dell­je se­gít­sé­gé­vel sok­kal könnyeb­ben el­dönt­het­jük, hogy a fel­épí­tés meg­fe­lel-e az üz­let kö­ve­tel­mé­nye­i­nek. A szó szo­ros ér­tel­mé­ben rá­mu­tat­ha-­tunk az adott kö­ve­tel­ményt ki­elé­gí­tő elem­re, ahe­lyett, hogy egy szö­ve­ges le­írás­cso­port­ra mutat­nánk.

Vé­gül, ahogy ko­ráb­ban is em­lí­tet­tük, a mo­del­lek „gyúj­tó­pont­ként” szol­gál­nak, ami le­he­tő­vé te­szi, hogy az ér­de­kel­tek meg­tár­gyal­ják és meg­old­ják a fel­épí­tés­sel kap­cso­la­tos kér­dé­se­ket. Ahogy az Egye­sült Ál­la­mok egy­ko­ri el­nö­ke, Dwight Eisenhower mond­ta: „A terv sem­mi – a ter­ve­zés min­den”. Nem csak ma­guk­ról a mo­del­lek­ről van szó, ha­nem ar­ról a fo­lya­mat­ról, il­let­ve el­mél­ke­dés­ről, ame­lyet a rend­kí­vü­li je­len­tő­sé­gű mo­del­lek lét­re­ho­zá­sá­hoz vé­gez­nünk kell. A mo­del­le­zés gon­dol­ko­dás­ra kész­tet ben­nün­ket, és az át­gon­do­lás ered­mé­nye­ként jobb fel­épí­tést ala­kít­ha­tunk ki.

A má­sik vá­lasz

Azok szá­má­ra, akik azt kér­de­zik, hogy mi­ért kell mo­del­lez­ni az al­kal­ma­zá­so­kat, van még egy vá­la­szunk, ami elég egy­sze­rű: már amúgy is mo­del­le­zünk, csak nem ne­vez­zük a ne­vén.

Em­lé­kez­zünk a mo­del­lek­nek az 1. fe­je­zet­ben le­írt meg­ha­tá­ro­zá­sa­i­ra: a mo­dell egy el­ké­szí­ten­dő do­log áb­rá­zo­lá­sa. A leg­több szoft­ver­fej­lesz­tő rész­leg­nél, ha vé­gig­me­gyünk a fül­kék kö­zött, kü­lön­fé­le mo­del­le­ket lá­tunk a táb­lák­ra fir­kál­va: A prog­ra­mok és azok alprogram­jainak szer­ke­ze­tét mo­del­le­ző blokk­váz­la­to­kat, a prog­ra­mok ve­zér­lő fo­lya­ma­tát mo­del­le­ző fo­lya­mat­áb­rá­kat, hosszú, osz­tott tég­la­la­po­kat, ame­lyek a me­zők szer­ke­ze­tét, és egy­más­hoz kap­cso­ló­dó négy­ze­tek há­ló­za­tát, ame­lyek egy webhely hi­vat­ko­zá­sa­it mo­del­le­zik – és igen, még egy-két UML di­ag­ra­mot is. Ezek mind mo­del­le­zé­si mód­sze­rek. A mo­del­le­zés csu­pán a rend­sze­rek elem­zé­sé­nek, il­let­ve ter­ve­zé­sé­nek ré­sze­ként hasz­nált el­já­rás, ame­lyet az ol­va­sók több­sé­ge már min­den bi­zonnyal al­kal­maz, csak nem szab­vá­nyos mó­don. Az UML mind­össze szab­vá­nyos meg­kö­ze­lí­tést, jel­rend­szert és je­len­tést ad a mo­del­le­zé­si te­vé­keny­sé­gek­hez.

A kér­dés hát­te­re

Gyak­ran va­ló­já­ban más kér­dé­sek (vagy fé­lel­mek) rej­le­nek a mö­gött a kér­dés mö­gött, hogy mi­ért szük­sé­ges az al­kal­ma­zá­sok mo­del­le­zé­se. A leg­töb­ben, akik azt kér­de­zik, hogy mi­ért kell mo­del­lez­ni az al­kal­ma­zá­so­kat, már tud­ják a vá­laszt. A va­ló­di kér­dés más té­nye­zők­re vo­nat­ko­zik. A ve­ze­tők pél­dá­ul gyak­ran azért te­szik fel ezt a kér­dést, mert va­ló­já­ban ami­att ag­gód­nak, hogy a mo­del­le­zés túl sok időt vesz igény­be. Nem is­me­rik fel, hogy a kó­do­lás gyak­ran a be­fe­je­zet­len ter­ve­zés­ből ere­dő okok mi­att emész­ti fel a fej­lesz­tés erőfor­rá­sa­i­nak ja­va ré­szét. A fel­épí­tés meg­ha­tá­ro­zá­sá­nak fel­ada­ta a prog­ra­mo­zók­ra há­rul, és a kód írá­sa köz­ben kell el­vé­gez­ni­ük azt. Ahogy ko­ráb­ban mond­tuk, va­ló­já­ban mo­del­le­zünk (az­az ter­ve­zünk), csak más­ként ne­vez­zük.

Van­nak olyan ve­ze­tők is, akik a meg­írt kód­so­rok szá­má­val mé­rik a ha­la­dást; ők ál­ta­lá­ban a szoft­ver­fej­lesz­tés „Vi­gyázz, kész, kó­do­lás!” is­ko­lá­já­nak kö­ve­tői. Ez hely­te­len (de saj­nos el­ter­jedt) hoz­zá­ál­lás az ipar­ban. Aki ma­gá­ra is­mer, olyan je­len­tő­sebb szem­pont­ok­ra is gon­dol­jon, mint a vál­lal­ko­zás igé­nye­i­nek ki­szol­gá­lá­sa, ru­gal­mas fel­épí­tés lét­re­ho­zá­sa, jó mi­nő­sé­gű ter­mék ké­szí­té­se és a mo­del­le­zés sok más elő­nye, amit eb­ben és a ko­ráb­bi fe­je­ze­tek­ben em­lí­tet­tünk.

A költ­sé­gek is sze­re­pet ját­sza­nak an­nak el­dön­té­sé­ben, hogy mo­del­lez­zünk-e vagy sem. Nem ma­ga a mo­del­le­zés je­lent költ­sé­get (ahogy a fe­je­zet egy ko­ráb­bi ré­szé­ben ki­fej­tet­tük, ezt a fel­ada­tot egyéb­ként is el­vé­gez­zük majd, akár szab­vá­nyo­san mo­del­le­zünk, akár nem). Az az elő­ze­tes be­fek­te­tés a va­ló­di költ­ség, ame­lyet vagy szak­kép­zett mun­ka­erő­re for­dí­tunk, vagy ar­ra, hogy a je­len­le­gi sze­mély­ze­tet meg­ta­nít­suk a he­lyes mo­del­le­zés­re. Ez az „egy­sze­ri” költ­ség azon­ban min­den ké­sőb­bi mun­ká­nál meg­té­rül, el­ső­sor­ban a ke­ve­sebb új­ra­ter­ve­zés és hi­ba­ja­ví­tás ál­tal (em­lé­kez­zünk a 3.1. áb­ra táb­lá­za­tá­ra). A szán­dé­kunk sze­rint mű­kö­dő alkal­ma­zás lét­re­ho­zá­sá­ra kell össz­pon­to­sí­ta­ni (ha nem azt csi­nál­ja, amit a meg­ren­de­lő szeret­ne, az összes idő és pénz kár­ba vész), il­let­ve az al­kal­ma­zás tel­jes élet­tar­tam­ára szá­mí­tott ki­adá­sok­ra. El­vég­re a ve­ze­tők fel­ada­tá­nak ré­sze a mun­ka­erő fej­lesz­té­se is, igaz?

Ha­son­ló­kép­pen, azok­nak a prog­ra­mo­zók­nak, akik ezt a kér­dést fel­te­szik – és aki­ket az elő­ző fej­te­ge­té­sek egyi­ke sem érint –, ér­de­mes el­gon­dol­kod­ni­uk: mi­ért ne akar­ná­nak új szak­tu­dás­ra szert ten­ni? Hi­szen a prog­ra­mo­zó al­kal­maz­ha­tó­sá­ga a szak­tu­dá­sá­ban rej­lik. To­váb­bá, mi­ért akar­na va­la­ki csak kó­do­ló len­ni ahe­lyett, hogy meg­dol­goz­na a „prog­ram­ter­ve­ző mér­nök” cí­mért? Meg­elég­szünk az­zal, hogy szö­ge­ket ve­rünk be, vagy ka­ted­rá­lis­épí­tő­vé aka­runk vál­ni? Az UML ma­ra­dan­dó, ezért ér­de­mes bő­ví­te­nünk ve­le a ké­pes­sé­ge­in­ket.

A tel­jes al­kal­ma­zást mo­del­lez­ni kell?

Ami­kor csak le­het, ér­de­mes a tel­jes al­kal­ma­zást (vagy rend­szert) mo­del­lez­ni, így tu­da­tos irá­nyí­tás alatt tart­hat­juk az al­kal­ma­zás szer­ke­ze­tét és fel­épí­té­sét. Né­hány eset­ben pél­dá­ul, ami­kor nem az egész rend­szert fel­ügyel­jük, nem tud­juk tel­jes egé­szé­ben mo­del­lez­ni azt, még­is na­gyon hasz­nos le­het, ha mo­del­lez­zük az irá­nyí­tá­sunk alatt ál­ló ré­sze­ket.

Lyu­ka­sabb, mint egy sváj­ci sajt

Rend­szer­in­teg­rá­tor­ként egy igen nagy pro­jek­ten dol­goz­tam (és így a rend­szer meg­va­ló­sí­tá­sá­nak egyet­len ele­mét sem be­fo­lyá­sol­hat­tam köz­vet­le­nül), és egy má­sok ál­tal a rend­szer­kö­ve­tel­mé­nyek­ben meg­ha­tá­ro­zott, meg­le­he­tő­sen össze­tett gyár­tá­si for­ga­tó­könyv ke­rült elém. Még csak ak­ko­ri­ban kezd­tem meg­is­mer­ked­ni az ob­jek­tum­köz­pon­tú meg­ol­dá­sok­kal, és úgy dön­töt­tem, hogy el­ké­szí­tem a for­ga­tó­könyv ál­la­pot­di­ag­ram­ját. (Egy ké­sőb­bi fe­je­zet­ben meg­tud­juk majd, hogy az ál­la­pot­di­ag­ra­mok ál­ta­lá­ban egy meg­ha­tá­ro­zott ob­jek­tum ál­la­po­tát áb­rá­zol­ják. Úgy dön­töt­tem, hogy a tel­jes for­ga­tó­könyv­ön ki­pró­bá­lom ezt a mód­szert.)

Nagy meg­le­pe­té­sem­re ki­de­rült, hogy szá­mos hé­zag van a gyár­tá­si for­ga­tó­könyv­ben. Sok eset­ben ugyan­is nem ha­tá­roz­ta meg, hogy mi tör­tén­jen bi­zo­nyos, gyak­ran fenn­ál­ló kö­rül­mé­nyek kö­zött. Más szó­val, ha ez a for­ga­tó­könyv meg­va­ló­sul, csú­fos ku­dar­cot vallott vol­na. A rend­szer­nek ez a ré­sze nem az „enyém” volt, a mo­del­le­zés ál­tal még­is sok min­dent meg­tud­hat­tam ró­la, és meg­ta­lál­hat­tam a hi­bá­it, ami le­he­tő­vé tet­te, hogy fontos vál­toz­ta­tá­so­kat ja­va­sol­jak.

1. ‑Ne fél­jünk kre­a­tív mó­don al­kal­maz­ni a mo­del­le­zé­si el­já­rá­so­kat (pél­dá­ul nem ob­jek­tu­mok­ról, ha­nem egy egész rend­szer­ről ké­szí­tünk ál­la­pot­di­ag­ra­mot)! Ha meg­fe­le­lő mó­don hasz­nál­juk azo­kat (az­az nem hagy­juk fi­gyel­men kí­vül a di­ag­ram vagy a mód­szer alap­el­ve­it), új le­he­tő­sé­ge­ket fe­dez­he­tünk fel, ame­lyek­kel re­me­kül hasz­no­sít­hat­juk eze­ket az el­já­rá­so­kat. Az UML-rendőrség nem fog­ja ránk tör­ni az aj­tót, ha így te­szünk.

 

Ha meg­lé­vő rend­szer­rel van dol­gunk (eset­leg bő­ví­te­nünk kell azt, vagy ja­ví­ta­ni, il­let­ve cse­rél­ni kell egy részt úgy, hogy köz­ben mű­kö­dő­ké­pes ma­rad­jon), dönt­he­tünk a „be­bur­ko­lás” mel­lett. Ilyen­kor kül­ső fe­lü­let­ré­teg­gel „vesszük kö­rül”, amely ugyan­azo­kat a meg­lé­vő felüle­te­ket biz­to­sít­ja a kül­ső al­kal­ma­zá­sok­nak, de le­he­tő­vé te­szi a ben­ne rej­lő tech­no­ló­gia meg­vál­toz­ta­tá­sát. Mo­del­le­zés­kor csak a rend­szer vagy az al­kal­ma­zás fe­lü­le­tét mo­del­lez­zük, a bel­ső ré­sze­két nem (a fe­je­zet egy ké­sőb­bi ré­szé­ben, az osz­tá­lyok tár­gya­lá­sa­kor vissza­té­rünk a fe­lü­le­tek mo­del­le­zé­sé­re). Ez azt is le­he­tő­vé te­szi, hogy új fe­lü­le­te­ket adjunk a rend­szer­hez, a meg­lé­vők meg­bon­tá­sa nél­kül. (Igaz, hogy az új fe­lü­le­tek hasz­nál­hat­ják a ré­gi­e­ket, de ezt a cso­ma­go­lás el­rej­ti.) Így meg­vál­toz­tat­hat­juk a bel­ső meg­va­ló­sí­tást, úgy, hogy a fe­lü­let vál­to­zat­lan ma­rad.

Amennyi­ben a költ­ség­ve­tés, az idő vagy a sze­mély­zet szak­kép­zett­sé­gé­nek hi­á­nya (va­gyis ha nincs sok olyan em­be­rünk, aki ké­pes meg­ol­da­ni a mo­del­le­zést) kor­lá­toz ben­nün­ket, csak a rend­szer leg­fon­to­sabb ré­sze­it mo­del­lez­zük. Meg­te­het­jük pél­dá­ul, hogy csak az elsőd­le­ges fel­ada­to­kat mo­del­lez­zük rész­le­te­sen. Az al­kal­ma­zás vagy a rend­szer min­den koc­ká­za­tos ele­mét mo­del­lez­ni kell. Ha az al­kal­ma­zás va­lós­ide­jű, ak­kor mo­del­lez­ni kell; eb­ben az eset­ben nem koc­káz­tat­ha­tunk meg egy rossz, ke­vés­sé is­mert fel­épí­té­sen ala­pu­ló fej­lesz­tést. El­vég­re ha nem tud­juk el­ér­ni, hogy az alap­ve­tő ele­mek mű­köd­je­nek, mi­ért fog­lal­koz­zunk egy­ál­ta­lán a ke­vés­bé fon­tos ré­szek­kel?

Mi a he­ly­zet a prog­ra­mo­zá­si nyel­vek­kel?

A prog­ra­mo­zá­si nyel­vek so­kat fej­lőd­tek az új­ra­hasz­no­sít­ha­tó össze­te­vő­könyv­tá­rak, hatékony prog­ra­mo­zá­si ke­ret­rend­sze­rek és ha­son­lók meg­je­le­né­sé­vel. Vi­szont az, hogy egy nyel­vet „ob­jek­tum­ori­en­tált”-nak (ob­jek­tum­köz­pon­tú­nak) ne­vez­nek, még nem je­len­ti azt, hogy he­lyet­te­sít­he­ti a meg­fe­le­lő ob­jek­tum­köz­pon­tú elem­zést és ter­ve­zést.

Egy prog­ra­mo­zá­si nyelv – még ha fel­hasz­nál­ha­tó szer­ke­ze­ti ele­me­ket is tar­tal­maz – nem biz­to­sít­hat­ja a meg­fe­le­lő fel­épí­tést, és azt sem, hogy az al­kal­ma­zás meg­fe­lel a meg­ren­de­lő igé­nye­i­nek. Ez olyan, mint­ha azt mon­da­nánk, hogy ha egy gyár­tó­nak si­ke­rül elő­re össze­sze­relt ke­re­ke­ket be­sze­rez­nie, és kis­te­her­au­tók­ban al­kal­maz­nia azo­kat, ak­kor az el­ké­szült jár­mű meg­fe­lel majd a meg­bíz­ha­tó­sá­gi szab­vá­nyok­nak, és jól irá­nyít­ha­tó lesz. A nyel­vek és az esz­kö­zök nem he­lyet­te­sít­he­tik a meg­fe­le­lő elem­zést és ter­ve­zést.

Mi­lyen rész­le­tes­ség­gel kell mo­del­lez­ni az al­kal­ma­zá­so­kat?

Azok, akik ké­szek mo­del­lez­ni az al­kal­ma­zá­sa­i­kat, gyak­ran meg­kér­de­zik, mi­kor kell át­tér­ni a mo­del­le­zés­ről a meg­va­ló­sí­tás­ra, vagy hogy mennyi rész­le­tet tar­tal­maz­za­nak a mo­del­lek. Bi­zo­nyos ese­tek­ben a le­he­tő leg­rész­le­te­sebb mo­dell ké­szí­té­se a leg­jobb: pél­dá­ul ha rend­kí­vül fon­tos, il­let­ve ér­zé­keny rend­sze­re­ket mo­del­le­zünk, ami­lyen egy be­ül­te­tett or­vo­si esz­köz (ilyen­kor éle­tek fo­rog­nak koc­kán), vagy ami­kor a rend­szer hi­bá­ja rend­kí­vü­li gaz­da­sá­gi követ­kez­mé­nyek­kel jár. Az ilyen nagy hor­de­re­jű vég­ered­mény in­do­kol­ja, hogy a le­he­tő legrész­le­te­seb­ben mo­del­lez­zük az al­kal­ma­zást.

Szin­tén rész­le­tes mo­del­le­zést igé­nyel­nek az olyan hely­ze­tek, ami­kor a tel­je­sít­mény vagy a meg­bíz­ha­tó­ság rend­kí­vül fon­tos, csak­úgy, mint ami­kor kül­ső­sö­ket bí­zunk meg a fej­lesz­tés­sel. Mi­ben ha­son­lí­ta­nak ezek a hely­ze­tek? Olyan ese­tek, ami­kor az al­kal­ma­zás tel­jes körű meg­ha­tá­ro­zá­sá­val (va­gyis mo­del­le­zé­sé­vel) csök­ken­te­ni kell a ter­ve­zé­si komp­ro­misszu­mo­kat. Sen­ki sem sze­ret­ne kez­dő prog­ra­mo­zók­ra bíz­ni olyan kulcs­fon­tos­sá­gú ter­ve­zé­si dön­té­se­ket, ame­lyek be­fo­lyá­sol­hat­ják az el­sőd­le­ges té­nye­ző­ket, mond­juk a teljesít­ményt vagy a biz­ton­sá­got. A kez­dő prog­ra­mo­zó pél­dá­ul eset­leg úgy va­ló­sít­ja meg a kó­dot, hogy csök­kent­se a memóriafelhasználást. Ez ugyan ár­tal­mat­lan­nak tűn­het, de lehet, hogy szá­munk­ra nem a memóriakihasználás fon­tos, ha­nem hogy ki­emel­ke­dő se­bes­sé­gű rend­szert kap­junk. Eze­ket a fon­tos fel­épí­tés­be­li komp­ro­misszu­mo­kat nem sza­bad a meg­va­ló­sí­tá­sig ha­lo­gat­ni. Az ilyen lét­fon­tos­sá­gú rend­sze­rek tel­jes és rész­le­tes mo­dell­jét el kell ké­szí­te­ni, hogy azt kap­juk, ami­re va­ló­ban szük­sé­günk van.

A ke­vés­bé ké­nyes mun­kák­nál ál­ta­lá­ban az idő­be­osz­tás, a költ­ség­ve­tés és a sze­mély­zet szakkép­zett­sé­ge ha­tá­roz­za meg, hogy mi­lyen rész­le­tes mo­dellt ké­szí­tünk. Ál­ta­lá­ban jobb, ha a mo­dell mi­nél több rész­le­tet tar­tal­maz, de sok­szor gya­kor­la­ti­a­san egyen­súly­ba kell hoz­ni a té­nye­ző­ket. Az egyik jel­zés, ami­re ér­de­mes fi­gyel­ni, a vál­to­zás gyor­sa­sá­ga. Ha a mo­dell rész­le­tei fo­lya­ma­to­san vál­toz­nak, pél­dá­ul ha a le­írt mű­ve­le­tek gyak­ran módo­sul­nak, va­ló­szí­nű­leg még nincs itt az ide­je, hogy a mo­del­lek a fej­lesz­tés meg­va­ló­sí­tá­si szaka­szá­ba lép­je­nek, mert a fel­épí­tés még nyil­ván­va­ló­an ki­for­rat­lan. Mi­e­lőtt to­vább­lép­nénk, meg kell vár­nunk, amíg be­áll egy el­fo­gad­ha­tó mér­té­kű ál­lan­dó­ság (mi­vel a vál­to­zás so­ha nem szű­nik meg). Ter­mé­sze­te­sen az „el­fo­gad­ha­tó” meg­ha­tá­ro­zá­sa az adott cég­től függ, ami­kor azon­ban a vál­to­zás ará­nya ala­csony, ál­lan­dó szint­re ke­rül, va­ló­szí­nű­leg ké­szen ál­lunk rá, hogy hoz­zá­fog­junk a fel­épí­tés­mo­del­lek meg­va­ló­sí­tá­sá­hoz.

Ho­gyan mo­del­le­zi az al­kal­ma­zá­so­kat az UML?

Az üz­le­ti mo­dell meg­ha­tá­roz­za, hogy mi­ért épít­jük a rend­szert (az­az, hogy mi­ként tá­mo­gatja a vál­lal­ko­zást), a fel­adat­mo­del­lek meg­mu­tat­ják, hogy a sze­rep­lők ho­gyan hasz­nál­ják majd a rend­szert, a fel­épí­tés­mo­del­lek pe­dig meg­ha­tá­roz­zák a rend­szer kez­de­ti szer­ke­ze­tét. Ez­zel a tu­dás­sal fel­sze­rel­kez­ve ké­szen ál­lunk az al­kal­ma­zás mo­del­le­zé­sé­re. Ezek az elő­ze­tes mo­del­lek kor­lá­toz­zák az al­kal­ma­zás „for­má­ját”. Az üz­le­ti- és a fel­adat­mo­del­lek ha­tárt szab­nak a fel­épí­té­si tér­nek (ami jó, mert a meg­ol­dá­sok összes­sé­gét egy meg­ol­dás­tér­re korlá­toz­za). A fel­épí­tés­mo­del­lek ha­tá­roz­zák meg a meg­ol­dás át­fo­gó szer­ke­ze­tét. Ily mó­don a mo­del­lek fej­lesz­té­sé­vel sza­bá­lyoz­hat­juk a mun­ka idő­be­osz­tá­sát és költ­sé­ge­it.

Az osz­tály­di­ag­ra­mok alap­jai – is­mét­lés

A kor­lá­tok meg­ha­tá­ro­zá­sát kö­ve­tő­en leg­gyak­rab­ban az osz­tály­di­ag­ram szol­gál az al­kal­ma­zás sta­ti­kus szer­ke­ze­té­nek áb­rá­zo­lá­sá­ra. Az osz­tály­di­ag­ra­mok­kal ko­ráb­ban, a 4. fe­je­zet­ben is­mer­ked­tünk meg, ahol lát­tuk a felépítésmodellezés cél­já­ból tör­té­nő al­kal­ma­zá­su­kat. Azok ked­vé­ért, akik át­ug­rot­ták azt a részt, új­ra át­te­kint­jük az osz­tály­di­ag­ra­mok né­hány alap­elv­ét – mi­vel ezek az al­kal­ma­zás­mo­del­le­zés ve­le­já­rói –, majd meg­vizs­gá­lunk né­hány to­váb­bi mo­del­le­zé­si ele­met, ame­lyek ezek­ben a di­ag­ra­mok­ban sze­re­pel­nek.

Osz­tá­lyok

Az osz­tály­di­ag­ram az al­kal­ma­zás fon­tos osz­tá­lya­it és azok más osz­tá­lyok­hoz fű­ző­dő kap­cso­la­ta­it mu­tat­ja. Az osz­tá­lyok el­ső­sor­ban a rend­szer­ben sze­rep­lő „dol­go­kat” áb­rá­zol­ják. A kez­de­ti mo­del­lek (üz­le­ti kö­ve­tel­mé­nyek, fel­épí­tés) fej­lesz­té­se so­rán már szá­mos fon­tos osz­tály­ra buk­ka­nunk. A töb­bi mo­dell nél­kül sok­kal ne­he­zebb meg­ta­lál­ni eze­ket az osz­tá­lyo­kat, de nem le­he­tet­len. Ha nem ren­del­ke­zünk kez­de­ti mo­del­lek­kel, te­kint­sük az al­kal­ma­zás prob­lé­ma­meg­fo­gal­ma­zá­sát, és vá­lasszuk ki a va­lós dol­go­kat: köny­ve­lés, re­pü­lő­gép, meg­ren­de­lő, ter­mék, köz­ve­tí­tő, je­len­tés és így to­vább (lásd az 5.1. áb­rát). Ezek lesz­nek a te­rü­le­ti osz­tá­lyok vagy tar­to­mány­osz­tá­lyok, ame­lyek­nek sze­re­pel­ni­ük kell a di­ag­ra­mokban. A mo­dell fej­lő­dé­se so­rán a nem va­lós dol­gok is osz­tá­lyok­ként je­len­nek meg: ilye­nek töb­bek kö­zött a fel­dol­go­zást irá­nyí­tó ve­zér­lő osz­tá­lyok.

 

5.1. áb­ra

Osz­tály, amely egy boly­gót áb­rá­zol

De mik az osz­tá­lyok a szoft­ver meg­va­ló­sí­tá­sá­nak szem­pont­já­ból? Az osz­tá­lyok ha­son­ló ob­jek­tu­mok egy cso­port­ját ír­ják le, olyan sab­lo­nok, ame­lyek az ob­jek­tu­mok lét­re­ho­zá­sá­ra szol­gál­nak az al­kal­ma­zás­ban.

A sza­bá­lyok meg­sze­gé­se

Az UML mo­del­lek tár­gya­lá­sa­kor gyak­ran egyen­ér­té­kű­ként hasz­nál­ják az „osz­tály” és az „ob­jek­tum” ki­fe­je­zést. Ez szi­go­rú­an vé­ve nem he­lyes, de ha ész­ben tart­juk, hogy az osz­tály a le­írás, és az ob­jek­tum a meg­va­ló­sí­tás, nem le­het gond. Nem kell ami­att iz­gul­ni, hogy a mo­del­le­zés „Ha­tal­mas Va­rázs­lói” meg­tud­ják, mit tet­tünk.

Ahogy egy sü­te­mény­for­má­val sok egy­for­ma sü­te­ményt ké­szít­he­tünk, ugyan­úgy, ha ren­del­ke­zés­re áll egy „Boly­gó” ne­vű osz­tály, ak­kor a Boly­gó osz­tály se­gít­sé­gé­vel is több boly­gó ob­jek­tu­mot hoz­ha­tunk lét­re az al­kal­ma­zás­ban. Egy cso­mó egy­for­ma boly­gó ta­lán nem túl ér­de­kes, ahogy azon­ban az egy­for­ma sü­te­mé­nye­ket vál­to­za­tos­sá te­het­jük re­sze­lék­kel, cukor­máz­zal vagy étel­szí­ne­zék­kel, a több­ala­kú­ság (po­li­mor­fiz­mus) al­kal­ma­zá­sá­val az osz­tá­lyo­kat is egye­di­vé te­het­jük (er­ről a fe­je­zet ké­sőb­bi ré­szé­ben lesz bő­veb­ben szó).

Rög­zí­te­nünk kell az osz­tá­lyok fon­tos ada­ta­it. Ezt a jel­lem­zők (attribútumok) – ezek a 4. feje­zet szer­ke­zet­re vo­nat­ko­zó le­írá­sa­i­hoz ha­son­ló­ak, de itt az al­kal­ma­zás fel­épí­té­sét jel­lem­zik – al­kal­ma­zá­sá­val te­het­jük meg. A jel­lem­zők ha­tá­roz­zák meg az al­kal­ma­zás­hoz szük­sé­ges osz­tá­lyok lé­nye­ges tu­laj­don­sá­ga­it – nem az összes tu­laj­don­sá­got, csak azo­kat, ame­lyek al­kal­maz­ha­tók az adott prob­lé­má­ra. Ha pél­dá­ul az al­kal­ma­zás a boly­gók­nak a Nap­rend­szer­ben el­fog­lalt he­lyét mo­del­le­zi, a Boly­gó osz­tály va­ló­szí­nű­leg rög­zí­ti a bolygó­nak a Nap­tól mért tá­vol­sá­gát és a pá­lyá­ját (lásd az 5.2. áb­rát), de a mag­össze­tételét nem.

 

5.2. áb­ra

Jel­lem­zők­kel el­lá­tott Boly­gó osz­tály

Ked­ves la­kó!

Az osz­tá­lyok­ban sze­rep­lő jel­lem­zők ha­tá­roz­zák meg az osz­tály ál­tal rög­zí­te­ni kí­vánt el­vont fo­ga­lom ter­mé­sze­tét. Ez kulcs­fon­tos­sá­gú le­het a pro­jekt si­ke­re szem­pont­já­ból. Egy­szer részt vet­tem egy olyan mun­ka záróérté­ke­lésen, amely „ko­moly gon­dok­kal” küsz­kö­dött. Az egyik prob­lé­ma for­rá­sa a „Cím” osz­tály volt. A cso­port­nak az volt az el­kép­ze­lé­se a „cím”-ről, hogy az ott­ho­nunk he­lyét je­lö­li. Ugyan a cím ezen fel­fo­gá­sa nem hely­te­len, az adott al­kal­ma­zás szem­pont­já­ból azon­ban még­sem volt a leg­sze­ren­csé­sebb, mert az al­kal­ma­zás nem há­zak el­he­lyez­ke­dé­sé­vel fog­lal­ko­zott, ha­nem le­ve­le­ző­prog­ram volt. Eb­ben a kör­nye­zet­ben a cím meg­fe­le­lőbb le­írá­sa az lett vol­na, hogy „az a hely, aho­vá le­ve­let kül­dünk” (ami le­het az ott­ho­nunk, uta­zás so­rán egy szál­lo­da, be­teg­ség ese­tén kór­ház, hét­vé­gi ház és így to­vább).

1. ‑Ügyel­jünk, hogy az osz­tá­lyok és azok jel­lem­zői az al­kal­ma­zás szem­pont­jából meg­fe­le­lő fo­gal­mat rög­zít­sék!

 

 

 

 

 

A jel­lem­ző­ket az ada­tok össze­füg­gé­sé­ben is vizs­gál­hat­juk. Az ob­jek­tum­köz­pon­tú elem­zés és ter­ve­zés egy egy­ség­be zár­ja (be­to­koz­za) az ada­to­kat és a fel­dol­go­zást. A jel­lem­zők az osztály bel­se­jé­be ágya­zott ada­tok. Az osz­tály­ban sze­rep­lő ada­tok (jel­lem­zők) a jel­lem­zők lát­ha­tó­sá­gá­tól füg­gő­en más osz­tá­lyok szá­má­ra is el­ér­he­tők le­het­nek. A jel­lem­zők nyil­vá­nos, vé­dett, pri­vát vagy cso­mag lát­ha­tó­ság­gal ren­del­kez­het­nek (lásd az 5.1. táb­lá­za­tot).

5.1. táb­lá­zat  Láthatóságfajták

Lát­ha­tó­ság Je­lö­lés Je­len­tés

Pri­vát - Eze­ket a jel­lem­ző­ket csak ma­ga az osz­tály ér­he­ti el.

Vé­dett # Eze­ket a jel­lem­ző­ket az osz­tály min­den gyer­mek­osz­tá­lya el­ér­he­ti.

Nyil­vá­nos + Eze­ket a jel­lem­ző­ket bár­me­lyik osz­tály el­ér­he­ti.

Cso­mag ~ Eze­ket a jel­lem­ző­ket az adott cso­mag összes osz­tá­lya el­ér­he­ti.

El­mé­let­ben az osz­tá­lyok összes jel­lem­ző­jé­nek pri­vát­nak kell len­nie, hogy biz­to­sít­suk az erős betokozást (ami meg­aka­dá­lyoz­za, hogy a jel­lem­ző­ket más ob­jek­tu­mok el­ér­jék vagy meg­vál­toz­tas­sák, ki­vé­ve ha a tu­laj­do­nos ob­jek­tum le­he­tő­vé te­szi ezt). En­nek el­le­né­re ke­rül­he­tünk olyan hely­zet­be, pél­dá­ul rész­le­tes ter­ve­zés vagy meg­va­ló­sí­tás so­rán, ami­kor „eny­hí­te­ni” kell a betokozás mér­té­két. Ilyen ese­tek­ben el­té­rő lát­ha­tó­sá­gi szin­tek al­kal­ma­zá­sá­val na­gyobb hoz­zá­fé­rést biz­to­sít­ha­tunk az osz­tá­lyok jel­lem­ző­i­hez. Ha azon­ban nincs ki­fe­je­zet­ten szük­ség más lát­ha­tó­ság­ra, a jel­lem­zők­nek pri­vát­nak kell ma­rad­ni­uk.

Mit csi­nál­nak te­hát az osz­tá­lyok? Ezt az osz­tály mű­ve­le­tei ha­tá­roz­zák meg.

Mű­ve­le­tek

A mű­ve­le­tek az osz­tá­lyok ál­tal biz­to­sí­tott szol­gál­ta­tá­sok. A mű­ve­le­tek az osz­tály­szim­bó­lum har­ma­dik re­ke­szé­ben lát­ha­tók. Azok a mű­ve­le­tek, ame­lyek hoz­zá­fé­rést biz­to­sí­ta­nak a jel­lem­zők­höz, ál­ta­lá­ban az osz­tály töb­bi vég­re­haj­tó függ­vé­nyé­vel azo­nos he­lyen tá­ro­lód­nak (lásd az 5.3. áb­rát). A kül­ső ob­jek­tu­mok így kap­nak hoz­zá­fé­rést a tu­laj­do­nos ob­jek­tum privát jel­lem­ző­i­hez. Le­het, hogy nem ma­ga az osz­tály hajt­ja vég­re az összes mű­ve­le­tet, de az osz­tály fe­le­lős azért, hogy va­la­mi el­vé­gez­ze a mű­ve­le­te­ket (pél­dá­ul egy má­sik ob­jek­tum, amely tény­le­ge­sen tel­je­sí­ti a fel­ada­tot). Ilyen­kor az osz­tály ve­zér­lő osz­tály­ként mű­kö­dik, az al­kal­ma­zás egé­szét vagy egy ré­szét irá­nyít­va.

 

5.3. áb­ra

A Boly­gó osz­tály a hoz­zá­adott mű­ve­le­tek­kel

A ren­del­ke­zés­re ál­ló di­ag­ram ki­for­rott­sá­gá­tól füg­gő­en le­het, hogy csak a mű­ve­let ne­ve látha­tó. Ahogy egy mű­ve­let fej­lő­dik, ki­ala­kul a tel­jes alá­írá­sa, amely­ben meg­je­le­nik a ne­ve, a pa­ra­mé­te­rei, az alap­ér­tel­me­zett ér­té­kei, a vissza­té­ré­si tí­pu­sa és így to­vább (lásd 5.4. áb­ra). Az, hogy mennyi rész­le­tet írunk le, at­tól függ, hogy az adott szer­ve­zet ho­gyan al­kal­maz­za a mo­del­le­zést, az­az hogy mennyi rész­let­re van szük­ség, mi­e­lőtt át­ad­hat­juk a fel­épí­tést a prog­ra­mo­zók­nak a meg­va­ló­sí­tás­hoz.

 

5.4. áb­ra

A Boly­gó osz­tály a mű­ve­let-alá­írá­sok­kal

A sza­bá­lyok meg­sze­gé­se II.

Ah­hoz ha­son­ló­an, ahogy az „osz­tály” és az „ob­jek­tum” ki­fe­je­zést ro­kon értel­mű­ként hasz­nál­juk, ami­kor UML mo­del­lek­ről van szó (ahogy a fe­je­zet ko­ráb­bi ré­szé­ben tag­lal­tuk), a „mű­ve­let” és a „függ­vény” szó is azo­nos jelen­tés­sel for­dul majd elő, ami el­vi­leg szin­tén hely­te­len. A mű­ve­let egy olyan szol­gál­ta­tást ír le, ame­lyet az osz­tá­lya biz­to­sít, a (tag)függvény vi­szont az adott mű­ve­let meg­va­ló­sí­tá­sa. Szá­mos függ­vény (meg­va­ló­sí­tás) tel­je­sít­het egy mű­ve­le­tet. Ha pél­dá­ul adott egy Ren­de­zés mű­ve­let, a függ­vény bu­bo­ré­kos ren­de­zés­sel, ha­sí­tó ren­de­zés­sel vagy más ren­de­zé­si al­go­rit­mus­sal is meg­va­ló­sít­hat­ja a mű­ve­le­tet.

Ta­lál­koz­ha­tunk {abstract} (el­vont) je­lö­lé­sű mű­ve­le­tek­kel is. Ez azt jel­zi, hogy nem az adott osz­tály va­ló­sít­ja meg a mű­ve­le­tet, ha­nem az egy gyer­mek­osz­tály­ban va­ló­sul meg, ahol ugyan­az a mű­ve­let a gyer­mek mű­ve­let­re­ke­szé­ben is sze­re­pel. Ez az egyik le­he­tő­ség, hogy egy mű­ve­let egye­di meg­va­ló­sí­tá­sok­kal ren­del­kez­zen. A „tölt” mű­ve­let pél­dá­ul tel­je­sen más mó­don va­ló­sul­na meg a „Pus­ka” és a „Fú­vó­cső” osz­tály­ban. Ez a több­ala­kú­ság fo­gal­má­nak köz­pon­ti gon­do­la­ta (lásd az 5.5. áb­rát): ha a gyer­mek olyan mű­ve­le­tet ír le, amely a szü­lő­osz­tály­ban is sze­re­pel, ak­kor a gyer­mek mű­ve­le­te fe­lül­bí­rál­ja a szü­lő mű­ve­le­tét. Ily mó­don a gyer­mek mű­kö­dé­se mó­do­sít­hat­ja vagy fel­vált­hat­ja a szü­lő vi­sel­ke­dé­sét.

 

5.5 áb­ra

Több­ala­kú­ság

Az osz­tá­lyok mű­ve­le­tei le­het­nek olyan függ­vé­nyek, ame­lye­ket az osz­tály sa­ját aka­ra­tá­ból, vagy olya­nok, ame­lye­ket más ob­jek­tu­mok uta­sí­tá­sá­ra hajt vég­re. A má­sok ál­tal kér­he­tő mű­ve­le­te­ket be­fo­lyá­sol­hat­ja a lát­ha­tó­ság (lásd a ko­ráb­bi 5.1. táb­lá­za­tot), ami a mű­ve­le­tek­re ugyan­úgy ér­vé­nyes, mint a jel­lem­zők­re.

Egy má­sik UML elem, amely kor­lá­toz­hat­ja, hogy más osz­tá­lyok mi­lyen szol­gál­ta­tá­so­kat kérhet­nek, a fe­lü­let. A fe­lü­let csu­pán egy mű­ve­let­cso­port, ame­lyet egy kül­ső elem lát­hat, és ez­ál­tal meg­hív­hat (lásd az 5.6. áb­rát). Az osz­tály ter­ve­ző­je ha­tá­roz­za meg, hogy a fe­lü­let mi­lyen mű­ve­le­te­ket tesz lát­ha­tó­vá.

 

5.6. áb­ra

Fe­lü­let­tel ren­del­ke­ző osz­tály

Tár­sí­tá­sok

Ahogy a 4. fe­je­zet­ben ki­fej­tet­tük, a tár­sí­tá­sok a rend­szer­ob­jek­tu­mok kö­zöt­ti kap­cso­la­tot mu­tat­ják. Jel­lem­ző­en az ob­jek­tu­mok kö­zöt­ti adat­át­vi­te­li csa­tor­ná­kat áb­rá­zol­ják, ame­lyek a ko­ráb­ban tár­gyal­tak­nak meg­fe­le­lő­en le­het­nek két­irá­nyú­ak vagy egy­irá­nyú­ak. Az irá­nyí­tott­sá­got (más szó­val ve­zé­rel­he­tő­sé­get) ál­ta­lá­ban a ter­ve­zé­si sza­kasz ké­sőb­bi ré­szé­ben kell meg­ha­tá­roz­ni, ami­kor már töb­bet tu­dunk ar­ról, hogy a fel­dol­go­zás ho­gyan ke­resz­te­zi a tár­sí­tá­so­kat. Így ki­de­rül, mi­ként kell op­ti­ma­li­zál­ni a tár­sí­tá­sok meg­va­ló­sí­tá­sát.

Egyéb társításjelzések

A tár­sí­tá­sok vé­gén meg­je­le­nő jel­zé­sek­ről (pél­dá­ul mennyi­ség, rom­busz) szin­tén szó esett a 4. fe­je­zet­ben. Gyak­ran ta­lál­ko­zunk majd né­hány má­sik­kal is.

 

5.7. áb­ra

Sze­rep­ne­vek

A sze­rep­ne­vek a tár­sí­tás vé­gén je­len­het­nek meg. Ezek a tár­sí­tás sze­rep­ne­vek­kel meg­egye­ző vé­gén ta­lál­ha­tó osz­tá­lyo­kat ír­ják le. A sze­rep­név azt je­lö­li, hogy az osz­tály az adott kap­csolat­ban ho­gyan vi­sel­ke­dik majd a hoz­zá tár­sí­tott osz­tállyal. Ez ha­son­lít ah­hoz, ahogy az élet­ben is több sze­re­pet ját­szunk. A szer­ző más­ként vi­sel­ke­dik mér­nök­ként és be­fek­te­tő­ként (no­ha elő­for­dul­hat­nak azo­nos vi­sel­ke­dés­for­mák). Egy mér­nök ol­vas­hat, ele­mez­het, ter­vez­het, épít­het és így to­vább. Egy be­fek­te­tő ol­vas­hat, ele­mez­het, el­ad­hat, vá­sá­rol­hat, köny­ve­lést ve­zet­het és ha­son­ló te­vé­keny­sé­ge­ket vé­gez­het (lásd az 5.7. áb­rát). Ilyen mó­don a sze­rep­ne­vek el­kü­lö­ní­tik az osz­tá­lya­ik vi­sel­ke­dé­sét.

A sze­rep­ne­vek kü­lön­vá­laszt­ják az egy osz­tály és egy má­sik osz­tály kö­zöt­ti tár­sí­tás­ban meg­fi­gyel­he­tő vi­sel­ke­dé­se­ket, a mi­nő­sí­tők vi­szont azo­kat az ob­jek­tum­cso­por­to­kat kü­lö­ní­tik el, ame­lyek tár­sí­tás­ban ve­het­nek részt. Lás­sunk né­hány pél­dát a Bér­lis­ta és az Egyén osz­tály al­kal­ma­zá­sá­val.

 

5.8. áb­ra

Jel­zés nél­kü­li tár­sí­tás

Az 5.8. áb­rán azt lát­hat­juk, hogy a Bér­lis­ta rész­leg fi­zet az Egyén­nek. Az 5.9. áb­ra azt mutat­ja, hogy a sze­rep­név hoz­zá­adá­sá­val ho­gyan le­het egyér­tel­műb­bé ten­ni a dol­go­kat: a Bér­lis­ta fi­zet az Egyén­nek, aki al­kal­ma­zott­ként (és nem vál­lal­ko­zó­ként vagy gyár­tó­ként) vi­sel­ke­dik. Egyik di­ag­ram sem iga­zán pon­to­san kö­rül­írt.

 

5.9. áb­ra

Sze­rep­név­vel el­lá­tott tár­sí­tás

Ami­kor az 5.10. áb­rán lát­ha­tó mó­don mi­nő­sí­tőt (az al­kal­ma­zott szá­mát) adunk a di­ag­ramhoz, tud­juk, hogy csak az adott Egyén ob­jek­tum vesz részt a tár­sí­tás­ban (az­az csak a meg­ha­tá­ro­zott alkalmazottszámmal ren­del­ke­ző Egyén kap fi­ze­tést). Ha eh­hez hoz­zá­teszünk egy mennyi­sé­get, to­váb­bi in­for­má­ci­ó­val bő­vít­jük a mo­dellt. Az 5.11. áb­rán lát­hat­juk, hogy a 0..1 mennyi­ség mi­att a Bér­lis­ta vagy sen­ki­nek nem fi­zet (ami azt je­len­ti, hogy az alkalmazottszám nem tar­to­zik al­kal­ma­zott­hoz), vagy egy adott al­kal­ma­zott­nak fi­zet.

 

5.10. áb­ra

Sze­rep­név­vel és mi­nő­sí­tő­vel el­lá­tott tár­sí­tás

 

5.11. áb­ra

Sze­rep­név­vel, mi­nő­sí­tő­vel és mennyi­ség­gel el­lá­tott tár­sí­tás

A mi­nő­sí­tő és a mennyi­ség meg­vál­toz­ta­tá­sá­val az 5.12. áb­rán is lát­ha­tó új je­len­tést ka­punk, ahol a Bér­lis­ta több tel­jes mun­ka­idős al­kal­ma­zott­nak fi­zet (a rész­mun­ka­idős al­kal­ma­zot­ta­kat a „tel­jes mun­ka­idős” mi­nő­sí­tő ki­zár­ja).

 

5.12. áb­ra

Sze­rep­név­vel és egy ob­jek­tum­cso­por­tot ki­je­lö­lő mi­nő­sí­tő­vel el­lá­tott tár­sí­tás

Az osz­tály­di­ag­ra­mok­ról bő­veb­ben

Hal­maz és össze­té­tel

A 4. fe­je­zet­ben em­lí­tet­tünk két ro­kon tár­sí­tást: a hal­mazt (aggregation) és az össze­té­telt (composition). (Az UML 2.0-ban az össze­té­tel tár­sí­tást össze­tett hal­maz­nak is ne­ve­zik.) Az 5.13. áb­rán lát­hat­juk a két tár­sí­tást.

 

5.13. áb­ra

A hal­maz és az össze­té­tel tár­sí­tás

A hal­mazt üres (vagy lyu­kas), az össze­té­telt ki­töl­tött rom­busz je­lö­li. A rom­busz mind­két eset­ben a tár­sí­tás „Tel­jes” vé­gén je­le­nik meg. Eze­ket a tár­sí­tá­so­kat a kö­vet­ke­ző­kép­pen kell ér­tel­mez­ni: „a Rész az Egész ré­sze” il­let­ve „az Egész­nek van egy Ré­sze” (az adott részek szá­mát a tár­sí­tás rész vé­gé­nél sze­rep­lő mennyi­ség ha­tá­roz­za meg).

Ezek a tár­sí­tá­sok azt a kü­lön­le­ges je­len­tést hor­doz­zák, hogy a tár­sí­tás egyik ele­me a má­sik „ré­sze”. A hal­maz és az össze­té­tel kö­zött az je­len­ti a kü­lönb­sé­get, hogy mi­lyen szo­ros a részt­ ve­vő ele­mek kö­zöt­ti kap­cso­lat. A hal­maz la­zább tár­sí­tás, míg az össze­té­tel sok­kal szo­ro­sabb össze­tar­to­zást je­löl. Az össze­té­tel­ben a Ré­szek csak egy Egész ré­szei le­het­nek, to­váb­bá az Egész meg­szű­né­se­kor az összes ré­sze is meg­sem­mi­sül (sőt az Egész fel­ada­ta gon­dos­kod­ni ar­ról, hogy a ré­szei meg­szűn­je­nek). Az 5.14. áb­ra egy zseb­lám­pa pél­dá­ján mu­tat­ja be eze­ket a kap­cso­la­to­kat.

 

5.14. áb­ra

Egy zseb­lám­pa hal­ma­za és össze­té­te­le

A zseb­lám­pá­nak van egy kap­cso­ló­ja. Ez össze­té­tel, mi­vel a kap­cso­ló an­nak az egy zseb­lám­pá­nak a ré­sze. Ha el­dob­juk (meg­sem­mi­sít­jük) a zseb­lám­pát, a kap­cso­ló is kö­ve­ti. Az ele­met vi­szont el­tá­vo­lít­hat­juk a zseb­lám­pá­ból, és egy má­sik­ban al­kal­maz­hat­juk, ezért ez a kap­cso­lat hal­maz­ként je­le­nik meg.

Ügyel­jünk azon­ban, hogy ezek a „rész–egész” kap­cso­la­tok nem csak kéz­zel fog­ha­tó (fi­zi­kai) ele­mek­re ér­vé­nye­sek. Egy Egyén­nek pél­dá­ul le­het Hi­te, Már­ka­ne­ve vagy Pi­a­ci ér­té­ke is.

Ál­ta­lá­no­sí­tás

A fe­je­zet egy ko­ráb­bi ré­szé­ben fel­buk­kant az ál­ta­lá­no­sí­tás kap­cso­lat (la­poz­zunk vissza az 5.5. áb­rá­hoz). A tár­sí­tás nyíl­he­gyé­nél sze­rep­lő osz­tá­lyok a fö­lé­ren­delt osz­tá­lyok, a társítás má­sik vé­gén sze­rep­lő osz­tá­lyok pe­dig az alá­ren­delt osz­tá­lyok. A fö­lé- és alá­ren­delt osz­tá­lyok kap­cso­la­ta a gyermek–szülő kap­cso­lat­hoz ha­son­lít­ha­tó. A gyer­mek- (alá­ren­delt) osz­tá­lyok örök­lik a szü­lő- (fö­lé­ren­delt) osz­tá­lyok jel­lem­ző­it, mű­ve­le­te­it és kap­cso­la­ta­it.

 

5.15. áb­ra

Ál­ta­lá­no­sí­tás

Az 5.15. áb­ra egy ilyen kap­cso­la­tot szem­lél­tet. A szü­lő (Fegy­ver) a súly, a hossz és a ha­tó­tá­vol­ság jel­lem­ző­vel ren­del­ke­zik. A gyer­me­kek (a Pus­ka és a Fú­vó­cső) örök­lés ré­vén át­ve­szik eze­ket a tu­laj­don­sá­go­kat, va­gyis ezek­nek is lesz sú­lyuk, hosszuk és ha­tó­tá­vol­sá­guk, an­nak el­le­né­re, hogy az al­osz­tály­ok­ban ez nem fel­tét­le­nül je­le­nik meg kü­lön. Ugyan­ez igaz a mű­ve­­le­tek­re is – a gyer­me­kek a szü­lők­től örök­lik azo­kat. Eb­ben a pél­dá­ban – ahogy koráb­ban is ki­fej­tet­tük – a gyer­mek­osz­tály­ok fe­lül­bí­rál­ják (va­gyis át­for­mál­ják) a „tölt” mű­ve­le­tet.

Társításosztályok

Elő­for­dul, hogy ami­kor el­kezd­jük össze­kap­csol­ni az osz­tá­lyo­kat (tár­sí­tá­so­kon ke­resz­tül), olyan hely­zet­be ke­rü­lünk, ami­kor nem ma­guk az osz­tá­lyok, ha­nem a kö­zöt­tük lé­vő kapcso­lat a lé­nyeg. Az 5.16. áb­ra pél­dá­ul egy olyan be­fek­te­tőt je­le­nít meg, aki kü­lön­bö­ző rész­vé­nyek­be fek­tet be.

 

5.16. áb­ra

Alap­tár­sí­tás

Ha az al­kal­ma­zás­nak ki kell szá­mí­ta­nia a be­fek­te­tés adó­von­za­tát, ak­kor is­mer­nie kell olyan ada­to­kat, hogy mi­kor vá­sá­rol­ták és ad­ták el a rész­vényt, az ár­fo­lya­mo­kat és így to­vább. A vá­sár­lás dá­tu­ma te­hát a be­fek­te­tő jel­lem­ző­je? Egy­ér­tel­mű­en nem. A rész­vé­nyé? Nem iga­zán, mi­vel a vá­sár­lás idő­pont­ja nem a rész­vény bel­ső tu­laj­don­sá­ga. Ez az in­for­má­ció a be­fek­te­tő és a rész­vény kap­cso­la­tát ír­ja le, és nem az osz­tá­lyo­két. Eb­ben a hely­zet­ben a kap­cso­lat a lé­nyeg.

 

5.17. áb­ra

Társításosztály

Hol rög­zít­jük te­hát ezt az in­for­má­ci­ót? Társításosztályokban. (Ami­kor már azt gon­dol­tuk, hogy biz­ton­ság­ban va­gyunk, és meg­ér­tet­tük az összes osz­tá­lyok­kal és tár­sí­tá­sok­kal kap­cso­la­tos dol­got, ak­kor jön a csa­var.) A társításosztályok olyan tár­sí­tá­sok, ame­lyek ren­del­kez­nek az osz­tá­lyok bi­zo­nyos tu­laj­don­sá­ga­i­val. A kö­vet­ke­ző pél­dá­ban a kulcs­fon­tos­sá­gú in­for­má­ció, ami­re szük­ség van, a rész­vény és a be­fek­te­tő bir­tok­vi­szo­nyá­val kap­cso­la­tos (lásd az 5.17. áb­rát).

A Bir­tok­vi­szony társításosztály tar­tal­maz­za a két má­sik osz­tály kö­zöt­ti kap­cso­lat fon­tos ada­ta­it. (A társításosztályokat gyak­ran lát­juk még a több elem kö­zöt­ti tár­sí­tá­sok­nál.) A befek­te­tő nél­kül nincs vá­sár­lás, a rész­vény nél­kül vi­szont nincs mit meg­ven­ni: együtt van szük­ség a be­fek­te­tő­re és a rész­vény­re. A kap­cso­lat nem lé­tez­het a két tár­sí­tott osz­tály lé­te­zé­se nél­kül, így a társításosztály sem.

Meg­szo­rí­tá­sok

Az UML ál­tal biz­to­sí­tott meg­szo­rí­tá­sok le­he­tő­vé te­szik, hogy ért­he­tőb­bé és ki­fe­je­zőb­bé tegyük a ter­vet. A meg­szo­rí­tá­sok olyan je­lö­lé­sek, ame­lyek to­vább kor­lá­toz­zák vagy ponto­sít­ják a mo­dell­ele­me­ket. Az 5.18. áb­rá­nál vissza­té­rünk a bér­lis­ta pél­dá­já­hoz. Ha a vál­la­lat­nál min­den hé­ten fi­ze­tést osz­ta­nak, hoz­zá­ad­ha­tunk egy olyan meg­szo­rí­tást, amely ki­fe­je­zi ezt (a kap­csos zá­ró­jel­ben lát­ha­tó).

A meg­szo­rí­tá­sok le­het­nek idő­be­li, sor­rend­be­li meg­szo­rí­tá­sok, egye­di tu­laj­don­sá­gok, vagy bár­mi, ami az adott hely­zet­ben szük­sé­ges.

 

5.18. áb­ra

Meg­szo­rí­tás

A sor­rend­di­ag­ra­mok­ról bő­veb­ben

Ahogy az osz­tály­di­ag­ra­mok az al­kal­ma­zás sta­ti­kus szer­ke­ze­tét áb­rá­zol­ják, a sor­rend­di­ag­ra­mok ké­pe­sek az al­kal­ma­zás di­na­mi­kus vi­sel­ke­dés­be­li jel­le­gé­nek meg­je­le­ní­té­sé­re. Mint azt a 2. és a 3. fe­je­zet­ben el­mond­tuk, azt mu­tat­ják, hogy az al­kal­ma­zás ob­jek­tu­mai mi­ként mű­köd­nek együtt, hogy üze­ne­tek al­kal­ma­zá­sá­val el­ér­jék a kí­vánt vég­ered­ményt. A di­ag­ra­mok má­sik fel­hasz­ná­lá­si te­rü­le­te (va­gyis az al­kal­ma­zás­mo­del­le­zés) to­váb­bi bizonyí­ték a sok­ol­da­lú­sá­guk­ra. Az ál­la­pot­di­ag­ra­mot – amely szin­tén vi­sel­ke­dés­di­ag­ram – a 8. fe­je­zet­ben tár­gyal­juk.

A kö­vet­ke­ző di­ag­ra­mok pél­dá­val szem­lél­te­tik a sor­rend­di­ag­ra­mok hasz­ná­la­tát az al­kal­ma­zás­mo­del­le­zés­ben. Az 5.19. áb­ra egy or­vo­si fel­jegy­zé­se­ket ke­ze­lő rend­szer együtt­mű­kö­dés-sza­bá­lyo­zó al­rend­sze­rét mu­tat­ja.

 

5.19. áb­ra

Együtt­mű­kö­dé­si fel­adat­di­ag­ram

Eb­ben a pél­dá­ban a „LACS át­adá­sa” fel­adat­ra össz­pon­to­sí­tunk. Ah­hoz, hogy meg­fe­lel­je­nek a sza­bá­lyo­zá­si kö­ve­tel­mé­nyek­nek, az egész­ség­ügyi in­téz­mé­nyek­nek ada­to­kat kell szol­gál­tat­ni­uk a kor­mány­nak a gon­do­zá­suk­ban ál­ló be­te­gek­ről. Ezt az egész­ség­ügyi fel­jegy­zés­cso­por­tot Leg­ki­sebb Adat­cso­port­nak (LACS) ne­ve­zik. A sor­rend­di­ag­ram a rend­szer di­na­mi­kus mű­kö­dé­sét rög­zí­ti (lásd 5.20. áb­ra).

 

5.20. áb­ra

Együtt­mű­kö­dé­si sor­rend­di­ag­ram

A di­ag­ram üze­net­fo­lya­mát kö­vet­ve lát­hat­juk, hogy az Ügy­in­té­ző lét­re­hoz egy „Kö­te­get”, aho­vá a LACS-ok ke­rül­nek. A ki­vá­lasz­tott LACS-ok a Kö­teg­hez adód­nak, majd az Adat­köz­ve­tí­tő­höz ke­rül­nek, és így to­vább, ahogy a mű­ve­let­sor foly­ta­tó­dik.

Ez a sor­rend­di­ag­ram be­mu­tat­ja a rend­szer ele­mei kö­zöt­ti di­na­mi­kus köl­csön­ha­tá­so­kat. Ez biz­to­sít­ja az ala­pot az ele­mek szer­ke­ze­té­nek meg­ha­tá­ro­zá­sá­hoz, ami az 5.21. áb­rán – ez a „LACS át­adá­sa” fel­adat osz­tály­di­ag­ram­ja – lát­ha­tó.

Az ob­jek­tum­köz­pon­tú rend­szer­ter­ve­zés meg­le­he­tő­sen sok is­mét­lés­sel jár. Az osz­tály­fel­épí­tés fej­lesz­té­se­kor a ter­ve­ző rá­jött, hogy új rend­szer­elem kell a Kö­te­gek lét­re­ho­zá­sá­hoz és át­adá­sá­hoz. Így lát­hat­juk, hogy a di­ag­ram­ban meg­je­le­nik egy Kö­teg­ke­ze­lő. Egy szi­go­rú rend­szer­ben fris­sí­te­nék a sor­rend­di­ag­ra­mot, hogy az tar­tal­maz­za a Kö­teg­ke­ze­lőt. Az al­kal­ma­zás­ter­ve­zés elő­re­ha­lad­tá­val gyak­ran for­dul­nak elő is­mét­lé­sek és vál­to­zá­sok a kü­lön­bö­ző di­ag­ra­mok kö­zött. (Ha va­la­ki meg sze­ret­né ér­te­ni az itt sze­rep­lő pél­da fo­lya­ma­tát és fej­lő­dé­sét az üz­le­ti mo­del­le­zés­től az al­kal­ma­zá­sig, a szer­zők UML for Database De­sign [NAIB3] cí­mű köny­vé­ben meg­ta­lál­ja a ta­nul­mány rész­le­tes ki­dol­go­zá­sát.)

 

5.21. áb­ra

Együtt­mű­kö­dé­si osz­tály­di­ag­ram

Ha­la­dók­nak

A kö­vet­ke­ző té­má­kat ér­de­mes ta­nul­má­nyoz­ni:

Az osz­tá­lyok­ban a név, a jel­lem­zők és a mű­ve­le­tek re­ke­szén kí­vül to­váb­bi re­ke­szek sze­re­pel­het­nek. Ke­res­sünk pél­dát az al­kal­ma­zá­suk­ra.

Vizs­gál­juk meg a szár­maz­ta­tott jel­lem­zők gyak­ran al­kal­ma­zott el­vét.

Ta­nul­má­nyoz­zuk a füg­gő­ség vi­szonyt.

De­rít­sük ki a megvalósításosztályok, a tí­pu­sok és a pa­ra­mé­te­re­zett osz­tá­lyok (más né­ven sab­lon­osz­tá­lyok) kö­zöt­ti kü­lönb­sé­get.

Az eb­ben a fe­je­zet­ben sze­rep­lő tár­sí­tá­sok min­dig két osz­tályt kap­csol­nak össze. Van­nak hely­ze­tek, ami­kor ket­tő­nél több osz­tály vesz részt egyet­len kap­cso­lat­ban. Ta­nul­má­nyoz­zuk az „n-es kap­cso­la­to­kat”.

Ha­son­lít­suk össze és ál­lít­suk szem­be egy­más­sal a sor­rend­di­ag­ra­mo­kat és az együtt­mű­kö­dé­si di­ag­ra­mo­kat.

Ki­fe­je­zé­sek

Fe­lü­let Be­bur­ko­lás

Osz­tály Ob­jek­tum

Több­ala­kú­ság Fo­ga­lom

UML-rendőrség Betokozás

Lát­ha­tó­ság Mű­ve­let

Alá­írás El­vont

Fe­lül­bí­rá­lás Tár­sí­tá­s

Jel­zés Sze­rep­név

Mi­nő­sí­tő Mennyi­ség

Hal­maz Össze­té­tel

Össze­tar­to­zás Társításosztály

Meg­szo­rí­tá­sok Jel­lem­ző

Ál­ta­lá­no­sí­tás Örök­lés

Össze­fog­la­lás

A fe­je­zet ele­jén fel­so­rol­tuk az al­kal­ma­zá­sok mo­del­le­zé­se mel­lett szó­ló ér­ve­ket. Rá­mu­tat­tunk, hogy az át­la­gos rend­szer­ter­ve­ző blokk­váz­la­tok, fo­lya­mat­áb­rák és ha­son­ló mód­sze­rek se­gít­sé­gé­vel már ele­ve mo­del­le­zi az al­kal­ma­zá­so­kat. Meg­tud­tuk, hogy a szab­vá­nyos (UML al­kal­ma­zá­sá­val tör­té­nő) mo­del­le­zés egy­aránt hasz­nos az új és az örök­lött al­kal­ma­zá­sok­nál, kü­lö­nö­sen, ha a prog­ram rend­kí­vül fon­tos, bo­nyo­lult, il­let­ve fo­lya­ma­to­san válto­zik. Meg­vizs­gál­tuk az al­kal­ma­zás­mo­del­le­zés sze­mé­lyes és szak­mai in­do­ka­it is.

Ez után kö­rül­jár­tuk azt a kér­dést, hogy mi­lyen szé­les­ség­ben és mély­ség­ben kell mo­del­lez­ni az al­kal­ma­zá­so­kat. Ugyan az a leg­jobb, ha a tel­jes al­kal­ma­zást mo­del­lez­zük, de az al­kal­ma­zás vagy a rend­szer egyes ré­sze­i­nek mo­del­le­zé­sé­hez szük­sé­ges kü­lön­bö­ző kö­ve­tel­mé­nye­ket és meg­ol­dá­so­kat is meg­is­mer­tük. Azt is meg­ta­nul­tuk, hogy nem sza­bad azt hin­ni, hogy a prog­ra­mo­zá­si nyel­vek he­lyet­te­sít­he­tik a meg­fe­le­lő elem­zést és ter­ve­zést.

Vé­gül meg­is­mer­tük az osz­tály­di­ag­ra­mok­ban ta­lál­ha­tó fő ele­me­ket: a jel­lem­zők­kel és mű­ve­le­tek­kel ren­del­ke­ző osz­tá­lyo­kat és az azok kö­zöt­ti tár­sí­tá­so­kat. Be­ve­zet­tük a több­ala­kú­ság, a betokozás, a lát­ha­tó­ság és a meg­szo­rí­tá­sok fo­gal­mát. El­sa­já­tí­tot­tuk a sze­rep­ne­vek, a mi­nő­sí­tők és a mennyi­ség­jel­zé­sek hasz­ná­la­tát. Ezen kí­vül össze­ha­son­lí­tot­tunk két kü­lön­le­ges tár­sí­tást: a hal­mazt és az össze­té­telt. Vé­gül az ál­ta­lá­no­sí­tást és az örök­lést is tár­gyal­tuk.

El­len­őr­ző kér­dé­sek

1. Igaz vagy ha­mis? „A több­ala­kú­ság el­ve azt mond­ja, hogy az osz­tá­lyok ada­tai rej­tet­tek a kül­ső egy­sé­gek szá­má­ra, és csak bel­ső egy­sé­gek ér­he­tik el azo­kat, az osz­tály ál­tal biz­to­sí­tott mű­ve­le­te­ken ke­resz­tül.”

2. Mi­lyen kor­lá­to­zást al­kal­maz­nak a sze­rep­ne­vek egy osz­tály­ra?

3. A mi­nő­sí­tők azon osz­tá­lyok meg­ha­tá­ro­zott ob­jek­tu­ma­it je­lö­lik ki, ame­lyek...

a. a tár­sí­tás mi­nő­sí­tő­höz kö­ze­leb­bi vé­gén ta­lál­ha­tók.

b. a tár­sí­tás tá­vo­lab­bi vé­gén ta­lál­ha­tók.

4. Igaz vagy ha­mis? „Egy hal­maz­ban az Egész meg­sem­mi­sü­lé­se­kor nem fel­tét­le­nül sem­mi­sül meg az összes Rész.”

5. Az aláb­bi­ak kö­zül me­lyik nem láthatóságfajta?

a. Pri­vát

b. Rész­le­ges

c. Lát­szó­la­gos

d. Nyil­vá­nos

e. El­vont

f. Cso­mag

g. Vé­dett

[NAIB3] Naiburg, Eric J. és Robert A. Maksimchuk. 2001. UML for Database Design. Boston, MA: Addison-Wesley.

Vissza a könyv részletes adataihoz

Legutóbb látogatott oldalaim

Keresések Könyvek, termékek Kategóriák