812347A Olio-ohjelmointi, 2015 syksy 2. vsk. III Olioperusteinen ohjelmointi C++:lla

Koko: px
Aloita esitys sivulta:

Download "812347A Olio-ohjelmointi, 2015 syksy 2. vsk. III Olioperusteinen ohjelmointi C++:lla"

Transkriptio

1 812347A Olio-ohjelmointi, 2015 syksy 2. vsk III Olioperusteinen ohjelmointi C++:lla

2 Sisältö 1. Johdanto 2. Luokan määrittely ja jäsenten näkyvyys 3. Olion muodostaminen ja tuhoaminen 4. Saanti- ja asetusmetodit 5. Semantiikaltaan epätavalliset luokkien jäsenet 6. Koosteolioista ohjelmointi C++:lla 2

3 III.1 Johdanto Olioperusteinen ohjelmointi kapseloi luokkaan Jäsenmuuttujat eli attribuutit (datan, tilan) Metodit (datan käsittelyn, käyttäytymisen) Luokasta voidaan luoda useita ilmentymiä eli olioita Luokka määrittelee toimenpiteet, joita oliolle voi tehdä Luokkamääritys on täten myös tyyppimääritys ohjelmointi C++:lla 3

4 III.1 Johdanto (2) C++:ssa olio on samanlainen muuttuja kuin sisäisten tyyppien muuttuja Olio voi olla eliniältään 1. Automaattinen: kääntäjä huolehtii sen alustamisesta ja tuhoamisesta 2. Staattinen: määrittelyn jälkeen voimassa koko ohjelman suorituksen ajan 3. Dynaaminen: tuhoaminen on ohjelmoijan vastuulla Olio voidaan määritellä vakioksi lisäämällä oliomääritykseen avainsana const ohjelmointi C++:lla 4

5 III.2. Luokan määrittely ja jäsenten näkyvyys Yleensä erillisessä otsikkotiedostossa Luokkamääritys koostuu kolmesta osasta Avainsanasta class (myös struct tai union) Luokan nimestä Puolipisteeseen päättyvästä lohkosta: class LuokkaNimi { attribuuttien esittely metodien esittely }; // HUOMAA PUOLIPISTE! ohjelmointi C++:lla 5

6 III.2. Luokan määrittely ja jäsenten näkyvyys(2) Luokan sisällä esitellään luokan metodit (funktiot) ja määritellään attribuutit Lyhyet funktiot voi myös määritellä luokassa Luokkaan voidaan määritellä näkyvyydeltään kolmenlaisia jäseniä Julkisia (public) Suojattuja (protected) Yksityisiä (private) Luokka muodostaa samalla nimiavaruuden, joka kätkee jäsenten nimet Saman nimisiä jäseniä voidaan käyttää useassa eri luokassa ohjelmointi C++:lla 6

7 III.2.1 Julkiset jäsenet Julkiset jäsenet muodostavat luokan julkisen rajapinnan, jota kautta olioita voidaan käyttää Voidaan käyttää oliomuuttujan kautta piste- tai nuolinotaation avulla Kuten tietueen tietojäseniä Rajapinnan tulee olla tarpeeksi kattava Ei kuitenkaan liian monimutkainen Määritellään avainsanan public ja kaksoispisteen avulla määrittelylohko, joka on voimassa määrittelyn loppuun tai toisen näkyvyyslohkon määrittelyyn ohjelmointi C++:lla 7

8 III.2.2 Yksityiset jäsenet Voidaan käyttää vain luokan omissa jäsenfunktioissa Ei edes luokan aliluokissa, vaikka jäsenet periytyvätkin niille Suojatut (protected) jäsenet näkyvät aliluokissa, eivät luokkahierarkian ulkopuolella Määritellään avainsanan private ja kaksoispisteen avulla määrittelylohko, joka on voimassa määrittelyn loppuun tai toisen näkyvyyslohkon määrittelyyn Oletusnäkyvyys kun luokka on määritelty avainsanalla class ohjelmointi C++:lla 8

9 III.2.3 Jäsenmuuttujat ja jäsenfunktiot Jäsenmuuttuja on luokkaan määritelty muuttuja Kutsutaan myös attribuutiksi Attribuutit ovat kaikkien jäsenfunktioiden käytettävissä kuten funktioiden paikalliset muuttujat Hyvässä suunnittelutavassa luokissa ei yleensä määritellä julkisia attribuutteja Hyvin vähän suojattuja attribuutteja ohjelmointi C++:lla 9

10 III.2.3 Jäsenmuuttujat ja jäsenfunktiot (2) Jäsenfunktio on luokkaan määritelty funktio Sanotaan myös metodiksi Funktion koko nimi koostuu Luokan nimestä Näkyvyysoperaattorista (kahdesta kaksoispisteestä) Funktion nimestä Julkista jäsenfunktiota kutsutaan oliomuuttujan kautta, joko piste- tai nuolinotaation avulla ohjelmointi C++:lla 10

11 III.2.3 Jäsenmuuttujat ja jäsenfunktiot (3) this osoitin osoittaa käsiteltävään olioon Automaattisesti olemassa Sen tyyppi on Luokan_nimi* const this Välitetään näkymättömänä parametrina metodeille Käytetään enimmäkseen metodin paluuarvona Jos jäsenfunktiossa käytetään luokan attribuutin nimistä muuttujaa peittää jäsenfunktion paikallinen muuttuja attribuutin Tällöin attribuuttia käytetään this -osoittimen kautta ohjelmointi C++:lla 11

12 Esimerkki: Luokan määritys // Koodi: Ika.h #ifndef INCLUDED_IKA_H #define INCLUDED_IKA_H Luokkakaavio class Ika { public: long annaikapaivissa(); void asetaikapaivissa(long p); private: long paivia; }; #endif ohjelmointi C++:lla 12

13 Esimerkki: Metodien määritys // Ika.cpp #include Ika.h void Ika::asetaIkaPaivissa(long p) { paivia = p; } long Ika::annaIkaPaivissa() { return paivia; } ohjelmointi C++:lla 13

14 III.3 Olion muodostaminen ja tuhoaminen III.3.1 Muodostin eli konstruktori Luokan jäsenfunktio jolla ei ole paluuarvotyyppiä (ei edes void) jonka nimi on sama kuin luokan nimi Muodostimen avulla alustetaan olion attribuutit oliota luotaessa Kutsutaan automaattisesti olion luonnin yhteydessä Kutsun jälkeen olio on käyttökelpoinen ja ehjä Voi aiheuttaa poikkeuksen, jolloin oliota ei luoda ohjelmointi C++:lla 14

15 III.3.2 Oletusmuodostin Muodostin, jota voidaan kutsua ilman parametreja Muodostin, jolla ei ole parametreja tai kaikille parametreille on annettu oletusarvo Luokalla voi olla kerrallaan vain yksi oletusmuodostin Ellei ohjelmoija tee lainkaan muodostimia, kääntäjä generoi oletusmuodostimen Kääntäjän luoma oletusmuodostin ei tee mitään Tarvitaan yleensä luokassa ohjelmointi C++:lla 15

16 III.3.3 Alustuslista Muodostimen määrittelyyn voidaan liittää alustuslista Tällöin attribuuttien arvot asetetaan niiden määrittelyiden yhteydessä Sijoitetaan muodostimen parametriluettelon jälkeen ennen sen runkoa Alkaa kaksoispisteellä ja sisältää pilkulla erotettuna attribuutit, joiden alkuarvoksi tulee attribuutin yhteydessä olevien sulkeiden sisällä oleva arvo Alustuslistaa tarvitaan kun alustettava attribuutti on vakio, kun attribuutin tyyppi on viittaustyyppinen, yliluokkien alustamisen yhteydessä. ohjelmointi C++:lla 16

17 Esimerkki: Muodostimien esittely class Ika { public: Ika(); Ika(long paivia); Ika(const PaivaMaara&, const PaivaMaara&); void asetaikapaivissa(long paivia); long annaikapaivissa(); private: long paivia; }; ohjelmointi C++:lla 17

18 Esimerkki: Muodostimien määrittely ja alustuslista #include Ika.h Ika::Ika() { // Oletustoimenpiteet } Ika::Ika(long p) : paivia(p) // Alustuslista { } Ika::Ika(const PaivaMaara& nyt, const PaivaMaara& syntymapaiva){ // Laske päivien lukumäärä } ohjelmointi C++:lla 18

19 III.3.4 Kopiointimuodostin Kopiointimuodostimen avulla saman tyyppisestä oliosta alustetaan uusi olio Ilman eksplisiittistä kopiointimuodostinta kääntäjä tekee automaattisesti sellaisen tarvittaessa Kopioi jokaisen attribuutin yksi kerrallaan Jos kääntäjän tekemä kopiointimuodostin ei ole semanttisesti järkevä joudutaan laatimaan itse Tarvitaan varsinkin jos attribuutit ovat osoitintyyppisiä Muotoa Luokka::Luokka(const Luokka&); ohjelmointi C++:lla 19

20 III.3.5 Sijoitusoperaattori Kopiointimuodostimen pari Jos kopiointimuodostin tai sijoitusoperaattori on määritelty pitää yleensä toinenkin määritellä Muotoa Luokka& operator=(const Luokka&); ohjelmointi C++:lla 20

21 Esimerkki: Sijoitusoperaattori // Piste.h class Piste { private: double x_coord; double y_coord; public: Piste(double x,double y); Piste(const Piste& p); Piste& operator=(const Piste& p); }; ohjelmointi C++:lla 21

22 Esimerkki: Sijoitusoperaattori (2) #include Piste.h Piste::Piste(double x, double y):x_coord(x),y_coord(y){} Piste::Piste(const Piste& p){ x_coord = p.x_coord; y_coord = p.y_coord; } Piste& Piste::operator=(const Piste& p){ if(this == &p) return *this; x_coord = p.x_coord; y_coord = p.y_coord; return *this; } ohjelmointi C++:lla 22

23 III.3.6 Olion muodostamisen estäminen Jossakin tilanteessa olioiden suora muodostaminen ei ole mielekästä Olioiden muodostaminen voidaan estää määrittelemällä muodostimet yksityisiksi jäseniksi Muodostaminen suoraan aiheuttaa käännösaikaisen virheilmoituksen Kopioiden tekeminen voidaan estää esittelemällä yksityinen kopiomuodostin ja sijoitusoperaattori, mutta jättämällä määrittelemättä Tällöin kääntäjä ei tee oletustoteutusta niille ja käyttäminen aiheuttaa käännösaikaisen virheilmoituksen ohjelmointi C++:lla 23

24 III.3.7 Olion tuhoaminen: Hajotin Jäsenfunktio, jota kutsutaan automaattisesti kun olio tuhotaan Hajottimen nimi koostuu merkistä ~ ja luokan nimestä Ei tyyppiä, ei parametreja Luokassa voi olla vain yksi hajotin Hajottimen käyttötarkoitus: vapautetaan resurssit, jotka otettiin käyttöön oliota luotaessa Hajottimen jälkeen kutsutaan kunkin attribuutin hajotinta käänteisessä järjestyksessä Huom: Jos attribuutti on osoitintyyppinen sen hajotin tuhoaa vain osoittimen, ei sen osoittamaa muistia Hajotin EI SAA KOSKAAN aiheuttaa poikkeusta ohjelmointi C++:lla 24

25 III.3.8 Dynaamisesta muistinhallinnasta Tarkoittaa kekodynaamisen muistin käyttöä Varaaminen kekomuistista/vapauttaminen operaattoreilla new/delete new palauttaa osoittimen varattuun muistiin -> paluuarvo tietotyypiltään osoitin varattavan olion tai muuttujan tyyppiin new: kutsutaan automaattisesti tyypin muodostinta delete : kutsutaan automaattisesti tyypin hajotinta Olio* obj = new Olio(); //... sometime later: delete obj; ohjelmointi C++:lla 25

26 III Dynaamiset taulukot Perustietotyypin taulukot: double *lukutaulu; // Osoitin taulukon 1. alkioon lukutaulu = new double[100]; // Taulukon varaaminen lukutaulu[10] = 1.0; // Taulukkoon sijoittaminen delete[] lukutaulu // Taulukon tuhoaminen Oliotaulukot: Oliot luodaan samalla kuin taulukkokin Luokalla oltava oletusmuodostin MyType * array = new MyType[100]; //... delete [] array; ohjelmointi C++:lla 26

27 III.4 Saanti- ja asetusmetodit Jäsenmuuttujat tavallisesti private-tyyppisiä, jotta olion tilaa ei voi vahingossa sotkea -> Jäsenmuuttujien arvoja ei voi suoraan lukea tai muuttaa HUOM! Public-tyyppisiä jäsenmuuttujia käytettävä vain erityisissä tilanteissa! Mikäli jäsenmuuttujan arvoa tarvitaan luokan ulkopuolella, kirjoitettava julkinen saantimetodi (getter), joka palauttaa muuttujan arvon Mikäli jäsenmuuttujan arvoa muutettava luokan ulkopuolelta, kirjoitettava julkinen asetusmetodi (setter), joka asettaa muuttujan arvon ja valvoo että sijoitus on laillinen ohjelmointi C++:lla 27

28 III.5 Semantiikaltaan epätavalliset luokkien jäsenet Luokkiin voi määritellä seuraavan laisia tietojäseniä, joiden semantiikka on erilainen kuin normaalien tietojäsenten: 1. Vakiojäsenet 2. Viittausattribuutit 3. Luokkajäsenet 4. Vakiomuotoiset luokka-attribuutit ohjelmointi C++:lla 28

29 III Vakiomuotoiset attribuutit Luokan attribuutteja joita ei voi muuttaa määrittelyn jälkeen Alustettava muodostimen alustuslistassa Määritellään lisäämällä attribuutin tyypin eteen constavainsana ohjelmointi C++:lla 29

30 III Vakiomuotoiset metodit Metodeja, jotka eivät voi muuttaa olion tilaa (attribuuttien arvoja) Voidaan kutsua olioille, jotka ovat vakio-olioita Vakiomuotoisuus kuuluu jäsenfunktion tyyppiin Voidaan siis ylikuormittaa funktio sekä normaaliksi että vakiomuotoiseksi Vakiomuotoinen jäsenfunktio esitellään ja määritellään lisäämällä parametriluettelon perään avainsana const Vakiometodin this-osoitin muotoa const TYYPPI* ohjelmointi C++:lla 30

31 III.5.2 Viittausmuotoiset attribuutit Alustettava aina muodostimessa Alustamisen tapahduttava alustuslistassa Alustuslistan ulkopuolella muutetaan aina viittausattribuutin kohteen arvoa Ei siis viittausattribuutin arvoa ohjelmointi C++:lla 31

32 III.5.3 Luokkajäsenet Kaikille luokan olioille yhteisiä jäseniä Määritellään C++:ssa avainsanalla static Luokkajäseniin voidaan viitata suoraan ilman oliota luokan nimellä Luokka::jäsen Näkyvyyssäännöt koskevat myös luokkajäseniä, esimerkiksi yksityisiä luokkajäseniä voidaan käyttää vain luokan metodeissa Luokkametodia kutsuttaessa ei tarvita luokasta oliota Luokkametodi voi viitata vain luokan toisiin luokkajäseniin Luokka-attribuutteihin Luokkametodeihin ohjelmointi C++:lla 32

33 III.6 Koosteolioista Olio voi koostua muista olioista Olioiden välillä koostumussuhde Muista olioista koostuva olio on koosteolio Koosteolioon sisältyvä olio on osaolio Jos luokka käyttää toista luokkaa hyväkseen, se käyttää hyväkseen luokan tarjoamia palveluja eli delegoi Oletusarvoisesti käyttää vain julkista rajapintaa Delegointi mallintaa HAS-A suhteen ohjelmointi C++:lla 33

34 III.6 Koosteolioista (2) Koostamisessa on mahdollista sisällyttää monta tietyn luokan oliota Periytymisessä vain yksi olio Koosteolio toteutetaan määrittelemällä osaolio attribuuttina muuttujatyyppisenä, viittaustyyppisenä tai osoitintyyppisenä ohjelmointi C++:lla 34

35 III.6.1 Olio muuttujatyyppisenä attribuuttina Koosteolion ja olioattribuutin elinikä yhtä pitkät Koosteolion määrittelyn tilanvarauksessa luodaan samaan tilaan myös olioattribuutti Kun koosteolion olemassaolo lakkaa, lakkaa myös olioattribuutin olemassaolo. class OsaLuokka { public: private: }; class KoosteLuokka{ public: private: OsaLuokka osa; }; ohjelmointi C++:lla 35

36 Olio muuttujatyyppisenä attribuuttina : Esimerkki Luokkakaavio ohjelmointi C++:lla 36

37 Olio muuttujatyyppisenä attribuuttina : Esimerkki (2) class Henkilo { private: std::string etunimi; std::string sukunimi; std::string sotu; public: Henkilo(std::string en, std::string sn, std::string stu); ~Henkilo(){}; }; class Kirja{ private: std::string nimi; Henkilo tekija; std::string isbn; public: void print(std::ostream &os) const; Kirja(std::string n, const Henkilo &h, std::string isb); ~Kirja(){}; }; ohjelmointi C++:lla 37

38 Olio muuttujatyyppisenä attribuuttina: Esimerkki (3) Kirja::Kirja(std::string n, const Henkilo &h,std::string isb): nimi(n),tekija(h),isbn(isb) {} void Kirja::print(std::ostream &os) const { os << tekija.getetunimi() << " " << tekija.getsukunimi() <<":"<< std::endl; os << nimi << std::endl; os << "ISBN: " << isbn; } ohjelmointi C++:lla 38

39 III.6.2 Olio dynaamisena attribuuttina Voidaan toteuttaa myös löyhä sidos tai luokkien välinen assosiaatio Samaan osaolioon voi olla viittaus tai osoitin monesta koosteoliosta Osaoliota ei saa tuhota ennen kuin kaikki viittaukset poistuneet Yleensä toteutetaan jokin dynaaminen ominaisuus Voidaan vaihtaa olion olemassaolon aikana ohjelmointi C++:lla 39

40 Olio dynaamisena attribuuttina: Esimerkki class Kurssi { private: std::string nimi; Henkilo* popettaja; // Dynaaminen attribuutti int pisteet; }; public: void print(std::ostream &os) const; Kurssi(std::string n,const Henkilo &ope, int credits); Kurssi(const Kurssi &k); Kurssi& operator=(const Kurssi& k); ~Kurssi(); ohjelmointi C++:lla 40

41 Olio dynaamisena attribuuttina: Esimerkki (2) Konstruktori ja destruktori Kurssi::Kurssi(std::string n, const Henkilo &ope, int credits): nimi(n),pisteet(credits){ popettaja = new Henkilo(ope); } Kurssi::~Kurssi(){ if (popettaja!= 0) delete popettaja; } ohjelmointi C++:lla 41

42 Olio dynaamisena attribuuttina: Esimerkki (3) Kopiomuodostin ja sijoitusoperaattori Kurssi::Kurssi( const Kurssi &k){ nimi = k.nimi; pisteet = k.pisteet; Kurssi& Kurssi:: operator=(const Kurssi& k){ if (this == &k) return *this; if(k.popettaja!= 0) popettaja = new Henkilo(*(k.pOpettaja)); else popettaja = 0; } } nimi = k.nimi; pisteet = k.pisteet; if(popettaja!= 0) delete popettaja; popettaja = new Henkilo(*(k.pOpettaja)); return *this; ohjelmointi C++:lla 42

Olio-ohjelmointi Olioperusteinen ohjelmointi C++-kielellä. 1. Johdanto

Olio-ohjelmointi Olioperusteinen ohjelmointi C++-kielellä. 1. Johdanto Olio-ohjelmointi Olioperusteinen ohjelmointi C++-kielellä Tässä osassa käsitellään olioperusteista (object-based) ohjelmointia, ts. olio-ohjelmointia ilman periytymisen hyödyntämistä. Olio-ohjelmoinnin

Lisätiedot

Luokassa määriteltävät jäsenet ovat pääasiassa tietojäseniä tai aliohjelmajäseniä. Luokan määrittelyyn liittyvät varatut sanat:

Luokassa määriteltävät jäsenet ovat pääasiassa tietojäseniä tai aliohjelmajäseniä. Luokan määrittelyyn liittyvät varatut sanat: 1. Luokan jäsenet Luokassa määriteltävät jäsenet ovat pääasiassa tietojäseniä tai aliohjelmajäseniä. Luokan määrittelyyn liittyvät varatut sanat: class luokan_nimi tyypit: enum, struct, class, typedef

Lisätiedot

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

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys) 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

Lisätiedot

T Olio-ohjelmointi Osa 3: Luokka, muodostin ja hajotin, this-osoitin Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

T 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ätiedot

Osion kaksi kertaus. Jukka Juslin. Jukka Juslin

Osion kaksi kertaus. Jukka Juslin. Jukka Juslin Osion kaksi kertaus Jukka Juslin Sisältö Taulukot ja Stringit Luokkien kirjoittaminen Oletusmuodostin UML Taulukot Taulukot luodaan Java-kielessä seuraavanlaisesti: int [] arvosanat = {1,2,3,4,5}; Taulukon

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

Luokan muodostimet (Constructors)

Luokan muodostimet (Constructors) Mikä on muodostin? Luokan muodostimet (Constructors) Millaisia muodostimia on? Oletusmuodostin (Default Constructor) Parametrillinen muodostin Kopiointimuodostin (Copy Constructor) this-muuttuja Miten

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

5 Olio-ohjelmointi 133

5 Olio-ohjelmointi 133 5 Olio-ohjelmointi 133 5. Olio-ohjelmointi Edellisissä luvuissa opittiin kirjoittamaan ohjelmia, joissa käytetään C# -kielen perustietotyyppejä, kuten int, double, float ja rakenteita, kuten operaattoreita,

Lisätiedot

Olio-ohjelmointi Syntaksikokoelma

Olio-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ätiedot

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

on 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ätiedot

UML ja luokkien väliset suhteet

UML 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ä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

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

Mallit standardi mallikirjasto parametroitu tyyppi

Mallit standardi mallikirjasto parametroitu tyyppi Mallit 18 Mallit Malli on tehokas mekanismi uusien luokkien generoimiseksi automaattisesti. Standardikirjaston suuri osa, standardi mallikirjasto, rakentuu kokonaan mallien määrittelymahdollisuuden ympärille,

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

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

Sisä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ätiedot

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

Sisä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ätiedot

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU Ohjelmointi 2 Jussi Pohjolainen TAMK» Tieto- ja viestintäteknologia Tietotyypeistä C++ - kielessä useita tietotyyppejä Kirjaimet: char, wchar_t Kokonaisluvut: short, int, long Liukuluvut: float, double

Lisätiedot

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta C++ - perusteet Java-osaajille luento 5/7: operaattoreiden ylikuormitus, oliotaulukko, parametrien oletusarvot, komentoriviparametrit, constant, inline, Operaattoreiden ylikuormitus Operaattoreiden kuormitus

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

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

Sisä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ätiedot

String-vertailusta ja Scannerin käytöstä (1/2) String-vertailusta ja Scannerin käytöstä (2/2) Luentoesimerkki 4.1

String-vertailusta ja Scannerin käytöstä (1/2) String-vertailusta ja Scannerin käytöstä (2/2) Luentoesimerkki 4.1 String-vertailusta ja Scannerin käytöstä (1/2) Vertailuja tehdessä törmätään usein tilanteeseen, jossa merkkijonoa (esimerkiksi merkkijonomuuttujaa) pitää vertailla toiseen merkkijonoon. Tällöin tavanomainen

Lisätiedot

Oliot viestivät metodeja kutsuen

Oliot 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ätiedot

Luokat. Luokat ja olio-ohjelmointi

Luokat. Luokat ja olio-ohjelmointi Luokat 12 Luokat Tässä luvussa laajennamme edellisessä luvussa käsittelemäämme struktuurityyppiä ja siirrymme yhteen C++-ohjelmoijan kaikkein tärkeimmistä välineistä: luokkiin. Käsittelemme myöskin joitakin

Lisätiedot

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

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Pakkaukset ja määreet Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Pakkaukset ja määreet Pakkaukset ja määreet Toisiinsa liittyvät luokkatiedostot voidaan koota pakkauksiksi. Luo hierarkiaa ja järjestystä ohjelmistotuotteeseen.

Lisätiedot

public static void main (String [] args)

public 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ätiedot

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

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

7. Oliot ja viitteet 7.1

7. Oliot ja viitteet 7.1 7. Oliot ja viitteet 7.1 Sisällys Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden sijoitus. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona. Viite metodin

Lisätiedot

Tietueet. Tietueiden määrittely

Tietueet. Tietueiden määrittely Tietueet Tietueiden määrittely Tietue on tietorakenne, joka kokoaa yhteen eri tyyppistä tietoa yhdeksi asiakokonaisuudeksi. Tähän kokonaisuuteen voidaan viitata yhteisellä nimellä. Auttaa ohjelmoijaa järjestelemään

Lisätiedot

Javan perusteita. Janne Käki

Javan 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ä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

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

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

Sisä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ätiedot

UNIVERSITY OF OULU DEPARTMENT OF INFORMATION PROCESSING SCIENCE

UNIVERSITY OF OULU DEPARTMENT OF INFORMATION PROCESSING SCIENCE 1 UNIVERSITY OF OULU DEPARTMENT OF INFORMATION PROCESSING SCIENCE OPETUSMONISTEET SARJA C11 JUUSTILA ANTTI KETTUNEN HARRI KILPI TEEMU RÄISÄNEN TONI VESANEN ARI C++- OHJELMOINTIKURSSIN OHEISMATERIAALI ISBN

Lisätiedot

Osa III. Olioiden luominen vapaalle muistialueelle

Osa III. Olioiden luominen vapaalle muistialueelle Osa III 10. oppitunti Kehittyneet osoittimet Eräs tehokkaimpia C++ -työkaluja on mahdollisuus käsitellä tietokoneen muistia suoraan osoittimien avulla. Tässä luvussa käsitelläänkin seuraavia aiheita: Kuinka

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

9. Periytyminen Javassa 9.1

9. 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ätiedot

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IV Periytyminen ja monimuotoisuus

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IV Periytyminen ja monimuotoisuus 812347A Olio-ohjelmointi, 2015 syksy 2. vsk IV Periytyminen ja monimuotoisuus Sisältö 1. Periytyminen 2. Johdanto monimuotoisuuteen 3. Ylikuormittaminen 4. Uudelleenmäärittely 5. Muuttujien monimuotoisuus

Lisätiedot

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

4. Luokan testaus ja käyttö olion kautta 4.1 4. Luokan testaus ja käyttö olion kautta 4.1 Olion luominen luokasta Java-kielessä olio määritellään joko luokan edustajaksi tai taulukoksi. Olio on joukko keskusmuistissa olevia tietoja. Oliota käsitellään

Lisätiedot

C++11 Syntaksi. Jari-Pekka Voutilainen Jari-Pekka Voutilainen: C++11 Syntaksi

C++11 Syntaksi. Jari-Pekka Voutilainen Jari-Pekka Voutilainen: C++11 Syntaksi 1 C++11 Syntaksi Jari-Pekka Voutilainen 13.4.2012 2 Range-for Iteroi säiliön kaikki alkiot for-silmukassa. Säiliöltä vaaditaan begin- ja end-iteraattorit. Pätee kaikille C++11 STL-säiliöille, taulukoille,

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

Vahva koostumussuhde (Composition)

Vahva 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ä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

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

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

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

Rakenteiset tietotyypit Moniulotteiset taulukot

Rakenteiset tietotyypit Moniulotteiset taulukot C! Rakenteiset tietotyypit Moniulotteiset taulukot 22.2.2018 Agenda Rakenteiset tietotyypit Vilkaisu 6. kierroksen tehtäviin Moniulotteiset taulukot Esimerkki Seuraava luento to 8.3. Ilmoittautuminen ohjelmointikokeeseen

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

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

815338A Ohjelmointikielten periaatteet

815338A Ohjelmointikielten periaatteet 815338A Ohjelmointikielten periaatteet 2015-2016 V Abstraktit tietotyypit ja olioohjelmointi Sisältö I. Abstraktit tietotyypit II. 1. Johdatus abstrakteihin tietotyyppeihin 2. Abstraktit tietotyypit Adassa

Lisätiedot

C++ rautaisannos. Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout:

C++ rautaisannos. Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout: C++ rautaisannos Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout: # include #include main ( ) main (

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

Ohjelman virheet ja poikkeusten käsittely

Ohjelman virheet ja poikkeusten käsittely Ohjelman virheet ja poikkeusten käsittely 17 Ohjelman virheet ja poikkeusten käsittely Poikkeukset ovat tapa ilmoittaa virheistä ja odottamattomista tilanteista C++-ohjelmassasi. Poikkeusten käyttö virheiden

Lisätiedot

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä Sisälls 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen.. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona.. Muuttumattomat ja muuttuvat merkkijonot.

Lisätiedot

9. Periytyminen Javassa 9.1

9. 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ätiedot

14. oppitunti. Operaattorin ylikuormitus. Osa. Operaattorin ylikuormittaminen

14. oppitunti. Operaattorin ylikuormitus. Osa. Operaattorin ylikuormittaminen Osa IV 14. oppitunti Operaattorin ylikuormitus Edellisessä luvussa opit ylikuormittamaan metodeita ja luomaan kopiomuodostimen, joka tekee syvän kopion. Tässä luvussa käsitellään seuraavia aiheita: Kuinka

Lisätiedot

11. oppitunti III. Viittaukset. Osa. Mikä on viittaus?

11. oppitunti III. Viittaukset. Osa. Mikä on viittaus? Osa III 11. oppitunti Viittaukset Kahdessa viime luvussa opit käyttämään osoittimia kohteiden käsittelyyn vapaalla muistialueella sekä viittaamaan noihin kohteisiin epäsuorasti. Tässä luvussa käsiteltävät

Lisätiedot

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä 812347A Olio-ohjelmointi, 2015 syksy 2. vsk X Poikkeusten käsittelystä Sisältö 1. Yleistä poikkeusten käsittelystä 2. Poikkeuskäsittelyn perusteita C++:ssa 3. Standardissa määritellyt poikkeukset 4. Poikkeusvarmuus

Lisätiedot

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

812341A 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ätiedot

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Sisä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ätiedot

Periytyminen (inheritance)

Periytyminen (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ätiedot

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

Sisä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ätiedot

1. Omat operaatiot 1.1

1. 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ätiedot

Kooste. Esim. Ympyrän keskipiste voidaan ajatella ympyrän osaksi.

Kooste. 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ätiedot

815338A Ohjelmointikielten periaatteet 2014-2015

815338A Ohjelmointikielten periaatteet 2014-2015 815338A Ohjelmointikielten periaatteet 2014-2015 X Skriptiohjelmointi Sisältö 1. Johdanto 2. Skriptikielten yleispiirteitä 3. Python 815338A Ohjelmointikielten periaatteet, Skriptiohjelmointi 2 X.1 Johdanto

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

Sisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance)

Sisä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ätiedot

14. Poikkeukset 14.1

14. 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ätiedot

Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Ta

Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Ta 22. Taulukot 22.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.2 Yleistä

Lisätiedot

KOHDELUOKAN MÄÄRITTELY

KOHDELUOKAN 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ätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 22. huhtikuuta 2016 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille! Kirjoittamasi luokat, funktiot ja aliohjelmat

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

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

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

Opintojakso 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ä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

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

Sisä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ätiedot

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. V Geneerisyys

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. V Geneerisyys 812347A Olio-ohjelmointi, 2015 syksy 2. vsk V Geneerisyys Sisältö 1. Johdanto geneerisyyteen 2. Geneeriset funktiot 3. Geneeriset luokat 4. Standard Template Library (STL) 5. IOStream-kirjasto 812347A

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

Tässä dokumentissa kuvataan Keimo-projektissa sovellettavia ohjelmointikäytäntöjä. Päivämäärä 10.11.2002 Projektiryhmä Keimo keimo-dev@list.hut.

Tässä dokumentissa kuvataan Keimo-projektissa sovellettavia ohjelmointikäytäntöjä. Päivämäärä 10.11.2002 Projektiryhmä Keimo keimo-dev@list.hut. T-76.115 Tietojenkäsittelyopin ohjelmatyö Sisältö Tässä dokumentissa kuvataan Keimo-projektissa sovellettavia ohjelmointikäytäntöjä. Päivämäärä 10.11.2002 Projektiryhmä Keimo keimo-dev@list.hut.fi Kirjoittajat

Lisätiedot

Geneeriset luokat. C++ - perusteet Java-osaajille luento 6/7: Template, tyyppi-informaatio, nimiavaruudet. Geneerisen luokan käyttö.

Geneeriset luokat. C++ - perusteet Java-osaajille luento 6/7: Template, tyyppi-informaatio, nimiavaruudet. Geneerisen luokan käyttö. Geneeriset luokat C++ - perusteet Java-osaajille luento 6/7: Template, tyyppi-informaatio, nimiavaruudet Geneerinen luokka tarkoittaa parametroitua luokkamallia, jonka avulla voidaan muodostaa useita,

Lisätiedot

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VII Suunnittelumallit Adapter ja Composite

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VII Suunnittelumallit Adapter ja Composite 2015 syksy 2. vsk VII Suunnittelumallit Adapter ja Composite Sisältö 1. Johdanto rakennemalleihin 2. Adapter (Sovitin) 3. Composite (Rekursiokooste) Suunnittelumallit Adapter ja Composite 2 VII.1 Johdanto

Lisätiedot

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

Yleistä. 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ä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

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

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

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

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

Sisä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ätiedot

Operaattoreiden uudelleenmäärittely

Operaattoreiden uudelleenmäärittely Operaattoreiden uudelleenmäärittely 14 Operaattoreiden uudelleenmäärittely Tässä luvussa käsittelemme, kuinka voit lisätä toiminnallisuutta luokkiisi, jotta ne toimivat enemmän C++:n perustietotyyppien

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

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

Lisätiedot

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

Sisä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ätiedot

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Sisä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ätiedot

14. Poikkeukset 14.1

14. 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ä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

21. oppitunti. Esikäsittelijä. Osa. Esikäsittelijä ja kääntäjä

21. oppitunti. Esikäsittelijä. Osa. Esikäsittelijä ja kääntäjä Osa VI 21. oppitunti Esikäsittelijä Lähdekooditiedostoihin kirjoitetaan pääosin C++ -koodia. Ne käännetään kääntäjän toimesta ajettaviksi ohjelmiksi. Ennen kääntäjän osallisuutta ajetaan kuitenkin esikäsittelijä,

Lisätiedot

16. Javan omat luokat 16.1

16. 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ätiedot

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Sisä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ä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