Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.

Slides:



Advertisements
Samankaltaiset esitykset
Tuloksellinen Java-ohjelmointi Luku 3 Luokkien käyttäminen
Advertisements

Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
Osion kaksi kertaus Jukka Juslin © Jukka Juslin.
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ä.
Ict1td002: Ohjelmointitaito Kertaus Osio 2 - luokat - ilmentymät - viittaus- ja arvomuuttuja - ilmentymien taulukointi HAAGA-HELIA IltaTiko.
Olio-ohjelmointi. Mitä olio-ohjelmointi on ?  Pyritään mallintamaan jotain reaalimaailman kohdetta tietokoneohjelman avulla  Olio on luokan ilmentymä.
Taulukot: Array Taulukko Javassa pitää aina perustaa (new)
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.
Perintä. Yleistä Olio-ohjelmoinnin menetelmä muodostaa uusia luokkia aiemmin määriteltyjen luokkien avulla Luokka saa automaattisesti käyttöönsä kaikki.
OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT. LUOKKA JAVA ohjelma koostuu luokista LUOKKA sisältää metodeja molemmat sisältävät attribuutteja eli muuttujia.
@ 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ä.
9. Periytyminen Javassa.
Toiston tekeminen Javalla  Mikä toistorakenne on?  while toistorakenne  do-while toistorakenne  for toistorakenne 1.
Osoitin ja char- tietotyyppi tMyn1 Osoitin ja char-tietotyyppi Osoitinmuuttuja, joka on tyyppiä char* voidaan alustaa merkkijonolla: char* alku=”En toivo.
Sami Jantunen LTY/Tietotekniikan osasto
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.
© Jukka Harju, Jukka Juslin
Tekstitiedostosta lukeminen tMyn1 Tekstitiedostosta lukeminen Tiedosto voidaan avata pelkästään lukemista varten tai kirjoittamista ja lukemista varten.
Normalisointi2tMyn1 Yksi kelpo perusavain on sarakkeet laakNro ja vastAika. Toinen voisi olla potNro ja vastAika, kolmas voisi olla huoneNro ja vastAika,…,
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ä.
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.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Virheenpaljastus- ja korjauskoodit tMyn1 Virheenpaljastus- ja korjauskoodit Virheen havaitseminen Tässä vaaditaan ainoastaan se, että pystytään toteamaan.
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.
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
Johdetun luokan olion esittely... tMyn1 Johdetun luokan olion esittely ja määrittely Esittelyluokka tarkoittaa olion tunnuksen luokkaa. Määrittelyluokka.
Oliot ja luokat Oliot ja luokat Oliot (object) ja luokat (class) ovat keskeisiä olio- ohjelmoinnin käsitteitä. Olio-ohjelmointi on ohjelmointiparadigma,
© Jukka Harju, Sisältö 1. Mitä on periytyminen Javassa? 2. Periytyminen UML-luokkakaaviossa 3. Termejä 4. Periytymishierarkia 5. Periytyminen vs.
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.
Olio-ohjelmoinnin perusteet luento 5 Päivi Ovaska LTY/Tietotekniikan osasto.
Olio-ohjelmoinnin perusteet luento 2
Olio-ohjelmoinista lyhyesti. 2.2 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen.
6. Metodit.
3. Olio-ohjelmoinista lyhyesti
Poikkeustenkäsittelylohkot try-catch
Kantaluokan määrittely
3. Luokat, oliot ja metodit Java-kielessä (Lausekielinen ohjelmointi I ja II –kursseilla opitun kertausta.)
Kantaluokan määrittely
Luokan määrittely class-määreellä
6. Metodit.
4. Attribuutit.
15. Ohjelmoinnin tekniikkaa
Tiedon tulostaminen/kirjoittaminen ”WriteLine”
4. Luokan testaus ja käyttö olion kautta
Esityksen transkriptio:

Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä varaa tilan oliolle ja kutsuu luokkahierarkian muodostimia olion alustusta varten. Johdetun luokan oliolle varattavan tilan koko on johdetun luokan ja kantaluokan tietojäsenten vaatiman tilanvarauksen tavumäärä yhteenlaskettuna. Johdetun luokan olio saa kanta- ja johdetussa luokassa määritellyt tiedot.

Johdetun luokan olion alustus tMyn2 Luotaessa olio johdettuun luokkaan alustuu kantaluokkaan syntynyt ilmentymä ensin ja sen jälkeen johdettuun luokkaan syntynyt ilmentymä. Järjestelmä suorittaa siis johdetun luokan muodostimen rungon vasta kantaluokan muodostimen rungon jälkeen. Olion tyhjennys ja hajottimien suoritusjärjestys on päinvastainen.

Johdetun luokan olion alustus tMyn3 Johdetun luokan olion alustus halutuilla alkuarvoilla: johdettuLuokka olio(alkuarvot); johdettuLuokka olio= johdettuLuokka(alkuarvot); johdettuLuokka* olio=new johdettuLuokka(alkuarvot); Helpoin tapaus on jo käsiteltykin: kantaluokalla on ainoastaan oletusmuodostin. Johdetulla luokalla voi ola useitakin kuormitettuja muodostimia. Kantaluokan muodostin tulee kutsutuksi automaattisesti, niin kuin on nähty edellä.

Johdetun luokan olion alustus tMyn4 Entäpä jos kantaluokkaan on määritelty parametrillinen muodostin! Nyt tulee johdetun luokan muodostimessa olla mahdollista välittää tarvittavat argumentit kantaluokan muodostimelle niissä tapauksissa joissa johdetun luokan muodostin ei kutsu sellaista kantaluokan muodostinta, jossa arvot kysyttäisiin ohjelman käyttäjältä. Kokeillaan tätä aluksi automaattisen olion kohdalla:

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

Johdetun luokan olion alustus tMyn6 // 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(int, int); ~Pahvilaatikko(); void HaeNaytolle(); private: int* mp_johdettu; }; #endif

Johdetun luokan olion alustus tMyn7 // 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 alustus tMyn8 void Laatikko::AsetaKArvo() { cout<<"Anna arvo (kantaluokka), olio "<<this<<": "; cin>>*mp_kanta; } Laatikko::Laatikko(int kanta) { cout<<"Kantaluokan param. muodostin, olio "<<this<<"."<<endl; mp_kanta=new int; AsetaKArvo(kanta); } void Laatikko::AsetaKArvo(int kanta) { *mp_kanta=kanta; }

Johdetun luokan olion alustus tMyn9 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 alustus tMyn10 // 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_johdettu=new int; AsetaJArvo(); }

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

Johdetun luokan olion alustus tMyn12 Pahvilaatikko::Pahvilaatikko(int kanta, int johdettu) :Laatikko(kanta) { cout<<"Johdetun luokan param(2). muodostin, olio ” <<this<<"."<<endl; mp_johdettu=new int; AsetaJArvo(johdettu); } Koska järjestelmä suorittaa johdetun luokan muodostimen rungon vasta kantaluokan muodostimen suorituksen jälkeen, on kantaluokalle kuuluvat alkuarvot välitettävä parametreina kantaluokan muodostimelle johdetun luokan muodostimen toteutuksen yhteydessä.

Johdetun luokan olion alustus tMyn13 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 alustus tMyn14 // peri5Main.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 alustus tMyn15 Pahvilaatikko tokaAutom=Pahvilaatikko(58); tokaAutom.HaeNaytolle(); tokaAutom.AsetaJArvo(); tokaAutom.HaeNaytolle(); return 0; }

Johdetun luokan olion alustus tMyn16

Johdetun luokan olion alustus tMyn17 Toistetaan edellinen esimerkkiohjelma dynaamisen olion luonnilla, siis muutokset ainoastaan main- osaan:

Johdetun luokan olion alustus tMyn18 //sama kuin edellisessä esimerkissä … // peri5aMain.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 alustus tMyn19 Pahvilaatikko* tokaDyn=new Pahvilaatikko(57); tokaDyn->HaeNaytolle(); tokaDyn->AsetaJArvo(); tokaDyn->HaeNaytolle(); delete ekaDyn; delete tokaDyn; return 0; }

Johdetun luokan olion alustus tMyn20

Johdetun luokan olion alustus tMyn21 Tilanne ei muutu periaatteessa mitenkään, vaikka luokkahierarkioita lisättäisiin yhdellä. Olkoot kantaluokan periytymistapa public. Nyt erona kaksitasoiseen luokkahierarkiaan on se, että parametrillisia muodostimia tarvitaan useampia. Kokeillaan aluksi automaattisilla olioilla:

Johdetun luokan olion alustus tMyn22 // Laatikko.h #ifndef LAATIKKO_H #define LAATIKKO_H class Laatikko { public: Laatikko(); void AsetaLeveys(); void AsetaSyvyys(); void AsetaKorkeus(); Laatikko(double, double, double); void AsetaLeveys(double); void AsetaSyvyys(double); void AsetaKorkeus(double); ~Laatikko(); void HaeTiedot();

Johdetun luokan olion alustus tMyn23 protected: double m_leveys; double m_syvyys; double* mp_korkeus; }; #endif

Johdetun luokan olion alustus tMyn24 // Pahvilaatikko.h #ifndef PAHVILAATIKKO_H #define PAHVILAATIKKO_H #include "Laatikko.h" class Pahvilaatikko:public Laatikko { public: Pahvilaatikko(); void AsetaPaino(); Pahvilaatikko(double); void AsetaPaino(double); Pahvilaatikko(double, double, double, double); ~Pahvilaatikko(); void HaeTiedot(); protected: double* mp_paino; }; #endif Kutsuu kantaluokan oletus- muodostinta. Kutsuu kantaluokan parametrillista muodostinta.

Johdetun luokan olion alustus tMyn25 // ruokaRasia.h #ifndef RUOKARASIA_H #define RUOKARASIA_H #include "Pahvilaatikko.h" using namespace std;

Johdetun luokan olion alustus tMyn26 class ruokaRasia:public Pahvilaatikko { public: ruokaRasia(); void AsetaSisalto(); ruokaRasia(string); void AsetaSisalto(string); ruokaRasia(double, string); ruokaRasia(double, double, double, double, string); ~ruokaRasia(); void HaeTiedot(); protected: string* mp_sisalto; }; #endif Kutsuu Pahvilaatikko-luokan oletusmuodostinta. Kutsuu Pahvilaatikko-luokan 1 param. muodostinta. Kutsuu Pahvilaatikko-luokan 4 param. muodostinta.

Johdetun luokan olion alustus tMyn27 // Laatikko.cpp #include "stdafx.h" #include #include "Laatikko.h" using namespace System; using namespace std; Laatikko::Laatikko() { cout<<"Laatikko-luokan oletusmuodostin, olio "<<this<<endl; AsetaLeveys(); AsetaSyvyys(); mp_korkeus=new double; AsetaKorkeus(); }

Johdetun luokan olion alustus tMyn28 void Laatikko::AsetaLeveys() { cout<<"Anna leveys: "; cin>>m_leveys; cin.get(); } void Laatikko::AsetaSyvyys() { cout<<"Anna syvyys: "; cin>>m_syvyys; cin.get(); } void Laatikko::AsetaKorkeus() { cout<<"Anna korkeus: "; cin>>*mp_korkeus; }

Johdetun luokan olion alustus tMyn29 Laatikko::Laatikko(double leveys, double syvyys, double korkeus) { cout<<"Laatikko-luokan param. muodostin, olio "<<this<<endl; AsetaLeveys(leveys); AsetaSyvyys(syvyys); mp_korkeus=new double; AsetaKorkeus(korkeus); } void Laatikko::AsetaLeveys(double leveys) { m_leveys=leveys; } void Laatikko::AsetaSyvyys(double syvyys) { m_syvyys=syvyys; } void Laatikko::AsetaKorkeus(double korkeus) { *mp_korkeus=korkeus; }

Johdetun luokan olion alustus tMyn30 Laatikko::~Laatikko() { cout<<"Laatikko-luokan hajotin, olio "<<this<<endl; delete mp_korkeus; mp_korkeus=0; } void Laatikko::HaeTiedot() { cout<<"Laatikko-luokan olio "<<this<<":"<<endl <<"leveys: "<<m_leveys<<endl <<"syvyys: "<<m_syvyys<<endl <<"korkeus: "<<*mp_korkeus<<endl; }

Johdetun luokan olion alustus tMyn31 // Pahvilaatikko.cpp #include "stdafx.h" #include #include "Pahvilaatikko.h" using namespace System; using namespace std; Pahvilaatikko::Pahvilaatikko() :Laatikko() { cout<<"Pahviaatikko-luokan oletusmuodostin, olio "<<this<<endl; mp_paino= new double; AsetaPaino(); }

Johdetun luokan olion alustus tMyn32 void Pahvilaatikko::AsetaPaino() { cout<<"Anna paino: "; cin>>*mp_paino; cin.get(); } Pahvilaatikko::Pahvilaatikko(double paino) :Laatikko() { cout<<"Pahviaatikko-luokan 1 param. muodostin, olio ” <<this<<endl; mp_paino= new double; AsetaPaino(paino); } void Pahvilaatikko::AsetaPaino(double paino) { *mp_paino=paino; }

Johdetun luokan olion alustus tMyn33 Pahvilaatikko::Pahvilaatikko(double leveys, double syvyys, double korkeus, double paino) :Laatikko(leveys, syvyys, korkeus) { cout<<"Pahviaatikko-luokan 4 param. muodostin, olio "<<this<<endl; mp_paino= new double; AsetaPaino(paino); } Pahvilaatikko::~Pahvilaatikko() { cout<<"Pahvilaatikko-luokan hajotin, olio "<<this<<endl; delete mp_paino; mp_paino=0; }

Johdetun luokan olion alustus tMyn34 void Pahvilaatikko::HaeTiedot() { cout<<"Pahviaatikko-luokan olio "<<this<<":"<<endl <<"leveys: "<<m_leveys<<endl <<"syvyys: "<<m_syvyys<<endl <<"korkeus: "<<*mp_korkeus<<endl <<"paino: "<<*mp_paino<<endl; }

Johdetun luokan olion alustus tMyn35 // ruokaRasia.cpp #include "stdafx.h" #include #include "ruokaRasia.h" using namespace System; using namespace std; ruokaRasia::ruokaRasia() :Pahvilaatikko() { cout<<"ruokaRasia-luokan oletusmuodostin, olio "<<this<<endl; mp_sisalto= new string; AsetaSisalto(); }

Johdetun luokan olion alustus tMyn36 void ruokaRasia::AsetaSisalto() { cout<<"Anna sis\204lt\224: "; getline(cin, *mp_sisalto); } ruokaRasia::ruokaRasia(std::string sisalto) :Pahvilaatikko() { cout<<"ruokaRasia-luokan 1 param. muodostin, olio "<<this<<endl; mp_sisalto= new string; AsetaSisalto(sisalto); } void ruokaRasia::AsetaSisalto(std::string sisalto) { *mp_sisalto=sisalto; }

Johdetun luokan olion alustus tMyn37 ruokaRasia::ruokaRasia(double paino, std::string sisalto) :Pahvilaatikko(paino) { cout<<"ruokaRasia-luokan 2 param. muodostin, olio "<<this<<endl; mp_sisalto= new string; AsetaSisalto(sisalto); } ruokaRasia::ruokaRasia(double leveys, double syvyys, double korkeus, double paino, std::string sisalto) :Pahvilaatikko(leveys, syvyys, korkeus, paino) { cout<<"ruokaRasia-luokan 5 param. muodostin, olio "<<this<<endl; mp_sisalto= new string; AsetaSisalto(sisalto); }

Johdetun luokan olion alustus tMyn38 ruokaRasia::~ruokaRasia() { cout<<"ruokaRasia-luokan hajotin, olio "<<this<<endl; delete mp_sisalto; mp_sisalto=0; } void ruokaRasia::HaeTiedot() { cout<<"ruokaRasia-luokan olio "<<this<<":"<<endl <<"leveys: "<<m_leveys<<endl <<"syvyys: "<<m_syvyys<<endl <<"korkeus: "<<*mp_korkeus<<endl <<"paino: "<<*mp_paino<<endl <<"sisalto: "<<*mp_sisalto<<endl; }

Johdetun luokan olion alustus tMyn39 // periKoKe4Main.cpp : main project file. #include "stdafx.h" #include #include "ruokaRasia.h" using namespace System; using namespace std; int main(array ^args) { ruokaRasia eka(1.1, 2.2, 3.3, 4.4, string("rusinainen maksalaatikko")); eka.HaeTiedot(); eka.AsetaKorkeus(); eka.HaeTiedot(); return 0; }

Johdetun luokan olion alustus tMyn40

Johdetun luokan olion alustus tMyn41 Kokeillaan vielä dynaaminen objekti:

Johdetun luokan olion alustus tMyn42 //… //sama kuin edellinen esimerkki // periKoKe4Main.cpp : main project file. #include "stdafx.h" #include #include "ruokaRasia.h" using namespace System; using namespace std; int main(array ^args) { ruokaRasia* eka=new ruokaRasia(1.1, 2.2, 3.3, 4.4, "rusinainen maksalaatikko"); eka->HaeTiedot(); eka->AsetaLeveys(); eka->HaeTiedot(); delete eka; return 0; }

Johdetun luokan olion alustus tMyn43