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

Koko: px
Aloita esitys sivulta:

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

Transkriptio

1 1(37) PERIYTYMINEN (inheritance) YLILUOKKA (superclass) ALILUOKKA (subclass) A) on käytännöllinen ohjelmointitekniikka = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys) B) on käsitteiden mallittamista = mallinnetaan yleinen erityinen suhdetta

2 2(37) A) Laajennetaan aikaisemmin tehtyä luokkaa Esim. Olen aikaisemmin tehnyt Koira-luokan, jonka attribuutteina ovat koiran nimi ja koiran syntymävuosi. Nyt tarvitsen Koira-luokan, joka sisältää nimen ja syntymävuoden lisäksi koiran rodun. En halua koodata Koira-luokkaan uudestaan vaan periytän Koira-luokasta RotuKoira-luokan, jonka attribuuttina on Koiran attribuuttien lisäksi Koiran rotu Koira -nimi : String -syntymavuosi : int RotuKoira -rotu : String Eli en voi muuttaa aikaisemmin tehtyä luokkaa, koska se on tuotannossa ja aikaisemmin tehtyjen ohjelmien tulisi toimia Periytän vanhan luokan ja lisään uuteen luokkaan uusia tarvitsemiani ominaisuuksia ja metodeja

3 3(37) B) Mallinnetaan yleinen erityinen suhdetta Esim. Tehtäväni on tehdä Henkilö-, Työntekijä- ja Osakasluokat. Henkilön ominaisuudet ovat: henkilön etunimi, sukunimi, henkilön sosiaaliturvatunnus (sotu). Työntekijän ominaisuudet ovat työntekijän etunimi, sukunimi, työntekijän sosiaaliturvatunnus (sotu), osaston nimi, jossa hän työskentelee, nimike. Osakkaan ominaisuudet ovat osakkaan etunimi, sukunimi, osakkaan sosiaaliturvatunnus (sotu), osakkaaksi tulovuosi. Huomaan että kaikilla em.luokilla on samoja ominaisuuksia, siis teen yliluokan, Henkilo, johon sijoitan ne ominaisuudet jotka ovat samoja. Periytän muut luokat Henkiloluokasta.

4 4(37) Henkilo -etunimi : String -sukunimi : String -sotu : String Tyontekija -osasto : String -nimike : String Osakas -vuosi : int Eli en halua koodata samaa asiaa useaan kertaan etsin luokka-vaihtoehdoista yhteisiä ominaisuuksia, ja jos ne löydän teen yliluokan, jolla on nämä ominaisuudet muut luokat periytän yliluokasta

5 5(37) Miten minä toteutan luokan periytymisen? aliluokan olio perii yliluokalta kaikki tiedot (attribuutit ja metodit) aliluokan oliolla on yliluokan ilmentymä, johon aliluokan olion metodeissa viitataan sanalla super aliluokka periytetään extends määreellä seuraavasti: public class aliluokka extends yliluokka Esim. public class Koira private String nimi; private int syntvuosi; public class RotuKoira extends Koira private String rotu; RotuKoira koira = new RotuKoira(); Yliluokan ilmentymä koira: rotu: nimi; syntvuosi:

6 6(37) Muodostimet ja periytyminen aliluokan olion yliluokkailmentymään viitataan määreellä super Mitä tapahtuu, kun aliluokan olio luodaan? 1) kääntäjä valitsee muodostimista sen, joka vastaa kutsua Esim. RotuKoira koira=new RotuKoira( Wilma,2004, Irlannin vesispanieli ); kääntäjä valitsee aliluokan parametrillisen muodostimen RotuKoira(String str1,int kluku,string str2) 2) aliluokan muodostimessa yliluokan muodostimen kutsu suoritetaan ensin jos aliluokan muodostimessa ei ole yliluokan muodostimen kutsua kutsutaan automaattisesti yliluokan oletusmuodostinta (super( );) jos aliluokan muodostimen ensimmäisenä lauseena on yliluokan muodostimen kutsu (super ( )), kutsutaan sitä 2) suoritetaan muut muodostimen lauseet.

7 7(37) Esim. public class Koira private String nimi; private int syntvuosi; public Koira()//oletusmuodostin nimi = null; syntvuosi = 0; public Koira (Koira koira) // kopiointimuodostin nimi = koira.nimi; syntvuosi = koira.syntvuosi; public Koira (String nimi, int vuosi) //parametrillinen muodostin this.nimi = nimi; if (vuosi >0) syntvuosi = vuosi; else syntvuosi = 0; public class RotuKoira extends Koira private String rotu; public RotuKoira () rotu = null; public RotuKoira (String nimi, int syntvuosi, String rotu) super (nimi, syntvuosi); this.rotu = rotu; public RotuKoira (RotuKoira koira) super ((Koira) koira); rotu = koira.rotu; Automaattinen yliluokan oletusmuodostimen kutsu ( super(); ) Yliluokan parametrillisen muodostimen (public Koira(String nimi, int vuosi)) kutsu Yliluokan kopiointimuodostimen (public Koira (Koira koira)) kutsu

8 8(37) Metodin korvaaminen (overriding) metodin korvaaminen tarkoittaa perityn metodin korvaamista uudella samantyyppisellä, samannimisellä ja samaparametrisella metodilla on suositeltava tapa, koska voidaan käyttää monimuotoisuutta (polymorfism, myöhemmin) jokainen Javan yliluokka (luokka, jota käyttäjä ei periytä) periytetään automaattisesti Object-luokasta Mitä kääntäjä tekee, kun se etsii kutsuttua metodia? Kääntäjä hakee metodia MUUTTUJAN luokasta (esim. Koira koira;... koira.metodi(); ) Jos metodi löytyy, sitä kutsutaan Jos metodia ei löydy, kääntäjä hakee metodia MUUTTUJAN LUOKAN YLILUOKASTA Jos metodia ei vieläkään löydy,kääntäjä hakee metodia em. luokan yliluokasta, jne. Jos metodia ei ole löytynyt mistään olion luokkahierakkiasta eikä sitä löydy Objectistakaan, tapahtuu VIRHE

9 9(37) Esim. Tutkitaan tilanne, jossa Koira-luokkaan ei ole toteutettu tostring-metodia, ja sitä kutsutaan ohjelmassa (Objectluokassa on tostring-metodi) public class Koira private String nimi; private int syntvuosi; public Koira() nimi = null; syntvuosi = 0; public Koira (String nimi, int vuosi) this.nimi = nimi; if (vuosi >0) syntvuosi = vuosi; else syntvuosi = 0; public class KoiraTesti public void aja() Koira koira = new Koira ("Raiku", 1998); System.out.println(koira.toString()); public Koira (Koira koira) nimi = koira.nimi; syntvuosi = koira.syntvuosi; public static void main (String [] args) KoiraTesti testi = new KoiraTesti(); tostring-metodia ei löydy Koira-luokasta, etsitään sitä Koiraluokan yliluokasta eli Object-luokasta, BINGO, kutsutaan sitä testi.aja(); KoiraTesti ohjelma tulostaa:

10 10(37) Edellinen tostring-metodin tulostus ei kelpaa meille, joten korvaamme Object-luokan metodin Koira-luokan tostringmetodilla public class Koira private String nimi; private int syntvuosi; public Koira() nimi = null; syntvuosi = 0; public Koira (String nimi, int vuosi) this.nimi = nimi; if (vuosi >0) syntvuosi = vuosi; else syntvuosi = 0; public Koira (Koira koira) nimi = koira.nimi; syntvuosi = koira.syntvuosi; public String tostring () String paluu; if (nimi!= null) paluu = "nimi: " + nimi; else paluu = "nimi: ei ole"; paluu = paluu +" syntymavuosi: " + syntvuosi; return paluu;

11 11(37) public class KoiraTesti Etsitään tostringmetodia RotuKoiraluokasta, ei löydy, joten etsitään metodia RotuKoiran yliluokasta eli Koira-luokasta. Bingo, löytyi public void aja() Koira koira = new Koira ("Raiku", 1998); System.out.println(koira.toString()); RotuKoira koira2 = new RotuKoira("Wilma", 2004, "Irlannin vesispanieli"); System.out.println(koira2.toString()); public static void main (String [] args) KoiraTesti testi = new KoiraTesti(); testi.aja(); KoiraTesti sovellus tulostaa: nimi: Raiku syntymavuosi: 1998 nimi: Wilma syntymavuosi: 2004

12 12(37) Edelleen RotuKoiran rotu ei tulostu, joten korvaamme RotuKoiraluokassa Koira luokan tostring-metodin omalla tostringmetodilla public class RotuKoira extends Koira private String rotu; public RotuKoira () rotu = null; public RotuKoira (String nimi, int syntvuosi, String rotu) super (nimi, syntvuosi); this.rotu = rotu; public RotuKoira (RotuKoira koira) super ((Koira) koira); rotu = koira.rotu; public String tostring() String paluu; paluu = super.tostring(); Koira-ilmentymän tostring-metodin kutsu if (rotu!= null) paluu = paluu + " rotu: " +rotu; else paluu = paluu + " rotu: harvinainen, ei tiedossa toistaiseksi"; return paluu;

13 13(37) public class KoiraTesti public void aja() Koira koira = new Koira ("Raiku", 1998); System.out.println(koira.toString()); RotuKoira koira2 = new RotuKoira("Wilma", 2004, "Irlannin vesispanieli"); System.out.println(koira2.toString()); public static void main (String [] args) KoiraTesti testi = new KoiraTesti(); testi.aja(); tulostuu: nimi: Raiku syntymavuosi: 1998 nimi: Wilma syntymavuosi: 2004 rotu: Irlannin vesispanieli

14 14(37) Koira -nimi : String -syntymavuosi : int +tostring() : String RotuKoira -rotu : String +tostring() : String Yliluoluokan ilmentymän metodia kutsutaan aliluokan ilmentymän metodista seuraavasti: super.metodinnimi() super-määrettä ei tarvita, mikäli ristiriitaa ei synny, eli kutsuttavaa yliluokan metodia ei ole korvattu aliluokassa

15 15(37) Näkyvyyssäännöt kun yliluokan attribuutti / metodi näkyvyys on: 1) private aliluokan olio EI näe ko. attribuuttia /metodia 2) protected aliluokan olio näkee ko. attribuutin / metodin ja voi siihen suoraan viitata 3) public aliluokan olio näkee ko. attribuutin / metodin ja voi siihen suoraan viitata 4) ei mitään kaikki yliluokan kanssa samassa paketissa olevat näkevät ko. attribuutin / metodin yliluokan / luokan attribuuttien näkyvyysmääre kannattaa olla private tietyn attribuutin käsittely on siellä, missä kuuluu ylläpidettävyys

16 16(37) instanceof-operaattori metodin avulla voidaan tutkia, minkä luokan olioon muuttuja viittaa syntaksi: muuttuja instanceof Luokka metodi palauttaa arvon true, jos muuttuja viittaa olioon, jonka tyyppi on Luokka, muuten metodi palauttaa arvonaan false

17 17(37) Esim. Object koira = new Koira ("Raiku", 1998); koira: Koira: nimi: Raiku syntvuosi:1998 Object koira2 = new RotuKoira("Wilma", 2004, "Irlannin vesispanieli"); koira2: RotuKoira: Rotu: Irlannin vesipanieli Koira: nimi: Wilma syntvuosi:2004 if (koira instanceof Koira) System.out.println( Kyseessa on koira ); tulostuu: Kyseessä on koira if (koira2 instanceof RotuKoira) System.out.println( Kyseessa on rotukoira ); tulostuu: Kyseessä on rotukoira

18 18(37) Esim. public class KoiraTesti2 public void aja() Object koira = new Koira ("Raiku", 1998); tulosta(koira); Object koira2 = new RotuKoira("Wilma", 2004, "Irlannin vesispanieli"); tulosta(koira2); private void tulosta( Object koira) RotuKoira apu; Koira apu1; if (koira instanceof RotuKoira) System.out.println ("Koiran tiedot: "); apu =(RotuKoira) koira; tyyppimuunnos System.out.println (apu.getnimi()+ " on syntynyt vuonna " + apu.getsyntvuosi()); System.out.println ("ja koiran rotu on " + apu.getrotu()); else if (koira instanceof Koira) System.out.println ("Koiran tiedot: "); apu1 = (Koira) koira; tyyppimuunnos System.out.println(apu1.getNimi()+ " on syntynyt vuonna " + apu1.getsyntvuosi()); public static void main (String [] args) KoiraTesti2 testi = new KoiraTesti2(); testi.aja();

19 19(37) ABSTRAKTI-LUOKKA on luokka, johon ei voi luoda olioita, mutta joka voidaan periyttää on luokka johon kerätään luokkien yhteisiä tietoja UML-kaaviossa abstraktin luokan nimi kirjoitetaan kursiivilla Action +excecute() : String DeleteAction EditAction InsertAction ListAction UpdateAction +excecute() +excecute() +excecute() +excecute() +excecute() määritellään abstract-määreellä public abstract class Action sen aliluokille voidaan luoda olioita, mikäli ne eivät ole abtrakteja luokkia

20 20(37) Kun luokka määritellään abstraktiksi: sille voidaan määritellä abstrakteja metodeja abstrakti metodi: määritellään abstract-määreellä eli näkyvyys abstract metodi ( parametrit ); esim. public abstract String excecute (HttpServletRequest req,httpservletresponse res) throws IOException, ServletException, SQLException; abstrakti metodi on korvattava luokan aliluokissa yliluokka vaatii, että sen aliluokilla on kyseinen metodi (ns. metodien nimeämisstandardi) jos yliluokassa määriteltyä abstraktia metodia ei korvata aliluokassa kääntäjä haluaa, että aliluokasta tehdään abstrakti luokka abstraktia metodia ei toteuteta abstraktissa luokassa Kun luokkaan lisätään yksikin abstrakti-metodi: luokka on määriteltävä abstraktiksi

21 21(37) MONIMUOTOISUUS (polymorfism) on eri olioiden kykyä vastata samaan viestiin eri tuloksella kun olion viittaaman muuttujan luokka on eri kuin olion luokka eli Action actionolio = new InsertAction(); kun olion metodia kutsutaan, ajonaikana tapahtuu ns. dynaaminen sidonta eli metodia haetaan ensin olion luokasta ja jos metodia ei löydy, olion yliluokasta jne Kääntäjä hakee ohjelmaa käännettäessä metodia muuttujan luokasta eli Action-luokasta, joka löytyy sieltä

22 22(37) esim. Action actionolio = new InsertAction(); actionolio.excecute(req, res) Ohjelman ajoaikana excecute-metodia haetaan olion luokasta eli InsertAction-luokasta, jos metodi on toteutettu siellä, se valitaan, mutta jos ei, metodia haetaan InsertAction-luokan yliluokasta eli Action-luokasta. Jos metodi löytyy, se suoritetaan, mutta jos ei, metodia haetaan Object-luokasta Viittausmuuttujat ja periytyminen Periytymisen idea mahdollistaa, että olion viittaavan muuttujan tyyppi voi olla eri kuin olion tyyppi Olioon viittaavan muuttujan tyyppi voi olla luokkahierarkkiassa olion yläluokan tyyppi tai olion luokan tyyppi, mutta ei olion alaluokan tyyppi eikä ns. sisar-luokan tyyppi

23 23(37) Object A_luokka B_luokka C_luokka D-luokka E-luokka E-luokan olioon viittava muuttujan tyyppi voi olla: E-luokka, C-luokka, A-luokka tai Object-luokka

24 24(37) Dynaaminen sidonta Käännösaikana metodin kutsun yhteydessä kääntäjä tutkii muuttujan tyypin ja tarkastaa, että muuttujan luokalla tai sen yliluokalla on kutsuttu metodi. Dynaaminen sidonta tapahtuu ohjelma suoritusaikana olion metodin kutsussa, kun olion tyyppi on eri kuin olioon viittaavan muuttujan tyyppi Kun dynaaminen sidonta tapahtuu, etsitään kutsuttua metodia ensin olion luokasta, jos ei löydy tämän yliluokasta jne.

25 25(37) Mitä sitten kun aliluokalla on metodi, jota yliluokalla ei ole? Koira -nimi : String -syntymavuosi : int +Koira() +Koira(in nimi : String, in vuosi : int) +Koira(in koira : Koira) +setnimi(in nimi : String) +setsyntymavuosi(in vuosi : int) +getnimi() : String +getsyntymavuosi() : int +tostring() : String RotuKoira -rotu : String +RotuKoira() +RotuKoira(in nimi : String, in vuosi : int, in rotu : String) +RotuKoira(in koira : RotuKoira) +tostring() : String +setrotu(in rotu) +setrotu(string rotu) +getrotu() : String +getrotu():string public class KoiraSovellus private ArrayList <Koira> lista; private Scanner input; public KoiraSovellus() lista = new ArrayList<Koira>(); input = new Scanner(System.in); public void aja()...

26 26(37) // lisätään parametrina oleva Koira-olio tai RotuKoira-olio // listaan private void lisaakoira(koira koira) String nimi,rotu; RotuKoira apu=null; int vuosi; do System.out.println("Anna koiran nimi:"); nimi = input.nextline(); koira.setnimi(nimi); while (koira.getnimi()==null); do System.out.println("Anna koiran syntymävuosi:"); vuosi = input.nextint(); input.nextline(); koira.setsyntymavuosi(vuosi); while (koira.getsyntymavuosi()!= vuosi); // koiran rotu pyydetään ainoastaan, jos parametri koira viittaa Rotukoira-olioon if (koira instanceof RotuKoira) do System.out.println("Anna koira rotu"); rotu = input.nextline(); apu apu = = (RotuKoira)koira; apu.setrotu(rotu); //tyyppimuunnos while (apu.getrotu()==null); lista.add(koira); // lisää Koira-/RotuKoira-olio listaan

27 27(37) tyyppimuunnos private void tulosta() for (int i=0;i<lista.size();i++) // tutki ensin onko käsiteltävä olio aliluokan olio if (lista.get(i) instanceof RotuKoira) RotuKoira apu = (RotuKoira)lista.get(i); System.out.println("Koiran nimi on "+ apu.getnimi() + ", rotu on " + apu.getrotu() + " ja on syntynyt vuonna " + lista.get(i).getsyntymavuosi()); else // tutki sitten vasta onko käsiteltävä olio yliluokan olio if (lista.get(i)instanceof Koira) System.out.println("Koiran nimi on " + lista.get(i).getnimi() + " ja on syntynyt vuonna " + lista.get(i).getsyntymavuosi()); public static void main( String[] args)..

28 28(37) TYYPPIMUUNNOS LUOKKAHIERARKIASSA aliluokan olio voidaan tyyppimuuttaa yliluokan olioksi ( Yliluokka ) aliluokanolio YHTEENVETO MONIMUOTOISUUDESTA Aliluokan olioon voidaan viitata yliluokan muuttujan avulla Aliluokan metodien kutsuminen onnistuu yliluokan tyyppisen viittausmuuttujan avulla, kunhan kutsuttava metodi on määritelty yliluokassa Aliluokan metodien kutsuminen ei onnistu yliluokan tyyppisen viittausmuuttujan avulla, jos kutsuttava metodi ei ole määritelty yliluokassa ainoastaan aliluokassa. Ratkaisu on apu-muuttuja ja tyyppimuunnos: System.out.println("Anna koira rotu"); rotu = input.nextline(); RotuKoira RotuKoira apu apu = (RotuKoira)koira; (RotuKoira)koira; // tyyppimuunnos apu.setrotu(rotu); Yliluokan olioon ei voi viitata aliluokan tyyppisen viittausmuuttujan avulla Aliluokan olioita voidaan käsitellä kuten yliluokan olioita.

29 29(37) Rajapinta (interface) rajapintojen avulla määrätään, mitä metodeja luokan tulee sisältää, jos tämä ns. toteuttaa rajapinnan nyt ei enää puhuta periytymisestä vaan rajapinnan toteuttamisesta rajapinta sisältää vain abstrakteja metodeja rajapinta ei sisällä attribuutteja luokat toteuttavat rajapinnan implements määreellä Esim. public class Tietokone implements Taltioitava UML-kaaviossa rajapinnan nimen edessä <<interface>> merkintä «interface» Taltioitava Tietokone Rajapinnan toteuttaminen: nuolityyppi kuten periytymisessä, mutta katkoviiva

30 30(37) Rajapinta määritellään seuraavasti public interface Taltioitava Esim. jossa rajapintaa on määritelty vakioita public interface VAKIOT public static final int YKSI = 1; public static final int KAKSI = 2; public static final int KOLME = 3;

31 31(37) KERTAUS Yhteyssuhde: A * 1 B A:n yhteys B:hen luetaan viivan B päästä eli A:lla on täsmälleen yhteen B:hen yhteys Ja vastaavasti B:n yhteys A:han luetaan viivan A päästä eli B:lla on nollaan tai useisiin A-olioihin yhteyksiä Siihen luokkaan, jolla on yhteys NOLLAAN tai YHTEEN toisen luokan olioon, lisätään attribuutiksi viittaus yhteydessä olevan luokan olioon eli public class A private B yhteys; Jos luokkien välillä on yhden suhde yhteen, viittaus lisätään siihen luokkaan, jonka kautta yleensä kumpaakin tietoa käsitellään.

32 32(37) Esim. Oy Yritys Ab Saahankatu Hki Tuote maara á hinta hinta yht A23 Harja B67 Luuta Yhteensä: EUR Luokkakaavio: ASIAKAS 1 * TILAUS 1 PVM 1..* TILAUSRIVI 1 TUOTE *

33 33(37) Mihin luokkiin laitetaan viittaukset yhteyssuhteessa oleviin luokkiin? public class Tilaus private Asiakas tilaaja;. public class Tilausrivi private Tilaus tilaus; private Tuote tuote;. Miten yhteyssuhde attribuuttina toteutetaan? Olio, johon viitataan toisesta luokasta, o elää omaa elämäänsä, o sen elinikä EI ole sidoksissa siihen luokkaan, jossa se on ns. yhteyssuhdeattribuuttina, o sillä saattaa olla useita muita yhteyksiä eri luokkiin ja niiden elämä pitää jatkua vaikka viittaaja kuolisikin Oletusmouodostin, laita yhteyssuhdetta kuvaavan attribuutin arvoksi null public Tilaus() tilaaja = null;

34 34(37) Parametrillisessa muodostimessa yleensä tuodaan viitattava olio parametrina public Tilaus (,Asiakas tilaaja) this.tilaaja = tilaaja; Kopiointimuodostimessa kopioitu olio viittaa samaan ilmentymään kuin kopioitava olio public Tilaus (Tilaus olio) this.tilaaja = olio.tilaaja; getattribuutti, jossa Attribuutti on yhteyssuhteessa oleva olio public Asiakas gettilaaja() return tilaaja; setattribuutti, jossa Attribuutti on yhteyssuhteessa oleva olio public void settilaaja(tilaaja tilaaja) this.tilaaja = tilaaja;

35 35(37) Koostumussuhde TILAUS PVM public class Tilaus private Pvm tilauspvm; Koosteluokka sisältää osaluokkia eli Tilaus-luokka on koosteluokka, joka sisältää osaluokan Pvm Koostumussuhteessa oleva osaluokka elää täysin koosteolion elämän mukaan eli se syntyy koosteluokassa ja kuolee, kun koosteluokkakin kuolee Yleensä oletusmuodostimessa osaluokaan viittaavan attribuutin arvoksi laitetaan null public Tilaus() tilauspvm = null; Parametrillisessa muodostimessa, jossa osaluokan olio on parametrina, yleensä kopioidaan parametrina oleva olio public Tilaus(Pvm pvm) if (pvm!= null) tilauspvm = new Pvm (pvm); else tilauspvm = null;

36 36(37) Kopiointimuodostimessa kopioitavalle luodaan oma osaluokan olio public Tilaus(Tilaus olio) if (olio!= null && olio.tilauspvm!= null) tilauspvm = new Pvm (olio.tilauspvm); else tilauspvm = null; getattribuutti, jossa attribuutti on koosteolion osaolio public Pvm gettilauspvm() Pvm apu = null; if (tilauspvm!= null) apu = new Pvm (tilauspvm); return apu; setattribuutti, jossa attribuutti on koosteolion osaolio public void settilauspvm(pvm pvm) tilauspvm = null; if (pvm!= null) tilauspvm = new Pvm (pvm);

37 37(37) Esimerkki: yhdellä ajoneuvolla voi olla nolla tai useita omistuksia Yksi omistus kohdistuu vain yhteen ajoneuvoon ja yhteen henkiloon Ajoneuvo -rekisterinumero : String -merkki : String -lukema : int -keskikulutus : double 1 * Omistus * 1 -hinta : double 1 ostopvm 1 Henkilo -etunimi : String -sukunimi : String HenkiloAuto -henkilolkm : int KuormaAuto -kantavuus : double Pvm Yhdellä henkilolla voi olla omistuksessaan nolla tai useita ajoneuvoja Omistus kuvaa yhden ajoneuvon ja yhden omistajan suhdetta. Luokan attribuutit ovat seuraavat: private Ajoneuvo ajoneuvo; private Henkilo omistaja; private double hinta; private Pvm ostopvm; // yhteyssuhde // yhteyssuhde //koostumussuhde

YHTEYSSUHDE (assosiation)

YHTEYSSUHDE (assosiation) YHTEYSSUHDE (assosiation) -Mikä on yhteyssuhde? -Miten toteutan yhteyssuhteen? 1 Mikä on yhteyssuhde? Yhteyssuhde kuvaa kahden olion välistä suhdetta: Esim. Auto Henkilö, omistussuhde Tili Asiakas, omistussuhde

Lisätiedot

Mikä yhteyssuhde on?

Mikä yhteyssuhde on? 1 Yhteyssuhde Mikä yhteyssuhde on? Yhteyssuhde Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä yhteyssuhde on? Tili - : String - : double * 1 Asiakas - hetu: String - : String

Lisätiedot

Rajapinta (interface)

Rajapinta (interface) 1 Rajapinta (interface) Mikä rajapinta on? Rajapinta ja siitä toteutettu luokka Monimuotoisuus ja dynaaminen sidonta Rajapinta vs periytyminen 1 Mikä rajapinta on? Rajapintoja käytetään, kun halutaan määritellä

Lisätiedot

Listarakenne (ArrayList-luokka)

Listarakenne (ArrayList-luokka) Listarakenne (ArrayList-luokka) Mikä on lista? Listan määrittely ArrayList-luokan metodeita Listan läpikäynti Listan läpikäynti indeksin avulla Listan läpikäynti iteraattorin avulla Listaan lisääminen

Lisätiedot

Olio-ohjelmointi Javalla

Olio-ohjelmointi Javalla 1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi

Lisätiedot

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

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Kompositio Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä kompositio on? Tili - : String - : double 1 1 Kayttoraja

Lisätiedot

Metodien tekeminen Javalla

Metodien tekeminen Javalla 1 Metodien tekeminen Javalla Mikä metodi on? Metodin syntaksi Metodi ja sen kutsuminen Parametreista Merkkijonot ja metodi Taulukot ja metodi 1 Mikä metodi on? Metodilla toteutetaan luokkaan toiminnallisuutta.

Lisätiedot

Java kahdessa tunnissa. Jyry Suvilehto

Java kahdessa tunnissa. Jyry Suvilehto Java kahdessa tunnissa Jyry Suvilehto Ohjelma Ohjelmointiasioita alkeista nippelitietoon n. 45 min Tauko 10 min Oliot, luokat ja muut kummajaiset n. 45 min Kysykää Sisältöä ei oikeasti ole 2x45 min täytteeksi,

Lisätiedot

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

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen Metodit Metodien määrittely Metodin parametrit ja paluuarvo Metodien suorittaminen eli kutsuminen Metodien kuormittaminen 1 Mikä on metodi? Metodi on luokan sisällä oleva yhteenkuuluvien toimintojen kokonaisuus

Lisätiedot

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

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti: 1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri

Lisätiedot

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN SISÄLLYS 3. Luokkakaavio UML -mallinnuskielessä 3.1 Luokkakaavion luokan rakenteet 3.2 Luokan kuvauksesta C++ ohjelmakoodiksi 3.3 Luokkakaavion luokkien yhteystyypit

Lisätiedot

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.

Lisätiedot

2. Olio-ohjelmoinista lyhyesti 2.1

2. Olio-ohjelmoinista lyhyesti 2.1 2. Olio-ohjelmoinista lyhyesti 2.1 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen. 2.2 Yleistä Olio-ohjelmointia käsitellään hyvin

Lisätiedot

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

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Taulukot: Array Taulukko Javassa pitää aina perustaa (new) Yksinkertaisessa tilanteessa taulukon koko tiedetään etukäteen ja

Lisätiedot

1 Tehtävän kuvaus ja analysointi

1 Tehtävän kuvaus ja analysointi 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.

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet String-merkkijonoluokka 1 Ohjelmointikielten merkkijonot Merkkijonot ja niiden käsittely on välttämätöntä ohjelmoinnissa Valitettavasti ohjelmointikielten tekijät eivät tätä ole ottaneet

Lisätiedot

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

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki Tehtävä 1 Koherentti selitys Koherentti esimerkki ½p ½p Tehtävä 2 Täysiin pisteisiin edellytetään pelaajien tulostamista esimerkin järjestyksessä. Jos ohjelmasi tulostaa pelaajat jossain muussa järjestyksessä,

Lisätiedot

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

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa(); Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio

Lisätiedot

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu Taulukot Taulukon määrittely ja käyttö Taulukko metodin parametrina Taulukon sisällön kopiointi toiseen taulukkoon Taulukon lajittelu esimerkki 2-ulottoisesta taulukosta 1 Mikä on taulukko? Taulukko on

Lisätiedot

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int

Lisätiedot

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

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot

Java-API, rajapinnat, poikkeukset, UML,...

Java-API, rajapinnat, poikkeukset, UML,... Java-API, rajapinnat, r poikkeukset, UML,... Janne Käki 12.10.2006 Keskeisimmät Java-API:n pakkaukset API = Application Programming Interface eli sovellusohjelmointirajapinta (!) pakkaus (engl. package)

Lisätiedot

Luokkamalli LUOKKAKAAVIO. Tämän osan sisältö. Luokkamalli. Luokka ja olio. Luokkakaavio (class diagram)

Luokkamalli LUOKKAKAAVIO. Tämän osan sisältö. Luokkamalli. Luokka ja olio. Luokkakaavio (class diagram) 4 Luokkamalli Rakenteet mittojen mukaan. Mitat rakenteen mukaan. Tämän osan sisältö Luokkakaavio luokkakaavion elementti attribuutit operaatiot määreet Olioiden väliset suhteet kytkös kooste yleistys rajapinta

Lisätiedot

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

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004 Vertailulauseet Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra == yhtäsuuruus!= erisuuruus < pienempi suurempi >= suurempi tai yhtäsuuri Esimerkkejä: int i=7; int j=10;

Lisätiedot

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät Tenttikysymykset 1. Selitä mitä asioita kuuluu tietojärjestelmän käsitteeseen. 2. Selitä kapseloinnin ja tiedon suojauksen periaatteet oliolähestymistavassa ja mitä hyötyä näistä periaatteista on. 3. Selitä

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, Vakio Tiedon merkkipohjainen tulostaminen Ohjelmointi (ict1tx006) Tunnus (5.3) Javan tunnus Java-kirjain Java-numero

Lisätiedot

TyontekijaOhjelma. +main() (käyttää) + = public - = private

TyontekijaOhjelma. +main() (käyttää) + = public - = private 1 (6) OPPIMISTEHTÄVÄT 11 (opetusviikko 15) Periytyminen, Rajapinta, Kertaus 1) Periytyminen: Periytä Henkilo-luokasta Tyontekija-aliluokka. Tyontekija-luokalla on attribuutti tuntipalkka (desimaaliluku).

Lisätiedot

T740103 Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

T740103 Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010 12. Periytyminen Johdantoa Käytännössä vähänkään laajemmissa ohjelmissa joudutaan laatimaan useita luokkia, joiden pitäisi pystyä välittämään tietoa toisilleen. Ohjelmien ylläpidon kannalta olisi lisäksi

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

Lisätiedot

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Matti Luukkainen 10.12.2009 Tässä esitetty esimerkki on mukaelma ja lyhennelmä Robert Martinin kirjasta Agile and Iterative Development löytyvästä

Lisätiedot

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin Olio-ohjelmointi: Luokkien toteuttaminen Jukka Juslin Luokkien kirjoittaminen Tähän mennessä on käytetty valmiiksi määritettyjä luokkia. Nyt opimme kirjoittamaan omia luokkia olioiden kuvaamiseksi Seuraavaksi

Lisätiedot

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

Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1 Oliot ja luokat Javaohjelmoinnissa Vesa Laakso 22.9.2012 Sisällysluettelo Sisällysluettelo... 1 Johdanto... 2 1. Luokka... 2 2. Olio... 2 3. Luokan

Lisätiedot

Sisällys. 19. Unified Modeling Language (UML) Johdanto. Johdanto. Johdanto. Luokkakaavio:

Sisällys. 19. Unified Modeling Language (UML) Johdanto. Johdanto. Johdanto. Luokkakaavio: Sisällys 9. Unified Modeling Language (UML) Perustuu Kai Koskimiehen Oliokirjaan ja aikaisempaan luentomateriaaliin. Johdanto. Luokkakaavio: Luokkasymboli, attribuutit ja metodit. Suhteet: Assosiaatiot:

Lisätiedot

P e d a c o d e ohjelmointikoulutus verkossa

P e d a c o d e ohjelmointikoulutus verkossa P e d a c o d e ohjelmointikoulutus verkossa Java-kielen jatkokurssi Teoria ja ohjelmointitehtävät Java-kielen jatkokurssi 3 YLEISKATSAUS KURSSIN SISÄLTÖIHIN... 8 JAVA-KIELEN JATKOKURSSI... 8 OPISKELUN

Lisätiedot

Tietokannat II -kurssin harjoitustyö

Tietokannat II -kurssin harjoitustyö Tietokannat II -kurssin harjoitustyö Jyri Lehtonen (72039), jkoleh@utu.fi Azad Hajipour (72187), azhaji@utu.fi 10.6.2007 Sisältö 1. Tietokannan kuvaus... 1 1.1 Tietokannan rakenne... 1 1.2 Relaatiokaava

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita valintalauseet 1 Johdantoa kontrollirakenteisiin Tähän saakka ohjelmissa on ollut vain peräkkäisyyttä eli lauseet on suoritettu peräkkäin yksi kerrallaan Tarvitsemme myös valintaa

Lisätiedot

Ohjelmistojen mallintaminen. Luento 7, 23.11.

Ohjelmistojen mallintaminen. Luento 7, 23.11. Ohjelmistojen mallintaminen Luento 7, 23.11. Kertaus: olioiden yhteistyön kuvaaminen Luokkakaavion avulla voidaan kuvata ohjelman rakenne Minkälaisista luokista ohjelma koostuu ja miten luokat liittyvät

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita Käyttäjän kanssa keskusteleva ohjelma 1 Kirjoittaminen konsolinäkymään //Java ohjelma, joka tulostaa konsoli-ikkunaan public class HeiMaailma { public void aja() { // kirjoitus ja

Lisätiedot

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokista Javan alkeistietotyypit ja vastaavat kääreluokat Autoboxing Integer-luokka Double-luokka Kääreluokista Alkeistietotyyppiset muuttujat (esimerkiksi

Lisätiedot

Ohjelmistotekniikan menetelmät, koe 2.5.2014

Ohjelmistotekniikan menetelmät, koe 2.5.2014 Ohjelmistotekniikan menetelmät, koe 2.5.2014 Vastaa tehtävään 3 erilliselle konseptille. Tehtävät 1 ja 2 saavat olla samalla konseptilla. Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen

Lisätiedot

Sisällys. 19. Olio-ohjelmointia Javalla. Yleistä. Olioiden esittely ja alustus

Sisällys. 19. Olio-ohjelmointia Javalla. Yleistä. Olioiden esittely ja alustus Sisällys 19. Olio-ohjelmointia Javalla Olioiden esittely ja alustus. Metodit Yleistä metodeista. Mihin metodeja tarvitaan? Metodien määrittely. Omat metodit: nimeäminen, paikka, kutsuminen, parametrit

Lisätiedot

Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia.

Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia. 4. Periytyminen 4.1. Johdantoa Käytännössä vähänkään laajemmissa ohjelmissa joudutaan laatimaan useita luokkia, joiden pitäisi pystyä välittämään tietoa toisilleen. Ohjelmien ylläpidon kannalta olisi lisäksi

Lisätiedot

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006 TURUN YLIOPISTO DEMO III Informaatioteknologian laitos tehtävät Olio-ohjelmoinnin perusteet / Salo 15.2.2006 1. Tässä tehtävässä tarkastellaan erääntyviä laskuja. Lasku muodostaa oman luokkansa. Laskussa

Lisätiedot

Rinnakkaisohjelmointi, Syksy 2006

Rinnakkaisohjelmointi, Syksy 2006 Rinnakkaisohjelmointi, Syksy 2006 17.12.2006 Opintopiiri WTF Mika Holmström Paula Kemppi Janne Piippo Lasse Lukkari Javan semaforit 1. Menetelmän käyttötarkoitus ja sovellusalue Semaforin idea kehitettiin

Lisätiedot

Ohjelmointityö 3. Mikko Laamanen 185667

Ohjelmointityö 3. Mikko Laamanen 185667 Ohjelmointityö 3 Mikko Laamanen 185667 Sisällysluettelo Tehtävän määrittely ja ratkaisuperiaate... 1 Tehtävän määrittely... 1 Ratkaisuperiaate... 1 Ohjelman käyttöohje... 1 Syötteet ja tulosteet... 1 Ohjelman

Lisätiedot

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4) 2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi

Lisätiedot

UML Luokkakaavio 14:41

UML Luokkakaavio 14:41 UML Luokkakaavio UML Olio-ohjelman luokkien pääpiirteet voidaan kätevähkösti esittää ns. UML-luokkakaaviona. Näin usein tehdäänkin esim. suunniteltaessa, millaisia luokkia ohjelmaan on tarkoitus laatia,

Lisätiedot

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti Rinnakkaisohjelmointi kurssi Opintopiiri työskentelyn raportti Opintopiiri: Heikki Karimo, Jesse Paakkari ja Keijo Karhu Päiväys: 15.12.2006 Ohjelmointitehtävä C i C i : Säikeet ja kriittisen vaiheen kontrollointi

Lisätiedot

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

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Tietorakenneluokkia 2: HashMap, TreeMap Tietorakenneluokkia ja -rajapintoja Java tarjoaa laajan kokoelman tietorakennerajapintoja ja - luokkia. Aiemmin

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

Lisätiedot

Pakkauksen kokoaminen

Pakkauksen kokoaminen 13. Pakkaukset 13.1 Sisällys Pakkauksen kokoaminen (package). Pakkaukset ja hakemistorakenne. Pakkauksen luokkien käyttö muissa pakkauksissa (import). Pakkaukset ja näkyvyys. 13.2 Pakkauksen kokoaminen

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Opintojakso TT00AA11 Ohjelmoinnin jatko (Java) Tavoite Opiskelija ymmärtää olio-ohjelmoinnin problematiikan. Opiskelija osaa määritellä ja käyttää itse

Lisätiedot

812341A Olio-ohjelmointi, 2016. Olio-ohjelmoinnin peruskäsitteet ja Java-kieli

812341A Olio-ohjelmointi, 2016. Olio-ohjelmoinnin peruskäsitteet ja Java-kieli 812341A Olio-ohjelmointi, 2016 Olio-ohjelmoinnin peruskäsitteet ja Java-kieli Sisältö 1. Java-kieli 2. Luokka 3. Luokkakaaviot 4. Lisää Javaa Javalla 2 Java-kieli n Sun Microsystems tutkimusprojekti 1991

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia. Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka

Lisätiedot

TIETORAKENTEET JA ALGORITMIT

TIETORAKENTEET JA ALGORITMIT TIETORAKENTEET JA ALGORITMIT Timo Harju 1999-2004 1 typedef link List; /* Vaihtoehtoisia nimiä */ typedef link Stack; /* nodepointterille */ typedef link Queue typedef struct node Node; /* itse nodelle

Lisätiedot

TIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

TIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely Lyhyt UML-opas UML -pikaesittely UML, Unified Modeling Language Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee (Object Management Group) OMG Historiaa: 90-luvulla oli paljon kilpailevia

Lisätiedot

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi 1 Javan perusteet Ohjelmointi IPO-malli Java lähdekoodista suoritettavaksi ohjelmaksi Vakio Muuttuja Miten Javalla näytetään tietoa käyttäjälle, miten Javalla luetaan käyttäjän antama syöte Miten Javalla

Lisätiedot

Ohjelmistojen mallintaminen. Luento 4, 22.11.

Ohjelmistojen mallintaminen. Luento 4, 22.11. Ohjelmistojen mallintaminen Luento 4, 22.11. Kertaus: olioiden yhteistyön kuvaaminen Luokkakaavion avulla voidaan kuvata ohjelman rakenne Minkälaisista luokista ohjelma koostuu ja miten luokat liittyvät

Lisätiedot

Antti-Jussi Lakanen Ohjelmointi 1, C# / kevät 2011

Antti-Jussi Lakanen Ohjelmointi 1, C# / kevät 2011 Antti-Jussi Lakanen Ohjelmointi 1, C# / kevät 2011 Yleistä olioista ja OOP:sta OOP, eng. Object Oriented Programming C#:ssa oliot luodaan käyttämällä (olio)luokkia Olio tarkoittaa yksinkertaisesti ohjelman

Lisätiedot

Taulukot. Taulukon käsittely. Tämän osan sisältö. Esimerkki. Taulukon esittely ja luonti. Taulukon alustaminen. Taulukon koko

Taulukot. Taulukon käsittely. Tämän osan sisältö. Esimerkki. Taulukon esittely ja luonti. Taulukon alustaminen. Taulukon koko 5 Taulukot Tämän osan sisältö Taulukon esittely ja luonti Taulukon alustaminen Taulukon koko Taulukon käsittely indeksointi peräkkäiskäsittely hajakäsittely harva taulukko Taulukon järjestäminen Kaksiulotteinen

Lisätiedot

- Komposiittityypit - Object (Mukaanlukien funktiot) - Array. - Erikoisdatatyypit - null - undefined

- Komposiittityypit - Object (Mukaanlukien funktiot) - Array. - Erikoisdatatyypit - null - undefined Ohjelmointitekniikka Tyyppiturvallisuuden tavoittelua Javascriptissa muuttujat ovat tyypittömiä, mutta arvoilla on tyyppi. Muuttuja esitellään var -avainsanalla ja muuttujan tyypin arvoa ei erikseen määritellä.

Lisätiedot

Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä.

Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä. Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä. JUnit-ympäristö 1. Luo tests -pakkaukseen uusi luokka. Nimeä VHTestit. 2. Laita VHTestit periytymään TestCase:sta

Lisätiedot

Ehto- ja toistolauseet

Ehto- ja toistolauseet Ehto- ja toistolauseet 1 Ehto- ja toistolauseet Uutena asiana opetellaan ohjelmointilauseet / rakenteet, jotka mahdollistavat: Päätösten tekemisen ohjelman suorituksen aikana (esim. kyllä/ei) Samoja lauseiden

Lisätiedot

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.

Lisätiedot

JUnit ja EasyMock (TilaustenKäsittely)

JUnit ja EasyMock (TilaustenKäsittely) OHJELMISTOJEN TESTAUS JA HALLINTA Syksy 2015 / Auvo Häkkinen JUnit ja EasyMock (TilaustenKäsittely) Tehtävässä tarvittava koodi löytyy osoitteella http://users.metropolia.fi/~hakka/oth/mockesimerkki.zip

Lisätiedot

Interaktiivinen tarinankerronta

Interaktiivinen tarinankerronta Interaktiivinen tarinankerronta Tehtävä 1: Tarinan alku pääohjelmaan Main. java ei tehdä muutoksia tulostusrivit tiedostoon Kayttoliittyma.java tulostus lyhyesti sout + tab komennolla Tiedoston Kayttoliittyma.java

Lisätiedot

JavaRMI 1 JAVA RMI. Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko

JavaRMI 1 JAVA RMI. Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko JavaRMI 1 JAVA RMI Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko JavaRMI 2 Table of Contents...1 JAVA RMI...1 Yleistä...4 Arkkitehtuuri...5 Java RMI kerrosarkkitehtuuri...5

Lisätiedot

Tietokannat II -kurssin harjoitustyö

Tietokannat II -kurssin harjoitustyö Tietokannat II -kurssin harjoitustyö Olli Opiskelija (123), olli.opiskelija@foo.fi Maija Mallioppilas (321), maija.mallioppilas@foo.fi 13.3. 2007 1 Sisältö 1 Tietokannan kuvaus 3 1.1 Tietokannan rakenne..................................

Lisätiedot

Johdanto. Olio (Object) Luokka (Class) Olion kuvaaminen

Johdanto. Olio (Object) Luokka (Class) Olion kuvaaminen Johdanto Olio (Object) Luokat (ja oliot) mallintava järjestelmän rakennetta määrittely järjestelmän kannalta Luokat ja niiden väliset suhteet muuntuvat suoraan lähdekoodiksi! Luokkakaaviolla kuvataan ohjelmiston

Lisätiedot

Kertaus: yleistys-erikoistus ja perintä

Kertaus: yleistys-erikoistus ja perintä Kertaus: yleistys-erikoistus ja perintä Nauta, Lehmä ja Kuttu ovat Kotieläimiä, Kotieläimet Eläimiä Kotieläimillä (siis myös Naudoilla, Lehmillä ja Kutuilla) on Omistaja Kuttu ja Lehmä toteuttavat rajapinnan

Lisätiedot

P e d a c o d e ohjelmointikoulutus verkossa

P e d a c o d e ohjelmointikoulutus verkossa P e d a c o d e ohjelmointikoulutus verkossa Java-kielen perusteet Teoria ja ohjelmointitehtävät Java-kielen perusteet 3 YLEISKATSAUS KURSSIN SISÄLTÖIHIN 10 JAVA-KIELEN PERUSTEET 10 OPISKELUN ALOITTAMINEN

Lisätiedot

1. Olio-ohjelmointi 1.1

1. Olio-ohjelmointi 1.1 1. Olio-ohjelmointi 1.1 Sisällys Olio-ohjelmointi on eräs ohjelmointiparadigma. Olio-ohjelmoinnin muotoja. Ohjelmiston analyysi ja suunnittelu. Olioparadigman etuja ja kritiikkiä. 1.2 Ohjelmointiparadigmoja

Lisätiedot

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät Tenttikysymykset 1. Selitä mitä asioita kuuluu tietojärjestelmän käsitteeseen. 2. Selitä kapseloinnin ja tiedon suojauksen periaatteet oliolähestymistavassa ja mitä hyötyä näistä periaatteista on. 3. Selitä

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita Toistorakenne (while, do-while, for) 1 While- lause while-lauseen rakenne on seuraava: while (ehtolauseke) lause Kun ehtolausekkeen arvo on totta, lause suoritetaan. Lause suoritetaan

Lisätiedot

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4 Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.

Lisätiedot

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena Ohjelmointikielet ja -paradigmat 5op Markus Norrena Ko#tehtävä 4 Viimeistele "alkeellinen kuvagalleria". Käytännössä kaksi sivua Yksi jolla voi ladata kuvia palvelimelle (file upload) Toinen jolla ladattuja

Lisätiedot

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä 6.11.2002

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä 6.11.2002 JReleaser Yksikkötestaus ja JUnit Mikko Mäkelä 6.11.2002 Sisältö Johdanto yksikkötestaukseen JUnit yleisesti JUnit Framework API (TestCase, TestSuite) Testien suorittaminen eri työkaluilla Teknisiä käytäntöjä

Lisätiedot

812336A C++ -kielen perusteet, 21.8.2010

812336A C++ -kielen perusteet, 21.8.2010 812336A C++ -kielen perusteet, 21.8.2010 1. Vastaa lyhyesti seuraaviin kysymyksiin (1p kaikista): a) Mitä tarkoittaa funktion ylikuormittaminen (overloading)? b) Mitä tarkoittaa jäsenfunktion ylimääritys

Lisätiedot

Jouni Huotari & Ari Hovi. Käsitemallinnuksesta relaatiokantaan KÄSITEMALLI. LOOGINEN MALLI: tietomalli valittu. FYYSINEN MALLI: DBMS valittu

Jouni Huotari & Ari Hovi. Käsitemallinnuksesta relaatiokantaan KÄSITEMALLI. LOOGINEN MALLI: tietomalli valittu. FYYSINEN MALLI: DBMS valittu Informaatioteknologian instituutti IIO30100 Tietokantojen suunnittelu Polku luokkakaavioista taulujen toteutukseen kirjan Hovi, Huotari, Lahdenmäki: Tietokantojen suunnittelu & indeksointi, Docendo (2003,

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 30.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 30.9.2015 1 / 27 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

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

Luokkakirjastot. esiintymämetodien käytöstä: Luokkakirjastot Esimerkkejä Jokainen olio on jotain tyyppiä ja ko. tyyppistä oliota voidaan käsitellä ko. luokan metodeilla Merkkijonojen käsittely: String, StringBuffer, StringBuilder, StringTokenizer,..

Lisätiedot

Virtuaalifunktiot ja polymorfismi

Virtuaalifunktiot ja polymorfismi Virtuaalifunktiot ja polymorfismi 16 Virtuaalifunktiot ja polymorfismi Polymorfismi on niin tehokas olio-ohjelmoinnin ominaisuus, että tulet varmastikin käyttämään sitä lähes kaikissa C++-ohjelmissasi.

Lisätiedot

Tapahtumapohjainen ohjelmointi. Juha Järvensivu juha.jarvensivu@tut.fi 2007

Tapahtumapohjainen ohjelmointi. Juha Järvensivu juha.jarvensivu@tut.fi 2007 Tapahtumapohjainen ohjelmointi Juha Järvensivu juha.jarvensivu@tut.fi 2007 Sisältö Tapahtumapohjainen ohjelmointi Käyttöliittymän rakenne Pääikkuna (top-level window) Lapsi-ikkuna (child window) Dialogit

Lisätiedot

Olio-ohjelmointi Suunnittelumallit Adapter ja Composite. 1. Adapter

Olio-ohjelmointi Suunnittelumallit Adapter ja Composite. 1. Adapter Olio-ohjelmointi Suunnittelumallit Adapter ja Composite Rakennemalleissa päähuomio kohdistetaan siihen, miten luokkia ja olioita yhdistellään muodostamaan laajempia rakenteita. Rakenteelliset luokkamallit

Lisätiedot

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

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen Esimerkki: Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen Luo tietokanta Koulu. Tietokantaan lisätään 3 taulua. Kurssit-taulu: kurssiid not null primary key INTEGER aineid not

Lisätiedot

Attribuutit. Copyright IT Press Tämän e-kirjan kopiointi, tulostaminen ja jakeleminen eteenpäin luvatta on kielletty.

Attribuutit. Copyright IT Press Tämän e-kirjan kopiointi, tulostaminen ja jakeleminen eteenpäin luvatta on kielletty. 8 Attribuutit Useimmat ohjelmointikielet on suunniteltu tavoitteena määrätty joukko ominaisuuksia. Kun esimerkiksi ryhdyt tekemään kääntäjää, mietit millainen uudella kielellä tehty sovellus on rakenteeltaan,

Lisätiedot

12 Mallit (Templates)

12 Mallit (Templates) 12 Mallit (Templates) Malli on määrittely, jota käyttämällä voidaan luoda samankaltaisten aliohjelmien ja luokkien perheitä. Malli on ohje kääntäjälle luoda geneerisestä tyyppiriippumattomasta ohjelmakoodista

Lisätiedot

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32 HSMT Tietokannoista Ville Leppänen HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista (1h)

Lisätiedot

Delegaatit ja tapahtumakäsittelijät

Delegaatit ja tapahtumakäsittelijät 14 Delegaatit ja tapahtumakäsittelijät Toinen käyttökelpoinen keksintö C#-kielessä ovat delegaatit. Periaatteessa ne palvelevat samaa tarkoitusta kuin C++:n funktio-osoittimet. Delegaatit ovat kuitenkin

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 11: Olioiden toteuttaminen Riku Saikkonen 28. 11. 2011 Sisältö 1 Miten oliot ja metodikutsut toimivat? 2 Oliot Minkä luokan metodia kutsutaan? Python-esimerkki

Lisätiedot

Luento 17: Perintä. self.points = 0 self.status = 'Student'

Luento 17: Perintä. self.points = 0 self.status = 'Student' Luento 17: Perintä class Staff(object): def init (self, name, salary): self.salary = salary self.status = 'Staff' def set_name(self, new_name): self.name = new_name def get_status(self): return self.status

Lisätiedot

ict02d Osio2- luento 3 Olio-ohjelmointi: Luokkien kirjoittaminen

ict02d Osio2- luento 3 Olio-ohjelmointi: Luokkien kirjoittaminen ict02d Osio2- luento 3 Olio-ohjelmointi: Luokkien kirjoittaminen Jukka Juslin Luokkien kirjoittaminen Tähänmennessä on käytetty valmiiksi määritettyjä luokkia. Nyt opimme kirjoittamaan omia luokkia olioiden

Lisätiedot

C# olio-ohjelmointi perusopas

C# olio-ohjelmointi perusopas Paavo Räisänen C# olio-ohjelmointi perusopas www.ohjelmoimaan.net Tätä opasta saa vapaasti kopioida, tulostaa ja levittää ei kaupallisissa tarkoituksissa. Kuitenkaan omille nettisivuille opasta ei saa

Lisätiedot

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.

Lisätiedot

Harjoitustyö (TKO_2023)

Harjoitustyö (TKO_2023) Harjoitustyö (TKO_2023) Jyri Lehtonen (72039) (alkuperäinen 29.1.2008) päivitetty: 8.2.2008 1 Tehtävän kuvaus ja analysointi 1.1 Tehtävänanto Tee Java-appletti, joka kysyy käyttäjältä asioita Java-kielestä.

Lisätiedot

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena Ohjelmointikielet ja -paradigmat 5op Markus Norrena Kotitehtävä 6, toteuttakaa alla olevan luokka ja attribuutit (muuttujat) Kotitehtävä 6, toteuttakaa alla olevan luokka ja attribuutit (muuttujat) Huom!

Lisätiedot

Osoitin ja viittaus C++:ssa

Osoitin ja viittaus C++:ssa Osoitin ja viittaus C++:ssa Osoitin yksinkertaiseen tietotyyppiin Osoitin on muuttuja, joka sisältää jonkin toisen samantyyppisen muuttujan osoitteen. Ohessa on esimerkkiohjelma, jossa määritellään kokonaislukumuuttuja

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen

Lisätiedot

Perintä (inheritance)

Perintä (inheritance) Perintä (inheritance) Perintä on menetelmä, jonka avulla jostakin olemassaolevasta luokasta voidaan johtaa uusi luokka, joka saa automaattisesti käyttöönsä perimänsä luokan ominaisuuksia. Perittävää luokkaa

Lisätiedot

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin. 2. Ohjausrakenteet Ohjausrakenteiden avulla ohjataan ohjelman suoritusta. peräkkäisyys valinta toisto Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet

Lisätiedot