viikon 4 kotitehtävät - HY-TKTL/otm2014s GitHub Wiki

Tehtävät 1 ja 2 liittyvät luokkakaavioihin. Tehtävät 4 ja 6 liittyvät sekvenssikaavioihin, eli luennon 3 kalvoihin 34-54. Tehtävä 5 liittyy käsiteanalyysiin eli luennon 3 kalvoihin 10-33.

1

Seuraavassa on lueteltu käsitteitä, jotka ovat jossain suhteessa keskenään. Mitä suhdetyyppiä (normaali yhteys, kompositio, perintä, riippuvuus, ...) kussakin tapauksessa kannattaa käyttää (siis jokaiseen palloon oma suhde). Piirrä esim. pieni luokkakaavio jokaisesta tilanteesta.

  • Ruokaileva filosofi käyttää haarukkaa
  • Unixissa tiedosto on joko tavallinen tiedosto tai hakemisto
  • Tiedosto muodostuu tavuista
  • Monikulmion kulmat ovat järjestetty jono pisteitä
  • Opiskelija hallitsee Java-kielen
  • Ihmisellä on syntymävuosi
  • Hiiri, näppäimistö ja Näyttö ovat I/O-laitteita (eli tietokoneen syötelaite)
  • Polku yhdistää kaksi kylää
  • Monopolissa on 2-8 Pelaajaa. Pelaaja voi olla yksittäinen henkilö tai joukkue. Joukkue koostuu yksittäisistä henkilöistö

2

Takaisinmallinna seuraava koodi luokkakaaviona:

public class Paaohjelma {
    public static void main(String[] args) {
        Kurssi ohma = new Kurssi();
        Opiskelija o1 = new Opiskelija("Arto", 45);
        Opiskelija o2 = new Opiskelija("Matti", 27);
        Opiskelija o3 = new Opiskelija("Antti", 55);

        ohma.lisaaOpiskelija(o1);
        ohma.lisaaOpiskelija(o2);
        ohma.lisaaOpiskelija(o3);

        ohma.arvosteleOpiskelijat();
        ohma.tulostaKurssinTulokset();
    }
}
public class ArvosanaLaskin {
    public int selvitaArvosana(int pisteet) {
        if ( pisteet<30 )      return 0;
        else if ( pisteet<35 ) return 1;
        else if ( pisteet<40 ) return 2;
        else if ( pisteet<45 ) return 3;
        else if ( pisteet<50 ) return 4;
            
        return 5;
    }
}
public class Kurssi {
    private ArrayList<Opiskelija> opiskelijat;
    private ArvosanaLaskin arvosanaLaskin;

    public Kurssi(){
        opiskelijat = new ArrayList<Opiskelija>();
        arvosanaLaskin = new ArvosanaLaskin();
    }

    public void lisaaOpiskelija(Opiskelija opisk){
        opiskelijat.add(opisk);
    }

    public void arvosteleOpiskelijat(){
        for ( Opiskelija opisk : opiskelijat ) {
            int pisteet = opisk.getPisteet();
            int arvosana = arvosanaLaskin.selvitaArvosana( pisteet );
            opisk.setArvosana(arvosana);
        }
    }

    public void tulostaKurssinTulokset(){
        for ( Opiskelija opisk : opiskelijat )
            opisk.tulostaTiedot();
    }
}
public class Opiskelija {
    private String nimi;
    private int pisteet;
    private int arvosana;

    public Opiskelija(String nimi, int pisteet) {
        this.nimi = nimi;
        this.pisteet = pisteet;
    }

    public int getPisteet(){
        return pisteet;
    }

    public void setArvosana(int arvosana){
        this.arvosana = arvosana;
    }

    public void tulostaTiedot(){
        System.out.println( nimi+" "+arvosana );
    }
}

3

Piirrä edellisen tehtävän koodia vastaava oliokaavio rivin ohma.lisaaOpiskelija(o2); jälkeisestä tilanteesta.

4

Takaisinmallinna tehtävän 2 koodi sekvenssikaaviona. Sekvenssikaavio piirretään tilanteesta, jossa kutsutaan luokan Paaohjelma main-metodia.

5

Toisissa laskareissa oli tehtävänä laatia käyttötapausmalli Ohjelmistotuotantoprojektin hallinnointia tukevaan järjestelmään.

Tee järjestelmää vastaava määrittelyvaiheen luokkakaavio.

Etene samaan tapaan kuin luennon elokuvateatteri- ja kampaamoesimerkeissä, eli etsi ensin luokkakandidaatit keräämällä viikon 2 laskareissa olevassa tehtäväkuvauksessa esiintyvät substantiivit. Karsi sen jälkeen ylimääräiset luokkakandidaatit, eli attribuutit, synonyymit, tekemistä tarkoittavat sanat ja asiaan kuulumattomat. Tämän jälkeen mieti minkälaisia yhteyksiä luokkien olioilla on. Lopuksi tarkenna yhteydet osallistumisrajoitteilla sekä nimeä yhteydet ja roolit tarvittaessa.

Huomioi luennon 3 kalvon 33 toteamus:

yleensä ei jakseta kerätä kaikkia substantiiveja vaan tehdään esim. synonyymien ja tekemistä tarkoittavien sanojen karsinta samalla kun "kunnollisten" substantiivien etsintä etenee

6

AppsForFinland-kilpailuun osallistuvan STOPPI-sovelluksen toista päätoiminnallisuutta kuvaa seuraava vapaamuotoisena tekstinä kirjoitettu käyttötapaus:

Matkustaja menee pysäkille, jolta haluaa päästä kyytiin tiettyyn bussiin. Matkustaja käynnistää sovelluksen matkapuhelimessaan. Puhelin tunnistaa pysäkin GPS-paikannusjärjestelmän avulla. Puhelin ilmoittaa sijaintinsa HSL:n verkkopalveluun, joka palauttaa puhelimelle listan pysäkille lähiaikoina saapuvista busseista. HSL:n verkkopalvelu siis tietää kaikkien bussien sijainnin, bussien säännöllisesti lähettämien GPS-paikannustietojen perusteella. Matkustaja valitsee puhelimen näytöllä näytetyistä busseista haluamansa ja painaa pysäytyspyyntönappia. HSL:n verkkopalvelu välittää pysäytyspyynnön bussille ja kertoo puhelimen sovellukselle bussin odotetun saapumisajan. Bussin karttapaikannuslaite osaa varottaa bussin kuljettajaa lähestyttäessä pysäkkiä, jolta on tehty pysähtymispyyntö. Näin bussin kuljettaja osaa vähentää nopeutta pysäkkiä lähestyttäessä. Puhelimen sovellus kysyy säännöllisin väliajoin HSL:n verkkopalvelulta bussin sijaintitiedot ja bussin ollessa lähestymässä pysäkkiä, sovellus ilmaisee asian matkustajalle.

Mallinna sekvenssikaaviona sovelluksen eri osapuolten (matkustaja, puhelin, GPS-palvelu, HSL-verkkopalvelu, bussin sovellus, bussin kuljettaja) käymä interaktio.

⚠️ **GitHub.com Fallback** ⚠️