Johdatus sovellussuunnitteluun, HY/Avoin, kesä 2003, harjoitus 3 (19.6.)

1.

Kirjaston kokoelma koostuu kirjoista ja lehdistä. Samasta kirjasta voi olla kirjastossa useita kappaleita; kutsutaan näitä niteiksi. Lehdet on niputettu kansioihin vuosikerroittain. Kirjaston asiakkaat voivat hakea teoksia eri hakusanoilla (kirjoittaja, otsikko, lehden nimi ja numero). Lisäksi he voivat lainata kirjoja. Lainasta talletetaan lainaaja, lainattu nide, lainauspäivämäärä ja palautuspäivämäärä. Asiakkaat voivat myös varata kirjan, jota ei ole sillä hetkellä saatavissa. Varaustiedot koostuvat varaajasta, varauksen kohteesta ja varauspäivämäärästä. Lehtiä ei saa lainata, ainoastaan lukea kirjastossa.

Laadi mainitunlaisen kirjastojärjestelmän tietosisältöä kuvaava UML-luokkakaavio. Mieti erityisesti, liittyykö luokkien välisiin yhteyksiin olemassaoloriippuvuuksia. Esitä mahdolliset olemassaoloriippuvuudet kompositioilla. Merkitse olioiden yksikäsitteisen identifioinnin kannalta välttämättömät attribuutit luennoilla esitetyillä {id} ja {+id} -määreillä.


Luokkakaavio:
 
  Luokkakaavio  

2.

Laadi tehtävän (1) luokkakaaviota vastaava ilmentymäkaavio, joka kuvaa seuraavia asioita: Matti Meikäläinen (tunnus 99999) on lainannut 30.3.2000 kaksi kirjaa: Dostojevskin "Rikoksen ja rangaistuksen" (niteen tunniste 12345) sekä Carl von Linnen "Kasvioppaan" (67890). Samalla hän on varannut "Savon luonto"-kirjan, jonka on toimittanut Kaura Pelto. Maija Muukalainen on lainannut 2.4.2000 Herman Hessen "Arosuden" (54321) sekä toisen niteen Dostojevskin "Rikosta ja rangaistusta" (12344). Lisäksi hän on varannut Dostojevskin "Karamazovin veljekset".


Ilmentymäkaavio:
 
 
Ilmentymäkaavio  

3.

Matkatoimisto Kaukokaipuu haluaa järjestelmän, jolla se voi esitellä matkakohteitaan WWW:ssä. Järjestelmän pitäisi mahdollistaa myös matkojen varaukset sekä matkailijoiden kommenttien kokoaminen. Kustakin matkakohteesta laaditaan esite, jossa on esitelty matkakohde ja majoitusvaihtoehdot. Kohteen yleisesittely sisältää esittelytekstiä ja kuvia kohteesta sekä lentojen aikataulun ja lähtöpäivät. Majoitusvaihtoehdon esittelyssä kerrotaan hotellin tai huoneistohotellin nimi ja osoite, kuvaus tarjolla olevista huonetyypeistä sekä tyypin huoneiden lukumäärä ja matkan perushinta viikolta, kun huoneeseen majoittuu tietty huonetyyppikohtainen perusmäärä henkilöitä. Lisäksi ilmoitetaan lisäviikon hinta ja lisävuodepaikan hinta sekä näiden enimmäismäärä. Järjestelmä pitää kirjaa lähtöihin liittyvistä varauksista huonetyyppikohtaisesti. Varaukset tunnistetaan varausnumerolla. Muita varaukseen liittyviä tietoja ovat tilaajan nimi ja osoitetiedot, matkan kesto viikkoina, matkustajien nimet ja syntymäajat sekä tieto varauksen käsittelyn tilasta.

Alleviivaa yllä olevasta tekstistä luokkaehdokkaat ja karsi luokkia luennolla esitettyjen kriteerien perusteella. Kirjaa perustelut luokan valinnalle tai karsimiselle.


Luokkaehdokkaat ja karsintaperusteita:
 
matkatoimisto vain yksi ilmentymä EI
matkakohde sisältää yksittäisestä matkasta riippumatonta tietoa OK
matka tarvitaanko erikseen (sama kuin varaus)? EI
varaus järjestelmän keskeinen kohde,
koostuu lentovarauksesta ja huonevarauksesta
OK
matkustaja oleellinen OK
kommentti liittyy sekä matkustajaan että matkaan OK
esite matkakohteeseen liittyvä tuloste EI
majoitusvaihtoehto oleellinen OK
esittelyteksti matkakohteen / esitteen osa ?
kuva matkakohteen / esitteen osa ?
lento oleellinen OK
aikataulu lennon attribuutti EI
lähtöpäivä lennon attribuutti EI
hotelli oleellinen, paljon attribuutteja OK
huoneistohotelli hotellin alalaji, tarvitaanko erikseen? EI
huonetyyppi paljon attribuutteja OK
lentovaraus (lähtö) varauksen osa OK
huonevaraus varauksen osa OK
 
Luokat  

4.

Täydennä tehtävän (3) luokkamallia määrittelemällä luokille attribuutit sekä kartoittamalla luokkien väliset yhteydet. Esitä lopputulos UML-luokkakaaviona.


Luokkakaavio:
 
  Luokkakaavio  

5.

Pesulapalvelu Puksun Puhdon henkilöasiakkailleen tarjoamaan peruspalveluvalikoimaan kuuluvat kilohintaiset pesut, kuten valko-, kirjo- ja mattopyykin vesipesu sekä kemialliset pesut, joiden hinta määräytyy erillisen kappalehinnaston mukaan. Kuhunkin palveluun voi lisäksi liittää yhden tai useampia lisäpalveluja, esimerkiksi silityksen tai mankeloinnin. Puksun palveluhinnastossa esitellään kunkin palvelun sisältö, siihen liitettävissä olevat lisäpalvelut, hinnoitteluperuste ja yksikköhinta. Kullakin palvelulla on myös tietty toimitusaika, joka riippuu tilausmäärästä.

Asiakas tilaa palveluja palvelutoimeksiannon avulla. Samalla toimeksiannolla voi tilata kerralla useita palveluja. Lisäpalveluja ei voi tilata yksinään. Koko toimeksiantoon liittyväksi toimitusajaksi annetaan suurin yksittäisten palvelujen toimitusajoista. Kokonaishinnaksi tulee yksittäisten palvelujen hintojen summa. Kanta-asiakkaille myönnettään alennusta tietty prosentti loppusummasta.

Pesulapalvelun tietojärjestelmän tulisi huolehtia palvelukuvausten ja hinnaston ylläpidosta, toimeksiantojen hallinnasta sekä asiakasrekisteristä. Laadi järjestelmän tietosisältöä kuvaava UML-kaavio. Täydennä tarvittaessa kuvausta puuttuvillä yksityiskohdilla.


Luokkakaavio:
 
  Luokkakaavio
Pesutyyppejä ovat siis nuo kirjopesu, valkopesu...

Hinnat palvelussa ja toimeksiannossa sekä toimeksiannon toimitusaika ovat täysin redundanttia tietoa, ja ne voitaisiinkin aivan yhtä hyvin jättää pois vastauksesta. Lisäpalvelun olen liittänyt pesutyyppiin kertomaan, millaisia lisäpalveluita pesutyypillä voi olla, mutta sen voisi liittää myös pesuun, jos pesun koko jollakin tavalla vaikuttaa lisäpalvelun olemassaoloon.