HELSINGIN YLIOPISTO TIETOJENKÄSITTELYTIETEEN LAITOS JOHDATUS SOVELLUSSUUNNITTELUUN (JSS) 19.12.2002 (H.Laine) Anna kunkin tehtävän vastaus ERI PAPERILLA ja kirjita jkaiseen erilliseen vastauspaperiisi paperin numer (n/m), nimesi, kurssin (JSS), kurssin päiväys, syntymäaikasi ja kirjituksesi. 1. Tarkastellaan seuraavaa lukkakaavita: Mitkä alla esitetyistä väitteistä vat kaavin mukaisia? Väite n kaavin mukainen, js se ei le ristiriidassa kaavin kanssa. prjekti {id kuvaus {id tehtävä tehtävä_nr {+id 0..1 päällikkö 0..1 henkilö henkilönumer {id surittaja tarkistustehtävä kkusaika 0..1 tarkistuspöytäkirja laatimisaika dkumentti_nr {id 1 laatija 0..1 vetäjä a) Tehtävää ei vida siirtää prjektista tiseen OIKEIN b) Jkainen henkilö n laatinut vähintään yhden tarkistuspöytäkirjan.. VÄÄRIN c) Tarkistustehtävät eivät välttämättä liity mihinkään prjektiin VÄÄRIN d) Tarkistuspöytäkirjaa ei vi hävittää hävittämättä tarkistustehtävää VÄÄRIN e) Tarkistustehtävän vetäjä vi lla laatijana kaikissa klmessa kyseiseen tehtävään liittyvässä pöytäkirjassa. VÄÄRIN f) Tarkistustehtävän vetäjän, js sellainen n lemassa, pitää lla prjektin päällikkö. VÄÄRIN g) Tarkistustehtävälle n jka tilanteessa lemassa yksikäsitteinen tunnustiet. Js n, niin mikä? OIKEIN, prjektin + tehtävän tehtävä_nr (7 p) 2. Tarkastellaan järjestelmää, jlla henkilö vi hitaa kirjanpita elkuvatallenteistaan. Kullakin tallenteella n yksikäsitteinen tunnus. Samasta elkuvasta vi kkelmassa lla useita tallenteita. Tallenteeseen liittyy tallennekhtaista kmmenttitieta. Tallenne sijaitsee taltilla, jka vi lla jk levyasema, videkasetti, cd-levy tai dvd-levy. Kullakin taltilla n yksikäsitteinen taltitunnus. Taltin kapasiteetti ilmitetaan jk minuutteina tai megatavuina taltityypistä riippuen. Myös tyhjät taltit kuuluvat kirjanpidn piiriin. Levyasemat vat kiinteästi tietkneeseen kytkettyjä. Muita taltiita säilytetään kaapeissa tai telineissä. Kullakin säilytyspaikalla n yksikäsitteinen tunnus (esim. kaappi 3). Säilytyspaikkaan mahtuu mnta taltita. Talti vi lla uudelleennauhitettavissa ja järjestelmän avulla pitäisi saada selville, millä taltiilla n vapaata tilaa. Kullekin elkuvalle annetaan tunnusnumer. Lisäksi kirjataan elkuvan ja laji, tiet esitys- ja tekstityskielistä, elkuvan kest sekä mahdllisesti tiedt hjaajasta ja muutamasta keskeisestä näyttelijästä. Ohjaajista ja näyttelijöistä vidaan tallentaa nimen lisäksi erilaisia henkilötietja. Nämä tiedt tallennetaan vain kertaalleen kuten myös elkuvan perustiedt. Taltin vi kirjata myös lainatuksi kaverille. Kaverien henkilötiedt pitäisi myös kirjata järjestelmään samin kuin lainauksen ajankhta. Lainahistriaa ei le tarpeen säilyttää. Laadi lukkakaavi kuvaamaan järjestelmän tietsisältöä. (6p)
tekijä muutatieta tunnus {id säilytyspaikka tunnus näyttelijä hjaaja 0..1 sisältö elkuva kieli tekstitys valmistumisvusi kest tunnus {id 1 talti tunnus {id merkki tyyppi lainattu 0..1 {id tallenne alkuindeksi tunnus {id laina lainapäivä {id Tallenne n yhdellä taltilla esiintyvä kpi lainaaja dvd kapasiteetti pituus videnauha {id site kaveri 1. Mistä menee pisteitä arvstelussa: Jnkin peruslukkan puuttuminen (elkuva, tallenne, talti, kaveri, säilytyspaikka, tekijä) Jnkin perusyhteyden puute tai virhekytkentä elkuva-tekijä, tallenne-elkuva, tallenne-talti, talti-säilytyspaikka, tallenne-laina/kaveri Virheelliset tai puuttuvat rajitteet - rajitteiden puuttuminen n. pulet siitä, että yhteys puuttuu Attribuutit puuttuvat tai väärin Tunnistustiedt puuttuvat tai väärin 3.. Hahmttele tehtävässä 2 kuvatun arkistjärjestelmän keskeiset käyttötapaukset (tyyppitaslla ja esimerkkitapauksena, 6 tapausta riittää). (6p) Kaikilla käyttötapauksilla sama käyttäjä minä itse Uuden tallenteen kirjaus Taltin id:n haku/generinti ja tietjen kirjaus Elkuvan haku/kirjaus Uuden tallenteen lunti ja kytkentä elkuvaan Taltin säilytyspaikan kirjaus Elkuvan haku & kirjaus Haetaan elkuva nimen perusteella Js elkuvaa ei löydy kirjataan elkuvan perustiedt, Ohjaajan kirjaus Näyttelijöiden kirjaus Lainauksen kirjaus Kaverin haku/kirjaus Kirjataan talti lainatuksi
Lainan palautus Haetaan lainatiet jk kaverin nimen tai taltinumern perusteella pistetaan lainatiet Taltin säilytyspaikan muuts Taltitiettjen haku taltinumern perusteella vaihdetaan säilytyspaikka Tyhjän taltin kirjaus Taltin id:n generinti ja tietjen kirjaus Taltin säilytyspaikan kirjaus -------------------------------- Taltin katamisen/rikkutumisen kirjaus Tallenteen hävitys Tekijätietjen ylläpit Elkuvan tietjen muuttaminen Kaverin haku/kirjaus Kaverin pist, yms. 4. a) Luettele käyttöliittymäteknisiä keinja virheiden estämiseksi. Käyttäjän kieli ei atk teknisiä termejä lyhenteiden välttäminen Kuvaavat tsakkeet ja pasteet Yhdenmukaisuus Standardien ja yleisten käytäntöjen nudattaminen Intuitiivisuus ja hukuttelevuus Yksinkertaisuus selkeys sekä ulkasussa että timinnissa Valinta kirjittamisen asemasta Avusteet suraan käyttöliittymässä Käyttöhje n-line b) Millainen n hun virheilmitus? (6p) väärään aikaa tuleva - ei heti vaan lähetettäessä väärässä paikassa - peittää virheellisen khdan, muualla kuin humin khdassa turha - käyttäjä humaa muutenkin lukkaava typerä ei käyttäjän kieltä ei pasta käyttäjää ei asiallinen, 'hauska'
5. Laadi sekvenssikaavi seuraavien hjelmasien perusteella. Vit lettaa, että pelaajia n kaksi ja krtteja jaetaan kerralla 5. Tähän tehtävään vastaavat vain kurssia erilliskkeena surittavat. Js let sallistunut kurssin harjituksiin ja vastaat tähän, niin tehtävästä saadut pisteet krvaavat mahdlliset harjituspisteesi. public class Came { / This class is nt cmplete / prtected int camunt; prtected int players; prtected Deck cards; prtected Player [] cardplayer; prtected Rules rules; public vid jin(player p{ /new player jins the came/ cardplayer[players]=p; players++; ) public vid rund () { / ne deal / int pt=0; int i=0; cards.suffle(); fr (i=1;i++;i<players) { cardplayer[i].takecards(cards.givecards(camunt)); pt += cardplayer.bet(rules); Player winner= determinewinner(); winner.takept(pt); prtected Player determinewinner() { / fids ut the winner/ int w=0; Deck best=cardplayer[0].gethand(); fr (i=1;i++;i<players) { Deck hand =cardplayer[i].gethand(); if (rules.isbetter(best, hand)) { w=i; best=hand; return cardplayer[w]; public interface Rules { / TREAT THIS LIKE A CLASS / public blean isbetter(deck bestsfar; Deck newdeck); // returns true if newdeck is better public flat valueofdeck(deck thedeck); // cmputes the ranking public class Player { String name; Deck hand; int mney; public int bet(rules r){ / uses rules t evaluate hw gd the hand is / public vid takept(int pt) {mney +=pt; / wins payed / public vid takecards (Deck newcards) {hand=newcards; / new deal / public Deck gethand () {return hand / shw the cards / public class Deck { int tp=0; Card [] cards; public vid suffle() { / re-rganizes cards / ; public Deck givecards (int number) { // creates a new deck with given number f cards taken frm // the tp f deck. Mves tp. Laskuharjituksissa.
Game DEck>cards player0 player1 rules rund suffle givecards takecards bet use givecards takecards bet use determinewinner gethand gethand isbetter takept