815338A Ohjelmointikielten periaatteet
|
|
- Ari Hakala
- 7 vuotta sitten
- Katselukertoja:
Transkriptio
1 815338A Ohjelmointikielten periaatteet V Abstraktit tietotyypit ja olioohjelmointi
2 Sisältö I. Abstraktit tietotyypit II. 1. Johdatus abstrakteihin tietotyyppeihin 2. Abstraktit tietotyypit Adassa 3. Abstraktit tietotyypit C++:ssa 4. Abstraktit tietotyypit Javassa Olio-ohjelmointi 1. Johdatus olio-ohjelmointiin 2. Periytyvyys 3. Monimuotoisuus ja dynaaminen sidonta 4. Oliokielten suunnittelukysymyksiä 5. Olio-ohjelmointi C++:ssa 6. Olio-ohjelmointi Javassa A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 2
3 V.I.1 Abstraktit tietotyypit: Johdatus Abstract Data Type (ADT) Data-abstraktion väline Data-abstraktio: yhdistetään tietotyyppeihin operaatioita, joiden yksityiskohtia käyttäjän ei tarvitse tuntea Johtivat olio-ohjelmoinnin syntyyn A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 3
4 V.I.1.1. Abstraktin tietotyypin määritelmä Toteutettava kaksi ehtoa: 1. Tiedon kätkentä: Tyypin määrittelyn ja operaatioiden yksityiskohdat eivät näy tietotyypin ulkopuoliselle käyttäjälle Tyyppiin voidaan kohdistaa suoraan ainoastaan sellaisia operaatioita, jotka tyypin esittely sallii 2. Tiedon kapselointi: Tyypin esittely samoin kuin tietotyyppiin liittyvät operaatioiden esittelyt sijaitsevat yhdessä syntaktisessa yksikössä. Muut ohjelmayksiköt voivat muodostaa tämän tyypin muuttujia A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 4
5 V.I.1.1. Abstraktin tietotyypin määritelmä (2) HUOM! Määritelmän mukaan myös kielen sisäiset tietotyypit voivat olla abstrakteja. Tässä ADT:llä tarkoitetaan käyttäjän määrittelemää abstraktia tietotyyppiä *x++=*y A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 5
6 V.I.1.2. Tiedon kätkentä Erittäin tärkeä periaate tietotyypin luotettavuuden kannalta Ainoastaan tietotyypin sisäiset operaatiot voivat väliaikaisesti rikkoa tyypin ilmentymän tilan, palauttavat sen ennen kontrollin siirtymistä käyttäjälle Helpottaa koodin ylläpitoa, koska ulospäin näkyvä rajapinta säilyy samana A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 6
7 V.I.1.3. Tiedon kapselointi Periaatteena koota data ja sitä käsittelevät operaatiot yhteen Helpottaa ohjelman loogista ja teknistä hallintaa Loogisesti yhteenkuuluvat operaatiot samaan yksikköön -> mentaalinen hallinta helpottuu Teknisesti helpottaa ohjelman kääntämistä Alisteisissa kielissä kapseloinnin toteuttaminen on ongelmallista A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 7
8 V.I.1.4. Historiaa lyhyesti ADT:t ensimmäiseksi SIMULA 67-kielessä Määriteltiin luokkana Sisälsi luokan muuttujat, aliohjelmien esittelyt sekä niiden koodin Luokassa määriteltyjä muuttujia ei piilotettu olion luovalta sovellukselta -> tiedon kätkennän toteutus puutteellinen ADT:t yleistyivät vasta useita vuosia SIMULA 67-kielen julkaisun jälkeen Useimmissa nykyisissä korkean tason kielissä voidaan käyttää abstrakteja tietotyyppejä A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 8
9 I.1.5. ADT eri kielissä Pascal ja C: voidaan määritellä omia tyyppejä, mutta niihin ei voi kytkeä operaatioita -> ADT-toteutus mahdoton Ada: ADT ilman olioita Kehittynyt myöhemmissä versioissa olio-ohjelmoinnin suuntaan C++, Java: luokkien avulla voidaan määritellä abstrakteja tietotyyppejä A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 9
10 V.I.2. Abstraktit tietotyypit Adassa Adassa ADT:tä voidaan simuloida käyttämällä pakkauksia (packages) Pakkauksilla voidaan kapseloida tietoja Koostuvat kahdesta osasta, joita molempia myös kutsutaan pakkauksiksi: 1. Määrittelyosa (specification package) 2. Runko (body package) (vapaaehtoinen) Pakkausta käyttävä sovellus näkee aina vain määrittelyosan, mutta ei runkoa A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 10
11 V.I.2. Abstraktit tietotyypit Adassa (2) Tiedon kätkentä: pakkauksen määrittelyosa voidaan jakaa julkiseen ja yksityiseen osaan Julkinen osa kokonaisuudessaan näkyvissä pakkauksen käyttäjille Yksityinen (private-määreellä merkitty) osa käyttäjältä piilotettu Oletus: tieto julkista HUOM! Pakkaukset eivät ole varsinaisia tietotyyppejä A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 11
12 V.I.2. Abstraktit tietotyypit Adassa (3) Esimerkki. package LINKITETTY_LISTA is end; type SOLMU; type OSOITIN is access SOLMU; type SOLMU is record end record; DATA: INTEGER; LINKKI: OSOITIN; package body LINKITETTY_LISTA is end; -- Paketin runko Pääsy myös SOLMU tyypin kenttiin DATA ja LINKKI A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 12
13 V.I.3 Abstraktit tietotyypit C++:ssa Data-abstraktio luokkien avulla Erot Adan abstraktiomalliin: C++ -luokat ovat tietotyyppejä (toisin kuin Adan pakkaukset) -> C++:ssa voidaan määritellä luokkatyyppisiä muuttujia Luokkien julkisiin (ei-staattisiin) jäsenmuuttujiin voidaan viitata ainoastaan luokan instanssin kautta, Adassa sisällytetyn pakkauksen muuttujiin voidaan viitata suoraan C++ :n luokka C-kielen tietueen (struct) laajennus Luokkien operaatiot = jäsenfunktiot Luokkamalli muistuttaa SIMULA 67:n mallia A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 13
14 V.I.3 Abstraktit tietotyypit C++:ssa (2) Luokan jäsenmuuttujien (member variables) ja - funktioiden (member functions) näkyvyys Julkiset (public) Näkyvissä ulkopuolelle Suojatut (protected) Näkyminen liittyy periytymiseen Yksityiset (private) Näkyvät ainoastaan luokan sisällä ja luokan ystäväluokissa ja funktioissa (friend classes, friend functions) A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 14
15 V.I.3 Abstraktit tietotyypit C++:ssa (3) Viittaukset jäseniin Olio: pistenotaatio (.) Luokka olio; olio.funktio(); Osoitin olioon, nuoli (->) Luokka* p_olio; p_olio->funktio(); A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 15
16 V.I.3 Abstraktit tietotyypit C++:ssa (4) Staattiset jäsenmuuttujat kaikille luokan olioille yhteisiä jäsenmuuttujia Määritellään C++:ssa avainsanalla static Voidaan viitata suoraan ilman oliota luokan nimellä (Luokka::jäsen) Näkyvyyssäännöt myös voimassa Staattiset jäsenfunktiot (luokkametodit): kutsuttaessa ei tarvita luokasta oliota Avainsana static Luokkametodi voi viitata vain luokan staattisiin jäsenmuuttujiin tai staattisiin jäsenfunktioihin Näkyvyyssäännöt myös voimassa A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 16
17 V.I.3 Abstraktit tietotyypit C++:ssa (5) Muodostin (konstruktori, constructor) Kutsutaan aina olion luomisen yhteydessä Konstruktorin nimi on aina sama kuin luokan nimi Ei paluuarvoa Muodostinfunktioita voi olla useita -> parametrilistan perusteella päätellään, mitä muodostinta kutsutaan Hajotin (tuhoaja, destructor) Kutsutaan automaattisesti, kun olio tuhotaan Hajotin yksikäsitteinen, muoto ~LuokkaNimi() Yleensä hajottimeen vapautusoperaatiot dynaamisesti varatulle muistille jne A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 17
18 V.I.3 Abstraktit tietotyypit C++:ssa (6) *x++=*y++ C++-olioiden muistinvaraus voi olla Staattinen, Pinodynaaminen, Kekodynaaminen Oliot vapautettava delete operaattorilla C++:ssa olio voi käyttäytyä kuten mikä tahansa muuttuja Voi olla esim. globaali A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 18
19 V.I.4 Abstraktit tietotyypit Javassa V.I.4.1. Javan vertailua C++:aan *x++=*y++ Luokkamalli muistuttaa C++ -kielen mallia Oliot aina kekodynaamisia Ohjelmoija ei itse voi suoraan vapauttaa muistia, vaan roskien keruu huolehtii tästä Olion tuhoamisen yhteydessä tarpeelliset operaatiot ylikirjoittamalla finalize() metodi Kaikki oliot perivät Object luokalta Harvoin tarvitsee tehdä A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 19
20 V.I.4.1. Javan vertailua C++:aan Oliot viitetyypin muuttujia Jäseniin viitataan pistenotaatiolla Kaikkien metodien ja tietotyyppien on kuuluttava johonkin luokkaan Metodien määrittely toteutetaan samassa luokassa, jossa metodi esitellään Voidaan määritellä sekä staattisia että ei-staattisia jäsenmuuttujia ja -metodeja Staattiset jäsenmuuttujat voidaan myös alustaa luokassa A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 20
21 V.I.4.2. Tiedon kätkentä Javassa Samat näkyvyysmääreet (public, protected ja private) kuin C++:ssa Merkityskin sama kuin C++:ssa Lisäksi oletusnäkyvyys = pakkausnäkyvyys (package scope) Jäsenet näkyvät pakkauksen sisällä Korvattu C++ -kielen ystäväluokat ja -funktiot, joita Javassa ei ole toteutettu A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 21
22 V.II.1. Olio-ohjelmointi, Johdatus V.II.1.1. Hieman historiaa *x++=*y luku: tarve ohjelmien uudelleenkäyttöön Abstraktit tietotyypit sopivat tarkoitukseen Abstraktien tietotyyppien ongelmia: Ei yleensä sovi sellaisenaan uuteen käyttöön Tyypit eivät muodosta hierarkkista rakennetta Ratkaisuksi olio-ohjelmointi Abstrakti tietotyyppi luokka, instanssi olio Luokka voidaan periä ja muokata sitä sekä lisätä ominaisuuksia A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 22
23 V.II.1.2. Olioparadigma Muutos aiempaan: tietoalkiot (oliot) ovat aktiivisia Ohjelman toiminta koostuu olioiden toisilleen lähettämistä viesteistä ja niihin saaduista vastauksista Olion tila: sen jäsenmuuttujien arvot Ihanne: toiset oliot eivät muuta tai lue suoraan olion tilaa Käytetään erillisiä saanti- ja asetusmetodeja A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 23
24 V.II.2. Periytyvyys (inheritance) Olio-ohjelmoinnin keskeisin käsite Kuvaa luokkien väliset suhteet Luokka, joka peritään = kantaluokka (base class) tai yliluokka (superclass) Perivä luokka = aliluokka (subclass) tai johdettu luokka (derived class) A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 24
25 V.II.2. Periytyvyys (2) Kantaluokan olioiden käyttäytyminen siirtyy osaksi aliluokan olioiden käyttäytymistä Laajentaminen periytymisessä Uusien jäsenmuuttujien ja metodien lisääminen aliluokkaan Erikoistaminen periytymisessä Aliluokassa korvataan perittyjä määrittelyjä luokan omilla määrittelyillä A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 25
26 V.II.2.1. Alityyppi Määritelmä: Tyypin T alityyppi on sellainen tietotyyppi S, johon voidaan soveltaa mitä tahansa tyyppiin T sovellettavaa operaatiota Tällöin tyyppi T on tyypin S ylityyppi Tärkeä kysymys: Ovatko aliluokat kantaluokan alityyppejä? Alityyppiperiaate: Alityypin olio voi ohjelmassa esiintyä missä tahansa sen ylityypin odotetaan esiintyvän. Pätee, jos aliluokalle sallitaan periytymisessä ainoastaan laajentaminen ja erikoistaminen Ei kaikissa kielissä kaikessa periytymisessä A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 26
27 V.II.2.2. Tiedon kätkentä Näkyvyysmääreet säätelevät, mitkä kantaluokan ominaisuudet ovat aliluokan käytettävissä Usein julkisten jäsenten lisäksi vain suojatut jäsenet ovat näkyvissä aliluokassa A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 27
28 V.II.2.3. Moniperiytyvyys (multiple inheritance) Luokalla voi olla monta kantaluokkaa Luokkahierarkia muodostaa verkon Jos ei sallita, luokkahierarkia puurakenne A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 28
29 V.II.2.4. Piilottaminen ja uudelleen määrittely *x++=*y++ Aliluokassa määritellään jäsenmuuttuja, joka on samanniminen kuin peritty -> uusi määrittely piilottaa yliluokan muuttujan Aliluokan metodi, jolla on sama prototyyppi (sama nimi ja parametrit) kuin kantaluokan metodilla, määrittelee uudelleen (override) perityn metodin Yliluokan muuttujiin ja metodeihin voidaan yleensä viitata yliluokan nimen ja tarkoitukseen määrätyn operaattorin avulla A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 29
30 V.II.3 Monimuotoisuus ja dynaaminen sidonta Monimuotoisuus (polymorfismi, polymorphism) *x++=*y++ Tässä: saman operaattorin tai funktion sitominen erilaisiin toteutuksiin tilanteesta riippuen Olio-ohjelmoinnissa saavutetaan viestin dynaamisella sidonnalla metodin määrittelyyn Tämä mekanismi + alityyppiperiaate -> monimuotoiset muuttujat = tyyppi on kantaluokka, mutta muuttujat voivat olla jonkin aliluokan olioita Tunnetaan myös alityyppimonimuotoisuutena (subtype polymorphism) A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 30
31 V.II.3 Monimuotoisuus ja dynaaminen sidonta (2) Dynaaminen sidonta Helpottaa ohjelmiston ylläpitoa: Muodostettaessa uusia luokkia, kantaluokkien koodia ei tarvitse perustoiminnoissa muuttaa Tapahtuu ohjelman suorituksen aikana -> tehottomampaa kuin staattinen sidonta -> joissakin oliokielissä ohjelmoija voi säätää, mitkä metodit sidotaan dynaamisesti Tyypintarkistus vaikeutuu, koska monimuotoinen muuttuja voi osoittaa tietotyyppiin, joka on tietotyypin määrittelemän tyypin alityyppi A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 31
32 V.II.3 Monimuotoisuus ja dynaaminen sidonta (3) Abstrakti luokka Käytännöllinen, kun oliohierarkian kantaluokka niin yleinen, ettei siitä kannata muodostaa olioita Ei voi luoda instansseja Voi sisältää abstrakteja metodeja, joille määritelty ainoastaan prototyyppi, mutta ei lainkaan runkoa HUOM! Älä sekoita abstraktiin tietotyyppiin! A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 32
33 V.2.4 Oliokielten suunnittelukysymyksiä 1. Onko kielessä muita tietotyyppejä kuin olioita? 2. Ovatko aliluokat aina perittyjen luokkien alityyppejä? 3. Sallitaanko moniperiytyminen? 4. Miten hoidetaan olioiden muistinvaraaminen ja - vapauttaminen? 5. Sidotaanko metodit aina dynaamisesti vai onko staattinen sidonta mahdollista? 6. Sallitaanko sisäkkäisiä luokkia? A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 33
34 V.II.5 Olio-ohjelmointi C++:ssa V.II.5.1. Periytyminen C++:ssa *x++=*y++ class derived_class_name: acces_mode base_class_name { }; <data members> <member functions> acces_mode jokin näkyvyysmääre (public, protected tai private) Säätelee, miten kantaluokan jäsenet näkyvät aliluokassa A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 34
35 V.II.5.1. Periytyminen C++:ssa (2) Tavallisimmin access_mode = public Aliluokassa näkyvät kaikki public ja protected tyyppiset muuttujat ja funktiot, näkyvyysmääre on sama kuin kantaluokassa private tyyppisiin jäseniin aliluokalla ei ole pääsyä Aliluokka on kantaluokan alityyppi access_mode =private access_mode = protected Näkyvyydet aliluokassa rajoitettuja Kummassakaan tapauksessa aliluokka ei ole kantaluokan alityyppi A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 35
36 V.II.5.1. Periytyminen C++:ssa (3) C++:ssa ei yhteistä kantaluokkaa Voidaan tehdä luokka, jolla ei lainkaan jäseniä C++:ssa moniperiytyminen Luokkahierarkia verkkomainen Voi aiheuttaa nimitörmäyksiä Dynaamisen sidonnan toteuttaminen hankalampaa A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 36
37 V.II.5.2. Dynaaminen sidonta C++:ssa Ei automaattista Esimerkki. class Kanta{ public: }; void kanta_funktio(){ cout << "Kanta"; } Koodi AliLuokka ali; kutsuja(&ali); tulostaa: Kanta Siis ei dynaaminen sidonta class AliLuokka:public Kanta{ public: void kanta_funktio(){ cout << Aliluokka"; } }; void kutsuja( Kanta *k) { k->kanta_funktio(); } A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 37
38 V.II.5.2. Dynaaminen sidonta C++:ssa (2) Muutos edelliseen: class Kanta{ public: }; virtual void kanta_funktio() { } cout << "Kanta"; Tulostuu Aliluokka *x++=*y++ Jäsenfunktio virtuaalinen -> sidotaan dynaamisesti Virtuaalisuus periytyy kaikkiin aliluokkiin A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 38
39 V.II.5.3. Abstraktit luokat C++:ssa Luokka abstraktiksi sisällyttämällä luokkaan vähintään yksi puhtaasti virtuaalinen funktio (ei runkoa, merkitään nollaksi) Esimerkki class Kanta{ public: }; virtual void kanta_funktio() = 0; -> Luokasta abstrakti, eikä siitä voi luoda oliota Aliluokasta konkreettinen -> määriteltävä uudelleen puhtaasti virtuaaliset metodit A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 39
40 V.II.6. Olio-ohjelmointi Javassa Tarkastellaan eroja C++ -kieleen Puhtaampi oliokieli kuin C++ Ei täysin: primitiiviset tietotyypit eivät olioita Javassa jokainen luokka perii (extends) täsmälleen yhden luokan Ellei luokan ilmoiteta perivän toista luokkaa, se perii Object-luokan C++ :luokan ei tarvitse periä mitään Javan luokkahierarkia puumainen, C++:n verkkomainen A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 40
41 V.II.6.1. Rajapinnat (interfaces) Javassa Otettu moniperiytymisen korvaajaksi Eräänlaisia puhtaasti abstrakteja luokkia, jotka sisältävät ainoastaan metodien esittelyt Luokka toteuttaa (implements) rajapinnan Toteuttaa metodit (kaikki jos konkreeettinen luokka) Voi toteuttaa useita rajapintoja Rajapinnat voivat periä toisia rajapintoja A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 41
42 V.II.6.2. Abstraktit luokat Javassa Luokka erikseen määriteltävä abstraktiksi Abstrakti luokka voi sisältää abstrakteja metodeja Esimerkki public abstract class MessagePasser { } public abstract void send(object o); public void send(int i) { } send(new Integer(i)); public abstract Object receive(); public int receiveint{ return(((integer)this.receive()).intvalue()); } A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 42
43 V.II.6.3. Periytyminen ja dynaaminen sidonta Javassa Periytymisen tyyppiä ei voi säätää Periytyminen vastaa C++:n public-periytymistä public- ja protected-tyyppiset jäsenet aliluokassa näkyvissä ja niiden näkyvyydet säilyvät samana private-tyyppiset jäsenet eivät näy aliluokassa Aliluokka on aina kantaluokan alityyppi Periytymisketju voidaan katkaista final-määreellä Luokka final -> ei voida periä Metodi final -> ei voida uudelleenmääritellä Javassa kaikki sidonta dynaamista, ohjelmoija ei voi muuttaa A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 43
44 V.II.6.4. Yhteenveto Javasta Javan luokkamalli pohjautuu C++ -kielen malliin, yksinkertaistettu vahvasti Moniperiytyminen korvattu rajapintojen käytöllä Kaikki luokat perivät yhteisen perusluokan (Object) Kaikki sidonta on dynaamista Periytymiseen liittyvät näkyvyysmääreet poistettu C++:ssa hankala järjestelmä A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 44
45 V.II.6.4. Yhteenveto Javasta (2) C++ -kielen ystäväjärjestelmästä luovuttu Muutoksista C++:aan vain moniperinnän puuttumista voidaan arvostella rajoittavan ohjelmoijan työtä Sekä Java että C++ sallivat sisäkkäiset luokat Arvosteltu huonona ratkaisuna A Ohjelmointikielten periaatteet, ADT ja olio-ohjelmointi 45
Abstraktit 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ä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ä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ätiedot812341A Olio-ohjelmointi, I Johdanto
812341A Olio-ohjelmointi, 2016 I Johdanto Sisältö 1. Abstraktiosta 2. Olio-ohjelmoinnin historiaa 3. Olioparadigmasta 4. Peruskäsitteiden kertausta 812341A Olio-ohjelmointi, Johdanto 2 1 Abstraktiosta
Lisätiedot812347A 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ä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ä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ä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ä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ä. Ilmentymämetodien korvaaminen. Luokkametodien peittäminen. Super-attribuutti. Override-annotaatio.
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ä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ä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ä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ä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ä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ä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. 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ä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ä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ätiedotOlio-ohjelmointi Johdanto olio-ohjelmointiin
Olio-ohjelmointi Johdanto olio-ohjelmointiin Ohjelmistoa kehitettäessä voidaan tunnistaa ainakin kaksi abstraktiota: prosessiabstraktio ja dataabstraktio. Prosessiabstraktio huomattiin jo varhain, koska
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ä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ä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ä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ä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ätiedot12. Monimuotoisuus 12.1
12. Monimuotoisuus 12.1 Sisällys Johdanto. Periytymismekanismi määrittää alityypityksen. Viitteiden sijoitus ja vertailu. Staattinen ja dynaaminen luokka. Myöhäinen ja aikainen sidonta. Parametrinvälitys
Lisä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ätiedotP e d a c o d e ohjelmointikoulutus verkossa
P e d a c o d e ohjelmointikoulutus verkossa Java-kielen jatkokurssi Teoria ja ohjelmointitehtävät Java-kielen jatkokurssi 3 YLEISKATSAUS KURSSIN SISÄLTÖIHIN... 8 JAVA-KIELEN JATKOKURSSI... 8 OPISKELUN
LisätiedotSisä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ä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ätiedotMuutamia peruskäsitteitä
Muutamia peruskäsitteitä Huom. 1: nämä peruskäsitteet eivät muodosta hyvin määriteltyä keskenään yhteensopivien käsitteiden joukkoa, vaan käsitteet ovat osittain päällekkäisiä ja eri yhteyksissä niillä
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ä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ä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ätiedot12. Monimuotoisuus 12.1
12. Monimuotoisuus 12.1 Sisällys Johdanto. Periytymismekanismi määrittää alityypityksen. Viitteiden sijoitus ja vertailu. Staattinen ja dynaaminen luokka. Parametrinvälitys eräs monimuotoisuuden sovellus.
Lisätiedot1. 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ä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ä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ä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ätiedotAalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa
Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1 Oliot ja luokat Javaohjelmoinnissa Vesa Laakso 22.9.2012 Sisällysluettelo Sisällysluettelo... 1 Johdanto... 2 1. Luokka... 2 2. Olio... 2 3. Luokan
LisätiedotOhjelmistojen mallintaminen 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ä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ä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ätiedot815338A Ohjelmointikielten periaatteet
815338A Ohjelmointikielten periaatteet 2015-2016 VIII Poikkeusten ja tapahtumien käsittely Sisältö 1. Poikkeusten käsittelyn käsitteitä ja suunnittelukriteerejä 2. Poikkeusten käsittely C++:ssa 3. Poikkeusten
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ä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ä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ä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ä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ä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ä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ä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ätiedotSolidity älysopimus ohjelmointi. Sopimus suuntautunut ohjelmointi
Solidity älysopimus ohjelmointi Sopimus suuntautunut ohjelmointi Merkle puu Kertausta eiliseltä Solidity on korkean tason älysopimus ohjelmointikieli Muistuttaa olio-ohjelmointia Javalla Sopimuskoodi on
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ätiedot1. 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ä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ä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ätiedotPakkauksen kokoaminen
13. Pakkaukset 13.1 Sisällys Pakkauksen kokoaminen package-määrettä käyttäen. Pakkaukset ja hakemistorakenne. Pakkauksen luokkien käyttö muissa pakkauksissa importlauseen avulla. Pakkaukset ja näkyvyys.
LisätiedotOhjelmointi 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ätiedotSisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto
Sisällys 18. bstraktit tietotyypit Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.1 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:
LisätiedotKOHDELUOKAN MÄÄRITTELY
KOHDELUOKAN MÄÄRITTELY Kohdeluokka, mitä se sisältää Luokan määrittely Olion ominaisuudet eli attribuutit Olion metodit Olion luonti Olion tuhoutuminen Metodin kutsu luokan ulkopuolelta Taulukon alkiona
Lisä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ätiedotC# olio-ohjelmointi perusopas
Paavo Räisänen C# olio-ohjelmointi perusopas www.ohjelmoimaan.net Tätä opasta saa vapaasti kopioida, tulostaa ja levittää ei kaupallisissa tarkoituksissa. Kuitenkaan omille nettisivuille opasta ei saa
Lisä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ä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ä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ätiedotP 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ätiedot815338A 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ä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ä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ätiedotOlio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin
Olio-ohjelmointi: Luokkien toteuttaminen Jukka Juslin Luokkien kirjoittaminen Tähän mennessä on käytetty valmiiksi määritettyjä luokkia. Nyt opimme kirjoittamaan omia luokkia olioiden kuvaamiseksi Seuraavaksi
Lisä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ä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ätiedotKertaus: yleistys-erikoistus ja perintä
Kertaus: yleistys-erikoistus ja perintä Nauta, Lehmä ja Kuttu ovat Kotieläimiä, Kotieläimet Eläimiä Kotieläimillä (siis myös Naudoilla, Lehmillä ja Kutuilla) on Omistaja Kuttu ja Lehmä toteuttavat rajapinnan
LisätiedotLuokkamalli LUOKKAKAAVIO. Tämän osan sisältö. Luokkamalli. Luokka ja olio. Luokkakaavio (class diagram)
4 Luokkamalli Rakenteet mittojen mukaan. Mitat rakenteen mukaan. Tämän osan sisältö Luokkakaavio luokkakaavion elementti attribuutit operaatiot määreet Olioiden väliset suhteet kytkös kooste yleistys rajapinta
Lisä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ätiedotSisällys. 19. Olio-ohjelmointia Javalla. Yleistä. Olioiden esittely ja alustus
Sisällys 19. Olio-ohjelmointia Javalla Olioiden esittely ja alustus. Metodit Yleistä metodeista. Mihin metodeja tarvitaan? Metodien määrittely. Omat metodit: nimeäminen, paikka, kutsuminen, parametrit
LisätiedotC++11 lambdat: [](){} Matti Rintala
C++11 lambdat: [](){} Matti Rintala bool(*)(int) Tarve Tarve välittää kirjastolle/funktiolle toiminnallisuutta Callback-funktiot Virhekäsittely Käyttöliittymät Geneeristen kirjastojen räätälöinti STL:n
Lisätiedot11/20: Konepelti auki
Ohjelmointi 1 / syksy 2007 11/20: Konepelti auki Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/11 Tämän luennon
Lisätiedot12 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ätiedotA274101 TIETORAKENTEET JA ALGORITMIT
A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen
LisätiedotPeriytyminen. Luokat ja olio-ohjelmointi
Periytyminen 15 Periytyminen Tässä luvussa käsittelemme aihetta, joka on olio-ohjelmoinnin kaikkein tärkein osa - periytyvyys. Periytyvyyden avulla voimme luoda uusia luokkia uudelleenkäyttämällä ja laajentamalla
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ätiedot4.2. ALIOHJELMAT 71. Tulosvälitteisyys (call by result) Tulosvälitteinen parametri kopioidaan lopuksi
4.2. ALIOHJELMAT 71 sisältyä kaikki tarvittavat kontrollia ohjaavat rakenteet. Jos se on lause (yleensä lohko), niin on ratkaistava, miten paluuarvo ilmaistaan. Joissakin kielissä (esimerkiksi Pascal)
LisätiedotOliot viestivät metodeja kutsuen
6. Metodit 6.1 Sisällys Oliot viestivät metodeja kutsuen. Kuormittaminen. Luokkametodit (ja -attribuutit). Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 Oliot viestivät metodeja kutsuen
Lisä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ä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ä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ätiedotPakkauksen kokoaminen
13. Pakkaukset 13.1 Sisällys Pakkauksen kokoaminen (package). Pakkaukset ja hakemistorakenne. Pakkauksen luokkien käyttö muissa pakkauksissa (import). Pakkaukset ja näkyvyys. 13.2 Pakkauksen kokoaminen
Lisä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ätiedotsama tyyppi (joka vastaa kaikkien mahdollisten arvojen summa-aluetta). Esimerkiksi
3.5. TYYPIT 51 3.5.3 Kielitason tyypit Staattinen tyypitys Kielitasolla tyyppejä käytetään sulkemaan pois joitakin merkittäviä ja automaattisesti tunnistettavissa olevia merkitysopillisia virheitä (oliotason
LisätiedotUML Luokkakaavio 14:41
UML Luokkakaavio UML Olio-ohjelman luokkien pääpiirteet voidaan kätevähkösti esittää ns. UML-luokkakaaviona. Näin usein tehdäänkin esim. suunniteltaessa, millaisia luokkia ohjelmaan on tarkoitus laatia,
LisätiedotTIES542 kevät 2009 Oliokielten erityispiirteitä
TIES542 kevät 2009 Oliokielten erityispiirteitä Antti-Juhani Kaijanaho 2. maaliskuuta 2009 Oliosuuntautuneisuus (engl. object-orientation) ja olio-ohjelmointi (engl. objectoriented programming) ovat laajassa
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ätiedotHELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu
HELIA 1 (14) Luento 7 Käyttöliittymäolio... 2 Olioajattelun perusteet... 3 Tavoitteet... 3 Peruskäsitteet... 4 Olio / Olioinstanssi / Olion esiintymä... 4 Ominaisuudet... 4 Toiminnot... 4 Olioluokka /
Lisätiedot20. Javan omat luokat 20.1
20. Javan omat luokat 20.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.2 Java API Java-kielen Application Programming Interface (API)
LisätiedotSisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang
Sisällys 20. Javan omat luokat Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.1 20.2 Java API Java-kielen Application Programming Interface (API)
Lisä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ätiedotLuokkakaavion laatiminen
Luokkakaavion laatiminen Kartoita luokkaehdokkaita Karsi ehdokkaita Tunnista olioiden väliset yhteydet Täsmennä luokkakuvauksia määrittelemällä attribuutit Määrittele yhteyksiin liittyvät osallistumisrajoitteet.
Lisätiedot