A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)
|
|
- Maarit Jääskeläinen
- 8 vuotta sitten
- Katselukertoja:
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: Koira@18d107f
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) -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ätiedotUML ja luokkien väliset suhteet
UML ja luokkien väliset suhteet -Luokan kuvaaminen UML-tekniikalla -Yhteyssuhde ja koostumussuhde 1 Luokan kuvaaminen UML-tekniikalla : Luokka - attribuutti1 : tietotyyppi # attribuutti2 : tietotyyppi
LisätiedotMikä 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ätiedotRajapinta (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ätiedotListarakenne (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ätiedotPeriytyminen (inheritance)
1 Periytyminen (inheritance) Mitä periytyminen on? Yli- ja aliluokka Konstruktorit Get- ja set-metodi Muut metodit tostring Yksinkertainen pääohjelma 1 Mitä periytyminen on? Periytymisen avulla olemassa
LisätiedotOlio-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ätiedoton ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä
LUOKAN MÄÄRITTELY Luokka, mitä se sisältää Luokan määrittely Olion ominaisuudet eli attribuutit Olion metodit Olion muodostimet ja luonti Olion tuhoutuminen Metodin kutsu luokan ulkopuolelta Olion kopioiminen
LisätiedotLuokan muodostimet (Constructors)
Mikä on muodostin? Luokan muodostimet (Constructors) Millaisia muodostimia on? Oletusmuodostin (Default Constructor) Parametrillinen muodostin Kopiointimuodostin (Copy Constructor) this-muuttuja Miten
LisätiedotSisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance)
Sisällys JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys Periytyminen (inheritance) Näkyvyys (visibility) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E. Hyvönen: Java Osa
LisätiedotKompositio. 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ätiedotMetodien 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ätiedotVahva koostumussuhde (Composition)
Vahva koostumussuhde (Composition) - Mitä vahva koostumsusuhde tarkoittaa? - Vahva koostumussuhde vs. yhteyssuhde - Miten toteutan vahvan koostumussuhteen? - Muodostimet - Set ja get-metodit - tostring-metodi
LisätiedotJava 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ätiedot9. Periytyminen Javassa 9.1
9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat
Lisätiedot9. Periytyminen Javassa 9.1
9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Ilmentymämetodien korvaaminen. Luokkametodien peittäminen. Super-attribuutti. Override-annotaatio.
LisätiedotKOHDELUOKAN MÄÄRITTELY
KOHDELUOKAN MÄÄRITTELY Kohdeluokka, mitä se sisältää Luokan määrittely Olion ominaisuudet eli attribuutit Olion metodit Olion luonti Olion tuhoutuminen Metodin kutsu luokan ulkopuolelta Taulukon alkiona
LisätiedotJavan perusteita. Janne Käki
Javan perusteita Janne Käki 20.9.2006 Muutama perusasia Tietokone tekee juuri (ja vain) sen, mitä käsketään. Tietokone ymmärtää vain syntaksia (sanojen kirjoitusasua), ei semantiikkaa (sanojen merkitystä).
LisätiedotMetodit. 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ätiedot16. Javan omat luokat 16.1
16. Javan omat luokat 16.1 Sisällys Johdanto. Object-luokka: tostring-, equals-, clone- ja getclass-metodit. Comparable-rajapinta: compareto-metodi. Vector- ja ArrayList-luokat. 16.2 Javan omat luokat
LisätiedotOhjelmassa 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ätiedotLista luokan sisällä
Lista luokan sisällä Luokan sisällä on lista Joukkue-luokka, joka sisältää listän joukkueen pelaajista Pelaaja Joukkueen metodit, jotka käyttävät listaa Ohjelmaluokka Luokan sisällä on lista Tarkoitta
LisätiedotSisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä
Sisällys 9. Periytyminen Javassa Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat
LisätiedotUML -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ätiedotSisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki
Sisällys JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta Abstrakti luokka ja metodi Rajapintamäärittely (interface) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E.
LisätiedotSisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä
Sisällys 9. Periytyminen Javassa Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat
Lisätiedot12. Monimuotoisuus 12.1
12. Monimuotoisuus 12.1 Sisällys Johdanto. Periytymismekanismi määrittää alityypityksen. Viitteiden sijoitus ja vertailu. Staattinen ja dynaaminen luokka. Myöhäinen ja aikainen sidonta. Parametrinvälitys
Lisätiedot14. Poikkeukset 14.1
14. Poikkeukset 14.1 Sisällys Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla poikkeuksella? Poikkeusten heittäminen.
Lisätiedot2. 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ätiedotOhjelmoinnin 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ätiedotpublic static void main (String [] args)
HAAGA-HELIA OHJELMOINTI 1(5) OHJELMALUOKKA Ohjelma-luokan käynnistää public static void main (String [] args) main-metodiin voi koodata 1. ohjelman logiikan tai 2. luoda ohjelma-olion ja kutsua metodia,
LisätiedotOpintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat Rajapinnat Java-kieli ei tue luokkien moniperintää. Jokaisella luokalla voi olla vain yksi välitön yliluokka. Toisinaan olisi
LisätiedotSisällys. 14. Poikkeukset. Johdanto. Johdanto
Sisällys 14. Poikkeukset Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla poikkeuksella? Poikkeusten heittäminen.
LisätiedotOpintojakso 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ätiedot12. Monimuotoisuus 12.1
12. Monimuotoisuus 12.1 Sisällys Johdanto. Periytymismekanismi määrittää alityypityksen. Viitteiden sijoitus ja vertailu. Staattinen ja dynaaminen luokka. Parametrinvälitys eräs monimuotoisuuden sovellus.
Lisätiedot1 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ätiedotSisällys. 14. Poikkeukset. Johdanto. Johdanto
Sisällys 14. Poikkeukset Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Miten varautua poikkeukseen metodissa? Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla
LisätiedotJava-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ätiedotRajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.
11. Rajapinnat 11.1 Sisällys Johdanto. Abstrakti luokka vai rajapinta? Rajapintojen hyötyjä. Kuinka rajapinnat määritellään ja otetaan käyttöön? Eläin, nisäkäs, kissa ja rajapinta. Moniperiytyminen rajapintojen
LisätiedotOhjelmointi 2 / 2010 Välikoe / 26.3
Ohjelmointi 2 / 2010 Välikoe / 26.3 Välikoe / 26.3 Vastaa neljään (4) tehtävään ja halutessa bonustehtäviin B1 ja/tai B2, (tuovat lisäpisteitä). Bonustehtävät saa tehdä vaikkei olisi tehnyt siihen tehtävään
LisätiedotSisällys. 11. Rajapinnat. Johdanto. Johdanto
Sisällys 11. ajapinnat. bstrakti luokka vai rajapinta? ajapintojen hyötyjä. Kuinka rajapinnat määritellään ja otetaan käyttöön? Eläin, nisäkäs, kissa ja rajapinta. Moniperiytyminen rajapintojen avulla.
Lisätiedot14. Poikkeukset 14.1
14. Poikkeukset 14.1 Sisällys Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Miten varautua poikkeukseen metodissa? Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla
LisätiedotJava-kielen perusteet
Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero
LisätiedotOlion 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ätiedotKooste. Esim. Ympyrän keskipiste voidaan ajatella ympyrän osaksi.
17. Kooste 17.1 Kooste Kooste (aggregation) on luokkien A ja B välinen suhde, joka tarkoittaa A on B:n osa tai A kuuluu B:hen. Koostesuhteessa olevat luokat eivät yleensä ole periytymissuhteessa. Kooste
LisätiedotHarjoitus 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ätiedotTaulukot. 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ätiedotTehtä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ätiedotJAVA-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ätiedotSisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2
6. Metodit 6.1 Sisällys Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 Oliot viestivät metodeja kutsuen Olio-ohjelmoinnissa ohjelma
LisätiedotJava-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ätiedotOhjelmointi 2, välikoe
Ohjelmointi 2, välikoe 21.3.2014 Vastaa neljään tehtävään kuudesta siten, että jokainen tehtävä tulee omalle konseptilleen. Mikäli vastaat useampaan kuin neljään tehtävään, pisteiden laskussa huomioidaan
Lisätiedot812341A Olio-ohjelmointi Peruskäsitteet jatkoa
812341A Olio-ohjelmointi 2106 Peruskäsitteet jatkoa Luokkakohtaiset piirteet n Yhteisiä kaikille saman luokan olioille n Liittyvät luokkaan, eivät yksittäiseen olioon n Kaikki ko. luokan oliot voivat käyttää
LisätiedotPoikkeustenkäsittely
1 Poikkeustenkäsittely Mitä poikkeustenkäsittely tarkoittaa? Poikkeuksen käsitteleminen Poikkeusluokkien hierarkia Poikkeuksen heittäminen 1 Mitä poikkeustenkäsittely tarkoittaa? Poikkeus (Exception) on
LisätiedotTaulukoiden käsittely Javalla
1 Taulukoiden käsittely Javalla Mikä taulukko on? Taulukon syntaksi Merkkijonotaulukko Lukutaulukko Taulukon kopiointi 1 Mikä taulukko on? Taulukko on rakenne, minne saadaan talteen usea saman tyyppinen
LisätiedotVertailulauseet. 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ätiedotTaulukot. 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ätiedotLuokan sisällä on lista
1 Luokan sisällä on lista Luokan sisällä lista Listan sisältävä luokka Konstruktorit get-metodi Lista muissa metodeissa addxx-metodi Yksinkertainen pääohjelma Kertauksen List-luokan metodeja 1 Luokan sisällä
LisätiedotT740103 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ätiedotJava-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ätiedotLuokkamalli 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ätiedotTyontekijaOhjelma. +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ätiedotSisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen
Sisällys 6. Metodit Oliot viestivät metodeja kutsuen. Kuormittaminen. Luokkametodit (ja -attribuutit).. Metodien ja muun luokan sisällön järjestäminen. 6.1 6.2 Oliot viestivät metodeja kutsuen Oliot viestivät
LisätiedotOlio-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ätiedotTenttikysymykset. + 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ätiedotSisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2
4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä
LisätiedotMetodien 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ätiedotOliosuunnitteluesimerkki: 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ätiedotLuokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.
1 Luokka Murtoluku uudelleen Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. Sievennettäessä tarvitaan osoittajan ja nimittäjän suurin yhteinen tekijä (syt).
LisätiedotSisä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ätiedot15. Ohjelmoinnin tekniikkaa 15.1
15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Geneerinen ohjelmointi. Lueteltu tyyppi enum. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien silmukoimiseen:
LisätiedotSisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2
4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä muuttujia ja vakioita. Esittely
LisätiedotP 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ätiedotSisältö. 22. Taulukot. Yleistä. Yleistä
Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä
Lisätiedot4. Olio-ohjelmoinista lyhyesti 4.1
4. Olio-ohjelmoinista lyhyesti 4.1 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen. 4.2 Yleistä Olio-ohjelmointia käsitellään hyvin
LisätiedotYksikkötestaus. Kattava testaus. Moduulitestaus. Ohjelman testaus. yksikkotestaus/ Seija Lahtinen
Yksikkötestaus Kattava testaus Moduulitestaus Ohjelman testaus 1 Kattava testaus Testauksen perimmäinen tarkoitus on LÖYTÄÄ VIRHEITÄ Testaus pitäisi olla täydellinen: - Jokainen pyydetty arvo pitäisi testata
LisätiedotSisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto
Sisällys 18. bstraktit tietotyypit Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.1 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:
LisätiedotSisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista
Sisällys 1. Omat operaatiot Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma
LisätiedotKää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ätiedotSisältö. 2. Taulukot. Yleistä. Yleistä
Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä
LisätiedotTietokannat 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ätiedotT Olio-ohjelmointi Osa 3: Luokka, muodostin ja hajotin, this-osoitin Jukka Jauhiainen OAMK Tekniikan yksikkö 2010
11. Luokka Opetellaan seuraavaksi, miten omia luokkia kirjoitetaan. Aikaisemmin olikin jo esillä, että luokka on tietorakenne, joka sisältää sekä tiedot (attribuutit) että niitä käsittelevät aliohjelmat
Lisätiedot1. Omat operaatiot 1.1
1. Omat operaatiot 1.1 Sisällys Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma
LisätiedotOliot viestivät metodeja kutsuen
6. Metodit 6.1 Sisällys Oliot viestivät metodeja kutsuen. Kuormittaminen. Luokkametodit (ja -attribuutit). Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 Oliot viestivät metodeja kutsuen
LisätiedotJava-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ätiedotJava-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ätiedot18. Abstraktit tietotyypit 18.1
18. Abstraktit tietotyypit 18.1 Sisällys Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:
LisätiedotSisä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ätiedotYleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.
2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä
LisätiedotAalto 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ätiedotOhjelmistojen mallintaminen luokkamallin lisäpiirteitä
582104 Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä 1 Luokkamallin lisäpiirteitä Erilaiset yhteystyypit kooste kompositio Muita luokkien välisiä suhteita riippuvuudet periytyminen eli luokkahierarkia
LisätiedotOpintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely Poikkeukset Poikkeuksella tarkoitetaan yllättävää ajonaikaista tilannetta, joka
Lisätiedot19. Olio-ohjelmointia Javalla 19.1
19. Olio-ohjelmointia Javalla 19.1 Sisällys Olioiden esittely ja alustus. Metodit Yleistä metodeista. Mihin metodeja tarvitaan? Metodien määrittely. Omat metodit: nimeäminen, paikka, kutsuminen, parametrit
LisätiedotOhjelmistojen 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ätiedotOhjelmistotekniikan 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ätiedotOlio-ohjelmointi Syntaksikokoelma
C++-kielen uusia ominaisuuksia Olio-ohjelmointi Syntaksikokoelma 31.10.2008 Bool-tietotyyppi: Totuusarvo true (1), jos ehto on tosi ja false (0) jos ehto epätosi. Dynaaminen muistinvaraus: Yhden muuttuja
Lisätiedot20. Javan omat luokat 20.1
20. Javan omat luokat 20.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.2 Java API Java-kielen Application Programming Interface (API)
Lisätiedot15. Ohjelmoinnin tekniikkaa 15.1
15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien
LisätiedotUML 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ätiedotSisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang
Sisällys 20. Javan omat luokat Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.1 20.2 Java API Java-kielen Application Programming Interface (API)
Lisätiedot