812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IV Periytyminen ja monimuotoisuus
|
|
- Martta Kivelä
- 7 vuotta sitten
- Katselukertoja:
Transkriptio
1 812347A Olio-ohjelmointi, 2015 syksy 2. vsk IV Periytyminen ja monimuotoisuus
2 Sisältö 1. Periytyminen 2. Johdanto monimuotoisuuteen 3. Ylikuormittaminen 4. Uudelleenmäärittely 5. Muuttujien monimuotoisuus 6. Multimetodit ja double dispatch monimuotoisuus 2
3 IV.1 Periytyminen Uudelleenkäytetään olemassaolevan luokan ominaisuuksia määriteltäessä uutta luokkaa Periytyvää luokkaa kutsutaan kantaluokaksi, perivää luokkaa aliluokaksi Periytymissuhteista muodostuu luokkahierarkia C++ tukee moniperiytymistä Perivä luokka perii useamman kantaluokan C++:ssa kolmen tyyppistä periytymistä Julkinen periytyminen Suojattu periytyminen Yksityinen periytyminen monimuotoisuus 3
4 IV.1.1 Julkinen periytyminen Tulee käyttää, kun perivää tyyppiä voidaan käyttää aina samassa yhteydessä kuin kantaluokkaa IS-A, WORKS-LIKE-A - periytyminen Tyyppiperiytyminen Perii sekä liittymän että toteutustavan Periytyminen näkyy luokkahierarkiasta ulospäin Yleisin periytymisen muoto Javassa ainoa monimuotoisuus 4
5 IV Julkinen periytyminen ja näkyvyys Kantaluokan yksityiset (private) jäsenet eivät näy aliluokassa Periytyvät kuitenkin Ei voi siis käyttää suoraan Kantaluokan suojatut (protected) ja julkiset (public) jäsenet näkyvät aliluokassa Voidaan siis käyttää suoraan Jäsenten näkyvyys myös säilyy samana periytymisessä monimuotoisuus 5
6 Esimerkki julkisesta periytymisestä class A { public: void f(int); }; class B: public A // B perii luokan A { public: void f(double); }; monimuotoisuus 6
7 Esimerkki julkisesta periytymisestä (2) A a; B b; double x = 1.0; a.f(x); b.f(x); // Kutsuu A::f(int) // Kutsuu B::f(double) monimuotoisuus 7
8 Periytyminen graafisesti ColoredPoint Point -double x_coord -double y_coord -int color ColoredPoint perii Point-luokan ColoredPoint-olio sisältää Pointluokan olion monimuotoisuus 8
9 IV Periytyminen ja muodostimet Kantaluokan jotakin muodostinta kutsutaan aina ensimmäiseksi kun aliluokan muodostinta kutsutaan Olio rakennetaan kantaluokasta aliluokkaa kohti Ellei aliluokan muodostimessa eksplisiittisesti kutsuta kantaluokan muodostinta, niin kutsutaan automaattisesti kantaluokan oletusmuodostinta Jos luokalla ei ole julkisia tai suojattuja muodostimia niin sitä ei voida käyttää kantaluokkana monimuotoisuus 9
10 IV Periytyminen ja hajotin Kun aliluokan olio tuhotaan, aliluokan hajotinta kutsutaan ensin ja sitten kantaluokan hajotinta Olio tuhotaan aliluokasta kantaluokkaa kohti monimuotoisuus 10
11 Esimerkki muodostimista class Kanta{ public: Kanta() {...} protected: Kanta(int i) {...} private: }; class Ali : public Kanta{ public: Ali(); Ali(int i); ); monimuotoisuus 11
12 Esimerkki muodostimista (2) Ali::Ali() // implisiittinen Kanta() -kutsu { } Ali::Ali(int i) : Kanta(i) // eksplisiittinen Kanta(int) -kutsu { } monimuotoisuus 12
13 IV.1.2 Toteutustavan periytyminen Joko yksityinen tai suojattu periytyminen Yksityinen periytyminen Kantaluokan (kantaluokkien) kaikki jäsenet ovat yksityisiä alaluokassa. public -> private protected -> private Kantaluokan yksityiset jäsenet eivät ole käytettävissä Suojattu periytyminen Kantaluokan (kantaluokkien) kaikki jäsenet ovat yksityisiä alaluokassa. public -> protected protected -> private Kantaluokan yksityiset jäsenet eivät ole käytettävissä monimuotoisuus 13
14 IV.1.3. Moniperiytyminen Moniperiytymisessä luokka perii useamman kantaluokan täsmälleen samoin kuin yksinkertaisessa perinnässä -> aliluokalla on useampi kantaluokka Johdettu luokka sisältää kantaluokan aliolion jokaisesta sen kantaluokasta Ensimmäisiä lisäominaisuuksia C++:aan C++:ssa olioilla ei yhteistä kantaluokkaa -> moniperintä katsottiin välttämättömäksi säiliöiden toteuttamiseksi monimuotoisuus 14
15 IV.1.3. Moniperiytyminen (2) Kantaluokkien muodostimia kutsutaan siinä järjestyksessä kuin ne on määritelty kantaluokiksi Hajottimien kutsujärjestys on päinvastainen A B C A B C A B Muodostin C C B A Hajotin monimuotoisuus 15
16 IV.1.3. Moniperiytyminen: Esimerkki class ZooAnimal{ public: virtual ~ZooAnimal() {} }; class Bear : public ZooAnimal{}; class Endangered {}; class Panda: public Bear, public Endangered{}; int main() { Panda p; // Muodostimien kutsut: // ZooAnimal, Bear, Endangered, Panda } // Hajottimien kutsut: // ~Panda, ~Endangered, ~Bear, ~ZooAnimal monimuotoisuus 16
17 IV Erotteleva ja yhdistävä moniperiytyminen Oletusarvoisesti C++:ssa moniperiytyminen erottelevaa: class Kanta { // JNE class EkaSolmu: public Kanta { // JNE class TokaSolmu: public Kanta { // JNE class Ali: public EkaSolmu, public TokaSolmu { //JNE Ali-luokka sisältää kaksi ilmentymää Kanta-luokan tiedoista monimuotoisuus 17
18 IV Erotteleva ja yhdistävä moniperiytyminen (2) Voidaan käyttää myös virtuaalista eli yhdistävää moniperiytymistä: class Kanta { // JNE class EkaSolmu: public virtual Kanta { // JNE class TokaSolmu: public virtual Kanta { // JNE class Ali: public EkaSolmu, public TokaSolmu { //JNE Nyt Ali-luokassa vain yksi ilmentymä Kanta-luokan tiedoista monimuotoisuus 18
19 IV Virtuaalinen moniperiytyminen graafisesti B C A A A B C D Tavallinen, erotteleva moniperiytyminen D Virtuaalinen, yhdistävä moniperiytyminen monimuotoisuus 19
20 IV Vertailua Javaan Javassa ei moniperiytymistä Javassa luokkien lisäksi rajapintoja (interface) Rajapinnat sisältävät vain metodien esittelyjä, ei toiminnallisuutta Javan luokka voi periä yhden luokan mutta toteuttaa (implements) sen lisäksi useita rajapintoja Luokkaan toteutetaan rajapinnan esittelemät metodit C++:ssa ei rajapinnan käsitettä Voidaan toteuttaa tekemällä luokka, jossa vain puhtaasti virtuaalisia metodeja monimuotoisuus 20
21 IV.2. Johdanto monimuotoisuuteen Olio-ohjelmoinnin kolme tukipilaria: 1. Tiedon kapselointi ja kätkentä 2. Periytyminen 3. Monimuotoisuus Monimuotoisuus (polymorfismi): Olion kyky reagoida samaan viestiin eri lailla tilanteesta riippuen Termillä ei yhtä yksikäsitteistä määritelmää Ehkä tyypillisin olio-ohjelmointiparadigman ominaisuus monimuotoisuus 21
22 IV.2.1 Monimuotoisuuden ilmenemismuodot 1. Operaation ylikuormittaminen Tavallisimmin: Useampia samannimisiä funktioita samassa moduulissa 2. Operaation uudelleenmäärittely Sama metodi yli- ja aliluokissa 3. Muuttujien monimuotoisuus Sama muuttuja voi viitata eri tyyppisiin olioihin 4. Geneerisyys Tyyppiriippumattomuus, tyypit parametreina Käsitellään myöhemmin monimuotoisuus 22
23 IV.3. Ylikuormittaminen (Overloading) Metodin (funktion) nimi on monimuotoinen, ts. samannimisellä metodilla useita toteutuksia Poikkeavat parametrilistaltaan tai Ovat eri näkymäalueessa Kääntäjä päättelee kutsun parametrien perusteella, mihin toteutuksen sidotaan Staattinen monimuotoisuuden muoto Toteuttamiseen ei tarvita oliokieltä monimuotoisuus 23
24 IV.3.1 Ylikuormittaminen näkymäalueen suhteen Luokka muodostaa näkymäalueen -> eri luokissa voi olla samannimisiä ja samantyyppisiä metodeja Ei edellytetä semanttista yhteyttä metodien välillä class DialogWindow { public: void draw() {} }; class Artist { public: void draw(){} }; Näkymäalueen suhteen ylikuormitetut metodit Tästä eteenpäin käsitellään ylikuormittamista parametrien suhteen! monimuotoisuus 24
25 IV.3.2 Konstruktorin ylikuormittaminen Erittäin yleistä, esim. Javan String-luokan konstruktoreita: String()... an empty character sequence. String(char[] value)... represents the sequence of characters currently contained in the character array argument. String(String original)...initializes a newly created String object so that it represents the same sequence of characters as the argument. -> Voidaan luoda String-olioita mm. seuraavasti: String s = new String(); // s = char merkit[] = { h, e, i }; String t = new String(merkit); // t = hei String u = new String(t); // u = hei monimuotoisuus 25
26 IV.3.3 Operaattoreiden ylikuormittaminen Kielen operaattoreiden laajentaminen omille tyypeille Parantaa ohjelman luettavuutta, mikäli operaattorin semantiikkaa ei muuteta Esimerkki: Kirjoitettu luokka Piste, joka mallintaa tason pisteitä. Halutaan käyttää operaattoria + pisteiden yhteenlaskuun: Piste p(2,3); Piste q(4,5); Piste r = p+q; // r = (6,8); Onnistuuko? Javassa ei sallittu monimuotoisuus 26
27 IV.3.3 Operaattoreiden ylikuormittaminen (2) C++:ssa operaattorit funktioita tai luokkien metodeja, jotka voidaan ylikuormittaa Lähes kaikki operaattorit ylikuormitettavia Operaattoreiden ylikuormittamisella ei pystytä muuttamaan Operaattoreiden sidontajärjestystä Tulkintasuuntaa Uusia operaattoreita ei voi tehdä monimuotoisuus 27
28 IV Esimerkki, operaattorit + ja += class Piste{ public: Piste& operator+=(const Piste &p); //... }; Piste operator+(const Piste& p1, const Piste& p2); Piste& Piste::operator+=(const Piste &p){ x_coord = x_coord+p.x_coord; y_coord = y_coord+p.y_coord; return *this; } Piste operator+(const Piste& p1, const Piste& p2){ Piste p(p1); p += p2; return p; } Tiedosto Piste.h Tiedosto Piste.cpp monimuotoisuus 28
29 IV.4 Uudelleenmäärittely (Overriding): Aluksi Staattinen sidonta = aikainen sidonta Metodin kutsu liitetään käännöksen aikana tiettyyn aliohjelmaan Dynaaminen sidonta = myöhäinen sidonta Kutsuttava metodi päätellään vasta ohjelman suorituksen aikana Alityyppiperiaate ( Liskov substitution principle ): Aliluokan olio voi esiintyä kaikissa yhteyksissä, joissa yliluokan olio esiintyy C++:ssa ei yleisesti voimassa Javassa aina voimassa monimuotoisuus 29
30 IV.4 Uudelleenmäärittely Aliluokan metodi saman niminen, sillä on sama parametrilista ja paluuarvo kuin yliluokan metodilla Yliluokan metodin toteutus peittyy Javassa näkyvyysmääre ei saa olla aliluokassa tiukempi, C++:ssa voi vaihtaa mielivaltaisesti Dynaaminen sidonta + alityyppiperiaate tekevät uudelleenmäärittelystä vahvan monimuotoisuuden työkalun monimuotoisuus 30
31 IV.4.1 Virtuaalioperaatiot Operaatio (metodi), johon voidaan soveltaa myöhäistä sidontaa, on virtuaalioperaatio Virtuaalioperaatio, jolle määritellään yliluokassa myös toteutus, on kiinnitetty virtuaalioperaatio Toteutus on oletus, voidaan syrjäyttää aliluokissa Avoin virtuaalioperaatio = abstrakti metodi Yliluokka ei määrittele toteutusta lainkaan Luokka, jolla on abstrakteja metodeja, on abstrakti luokka. Sellaisesta ei voida luoda olioita Jos luokka ei ole abstrakti, se on konkreettinen monimuotoisuus 31
32 IV.4.1 Virtuaalioperaatiot: Haittoja Metodien virtuaalisuus tekee ohjelmasta vaikeammin ymmärrettävän ja heikentää luokkahierarkian seurattavuutta Virtuaalioperaatioiden ajonaikainen sitominen myös hidastaa ohjelman suorittamista monimuotoisuus 32
33 IV.4.2 Virtuaalioperaatiot eri kielissä Smalltalk ja Eiffel: Kaikki operaatiot virtuaalisia Java: Operaatiot virtuaalisia, mutta ohjelmoija voi estää korvaamisen aliluokissa (final) C++ ja Simula: Ohjelmoija päättää, mitkä operaatiot virtuaalisia C++: oletus ei-virtuaalinen monimuotoisuus 33
34 IV Esimerkki class Person{ private: string name; public: virtual void print() const; virtual void tmeth(){}; Person(string str):name(str){}; }; class Employee : public Person { private: string status; public: }; void print() const; Employee(string n, string s):person(n),status(s){}; Sidotaan dynaamisesti; virtual pois -> sidotaan staattisesti monimuotoisuus 34
35 IV.4.3 Dynaamisen sidonnan toteutuksesta Miten löydetään kutsuttaessa oikea metodi? Suoraviivaisin tapa: Tallennetaan jokaiseen olioon ylimääräinen tietokenttä, joka osoittaa oikeaan metodiin Haaskaa tilaa, ei yleensä käytetä Useimmissa käännettävissä oliokielissä käytetään virtuaalitauluja Virtuaalitaulun alkiot ovat osoittimia metodeihin Jos aliluokka ylimäärittelee virtuaalisen metodin, osoitin tähän metodiin. Muussa tapauksessa yliluokan metodiin Saman luokan instansseilla yhteinen taulu monimuotoisuus 35
36 IV.4.3 Dynaamisen sidonnan toteutuksesta (2) EE Person Attributes Methods Virtual methods print = &Person::print tmeth = &Person::tMeth Employee Attributes Methods Virtual methods print = &Employee::print tmeth = &Person::tMeth p1 p2 Person-luokan virtuaalitaulu Employee-luokan virtuaalitaulu Person* p1 = new Person(); Person* p2 = new Employee(); Person::print Person::tMeth Employee::print Person::tMeth monimuotoisuus 36
37 IV.4.4 Uudelleenmäärittelyn toteutuksesta Korvaaminen (replacement) Aliluokan metodi korvaa täysin yliluokan metodin Amerikkalainen semantiikka Tarkentaminen (refinement) Aliluokan metodissa suoritetaan ensin yliluokan metodi + muut määritellyt operaatiot Skandinaavinen semantiikka monimuotoisuus 37
38 III.4.4 Toteutuksesta: Java ja C++ Korvaaminen yleisempi tapa nykykielissä Tarkentamista käytetään konstruktoreissa Sekä Java että C++: Aliluokan oliota luotaessa kutsutaan aina jotakin yliluokan konstruktoria Java ja C++: Konstruktoreita lukuunottamatta käytetään korvaamista Tarkentaminen voidaan määritellä tehtäväksi aliluokan metodissa C++: Yliluokka::metodi() Java: super-viite monimuotoisuus 38
39 III.4.5 Kovarianssi (Covariant change) Uudelleenmääritellyn metodin paluuarvo tai parametrit muuttuvat samaan suuntaan luokkahierarkian kanssa Ovat siis tarkempia kuin yliluokassa Parametreissa kovarianssi ei yleensä onnistu class Kanta { }; public: virtual boolean equals(kanta& k){/*vrt.*/} class Kovar: public Kanta { }; public: boolean equals(kovar& k) { // EI KORVAA Kanta-luokan // metodia equals(kanta k) return true; } monimuotoisuus 39
40 IV.4.5 Kovarianssi (2) Paluuarvossa kovarianssi semanttisesti mahdollinen Myös Javan uudemmissa versioissa onnistuu class Yli { }; // Yli-luokan alityyppi class Ali: public Yli { }; class Kovar { public: virtual Yli* teeolio(){ return new Yli(); } }; class KovarAli: public Kovar { public: Ali* teeolio() { return new Ali(); } }; Paluuarvo muuttuu alaspäin luokkahierarkiassa Korvaa Kovar-luokan metodin teeolio() monimuotoisuus 40
41 IV.4.6 Kontravarianssi (Contravariant change) Uudelleenmääritellyn metodin paluuarvo tai parametrit muuttuvat päinvastaiseen suuntaan luokkahierarkian kanssa Ovat siis yleisempiä kuin yliluokassa Paluuarvossa hankala toteuttaa Ei C++:ssa eikä Javassakaan käy Parametreissa mahdollista ainakin kääntää Eiffel-kielessä tapahtuu korvaaminen C++:ssa ja Javassa ei tapahdu korvaamista monimuotoisuus 41
42 IV Kontravarianssi paluuarvossa Alla oleva C++-koodi ei käänny! class Yli { }; // Yli-luokan alityyppi class Ali: public Yli { }; class Kontravar { public: virtual Ali* teeolio(){ return new Ali(); } }; class KontravarAli: public Kontravar { public: Yli *teeolio() { return new Yli(); } }; Paluuarvo muuttuu ylöspäin luokkahierarkiassa monimuotoisuus 42
43 IV Kontravarianssi parametreissa C++:ssa voi käyttää syntaktisesti, ei aiheuta metodin uudelleenmäärittelyä class Yli { } // Yli-luokan alityyppi class Ali: public Yli { } class Kontravar { public: virtual void oper(ali &a) { } } class KontravarAli extends Kontravar { public void oper(yli &y) { } } Parametri muuttuu ylöspäin luokkahierarkiassa Ei korvaa Kontravarluokan metodia oper()! monimuotoisuus 43
44 IV.5 Muuttujien monimuotoisuus Muuttuja voi viitata monentyyppiseen olioon Dynaamisesti tyypitetyissä kielissä kaikki muuttujat monimuotoisia Monet skriptikielet Staattisesti tyypitetyissä kaikilla muuttujilla tyyppi, joka annetaan määrittelyn yhteydessä Esim. Java, C++ Muuttujan monimuotoisuus: Voi viitata myös tyyppinsä alityyppisiin olioihin Tyypillinen käyttötapa: monimuotoiset säiliöt monimuotoisuus 44
45 IV.5.1 Downcasting Tyyppimuunnos, joka tapahtuu alaspäin luokkahierarkiassa Muunnos ylöspäin yleensä aina sallittu Tarvitaan joskus, kun muuttuja yliluokan tyyppinen, mutta halutaan kutsua aliluokan operaatiota, jota ei yliluokassa ole Varmistettava, että muunnos laillinen! Yleensä kielessä mekanismi, jolla voidaan tarkistaa onko sallittu Java: instanceof-operaattori tarkistaa olion tyypin C++: dynamic_cast-operaattori tarkistaa onko muunnos laillinen monimuotoisuus 45
46 IV.6 Multi-metodit ja double dispatch Ongelma: Ylikuormitettujen metodien parametrit voivat olla alityyppejä ja ylikuormitetun metodin sitominen on käännösaikaista. Miten metodikutsu saadaan toimimaan tarkoitetulla tavalla, ts. kutsu tehtäisiin parametrien ajonaikaisten tyyppien perusteella? (Multi-metodi) Esim. class Yli{ }; class Ali: public Yli { }; Metodeja: void fun(yli& x, Yli& y) void fun(yli& x, Ali& y) void fun(ali& x, Yli& y) void fun(ali& x, Ali& y) Ohjelmassa: Yli* a =... Yli* b =... Voivat viitata sekä Yliettä Ali-luokan olioihin // Mitä metodia kutsutaan? fun(*a, *b); monimuotoisuus 46
47 IV.6.1 Multi-metodit ja double dispatch (2) Edellinen ongelma hankala staattisesti tyypitetyissä kielissä. Yksi ratkaisu: olio tietää itse oman tyyppinsä, viesti ohjataan sen mukaan Luokkiin kirjoitettava dynaamisesti sidottavat metodit, jotka korvaavat toiminnan class Yli{ void fun(yli& x){ x.funyli(*this);} void funyli(yli& x){ //fun(yli&,yli&);} void funali(yli& x){ // fun(ali&,yli&);} }; Pääohjelmassa: Yli *a = new Ali(); Yli *b = new Ali(); a->fun(*b); class Ali: public Yli { void fun(yli& x){ x.funali(*this);} void funyli(yli& x){ // fun(yli&,ali&)} void funali(yli& x){ // fun(ali&,ali&)} }; monimuotoisuus 47
12. 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ätiedot815338A 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ä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ätiedotOlio-ohjelmointi Periytyminen ja monimuotoisuus. 1. Periytyminen
Olio-ohjelmointi Periytyminen ja monimuotoisuus Edellisessä osassa tarkasteltiin olio-ohjelmoinnin ensimmäistä perusominaisuutta: sitä, että luokat muodostavat kapseloinnin ja tiedon kätkennän toteuttavia
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ä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ä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ä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ä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ä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ätiedot815338A 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ätiedotOlio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia.
4. Periytyminen 4.1. Johdantoa Käytännössä vähänkään laajemmissa ohjelmissa joudutaan laatimaan useita luokkia, joiden pitäisi pystyä välittämään tietoa toisilleen. Ohjelmien ylläpidon kannalta olisi lisäksi
Lisä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ätiedotA) 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ä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ä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ä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ä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ä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ä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ä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ä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ä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ä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ä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ätiedotTIE-20200 Ohjelmistojen suunnittelu. Luento 8..9: moniperintä
TIE-20200 Ohjelmistojen suunnittelu Luento 8..9: moniperintä 1 Ajankohtaista Harjoitustyön suunnittelusessiot pidetty, työt jatkuvat, välivaiheen esittely seuraavana Viimeinen viikkoharjoituskerta, palataan
Lisätiedot812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä
2016 IX Olioiden välisistä yhteyksistä Sisältö 1. Johdanto 2. Kytkentä 3. Koheesio 4. Näkyvyydestä 2 Johdanto n Ohjelmassa syntyy kytkentöjä olioiden välille Toivottuja ja epätoivottuja n Näkyvyys vaikuttaa
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ä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ätiedotAbstraktit tietotyypit ja olio-ohjelmointi
Abstraktit tietotyypit ja olio-ohjelmointi Edellisessä osassa käsiteltiin aliohjelmia prosessiabstraktion välineenä. Prosessiabstraktio onkin vanhimpia ohjelmointikielten suunnittelukäsitteitä ja sisältynyt
LisätiedotVirtuaalifunktiot 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ätiedotOperaattoreiden 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ätiedotGeneeriset 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ä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ätiedotOhjelmistojen mallintaminen Luokkakaaviot Harri Laine 1
Ohjelmistojen mallintaminen Luokkakaaviot 5.12.2008 Harri Laine 1 Olioiden palvelut Palvelun kuvauksessa annettavat tiedot näkyvyys (kuten attribuuttien kohdalla) nimi (ainoa välttämätön osa) parametrit
LisätiedotOpintojakso 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ä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ätiedot812347A Olio-ohjelmointi, 2015 syksy 2. vsk. II Johdanto olio-ohjelmointiin
812347A Olio-ohjelmointi, 2015 syksy 2. vsk II Johdanto olio-ohjelmointiin Sisältö 1. Abstraktiosta 2. Olio-ohjelmoinnin historiaa 3. Olioparadigmasta 4. Peruskäsitteiden esittely 2 II.1 Abstraktiosta
LisätiedotOhjelmointikieli TIE Principles of Programming Languages Syksy 2017 Ryhmä 19
Ohjelmointikieli TIE-20306 Principles of Programming Languages Syksy 2017 Ryhmä 19 Juho Kärnä Ville Mäntysaari 1. Johdanto D on yleiskäyttöinen, strukturoitu, staattisesti tyypitetty, käännettävä ohjelmointikieli
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ä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ätiedotOpintojakso 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ä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ä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ä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ä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ä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ätiedotTIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 27. lokakuuta 2009
TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 27. lokakuuta 2009 Sisällys Sisällys Seuraava deadline Vaihe D tiistai 10.11. klo 10 välikielen generointi Kääntäjän rakenne
Lisätiedot812347A 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ä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ä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ätiedotITKP102 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ätiedotOhjelmoinnin peruskurssien laaja oppimäärä
Ohjelmoinnin peruskurssien laaja oppimäärä Luento 11: Olioiden toteuttaminen Riku Saikkonen 28. 11. 2011 Sisältö 1 Miten oliot ja metodikutsut toimivat? 2 Oliot Minkä luokan metodia kutsutaan? Python-esimerkki
LisätiedotLuokassa 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ätiedotOliot ja tyypit. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos
Oliot ja tyypit TIES542 Ohjelmointikielten periaatteet, kevät 2007 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 19. maaliskuuta 2007 Olion tyyppi? attribuutti on oikeastaan metodi,
Lisätiedot812347A 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ätiedotITKP102 Ohjelmointi 1 (6 op)
ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 20. huhtikuuta 2018 Vastaa kaikkiin tehtäviin. Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä.
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ätiedotC++ 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ätiedotMuusta kuin vesisioista
Muusta kuin vesisioista Janne Käki 8.12.2006 Metodin kuormittaminen (overloading) Samannimisestä metodista on määritelty samassa luokassa (tai samassa yli- ja aliluokkien jatkumossa) useita versioita,
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ätiedot4. 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ätiedot812336A 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ätiedotOpintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Tietorakenneluokkia 2: HashMap, TreeMap Tietorakenneluokkia ja -rajapintoja Java tarjoaa laajan kokoelman tietorakennerajapintoja ja - luokkia. Aiemmin
Lisä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ä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ätiedotC++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ä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ätiedotOhjelmoinnin peruskurssien laaja oppimäärä
Ohjelmoinnin peruskurssien laaja oppimäärä Luento 2: Perinnän käyttäminen Riku Saikkonen (osa kalvoista on suoraan ei-laajan kurssin luennoista) 1. 2. 2012 Sisältö 1 Esimerkki perinnästä 2 Pohdintaa perinnän
LisätiedotOsoitin 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ätiedotSisällys. Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö. 8.2
8. Periytyminen 8.1 Sisällys Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö. 8.2 Mitä on periytyminen? Periytyminen (inheritance) tarkoittaa luokan piirteiden
LisätiedotOhjelmoinnin peruskurssien laaja oppimäärä
Ohjelmoinnin peruskurssien laaja oppimäärä Luento 4: Perinnän käyttäminen Riku Saikkonen (osa kalvoista on suoraan ei-laajan kurssin luennoista) 4. 2. 2012 Sisältö 1 Yksinkertainen esimerkki perinnästä
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ätiedot- Komposiittityypit - Object (Mukaanlukien funktiot) - Array. - Erikoisdatatyypit - null - undefined
Ohjelmointitekniikka Tyyppiturvallisuuden tavoittelua Javascriptissa muuttujat ovat tyypittömiä, mutta arvoilla on tyyppi. Muuttuja esitellään var -avainsanalla ja muuttujan tyypin arvoa ei erikseen määritellä.
LisätiedotOhjelmointikielet ja -paradigmat 5op. Markus Norrena
Ohjelmointikielet ja -paradigmat 5op Markus Norrena Kotitehtävä 6, toteuttakaa alla olevan luokka ja attribuutit (muuttujat) Kotitehtävä 6, toteuttakaa alla olevan luokka ja attribuutit (muuttujat) Huom!
Lisä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 peruskurssien laaja oppimäärä, kevät
Ohjelmoinnin peruskurssien laaja oppimäärä, kevät Luento 2: Ohjelman suunnittelua, miten oliot toimivat Riku Saikkonen (osa kalvoista on suoraan ei-laajan kurssin luennoista) 21. 1. 2013 Sisältö 1 Suunnittelua:
LisätiedotTehtävä 1. TL5302 Olio-ohjelmointi Koe Malliratkaisuja. Tässä sekä a)- että b)-kohdan toimiva ratkaisu:
TL5302 Olio-ohjelmointi Koe 19.4.2005 Malliratkaisuja Tehtävä 1 Tässä sekä a)- että b)-kohdan toimiva ratkaisu: #include using namespace std; int main() int taul[5]=1,2,3,4,5; int *p,&r=taul[0];
LisätiedotITKP102 Ohjelmointi 1 (6 op)
ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 12. huhtikuuta 2019 Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä. Yksi A4-kokoinen lunttilappu
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ä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ätiedotLuokan muodostimet (Constructors)
Mikä on muodostin? Luokan muodostimet (Constructors) Millaisia muodostimia on? Oletusmuodostin (Default Constructor) Parametrillinen muodostin Kopiointimuodostin (Copy Constructor) this-muuttuja Miten
Lisätiedotlausekkeiden tapauksessa. Jotkin ohjelmointikielet on määritelty sellaisiksi,
3.5. TYYPIT 59 indeksit voidaan siirtää kielitasolta oliotasolle siirryttäessä alkamaan nollasta. Vain mikäli indeksin alin arvo oliotasolla ei ole tiedossa ennen suorituksen alkua, on tarpeen lisätä taulukko-olioon
Lisätiedot812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton
2015 syksy 2. vsk IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton Sisältö 1. Johdanto luontimalleihin 2. Proxy 3. Factory Method 4. Prototype 5. Singleton Suunnittelumallit Proxy et.
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ätiedotMitä on periytyminen?
8. Periytyminen 8.1 Sisällys Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Filosofinen ja käytännönläheinen näkökulma periytymiseen. Periytymisen soveltaminen. 8.2 Mitä
LisätiedotCommon Lisp Object System
Common Lisp Object System Seminaarityö Tomi Vihtari Ohjelmointikielten periaatteet kevät 2004 Helsingin Yliopisto Tietojenkäsittelytieteen laitos Järvenpää 5. huhtikuuta 2004 Sisältö 1 Johdanto... 1 2
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ä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ätiedotD-OHJELMOINTIKIELI. AA-kerho, 33. Antti Uusimäki. Arto Savolainen
D-OHJELMOINTIKIELI AA-kerho, 33 Antti Uusimäki Arto Savolainen 2 D-OHJELMOINTIKIELI D-kielen historia alkaa vuodesta 1999, kun Walter Bright aloitti uuden ohjelmointikielen kehittämisen. Ensimmäinen versio
Lisätiedot815338A 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ä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ä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ätiedotRutiinin muodostaminen. 2. Rutiinin muodostaminen. specification) Määrittely (specification( Määrittelyn osapuolet. Hyvän ohjelman tunnusmerkit
2. Rutiinin muodostaminen Rutiinin muodostaminen roolit 1. Rutiinin määrittely 2. Sopimuspohjainen ohjelmointi 3. Määrittelyjen kirjoittaminen 4. Erikoistilanteiden hallinta analysointi luokat rutiinit
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ä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ä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ätiedotTIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely
Lyhyt UML-opas UML -pikaesittely UML, Unified Modeling Language Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee (Object Management Group) OMG Historiaa: 90-luvulla oli paljon kilpailevia
Lisätiedot\+jokin merkki tarkoittaa erikoismerkkiä; \n = uusi rivi.
1. Johdanto 1.1 Yleistä Suurten ohjelmien organisointi vaikeaa C:ssä. 1980 Stroustrup lisäsi C:hen olio-ohjelmoinnin (OOP = Object Oriented Programming). C C++: C-ohjelma on (muutamia poikkeuksia lukuunottamatta)
LisätiedotOhjelmoinnin peruskurssien laaja oppimäärä
Ohjelmoinnin peruskurssien laaja oppimäärä Luento 11: Olioiden toteuttaminen, abstraktit luokat yms. Riku Saikkonen (merkityt ei-laajan kurssin kalvot: Otto Seppälä) 27. 1. 2011 Sisältö 1 Kertausta Scheme-tulkista
Lisätiedot