4it115»Cestovni Kancelar

Cestovni Kancelar

UML diagram - Cestovní kancelář

Zadání

Cestovní kancelář chce na svém webu zobrazovat nabídku pobytových zájezdů. Vedle vlastní webové aplikace se vytváří aplikace (GUI) na vkládání informací o zájezdech pro pracovníky CK. Úkolem je nakreslit diagram tříd pro část této aplikace – pro následující případ užití.

Případ užití 1: Přidání nového zájezdu
Primární aktér: pracovník agentury
Rozsah: aplikace
Úroveň: uživatelský cíl
Vstupní podmínky: pracovník agentury má spuštěnou aplikaci se zobrazeným seznamem zájezdů

Hlavní úspěšný scénář:
1. pracovník agentury stiskne tlačítko “Přidat zájezd”
2. pracovník agentury ze seznamu vybere cílovou zemi zájezdu (např. Řecko),
3. pracovník agentury ze seznamu vybere cílovou lokaci (např. ostrov Rhodos),
4. pracovník agentury vyplní povinná políčka:“Popis”, “Název ubytovacího zařízení“
5. pracovník agentury vybere ze seznamu “Obrázky” jednotlivé obrázky tématicky spojené s tímto zájezdem. V seznamu obrázků se nabízí obrázky patřící k dříve zadané lokaci.
6. pracovník agentury stiskne tlačítko “Ulož”, uloží záznam do souboru
7. pracovník agentury postupně vyplní údaje o jednotlivých termínech:
7.1. Stiskne tlačítko “Přidej termín“
7.2. Vyplní údaje o termínu: “Datum odjezdu“, “Počet dní“, “Cena“, “Kapacita“
7.3. Stiskne tlačítko “Ulož“ pro uložení termínu do souboru

Rozšíření:
1a. pracovník agentury vybere existující zájezd ze seznamu, zobrazí se informace o zájezdu a pracovník pokračuje krokem 7 hlavního scénáře – přidávání termínů,

3a. pracovník agentury zařadí novou lokaci do seznamu

	3a.1 Stiskne tlačítko “Přidat lokaci“
	3a.2 Vloží cestu název lokace
	3a.3 Stiskne tlačítko “Ulož lokaci“

5a. pracovník agentury zařadí nový obrázek do seznamu

	5a.1 Stiskne tlačítko “Přidat obrázek“
	5a.2 Vloží cestu k obrázku a popis obrázku
	5a.3 Stiskne tlačítko “Ulož obrázek“

Chybná řešení s komentáři

ck01

  • u zájezdu chybí datový atribut ubytovací zařízení,
  • ubytovací zařízení nemá být u lokace - např. na Rhodu mohou používat více hotelů,
  • seznam zemí se neeviduje u zájezdu - jedná se o pobytové zájezdy do jedné země, tj. zájezd by měl mít jednu zemi,
  • seznam zemí by měl být nějaké třídy typu CestovníKancelář, popř. u Vaší třídy EvidenceZajezdu,
  • zájezd by měl mít seznam obrázků,
  • není jasné, proč by měla třída EvidenceZajezdu evidovat termíny, lokace a obrázky,
  • od zájezdu k termínu by měla být kompozice,

ck02

  • chybí šipky u asociací, u některých i jména datových atributů,
  • jedná se o pobytové zájezdy, tj. nemá smysl evidovat u zájezdu více zemí, ale právě jednu,
  • u zájezdu chybí datový atribut s ubytovacím zařízením,
  • lokalita je závislá na zemi, tj. země by měla mít seznam lokalit v zemi,
  • termín není závislý na lokalitě,
  • k lokalitě je více obrázků (chybí asociace), ze zadání nevyplývá,že by se u obrázku měla evidovat lokalita, i když to není chyba,
  • máte úplně špatně umístěné metody - proč bych k měl k jednomu zájezdu přidávat další zájezd?, jak bych měl u instance jednoho zájezdu vybírat zájezd?

ck03

  • u asociací v návrhovém diagramu tříd se píšou jména datových atributů a ne popisy vztahů,
  • seznam zemí, seznam termínů,seznam lokací - to mají být datové atributy v nějaké třídě a ne samostatné třídy,
  • chybně šipky

ck04

  • pracovník sedí u počítače, nepatří do diagramu tříd !!!, kreslí se pouze do use-case diagramu,
  • u zájezdu chybí datové atributy - popis, ubytovací zařízení, doprava,
  • jedná se o pobytové zájezdy, takže zájezd bude jen na jednu lokaci, to samé se seznam zemí,
  • v lokaci (např. Rhodos) může být více ubytovacích zařízení,
  • máte chybně umístěné metody - k instanci jednoho zájezdu se má přidávat další zájezd?
  • nechápu, proč u obrázku evidovat seznamDriveZadanýchLokaci,

ck05

  • termín patří ke konkrétnímu zájezdu a ne ke třídě SeznamZajezdu,
  • jedná se o pobytové zájezdy, takže není do více zemí či do více lokací,
  • místo tříd SeznamZemi, SeznamLokalit, SeznamObrazku měly být datové atributy,
  • lokace patří do konkrétní země,
  • u zájezdu máte dvakrát datový atribut lokace,

ck06

  • v návrhovém diagramu tříd asociace představují datové atributy, Datové atributy "pridaniLokace", "editaceZajezdu", "pridaniTerminu" jsou na první pohled chybně,
  • chybí multiplicita u asociací,
  • Váš diagram mně připomíná neumělý pokus o Use-Case diagram nakreslený pomocí notace diagramu tříd,

ck07

  • proč je země ve třídě Lokace typu String, když máte třídu Země,
  • seznam zemí by se měl evidovat v nějaké hlavní třídě, např. SeznamZajezdu (zvolil bych spíš jméno CestovniKancelar),
  • jedná se o pobytové zájezdy, takže do jedné země,
  • zájezd je do konkrétní lokace, tj. chybí asociace mezi zájezdem a lokací,
  • metody máte chybně umístěné - proč bych měl k instanci třídy Zajezd přidávat další zájezd?, proč bych měl k jednomu obrázku přidávat další obrázek,

ck08

  • pro ubytovací zařízení nemusí být samostatná třída - uživatel aplikace má vypsat jméno ubytovacího zařízení, takže umístění do samostatné třídy je problematické,
  • máte chybně kompozice - když zruším jeden zájezd do Řecka, tak mám zrušit zemi Řecko?
  • chybně datové typy - popis dle Vás je číslo,
  • metoda pridejZajezd ve třídě EvidenceZajezdu má chybně hlavičku - když se přidává zájezd, tak se má přidávat i nějaký seznam obrázků či nějaký termín?
  • popisy u některých asociací jsou nepřehledné - např. u asociace mezi zájezdem a obrázkem máte tři popisy: zadaneObrazky, seznamObrazku a seznamLokaci (?),
  • asociace od třídy EvidenceZajezdu ke třídám Lokace, Obrazek, Termín a UbytovaciZarizeni jsou zbytečné

ck09

  • jedná se o evidenci pobytových zájezdů, tj. nemá smysl evidovat u jednoho zájezdu seznam zemí či seznam lokací,
  • seznam zemí by se měl evidovat v nějaké hlavní třídě, např. pojmenované CestovníKancelář,
  • nechápu datový atribut zeme typu Zajezd ve třídě Země (asociace od země k zájezdu),
  • u asociace Zajezd -> Termín chybí multiplicita,
  • ve třídě země by měl být seznam lokací v zemi,
  • nechápu datový atribut lokace typu Zajezd ve třídě Lokace (asociace Lokace -> Zajezd),
  • většinou máte chybně šipku u asociace, měla by často být na druhé straně asociace, dalším případem je datový atribut lokace ve třídě Lokace odkazující na obrázek. Kdyby šipka byla na druhé straně asociace, bylo by to v pořádku (pokud vynechám u tohoto vztahu kompozici),

ck10

  • v návrhovém diagramu tříd mají být u asociací jména datových atributů a ne popisy vztahů,
  • občas Vám jména datových atributů chybí,
  • popisy vztahu "přidatZajezd", "přidatTermin", "přidatObrazek" jsou divné,
  • máte chybně kompozice - když zruším obrázek, tak dle Vás musím zrušit celou lokaci. Když se zruší lokace, tak se má zrušit celá země. U těchto vztahů máte chybně i směr (šipku) asociace - např. má být asociace od CílovéZemě k Lokaci pojmenovaná seznamLokaci, ke které patří kompozice.
  • v lokaci může být více ubytovacích zařízení, tj. datový atribut "nazevUZarizeni" ve třídě Lokace je nesmyslný,

ck11

  • u některých asociací Vám chybí šipka,
  • třída "Pridej Termin" je chybně pojmenována, vhodný název je Termin
  • u třídy Zájezd chybí datové atributy popis a jméno ubytovacího zařízení,
  • v lokaci (např. Rhodos) může být více ubytovacích zařízení, tj. datový atribut ubytovacíZařízení ve třídě Lokace je nesmyslný,
  • nechápu třídu "SeznamObrázků", spíš by měla být třída Obrazek a v jiných třídách (Lokace, Zajezd) datový atribut seznamObrázků (jako asociace),

ck12

  • třídy SeznamZemi, SeznamObrazku, SeznamLokací jsou divné. Správně má být např. třída Lokace a ve třídě Zeme datový atribut seznamLokací. Ve třídě zájezd by poté měl být datový atribut lokace typu Lokace.
  • datový atribut obrazky typu Set ve třídě Zajezd je chybně. Jaké typu budou prvky Setu? Správně by měla existovat třída Obrazek, v zájezdu (a v lokaci) datový atribut seznamObrazků napsaný u příslušných asociací.
  • k zájezdu může být více termínů,
  • názvy datových atributů "vyber mista" či vyber zeme" připomínají názvy metod

ck13

  • jedná se o pobytové zájezdy, takže zájezd je pouze do jedné země, do jedné lokace,
  • třída SeznamLokací je chybně - správně měla být asociace od třídy Zajezd ke třídě Lokace s multiplicitou 1 a názvem nejspíš lokace. Od třídy Země by měla být asociace ke třídě lokace s hvězdičkou a názvem datového atributu "seznamLokací",
  • kompozici máte chybně - když se zruší jedna země, tak by se dle Vás měl zrušit celý seznam zemí,
  • třída Obrazek nemá být potomkem třídy Lokace,
  • názvy datových atributů "přidatLokaci" a "přidatObrazek" připomínají názvy metod,
  • lokace a obrázky by měly být přiřazeny k zájezdu a ne k termínu,

ck14

  • třídy odpovídající grafice se obvykle do návrhového diagramu tříd nekreslí,
  • název třídy by měl být v jednotném čísle, neboť by měl vytvářet představu jedné instance. U třídy "obrazky" máte i nesmyslné atributy. Jméno atributu pridatObrazek evokuje spíš metodu.
  • název datového atributu "přidatTermin" ve třídě zájezd opět evokuje jméno metody. Nevím, co by měl tento atribut obsahovat.
  • dle případu užití k zájezdu existuje více termínů, tj. je potřeba oddělit třídu Zajezd od třídy Termin,
  • u asociací Vám chybí jména datových atributů,
  • aby bylo možno vybírat ze seznamu zemí, potřebujete třídu Země a někde uchovaný seznam instancí této třídy,
  • v jedné lokaci (např. Rhodos) může být více ubytovacích zařízení,

ck15

  • Pracovník sedí u počítače a pracuje s programem - do diagramu tříd nepatří. Ten patří do dynamických diagramů jako je use-case diagram či sekvenční diagram.
  • názvy datových atributů odpovídající asociaci se obvykle píší k asociaci a ne do obrázku třídy - mám na mysli datový atribut seznamObrazku ve třídě Zajezd.
  • třída SeznamTermínu je chybně. Nechápu její význam. K zájezdu je více termínů, to máte vyjádřeno asociací od třídy Zajezd ke třídě Termin (chybí Vám u této asociace šipka a jméno datového atributu).
  • do návrhového diagramu tříd se názvy vztahů obvykle nepíší,
  • u některých asociací Vám chybí jména datových atributů,
  • lokace patří do země, obrázky patří k lokaci - chybí Vám vyjádření těchto vztahů,
  • u třídy zájezd chybí datový atribut se jménem ubytovacího zařízení,
  • u třídy Obrazek jste místo datového atributu napsal metodu jmeno(),

ck16

  • třídy SeznamTerminu, SeznamObrazku, SeznamLokaci jsou nesmyslné. Místo těchto třídy mají být pouze odpovídající datové atributy - od třídy Zajezd by měla být asociace s hvězdičkou ke třídě Termin a u ní jméno datového atributu seznamTermínů. Obdobně seznam obrázků - asociace od třídy Zajezd ke třídě Fotka (a ne ke třídě Lokace jak máte Vy).
  • seznam zemí by měl být v nějaké hlavní třídě např. pojmenované CestovniKancelar - v ní by mohl být i seznam zájezdů.
  • od země by měla být asociace s hvězdičkou ke třídě Lokace pojmenovaná např. seznamLokací,
  • jedná se o pobytové zájezdy, takže k zájezdu by měla být pouze jedna země a jedna lokace,
  • u zájezdu Vám chybí datové atributy popis a jméno ubytovacího zařízení,

ck17

  • třídy grafického rozhraní (u Vás třída GUI) se do návrhového diagramu tříd nekreslí,
  • Zájezd má více termínů, takže by měla být asociace s hvězdičkou od třídy Zajezd ke třídě Termín,
  • Názvy tříd se píší v jednotném čísle - u Vás se to týká třídy Obrazky,
  • zájezd je do jedné země (asociace od zájezdu k zemi), do jedné lokace (asociace od zájezdu k lokaci).
  • Nechápu datový atribut seznamZemí typu Zajezd ve třídě Country, obdobné je to s další datovými atributy zapsanými u asociací,

ck18

  • evidenci zájezdů a evidenci zemí bych spojil do jedné třídy,
  • třídy EvidenceLokací a EvidenceObrazků jsou zbytečné,
  • názvy tříd se píší v jednotném čísle - u Vás třída Obrazky,
  • jedná se o pobytové zájezdy, tj. do jedné země (máte hvězdičku u asociace) a do jedné lokace (chybí Vám asociace),
  • metoda pridejLokaci() patří do třídy EvidenceLokaci a ne do třídy Lokace,

ck19

  • názvy tříd "PridejLokaci", "PridatZajezd" a "PridejObrazek" odpovídají názvům metod a ne názvům tříd,
  • třída PridejObrazek má datové atributy cestaKObrazku, nazevObrazku a popisObrazku, které bych očekával ve třídě Obrazek.
  • nechápu datový atribut novyObrazek typu kolekce instancí třídy Obrazek v třídě PridejObrazek (tento datový atribut je napsán u asociace).
  • obdobně je to s a atributy ve třídě PridejLokaci,
  • jedná se o evidenci pobytových zájezdů, tj. do jedné země, do jedné lokace. Tj. u zájezdu jsou nesmyslné datové atributy seznamZemi, seznamLokaci.
  • v jedné lokaci (např. Rhodos) je více ubytovacích zařízení. Jeho jméno má pracovník napsat, takže by měl být odpovídající datový atribut ve třídě Zajezd a ne ve třídě Lokace.
  • příliš jsem nepochopil metody pridejLokaci, pridejTermin či pridejObrazek ve třídě PridatZajezd. Dle mne by tam neměli vůbec být.

Správné řešení

Proti zadání je v diagramu navíc datový atribut doprava u třídy Zajezd