Skip to content
Snippets Groups Projects
Commit e64ef85b authored by Veritorakka's avatar Veritorakka
Browse files

Tein tehtävän 1 kohdan B

parent 0df9da49
Branches
No related tags found
No related merge requests found
package fi.utu.tech.ooj.exercise2;
/**
* Tuote-luokka kuvaa Oy Jekku Ab:n myymää tuotetta.
* Luokka sisältää tuotteen nimen, normaalihinnan ja ALV-prosentin.
*/
public class Tuote {
private String nimi;
private double normaalihinta;
private double alvProsentti;
/**
* Konstruktori luo uuden Tuote-olion.
*
* @param nimi Tuotteen nimi.
* @param normaalihinta Tuotteen normaalihinta.
* @param alvProsentti Tuotteen ALV-prosentti.
*/
public Tuote(String nimi, double normaalihinta, double alvProsentti) {
this.nimi = nimi;
this.normaalihinta = normaalihinta;
this.alvProsentti = alvProsentti;
}
/**
* Metodi palauttaa tuotteen nimen.
*
* @return Tuotteen nimi.
*/
public String getNimi() {
return nimi;
}
/**
* Asettaa tuotteen nimen.
* Nimi ei saa olla null eikä tyhjä merkkijono.
*
* @param nimi Tuotteen nimi.
* @throws IllegalArgumentException jos nimi on null tai tyhjä merkkijono.
*/
public void setNimi(String nimi) {
if (nimi == null || nimi.isEmpty()) {
throw new IllegalArgumentException("Tuotteen nimi ei voi olla null tai tyhjä merkkijono.");
}
this.nimi = nimi;
}
/**
* Metodi palauttaa tuotteen normaalihinnan.
*
* @return Tuotteen normaalihinta.
*/
public double getNormaalihinta() {
return normaalihinta;
}
/**
* Asettaa tuotteen normaalihinnan.
* Normaalihinta ei saa olla negatiivinen.
*
* @param normaalihinta Tuotteen normaalihinta.
* @throws IllegalArgumentException jos normaalihinta on negatiivinen.
*/
public void setNormaalihinta(double normaalihinta) {
if (normaalihinta < 0) {
throw new IllegalArgumentException("Tuotteen normaalihinta ei voi olla negatiivinen.");
}
this.normaalihinta = normaalihinta;
}
/**
* Metodi palauttaa tuotteen ALV-prosentin.
*
* @return Tuotteen ALV-prosentti.
*/
public double getAlvProsentti() {
return alvProsentti;
}
/**
* Asettaa tuotteen ALV-prosentin.
* ALV-prosentti ei saa olla negatiivinen.
*
* @param alvProsentti Tuotteen ALV-prosentti.
* @throws IllegalArgumentException jos alvProsentti on negatiivinen.
*/
public void setAlvProsentti(double alvProsentti) {
if (alvProsentti < 0) {
throw new IllegalArgumentException("Tuotteen ALV-prosentti ei voi olla negatiivinen.");
}
this.alvProsentti = alvProsentti;
}
/**
* Metodi palauttaa tuotteen hinnan, johon on lisätty arvonlisäveron mukainen määrä.
*
* @return Tuotteen hinta arvonlisäveron kanssa.
*/
public double getHintaAlv() {
return normaalihinta * (1 + alvProsentti / 100);
}
}
/*
* Perustelut
* Tämä luokka on toteutettu pitämään yllä yksittäistä tuotetta ja sen tietoja, kuten nimeä, normaalihintaa ja ALV-prosenttia.
* Setter-metodeilla varmistetaan, että asetetut arvot ovat kelvollisia ja getter-metodeilla voidaan palauttaa tallennetut tiedot.
* Konstruktori luo uuden Tuote-olion ja asettaa sille alkuarvot annettujen parametrien mukaan.
* Tämän toteutuksen ansiosta Tuote-luokka on helppo käyttää ja ylläpitää, ja siitä on hyötyä esimerkiksi kaupan kassajärjestelmässä, jossa tarvitaan tietoa yksittäisestä tuotteesta ja sen hinnoista.
*/
\ No newline at end of file
package fi.utu.tech.ooj.exercise2;
import java.util.ArrayList;
public class Tuoteluettelo {
private ArrayList<Tuote> tuotteet;
/**
* Konstruktori luo uuden tyhjän tuoteluettelon.
*/
public Tuoteluettelo() {
this.tuotteet = new ArrayList<Tuote>();
}
/**
* Metodi lisää tuotteen tuoteluetteloon.
*
* @param tuote Lisättävä tuote.
*/
public void lisaaTuote(Tuote tuote) {
this.tuotteet.add(tuote);
}
/**
* Metodi poistaa tuotteen tuoteluettelosta.
*
* @param tuote Poistettava tuote.
*/
public void poistaTuote(Tuote tuote) {
this.tuotteet.remove(tuote);
}
/**
* Metodi palauttaa tuoteluettelon tuotteiden lukumäärän.
*
* @return Tuotteiden lukumäärä.
*/
public int getTuotteidenLukumaara() {
return this.tuotteet.size();
}
/**
* Metodi palauttaa tuoteluettelon tuotteet.
*
* @return Tuoteluettelon tuotteet.
*/
public ArrayList<Tuote> getTuotteet() {
return this.tuotteet;
}
/**
* Metodi palauttaa tuoteluettelon tuotteiden yhteishinnan.
*
* @return Tuotteiden yhteishinta.
*/
public double getYhteishinta() {
double yhteishinta = 0.0;
for (Tuote tuote : this.tuotteet) {
yhteishinta += tuote.getHintaAlv();
}
return yhteishinta;
}
/**
* Etsii tuotteen Tuoteluettelosta nimen perusteella.
*
* @param nimi Etsittävän tuotteen nimi.
* @return Löydetty Tuote-olio, tai null jos tuotetta ei löydy.
*/
public Tuote haeTuote(String nimi) {
for (Tuote tuote : tuotteet) {
if (tuote.getNimi().equals(nimi)) {
return tuote;
}
}
return null;
}
}
/*
* Perustelu
* Luokan Tuoteluettelo tarkoitus on hallita joukkoa Tuote-olioita eli tuotteiden tietoja, kuten nimeä, hintaa ja varastosaldoa. Luokka tarjoaa metodit tuotteiden lisäämiseen, poistamiseen ja hakemiseen sekä laskemaan tuotteiden yhteishinnan.
* Tämä tekee Tuoteluettelosta kätevän työkalun esimerkiksi kaupan tuotevalikoiman hallinnassa.
* Perusteena ArrayListin käytölle Tuoteluettelo-luokassa on sen joustavuus.
* ArrayList on dynaaminen tietorakenne, joka mahdollistaa tuoteluettelon sisällön helpomman muokkaamisen, kuten tuotteiden lisäämisen ja poistamisen.
* ArrayList mahdollistaa myös helpomman iteroinnin ja käsittelemisen kuin perinteinen taulukko, joka vaatii etukäteen tiedon taulukon koon määrittelemisestä.
*
*/
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment