1 Tehtävän kuvaus ja analysointi



Samankaltaiset tiedostot
Mikä yhteyssuhde on?

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

Listarakenne (ArrayList-luokka)

Rajapinta (interface)

Olio-ohjelmointi Javalla

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Tietokannat II -kurssin harjoitustyö

4. Luokan testaus ja käyttö olion kautta 4.1

YHTEYSSUHDE (assosiation)

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Metodien tekeminen Javalla

Luokan sisällä on lista

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki

Ohjelmoinnin jatkokurssi, kurssikoe

public static void main (String [] args)

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Luokat ja oliot. Ville Sundberg

Ohjelmointi 2 / 2010 Välikoe / 26.3

2. Olio-ohjelmoinista lyhyesti 2.1

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Harjoitustyö (TKO_2023)

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

8. Näppäimistöltä lukeminen 8.1

1. Olio-ohjelmointi 1.1

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

Javan perusteita. Janne Käki

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

7. Näytölle tulostaminen 7.1

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

14. Poikkeukset 14.1

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Java-kielen perusteet

14. Poikkeukset 14.1

Oliot viestivät metodeja kutsuen

Java-kielen perusteet

16. Javan omat luokat 16.1

Periytyminen (inheritance)

Taulukoiden käsittely Javalla

Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ).

Ohjelmistotekniikan menetelmät, koe

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Tietokannat II -kurssin harjoitustyö

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

Ohjelmointi 2, välikoe

Aalto Yliopisto T Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

4. Olio-ohjelmoinista lyhyesti 4.1

7. Oliot ja viitteet 7.1

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Pakkauksen kokoaminen

Ohjelmointityö 3. Mikko Laamanen

Sisältö. 22. Taulukot. Yleistä. Yleistä

1. Kun käyttäjä antaa nollan, niin ei tulosteta enää tuloa 2. Hyväksy käyttäjältä luku vain joltain tietyltä väliltä (esim tai )

1. Mitä tehdään ensiksi?

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

Yksikkötestaus. Kattava testaus. Moduulitestaus. Ohjelman testaus. yksikkotestaus/ Seija Lahtinen

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Ohjelmoinnin perusteet, kurssikoe

JUnit ja EasyMock (TilaustenKäsittely)

Java kahdessa tunnissa. Jyry Suvilehto

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Luokkakirjastot. esiintymämetodien käytöstä:

Ohjelmointi 2 / 2011 Välikoe / 25.3

17. Javan omat luokat 17.1

8. Näppäimistöltä lukeminen 8.1

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

9. Periytyminen Javassa 9.1

Javan GUI Scratchaajalle

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen

KOHDELUOKAN MÄÄRITTELY

Metodien tekeminen Javalla

Rinnakkaisohjelmointi, Syksy 2006

Taulukot. Jukka Harju, Jukka Juslin

Java-kielen perusteet

1. Omat operaatiot 1.1

9. Periytyminen Javassa 9.1

Lista luokan sisällä

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Sisältö. 2. Taulukot. Yleistä. Yleistä

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Pakkaukset ja määreet

UML ja luokkien väliset suhteet

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

TIETORAKENTEET JA ALGORITMIT

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Standardi- ja tietorakenneluokkia

Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.2

C# olio-ohjelmointi perusopas

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Vahva koostumussuhde (Composition)

Transkriptio:

Olio-ohjelmoinnin harjoitustyön dokumentti Jyri Lehtonen (72039) Taneli Tuovinen (67160) 1 Tehtävän kuvaus ja analysointi 1.1 Tehtävänanto Tee luokka, jolla mallinnetaan sarjaan kytkettyjä kondensaattoreita. Sarjaan voidaan kytkeä yksi tai useampi yksittäinen kondensaattori, jolloin saadaan yhdistetty kondensaattori. Yksittäisestä kondensaattorista tiedetään sen kapasitanssi, valmistaja ja valmistuspäivämäärä. Toteuta yhdistetylle kondensaattorille havainnointi- ja muutosoperaatioiden lisäksi operaatio, joka palauttaa yhdistetyn kondensaattorin kapasitanssin. Yhdistetyn kondensaattorin kapasitanssin käänteisarvo on sen yksittäisten kondensaattorien kapasitanssien käänteisarvojen summa. Esimerkiksi kahden sarjaan kytketyn kondensaattorin (C1, C2) kapasitanssi on 1/C = 1/C1 + 1/C2. 1.2 Tehtävänannon analysointi Tehtävänannossa määrätään luomaan ohjelma, jolla pystytään mallintamaan sarjaan kytkettyjä kondensaattoreita. Tähän sarjaan voidaan kytkeä 1 N yksittäinen kondensaattori, jonka lopputuloksena saadaan kyseinen yhdistetty kondensaattori. Yhdistetylle kondensaattorille on tehtävä funktio- ja proseduuri metodi. Lisäksi on tehtävä myös metodi, joka laskee yhteen yhdistettyjen kondensaattoreiden kapasitanssin. Rajaa sarjaan kytketyistä kondensaattoreista ei ole annettu tehtävänannossa, joten oletetaan että sarjaan voidaan kytkeä kaikki kondensaattorit joille näin halutaan tehdä. Kondensaattorin ominaisuuksiksi luetellaan sen kapasitanssi, valmistaja ja valmistuspäivämäärä. Ohjelman syötteistä ja tulosteista ei anneta tietoa tehtävänannossa. Oletetaan, että syötteeksi riittävät testaustilanteessa ohjelmoijan suoraan kooditasolla antamat syötteet ja tulosteeksi kuvaruudulle tulevat tulosteet. 1

2 Ratkaisuperiaate Varsinaista ongelmanratkaisua varten kirjoitetaan kaksi luokkaa: Kondensaattorit ja Yhdistys. Näiden lisäksi kirjoitetaan kolmas Testi-luokka kahden edellisen luokan testausta varten. Kondensaattorit-luokka mallintaa yhtä kondensaattoria. Tehtävänannon mukaiset ominaisuudet saadaan toteutettua valitsemalla instanssimuuttujiksi seuraavat ominaisuudet: sarjanumero (int), kapasitanssi (double), valmistaja (String) sekä valmistuspäivämäärä (Date) Alustaja saa kaikki nämä arvot argumenttina. Jokaista Kondensaattorit-luokan attribuuttia varten kirjoitetaan havainnoija. Ylimääräinen havainnoija metodi annaikä() laskee annetun kondensaattori olion iän sen päivämäärän perusteella. Muuttajametodit jätetään toteuttamatta, koska ratkaisun kannalta ne eivät ole olennaisia. Tällainen metodi voisi olla esimerkiksi asetasarjanumero(uusinumero), joka muuttaisi kondensaattorin sarjanumeron toiseksi. Yhdistys-luokan keskeisimmäksi tietosisällöksi valitaan kokoelma Kondesaattorit-tyyppisiä olioita (ArrayList<Kondensaattorit>). Lisäksi on vielä double tyyppinen muuttuja, johon tallennetaan yhdistettyjen kondensaattorien kapasitanssi. Muita attribuutteja ei ole. Yhdistykseen voi lisätä kondensaattoreita omalla metodillaan, ja kondensaattoreita voi poistaa sarjanumeron perusteella. Yhdistyksen tilaa voidaan havainnoida tiedustelemalla yhdistettävien kondensaattorien lukumäärää ja mitä kondensaattori olioita yhdistyksessä on sisällä. Testauksen hoitavassa luokassa Testaus on erillisinä metodeina Kondensaattorit-luokan testaus sekä Yhdistys-luokan testaus. Syötteet annetaan suoraan ohjelmakoodin sisällä eikä niitä pyydetä käyttäjältä. Tarvittavat testauksen tulosteet tulostetaan ruudulle system.out.print käskyjen avulla. Luokkien väliset asiakassuhteet on esitetty kuviossa 1. Kuvio 1: Systeemin asiakaskaavio 2

3 Ohjelman ja sen osien kuvaaminen 3.1 Luokka Kondensaattorit Luokka kuvaa yhtä ratkaisun kondensaattoria. Ilmentymämuuttujat Kondensaattorin sarjanumero private int sarjanumero; Kondensaattorin kapasitanssi private double kapasitanssi; Kondensaattorin valmistajan nimi private String valmistaja; Kondensaattorin valmistuspäivämäärä private Date päivämäärä = new Date(); Alustajat KONSTRUKTORI alustaa uuden Kondensaattorit olion, jolla on sarjanumero, kapasitanssi, valmistaja, valmistus päivämäärä. AE: (c!= null && d!= null) public Kondensaattorit(int a, double b, String c, Date d) { this.sarjanumero = a; this.kapasitanssi = b; this.valmistaja = c; this.päivämäärä = d; 3

Havainnoijat Palauttaa kondensaattorin sarjanumeron integerinä. public int annasarjanumero() { return sarjanumero; Palauttaa kondensaattorin kapasitanssin doublenä public double annakapasitanssi() { return kapasitanssi; Palauttaa kondensaattorin valmistajan Stringinä. public String annavalmistaja() { return valmistaja; Palauttaa kondensaattorin luontipäivän Date olion avulla. public Date annapäivämäärä() { return päivämäärä; Palauttaa kondensaattorin iän double lukuna. AE: (nyk!= null && päivämäärä!= null) public double annaikä() { Date nyk = new Date(); double sekunttiavuodessa = 31557600.0; // gettime() antaa päivämäärän millisekunneissa. //[annettu päivämäärä] - January 1, 1970, 00:00:00 GMT double ikä = (nyk.gettime() - päivämäärä.gettime()) / sekunttiavuodessa / 1000; // Laskee iän 2 desimaalin tarkkuudella. //(int) muuttaa luvun integeriksi ja (double) double luvuksi return ((int)ikä + ((double)(math.round((ikä - (int)ikä)100))/100)); 4

3.2 Luokka Yhdistetty Ilmentymämuuttujat Alustajat //Säiliö johon kondensaattoreita kerätään yhdistykseksi private ArrayList<Kondensaattorit> yhdistyssäiliö = new ArrayList(); //Yhdistettyjen kondensaattorien kapasitanssi. private double yhdistettykapasitanssi; / KONSTRUKTORI public Yhdistys() { Havainnoijat Näytä säiliön sisällön lukumäärä public int näytälukumäärä() { return yhdistyssäiliö.size(); Näytä mitkä oliot ovat säiliössä sisällä public void näytäsisältö() { for (int i=0; i<yhdistyssäiliö.size(); i++) { Kondensaattorit kond = yhdistyssäiliö.get(i); System.out.println("Sarjanumero: " +kond.annasarjanumero()); System.out.println("Kapasitanssi: " +kond.annakapasitanssi()); System.out.println("Valmistaja: " +kond.annavalmistaja()); System.out.println("Valmistettu: " +kond.annapäivämäärä()); Yhdistää eri kondensaattorien kapasitanssit ja laskee sarjaan kytketyn kondensaattorin (c1, c2) kapasitanssit kaavalla (1/c = 1/c1 + 1/c2). AE: yhdistyssäiliö!= null && kond!= null public void yhdistä() { double muuttuja=0.0; for (int i=0; i<yhdistyssäiliö.size(); i++) { Kondensaattorit kond = yhdistyssäiliö.get(i); muuttuja+= 1/(kond.annaKapasitanssi()); yhdistettykapasitanssi=muuttuja; System.out.println(yhdistettyKapasitanssi); 5

Etsitään yhdistyssäiliöstä Kondensaattori sen sarjanumeron avulla, ja palautetaan sen indeksi (esim. poistoa varten tai vaan tietoa onko sellainen säiliössä) AE: yhdistyssäiliö!= null & kond!= null public int etsisäiliöstä(int a) { int palautin=-1; int etsittävänsn=a; int tutkittavansn=0; for (int i=0; i<yhdistyssäiliö.size(); i++) { Kondensaattorit kond = yhdistyssäiliö.get(i); tutkittavansn=kond.annasarjanumero(); return palautin; if(tutkittavansn == a) { palautin=(yhdistyssäiliö.size() - (yhdistyssäiliö.size() -i));; Proseduurit Lisää säiliöön kondensaattorin a public void lisääkondensaattori(kondensaattorit a) { yhdistyssäiliö.add(a); Poistaa säiliöstä kondensaattorin sen sarjanumeron perusteella. AE: (yhdistyssäiliö!= null && h!= null) public void poistakondensaattori(int numero) { Iterator<Kondensaattorit> iter = yhdistyssäiliö.iterator(); while (iter.hasnext()) { Kondensaattorit h = iter.next(); if (numero == h.annasarjanumero()) { iter.remove(); Tyhjentää säiliön public void tyhjennäsäiliö() { yhdistyssäiliö.clear(); 6

3.3 Luokka Testi Testausluokka, jolla testataan Kondensaattorit ja Yhdistys toimintaa. Sisältää vain staattisia metodeja. Staattiset metodit Testaussysteemin pääohjelma. public static void main(string[] args) { testaakondensaattorit(); testaayhdistys(); Testataan luokan Kondensaattorit metodeja. public static void testaakondensaattorit() Testataan luokan Yhdistys metodeja. public static void testaayhdistys() 7

4 Testausjärjestelyt Testaus suoritetaan kaksivaiheisesti siten, että ensin testataan Kondensaattorit-luokan toiminta ja sitten sitä hyödyntävän Yhdistys-Luokan toiminta. 4.1 Kondensaattorit-luokan testaus Testaussuunnitelma 1. alustuksen testaus (luodaan kaksi kondensaattorioliota ja alustetaan ne) 2. havainnoijien testaus (kutsutaan jokaista havainnoijaa kerran ja tulostetaan niiden palauttamat arvot) Havainnot Testattaessa ruudulle tulostuu seuraavaa (vaiheet on merkitty kuvan viereen): Havaitaan testauksen etenevän suunnitelman mukaisesti. 4.2 Kondensaattorit-luokan testaus Testaussuunnitelma 1. luodaan kondensaattorit olioita avustamaan testausta (3 kpl) 2. Katsotaan mitkä oliot ovat säiliössä sisällä. 3. Metodin testaus (Etsitään säiliöstä kondensaattori sen sarjanumeron perusteella). 4. Metodin testaus(suoritetaan yhden poisto sarjanumeron avulla) 5. Metodin testaus(lasketaan kahden jäljellä olevan yhdistetyn kapasitanssi.) 6. Metodin testaus(tyhjennetään säiliö). Havainnot Testattaessa ruudulle tulostuu seuraavaa (vaiheet on merkitty kehystetyin tekstein eri kirjasimella): 8

9

5 Liitteet Tehtäväpaperi Tehtävän anto on määritelty kohdassa 1.1, tämän dokumentin palautus tapahtuu sähköisesti, jolloin aitoa paperia ei voida liittää mukaan. 10

Ohjelmalistaukset import java.util.date; public class Kondensaattorit{ / ILMENTYMÄMUUTUTJAT Kondensaattorin sarjanumero private int sarjanumero; Kondensaattorin kapasitanssi private double kapasitanssi; Kondensaattorin valmistajan nimi private String valmistaja; Kondensaattorin valmistuspäivämäärä private Date päivämäärä = new Date(); KONSTRUKTORI alustaa uuden Kondensaattorit olion, jolla on sarjanumero, kapasitanssi, valmistaja, valmistus päivämäärä. AE: (c!= null && d!= null) public Kondensaattorit(int a, double b, String c, Date d) { this.sarjanumero = a; this.kapasitanssi = b; this.valmistaja = c; this.päivämäärä = d; 11

/ HAVAINNOIJAT Palauttaa kondensaattorin sarjanumeron integerinä. public int annasarjanumero() { return sarjanumero; Palauttaa kondensaattorin kapasitanssin doublenä public double annakapasitanssi() { return kapasitanssi; Palauttaa kondensaattorin valmistajan Stringinä. public String annavalmistaja() { return valmistaja; Palauttaa kondensaattorin luontipäivän Date olion avulla. public Date annapäivämäärä() { return päivämäärä; Palauttaa kondensaattorin iän double lukuna. AE: (nyk!= null && päivämäärä!= null) public double annaikä() { Date nyk = new Date(); double sekunttiavuodessa = 31557600.0; // gettime() antaa päivämäärän millisekunneissa. //[annettu päivämäärä] - January 1, 1970, 00:00:00 GMT double ikä = (nyk.gettime() - päivämäärä.gettime()) / sekunttiavuodessa / 1000; // Laskee iän 2 decimaalin tarkkuudella. //(int) muuttaa luvun integeriksi ja (double) double luvuksi return ((int)ikä + ((double)(math.round((ikä - (int)ikä)100))/100)); 12

import java.util.; public class Yhdistys { //ILMENTYMÄMUUTTUJAT / Säiliö johon kondensaattoreita kerätään yhdistykseksi private ArrayList<Kondensaattorit> yhdistyssäiliö = new ArrayList(); //Yhdistettyjen kondensaattorien kapasitanssi. private double yhdistettykapasitanssi; / KONSTRUKTORI public Yhdistys() { / PROSEDUURIT Lisää säiliöön kondensaattorin a public void lisääkondensaattori(kondensaattorit a) { yhdistyssäiliö.add(a); Poistaa säiliöstä kondensaattorin sen sarjanumeron perusteella. AE: (yhdistyssäiliö!= null && h!= null) public void poistakondensaattori(int numero) { Iterator<Kondensaattorit> iter = yhdistyssäiliö.iterator(); while (iter.hasnext()) { Kondensaattorit h = iter.next(); if (numero == h.annasarjanumero()) { iter.remove(); Tyhjentää säiliön public void tyhjennäsäiliö() { yhdistyssäiliö.clear(); 13

Etsitään yhdistyssäiliöstä Kondensaattori sen sarjanumeron avulla, ja palautetaan sen indeksi (esim. poistoa varten tai vaan tietoa onko sellainen säiliössä) AE: (yhdistyssäiliö!= null & kond!= null) public int etsisäiliöstä(int a) { int palautin=-1; int etsittävänsn=a; int tutkittavansn=0; for (int i=0; i<yhdistyssäiliö.size(); i++) { Kondensaattorit kond = yhdistyssäiliö.get(i); tutkittavansn=kond.annasarjanumero(); if(tutkittavansn == a) { palautin=(yhdistyssäiliö.size() - (yhdistyssäiliö.size() -i));; return palautin; / HAVAINNOIJAT Näytä säiliön sisällön lukumäärä public int näytälukumäärä() { return yhdistyssäiliö.size(); Näytä mitkä oliot ovat säiliössä sisällä AE: (yhdistyssäiliö!= null && kond!= null) public void näytäsisältö() { for (int i=0; i<yhdistyssäiliö.size(); i++) { Kondensaattorit kond = yhdistyssäiliö.get(i); System.out.println("Sarjanumero: "+kond.annasarjanumero()); System.out.println("Kapasitanssi: "+kond.annakapasitanssi()); System.out.println("Valmistaja: "+kond.annavalmistaja()); System.out.println("Valmistettu: "+kond.annapäivämäärä()); 14

Yhdistää eri kondensaattorien kapasitanssit ja laskee sarjaan kytketyn kondensaattorin (c1, c2) kapasitanssit kaavalla (1/c = 1/c1 + 1/c2). AE: yhdistyssäiliö!= null && kond!= null public void yhdistä() { double muuttuja=0.0; for (int i=0; i<yhdistyssäiliö.size(); i++) { Kondensaattorit kond = yhdistyssäiliö.get(i); muuttuja+= 1/(kond.annaKapasitanssi()); yhdistettykapasitanssi=muuttuja; System.out.println(yhdistettyKapasitanssi); 15

import java.util.date; public class Testi { Testaussysteemin pääohjelma. public static void main(string[] args) { testaakondensaattorit(); testaayhdistys(); Testataan luokan Kondensaattorit metodeja. public static void testaakondensaattorit() { // Luodaan kolme Kondensaattori oliota, ja annetaan niille parametrit. Kondensaattorit esimerkki = new Kondensaattorit(7601, 2.1, "MicroChip Oy", new Date(2005-1900, 0, 10)); Kondensaattorit esimerkki2 = new Kondensaattorit(8600, 1.1, "MicroChipJr Oy", new Date(2006-1900, 0, 10)); // Testataan kondensaattorio olion havainnoijat. System.out.println(" Kondensaattorit Luokka "); System.out.println("Sarjanumero: " + esimerkki.annasarjanumero()); System.out.println("Kapasitanssi: " + esimerkki.annakapasitanssi()); System.out.println("Valmistaja: " + esimerkki.annavalmistaja()); System.out.println("Valmistettu: " + esimerkki.annapäivämäärä()); System.out.println("Ikä: " + esimerkki.annaikä() + " vuotta"); vuotta"); System.out.println("Sarjanumero: " + esimerkki2.annasarjanumero()); System.out.println("Kapasitanssi: " + esimerkki2.annakapasitanssi()); System.out.println("Valmistaja: " + esimerkki2.annavalmistaja()); System.out.println("Valmistettu: " + esimerkki2.annapäivämäärä()); System.out.println("Ikä: " + esimerkki2.annaikä() + " Testataan luokan Yhdistys metodeja. public static void testaayhdistys() { //Luodaan kolme Kondensaattori oliota, ja annetaan niille parametrit. Kondensaattorit kondi1 = new Kondensaattorit(7601, 1.25, "MicroChip Oy", new Date(2005-1900, 0, 10)); Kondensaattorit kondi2 = new Kondensaattorit(9802, 2.50, "Chips United", new Date(2006-1900, 1, 11)); Kondensaattorit kondi3 = new Kondensaattorit(10203, 3.75, "MicroChip Oy", new Date(2007-1900, 2, 13)); 16

System.out.println(" Yhdistys Luokka "); Yhdistys yhdistä = new Yhdistys(); yhdistä.lisääkondensaattori(kondi1); yhdistä.lisääkondensaattori(kondi2); yhdistä.lisääkondensaattori(kondi3); System.out.println("Kondensaattoreiden lukumäärä säiliössä: " + yhdistä.näytälukumäärä()); //Näytä mitkä kondensaattorit ovat säiliössä: System.out.println("Näytä säiliön olioiden tiedot: "); yhdistä.näytäsisältö(); //Etsi sarjanumeron perusteella, -1 tarkoittaa ei löydy. System.out.println("Anna sarjanumeron 7607 indeksi: "+yhdistä.etsisäiliöstä(7601)); System.out.println("Anna sarjanumeron 9802 indeksi: "+yhdistä.etsisäiliöstä(9802)); System.out.println("Anna sarjanumeron 10203 indeksi: "+yhdistä.etsisäiliöstä(10203)); System.out.println("Anna sarjanumeron 1313 indeksi: "+yhdistä.etsisäiliöstä(1313)); yhdistä.poistakondensaattori(9802); System.out.println("Poistetaan kond2: "); yhdistä.näytäsisältö(); System.out.println("Kondensaattoreiden lukumäärä säiliössä: "+yhdistä.näytälukumäärä()); //Yhdistetään säiliössä olevat kapasitanssi. System.out.print("Yhdistä säiliön kondensaattorien (2kpl) kapasitanssit: \n"); yhdistä.yhdistä(); /Tyhjennä säiliö yhdistä.tyhjennäsäiliö(); System.out.println("Tyhjennyksen jälkeen: "+yhdistä.näytälukumäärä() +" kpl kondensaattoreita."); Ohjelman käyttöohje Ohjelma käännetään komentamalla javac Testi.java ja ajetaan komentamalla java Testi. 17