Ryhmätyö

Ryhmätehtävä

HUOM: Tiedostot alla

Muodosta n. kolmen hengen ryhmä. Seuraavassa ryhmätehtävässä ohjelma jakautuu kolmeen luokkaan (=yksi jokaiselle). Mikäli ryhmässäsi on vain 2 jäsentä, jaa koodattavat luokat haluamallasi tavalla. Mikäli ryhmässäsi on enemmän kuin kolme jäsentä, kokeile pariohjelmointia (jos et tiedä mitä se on, selvitä). Yhden hengen ryhmät eivät ole sallittuja kuin poikkeustapauksissa (esim. teet etänä etkä saa kehenkään yhteyttä).

Korjaus: Pinon toteuttamiseen tarvitaan kaksi luokkaa, toinen pinoa ja toinen pinoon laitettavaa alkiota varten. Sailio-luokka ei pysty tallentamaan tietoa alapuolellaan pinossa olevasta alkiosta - eikä kuulukaan, sillä sailioita pitää voida käyttää muuallakin kuin pinossa.

Tehtävässä käytetään Bitbucket-versionhallintapalvelua. Yksi ryhmäläinen perustaa Bitbucket-varaston (repository) ja kutsuu muut sinne.

Tehtävä

Ohjelma koostuu seuraavista luokista: Sailio, SailioPino ja SailioKasittelija. Jokainen ryhmäläinen toteuttaa yhden luokan ja lähettää sen yhteiseen Bitbucket-varastoon. Toisia saa auttaa tarpeen mukaan. Lopuksi kaikilla pitäisi olla omalla koneellaan kaikki kolme luokkaa ja siis toimiva ohjelma. Ole tarkkana, että toteutat rajapinnat kuvausten mukaisesti.

Sailio

public Sailio(String sisalto, double maara, int leveys, int korkeus, int syvyys) - luo Sailio-olion saamiensa parametrien mukaisesti. Sailiolla on tietyt mitat (senttimetreinä), ja se sisältää jotakin tietyn määrän (litroina). Jos maara on suurempi kuin sailion tilavuus, täytetään sailio vain ääriään myöten täyteen.

public String annaSisalto() - palauttaa tiedon, mitä sailio sisältää

public double annaMaara() - palauttaa, paljonko sailio sisältää

public int annaLeveys() - palauttaa leveyden senttimetreinä

public int annaKorkeus() - palauttaa korkeuden senttimetreinä

public int annaSyvyys() - palauttaa syvyyden senttimetreinä

public double annaTilavuus() - palauttaa tilavuuden litroina (lasketaan leveyden, korkeuden ja syvyyden avulla)

public boolean lisaa(double paljonko) - lisää sailioon parametrin (litroina) verran sisältöä. Sailion voi täyttää vain ääriään myöten täyteen (yli ei saa mennä). Jos määrä menee yli palautetaan false, jos mahtui palautetaan true.

public double poista(double paljonko) - poistaa säiliöstä parametrin (litroina) verran sisältöä. Palauttaa poistetun määrän. Enempää ei voi poistaa kuin sailiossa on.

SailioPino

public SailioPino() - luo pinon, johon voi tallettaa Sailio-olioita

public void push(Sailio sailio) - laittaa sailion pinoon

public Sailio pop() - palauttaa pinon päällimmäisen sailion (ja poistaa sen pinosta)

public boolean empty() - kertoo, onko pino tyhjä

(Olemme tehneet harjoituksena kokonaislukupinon aiemmin. Voit hyödyntää vanhaa koodia. Jos tämä on liian helppo, voit sen sijaan toteuttaa SailioJonon - muista vain sopia ryhmän kanssa rajapinnasta etukäteen.)

SailioKasittelija

Staattinen käyttöliittymäohjelma, joka käyttää SailioPino- ja Sailio-luokkia. Hyödynnä ohjelman osittamisen osaamistasi metodijaossa.

Ohjelmalla pitää voida

  • luoda Sailio-olioita ja lisätä niitä pinoon
  • ottaa pinosta Sailio-olioita ja
    • tulostaa niiden tiedot,
    • lisätä niihin sisältöä, tai
    • poistaa niistä sisältöä
  • lisätessä ja poistettaessa sisältöä tulostetaan jonkinlainen onnistumis- / epäonnistumisviesti

Ehdotus metodijaosta (ei ole pakko noudattaa):

public static void main(String[] args) - luo pinon ja kutsuu suorita()-metodia

public static void suorita() - pääkäyttöliittymä, joka kysyy lisätäänkö, otetaanko vai lopetetaanko. Pyörii silmukassa, kunnes lopetetaan.

public static void lisaaPinoon() - kyselee luotavan sailion tiedot, luo sen ja lisää sen pinoon

public static void otaPinosta() - ottaa sailion pinosta ja tarjoaa käyttöliittymän sen käsittelyyn (silmukka, kunnes lopetuskäsky jolloin palataan suorita()-metodiin). Jos pinosta ei voi ottaa, tulostaa virheilmoituksen.



ċ
Matti Seise,
26.3.2017 klo 23.29
ċ
Matti Seise,
26.3.2017 klo 23.29
Comments