Johdetun luokan olion esittely... tMyn1 Johdetun luokan olion esittely ja määrittely Esittelyluokka tarkoittaa olion tunnuksen luokkaa. Määrittelyluokka.

Slides:



Advertisements
Samankaltaiset esitykset
Rajapintaluokat Rajapintaluokka luettelee metodit, joille tulee löytyä toteutus asianomaisen rajapinnan toteuttavista luokista. Rajapintaluokka on siis.
Advertisements

Olio-ohjelmointi Olio-ohjelmoinnissa keskeisiä käsitteitä ovat luokka ja olio. Olio on abstraktio jostakin ongelma- tai ratkaisualueen käsitteestä. Oliolla.
Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
6. Metodit.
© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
Luokkien väliset koostesuhteet
Luokan otsikko- ja toteutustiedosto tMyn1 Luokan otsikko- ja toteutustiedosto •Tähän asti ohjelmaesimerkit on toteutettu siten, että kaikki koodi on yhdessä.
Muutamia käsitteitätMyn1 Muutamia käsitteitä •Perintä (inheritance) on luokkien välinen suhde, jossa johdettu luokka (subclass, derived class) perii kantaluokan,
Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi71 Olio-ohjelmointi 2. osa: diat (2. välikoe) KYMENLAAKSON AMMATTIKORKEAKOULU Jarkko Ansamäki, 2001.
Olio-ohjelmointi. Mitä olio-ohjelmointi on ?  Pyritään mallintamaan jotain reaalimaailman kohdetta tietokoneohjelman avulla  Olio on luokan ilmentymä.
Johdetun luokan määrittely tMyn1 Johdetun luokan määrittely •Kun johdettu luokka periytetään kantaluokasta, saadaan kantaluokan jäsenet enemmän tai vähemmän.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Olio-ohjelmoinnin perusteet luento 3
OLIO-OHJELMOINTI PERUSTEET PERUSTIETOTYYPIT
Poikkeuskäsittely- lohkot tMyn1 Poikkeuskäsittelylohkot try-catch Poikkeustilanteiden käsittelymekanismi toteutetaan varatuilla sanoilla try, throw ja.
Luokan muodostintMyn1 Luokan muodostin Olioihin kohdistuvia automaattisia toimintoja ovat luonti, alustus, kopiointi, sijoitus, tyhjennys ja tuhoaminen.
Vakio-osoitin ja osoitin vakioon tMyn1 Vakio-osoitin ja osoitin vakioon Tavallinen osoitin voi vaihtaa osoitettavaa keskusmuistialuetta. Tämä voidaan tehdä.
Luokkien löytyminen käytännössä tMyn1 Luokkien löytyminen käytännössä Kun aletaan ratkaista elävän elämän ohjelmointitehtäviä, niin ensimmäisten asioiden.
9. Periytyminen Javassa.
Dynaamiset oliottMyn1 Dynaamiset oliot Dynaamisen olion tunnuksen esittely ja olion määrittely voivat tapahtua yhtäaikaisesti tai eri aikaan. Dynaamisen.
Olioon kohdistuvia perustoimintoja tMyn1 Olioon kohdistuvia perustoimintoja Kopiointimuodostin (copy constructor) alustaa olion tietojäsenet saman luokan.
Virtuaaliset jäsenfunktiot tMyn1 Virtuaaliset jäsenfunktiot Virtuaalinen jäsenfunktio on esiteltävä monimuotoisessa kantaluokassa. Virtuaalisen jäsenfunktion.
Tekstitiedostosta lukeminen tMyn1 Tekstitiedostosta lukeminen Tiedosto voidaan avata pelkästään lukemista varten tai kirjoittamista ja lukemista varten.
Funktion esittely eli prototyyppi tMyn1 Funktion esittely eli prototyyppi Funktion esittely (function declaration) kertoo funktion nimen, parametrien tyypit.
1 Kertaus koetta varten oleellisista asioista Jukka Juslin.
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
Luokan muodostintMyn1 Luokan muodostin Olioihin kohdistuvia automaattisia toimintoja ovat luonti, alustus, kopiointi, sijoitus, tyhjennys ja tuhoaminen.
Luokan määrittely class-määreellä tMyn1 Luokan määrittely class-määreellä Luokan määrittely tarkoittaa luokan tietojäsenten esittelyä ja jäsenfunktioiden.
Metodit – Arvotyyppi Ellei metodi palauta arvoa, sen arvotyyppi on void Tällöin ”return;”-lauseke ei ole metodissa pakollinen, vaikka sen käyttö on sallittua.
Lueteltu tyyppitMyn1 Lueteltu tyyppi Lueteltu tyyppi on tietotyyppi, jonka arvot luetellaan erikseen tyypin määrittelyn yhteydessä. Lueteltua tietotyyppiä.
Muuttujat ja vakiottMyn1 Muuttujat ja vakiot PHP-kielen syntaksi on lainattu suurimmaksi osaksi C- kielestä. PHP on erityisesti HTML-dokumenttien sisään.
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
5. Kapselointi Yleistä Kapseloinnilla (encapsulation) tarkoitetaan luokan tietojen ja toimintojen pakkaamista yhdeksi suojatuksi kokonaisuudeksi.
10. Abstrakti luokka Johdanto Abstrakti luokka (abstract class) poikkeaa konkreettisesta luokasta (ei-abstrakti luokka) siten, että siitä ei.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Olioon kohdistuvia perustoimintoja tMyn1 Olioon kohdistuvia perustoimintoja Kopiointimuodostin (copy constructor) alustaa olion tietojäsenet saman luokan.
Ohjelman keskeytys virhetilanteessa tMyn1 Ohjelman keskeytys virhetilanteessa Poikkeustilanteet voidaan ryhmitellä logiikkavirheisiin ja muihin ajonaikaisiin.
17. Kooste Kooste Kooste (aggregation) on luokkien A ja B välinen suhde, joka tarkoittaa “A on B:n osa” tai “A kuuluu B:hen”. − Koostesuhteessa.
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
Oliot ja luokat Oliot ja luokat Oliot (object) ja luokat (class) ovat keskeisiä olio- ohjelmoinnin käsitteitä. Olio-ohjelmointi on ohjelmointiparadigma,
Vesa Ollikainen & Outi Grotenfelt
Poikkeustenkäsittely- lohkot tMyn1 Poikkeustenkäsittelylohkot try-catch Poikkeustilanteiden käsittelymekanismi toteutetaan varatuilla sanoilla try, throw.
Oman poikkeus- käsittelyfunktion tMyn1 Oman poikkeuskäsittelyfunktion määrittely Funktion tulisi muodostaa ainoastaan sellaisia poikkeuksia, jotka on sallittu.
Olioiden taulukointi Perustaulukon käyttö Luokan ilmentymät voidaan tallettaa taulukkoon samoin kuin muuttujat Esimerkki talletetaan taulukkoon opintojaksojen.
Tekstitiedostoon kirjoittaminen tMyn1 Tekstitiedostoon kirjoittaminen Tiedostoja käsitellään ohjelmassa tiedosto-olion avulla. Tiedosto-olion luokka sisältää.
Ohjelmointi työtä n. 16 h/vko onnistumista työtä n. 16 h/vko onnistumista #include int main(void) { std::cout
Monimuotoinen luokka tMyn1 Monimuotoinen luokka Monimuotoinen luokka mahdollistaa saman jäsenfunktion toteutuksen monella tavalla. Tällöin puhutaan virtuaalisesta.
Tiedon vieminen funktiolle tMyn1 Tiedon vieminen funktiolle, parametrit Argumentin vieminen funktiolle voidaan toteuttaa kahdella menetelmällä: –Pass-by-Value.
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
Kantaluokan määrittely tMyn1 Kantaluokan määrittely Perinnän käyttöön liittyvät varatut sanat private, protected, public, final ja abstract. Ne tarkoittavat.
Johdetun luokan määrittely tMyn1 Johdetun luokan määrittely Kun johdettu luokka periytetään kantaluokasta, saadaan kantaluokan jäsenet enemmän tai vähemmän.
1 © Jukka Juslin Luokat, attribuutit ja metodit Yleistietoa: seuraavalla koulutusviikolla tarkempi käsittely.
8. Periytyminen Sisällys Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö.
Olio-ohjelmoinnin perusteet luento 5 Päivi Ovaska LTY/Tietotekniikan osasto.
Yksikkötestaus ● Yksikkötestauksella tarkoitetaan lähdekoodiin kuuluvien yksittäisten osien testaamista. Termi yksikkö viittaa ohjelman pienimpiin mahdollisiin.
Olio-ohjelmointi Olio-ohjelmoinnissa keskeisiä käsitteitä ovat luokka ja olio. Olio on abstraktio jostakin ongelma- tai ratkaisualueen käsitteestä. Oliolla.
6. Metodit.
Poikkeustenkäsittelylohkot try-catch
Ohjelman keskeytys virhetilanteessa
Kantaluokan määrittely
3. Luokat, oliot ja metodit Java-kielessä (Lausekielinen ohjelmointi I ja II –kursseilla opitun kertausta.)
Rajapintaluokat Rajapintaluokka luettelee metodit, joille tulee löytyä toteutus asianomaisen rajapinnan toteuttavista luokista. Rajapintaluokka on siis.
Kantaluokan määrittely
Luokan määrittely class-määreellä
Muutamia käsitteitä Perintä (inheritance) on luokkien välinen suhde, jossa johdettu luokka (subclass, derived class) perii kantaluokan, perusluokan (superclass,
6. Metodit.
DIC and BMA in BUGS Biotieteellinen tiedekunta / Henkilön nimi / Esityksen nimi
4. Attribuutit.
8. Periytyminen.
4. Luokan testaus ja käyttö olion kautta
Esityksen transkriptio:

Johdetun luokan olion esittely... tMyn1 Johdetun luokan olion esittely ja määrittely Esittelyluokka tarkoittaa olion tunnuksen luokkaa. Määrittelyluokka tarkoittaa luokkaa, jonka mukaan olion tietojäsenten tilanvaraus tapahtuu. Esittelyluokka voi olla joko määrittelyluokka tai jokin määrittelyluokan kantaluokka. Johdetun luokan olion määrittelyluokka on aina kyseinen johdettu luokka. Johdetun luokan oliolle varattavan tilan koko määräytyy kantaluokassa ja johdetussa luokassa määriteltyjen tietojäsenten yhteenlasketusta tavumäärästä.

Johdetun luokan olion esittely... tMyn2 Johdetun luokan oliolla on siis kaikki kantaluokassa ja johdetussa luokassa määritellyt tiedot. Johdetun luokan automaattisen olion esittely ja määrittely: johdettuLuokka olio; Dynaamisen olion esittely ja määrittely. Esittely- ja määrittelyluokka on sama: johdettuLuokka* olio=new johdettuLuokka;

Johdetun luokan olion esittely... tMyn3 Dynaamisen olion esittely ja määrittely. Esittely- ja määrittelyluokka poikkeaa toisistaan. Olion tunnus on esitelty kantaluokkaan ja olio on määritelty johdettuun luokkaan. Tämä ei toimi oikein (johdetun luokan hajottimen kutsu) ilman monimuotoisuutta: Kantaluokka* olio = new johdettuLuokka;

Johdetun luokan olion esittely... tMyn4 Johdettu luokka voi erikoistua lisäämällä uusia tietojäseniä tai jäsenfunktioita ja/tai korvaamalla (redefined functions) kantaluokan jäsenfunktioiden toteutuksia. Termi redefinition, korvaaminen liittyy nimenomaan perintään. Kun saman tapaista toimintaa harjoitetaan monimuotoisuuden yhteydessä, niin terminä on silloin override. Perinnän yhteydessä kantaluokan jäsenfunktion toteutusta voidaan haluta hieman muuttaa. Silloin johdetun luokan määrittelyyn on lisättävä täsmälleen sama otsikkotieto kyseisestä jäsenfunktiosta kuin mitä on esitetty kantaluokan määrittelyssä. Toteutus sitten eroaa alkuperäisestä.

Johdetun luokan olion esittely... tMyn5 Jos johdetun luokan määrittelyssä olisi saman niminen jäsenfunktio kuin mitä on kantaluokassa, mutta tällä johdetun luokan jäsenfunktiolla olisi eri määrä tai erilaisia parametreja kuin mitä vastaavan näköisellä kantaluokan jäsenfunktiolla, niin silloin puhuttaisiin totuttuun tapaan funktion kuormittamisesta (overload/overloading).

Johdetun luokan olion esittely... tMyn6 Redefining an Inherited Function: A derived class inherits all the member functions (and member variables as well) that belong to the base class. However, if a derived class requires a different implementation for an inherited member function, the function may be redifened in the derived class.

Johdetun luokan olion esittely... tMyn7 Redefining an Inherited Function: When a member function is redefined, you must list its declaration and definition in the definition of the derived class even though the declaration is the same as in the base class. If you do not wish to redefine a member function that is inherited from the base class, then it is not listed in the definition of the derived class.

Johdetun luokan olion esittely... tMyn8 Seuraavassa esimerkissä on kuormitettu (overload) johdetun luokan muodostinta sekä korvattu (redefine) kantaluokan jäsenfunktio HaeNaytolle() johdetussa luokassa toisenlaisella toteutuksella (mutta siis otsikkotiedoiltaan ne ovat täsmälleen identtisiä). Lisäksi johdetussa luokassa on myös kuormitettu saman luokan jäsenfunktiota AsetaJArvo(). HUOM! Olisi voitu myös toteuttaa kantaluokkaan jäsenfunktio AsetaArvo(), ja korvata se (redefine) johdetussa luokassa toisenlaisella toteutuksella, mutta siinä tapauksessa johdetun luokan olemassaolevan olion tietojäsentä ’kanta’ ei voitaisi enää muuttaa, vaikka ehkä haluttaisiinkin. Miksi?

Johdetun luokan olion esittely... tMyn9 Luodaan johdettuun luokkaan sekä automaattinen että dynaaminen olio. Tässä vaiheessa kantaluokassa on vain oletusmuodostin.

Johdetun luokan olion esittely... tMyn10 // Laatikko.h #ifndef LAATIKKO_H #define LAATIKKO_H class Laatikko { public: Laatikko(); void AsetaKArvo(); ~Laatikko(); void HaeNaytolle(); protected: int* mp_kanta; }; #endif

Johdetun luokan olion esittely... tMyn11 // Pahvilaatikko.h #ifndef PAHVILAATIKKO_H #define PAHVILAATIKKO_H #include "Laatikko.h" class Pahvilaatikko: public Laatikko { public: Pahvilaatikko(); void AsetaJArvo(); Pahvilaatikko(int); void AsetaJArvo(int); ~Pahvilaatikko(); void HaeNaytolle(); private: int* mp_johdettu; }; #endif

Johdetun luokan olion esittely... tMyn12 // Laatikko.cpp #include "stdafx.h" #include #include "Laatikko.h" using namespace System; using namespace std; Laatikko::Laatikko() { cout<<"Kantaluokan oletusmuodostin, olio "<<this<<"."<<endl; mp_kanta=new int; AsetaKArvo(); }

Johdetun luokan olion esittely... tMyn13 void Laatikko::AsetaKArvo() { cout<<"Anna arvo (kantaluokka), olio "<<this<<": "; cin>>*mp_kanta; } Laatikko::~Laatikko() { cout<<"Kantaluokan hajotin, olio "<<this<<"."<<endl; delete mp_kanta; mp_kanta=0; } void Laatikko::HaeNaytolle() { cout<<"Tietoj\204sen, olio "<<this<<":"<<endl; cout<<"kanta: "<<*mp_kanta<<"."<<endl; }

Johdetun luokan olion esittely... tMyn14 // Pahvilaatikko.cpp #include "stdafx.h" #include #include "Pahvilaatikko.h" using namespace System; using namespace std; Pahvilaatikko::Pahvilaatikko() { cout<<"Johdetun luokan oletusmuodostin, olio "<<this<<"."<<endl; mp_johdettu=new int; AsetaJArvo(); }

Johdetun luokan olion esittely... tMyn15 void Pahvilaatikko::AsetaJArvo() { cout<<"Anna arvo (johdettu luokka), olio "<<this<<": "; cin>>*mp_johdettu; } Pahvilaatikko::Pahvilaatikko(int johdettu) { cout<<"Johdetun luokan param. muodostin, olio "<<this<<"."<<endl; mp_johdettu=new int; AsetaJArvo(johdettu); } void Pahvilaatikko::AsetaJArvo(int johdettu) { *mp_johdettu=johdettu; }

Johdetun luokan olion esittely... tMyn16 Pahvilaatikko::~Pahvilaatikko() { cout<<"Johdetun luokan hajotin, olio "<<this<<"."<<endl; delete mp_johdettu; mp_johdettu=0; } void Pahvilaatikko::HaeNaytolle() { cout<<"Tietoj\204senet, olio "<<this<<":"<<endl; cout<<"kanta: "<<*mp_kanta<<"."<<endl; cout<<"johdettu: "<<*mp_johdettu<<"."<<endl; }

Johdetun luokan olion esittely... tMyn17 // peri2Main.cpp : main project file. #include "stdafx.h" #include #include "Pahvilaatikko.h" using namespace System; using namespace std; int main(array ^args) { Pahvilaatikko ekaAutom=Pahvilaatikko(); ekaAutom.HaeNaytolle(); ekaAutom.AsetaKArvo(); ekaAutom.HaeNaytolle(); Pahvilaatikko tokaAutom=Pahvilaatikko(58); tokaAutom.HaeNaytolle(); tokaAutom.AsetaJArvo(); tokaAutom.HaeNaytolle(); return 0; } Aluksi kokeillaan automaattisilla olioilla:

Johdetun luokan olion esittely... tMyn18

Johdetun luokan olion esittely... tMyn19 // peri2aMain.cpp : main project file. #include "stdafx.h" #include #include "Pahvilaatikko.h" using namespace System; using namespace std; int main(array ^args) { Pahvilaatikko* ekaDyn=new Pahvilaatikko(); ekaDyn->HaeNaytolle(); ekaDyn->AsetaKArvo(); ekaDyn->HaeNaytolle(); Seuraavaksi kokeillaan dynaamisilla olioilla:

Johdetun luokan olion esittely... tMyn20 Pahvilaatikko* tokaDyn=new Pahvilaatikko(57); tokaDyn->HaeNaytolle(); tokaDyn->AsetaJArvo(); tokaDyn->HaeNaytolle(); delete ekaDyn; delete tokaDyn; return 0; }

Johdetun luokan olion esittely... tMyn21

Johdetun luokan olion esittely... tMyn22 Luotiinpa automaattisia tai dynaamisia olioita johdettuun luokkaan, niin huomataan, että ensimmäiseksi tulee aina kutsuttua kantaluokan muodostin. Siis perityt tietojäsenet alustetaan ensin, ja vasta sitten kutsutaan ”oman luokan” muodostin. Kantaluokassa oli vain yksi muodostin, oletusmuodostin, ja järjestelmä kutsui sen automaattisesti. Hajotinten kutsujärjestys on aina päinvastainen kuin mitä muodostimien kutsuketju.

Johdetun luokan olion esittely... tMyn23 Koska edellisen esimerkin tapauksessa johdetun luokan muodostin kutsui aina kantaluokan muodostinta, niin koodia voitaisiin muuttaa seuraavasti havainnollistamaan asiaa. Täsmälleen aiempaa esimerkkiä voitaisiin käyttää nytkin, mutta monipuolistetaan johdettua luokkaa siten, että siihen on toteutettu myös parametrillinen muodostin. Kummatkin johdetun luokan muodostimet kutsuvat aina kantaluokan oletusmuodostinta – koska kantaluokassa ei muunlaista muodostinta olekaan. Aluksi luodaan automaattisia olioita:

Johdetun luokan olion esittely... tMyn24 // Laatikko.h #ifndef LAATIKKO_H #define LAATIKKO_H class Laatikko { public: Laatikko(); void AsetaKArvo(); ~Laatikko(); void HaeNaytolle(); protected: int* mp_kanta; }; #endif

Johdetun luokan olion esittely... tMyn25 // Pahvilaatikko.h #ifndef PAHVILAATIKKO_H #define PAHVILAATIKKO_H #include "Laatikko.h" using namespace std; class Pahvilaatikko: public Laatikko { public: Pahvilaatikko(); void AsetaJArvot(); Pahvilaatikko(int, string); void AsetaJArvot(int, string); ~Pahvilaatikko(); void HaeNaytolle(); private: int* mp_johdettu1; string* mp_johdettu2; }; #endif

Johdetun luokan olion esittely... tMyn26 // Laatikko.cpp #include "stdafx.h" #include #include "Laatikko.h" using namespace System; using namespace std; Laatikko::Laatikko() { cout<<"Kantaluokan oletusmuodostin, olio "<<this<<"."<<endl; mp_kanta=new int; AsetaKArvo(); }

Johdetun luokan olion esittely... tMyn27 void Laatikko::AsetaKArvo() { cout<<"Anna arvo (kantaluokka), olio "<<this<<": "; cin>>*mp_kanta; } Laatikko::~Laatikko() { cout<<"Kantaluokan hajotin, olio "<<this<<"."<<endl; delete mp_kanta; mp_kanta=0; } void Laatikko::HaeNaytolle() { cout<<"Tietoj\204sen, olio "<<this<<":"<<endl; cout<<"kanta: "<<*mp_kanta<<"."<<endl; }

Johdetun luokan olion esittely... tMyn28 // Pahvilaatikko.cpp #include "stdafx.h" #include #include "Pahvilaatikko.h" using namespace System; using namespace std; Pahvilaatikko::Pahvilaatikko() :Laatikko() { cout<<"Johdetun luokan oletusmuodostin, olio "<<this<<"."<<endl; mp_johdettu1=new int; mp_johdettu2=new string; AsetaJArvot(); }

Johdetun luokan olion esittely... tMyn29 void Pahvilaatikko::AsetaJArvot() { cout<<"Anna arvo1 (johdettu luokka), olio "<<this<<": "; cin>>*mp_johdettu1; cin.get(); cout<<"Anna arvo2 (johdettu luokka), olio "<<this<<": "; getline(cin, *mp_johdettu2); } Pahvilaatikko::Pahvilaatikko(int johdettu1, string johdettu2) :Laatikko() { cout<<"Johdetun luokan param. muodostin, olio "<<this<<"."<<endl; mp_johdettu1=new int; mp_johdettu2=new string; AsetaJArvot(johdettu1, johdettu2); }

Johdetun luokan olion esittely... tMyn30 void Pahvilaatikko::AsetaJArvot(int johdettu1, string johdettu2) { *mp_johdettu1=johdettu1; *mp_johdettu2=johdettu2; } Pahvilaatikko::~Pahvilaatikko() { cout<<"Johdetun luokan hajotin, olio "<<this<<"."<<endl; delete mp_johdettu1; delete mp_johdettu2; } void Pahvilaatikko::HaeNaytolle() { cout<<"Tietoj\204senet, olio "<<this<<":"<<endl; cout<<"kanta: "<<*mp_kanta<<"."<<endl; cout<<"johdettu1: "<<*mp_johdettu1<<"."<<endl; cout<<"johdettu2: "<<*mp_johdettu2<<"."<<endl; }

Johdetun luokan olion esittely... tMyn31 // peri3Main.cpp : main project file. #include "stdafx.h" #include #include "Pahvilaatikko.h" using namespace System; using namespace std; int main(array ^args) { Pahvilaatikko ekaAutom=Pahvilaatikko(); ekaAutom.HaeNaytolle(); ekaAutom.AsetaKArvo(); ekaAutom.HaeNaytolle();

Johdetun luokan olion esittely... tMyn32 Pahvilaatikko tokaAutom(58, string("ihan kuvitteellinen")); tokaAutom.HaeNaytolle(); tokaAutom.AsetaJArvot(); tokaAutom.HaeNaytolle(); return 0; }

Johdetun luokan olion esittely... tMyn33

Johdetun luokan olion esittely... tMyn34 Muuten sama kuin edellä, mutta dynaamisia olioita:

Johdetun luokan olion esittely... tMyn35 // peri4Main.cpp : main project file. #include "stdafx.h" #include #include "Pahvilaatikko.h” using namespace System; using namespace std; int main(array ^args) { Pahvilaatikko* ekaDyn=new Pahvilaatikko(); ekaDyn->HaeNaytolle(); ekaDyn->AsetaKArvo(); ekaDyn->HaeNaytolle();

Johdetun luokan olion esittely... tMyn36 Pahvilaatikko* tokaDyn=new Pahvilaatikko(57, string("ei ongelmia")); tokaDyn->HaeNaytolle(); tokaDyn->AsetaJArvot(); tokaDyn->HaeNaytolle(); delete ekaDyn; delete tokaDyn; return 0; }

Johdetun luokan olion esittely... tMyn37