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.