Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi71 Olio-ohjelmointi 2. osa: diat 71-110 (2. välikoe) KYMENLAAKSON AMMATTIKORKEAKOULU Jarkko Ansamäki, 2001.

Slides:



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

KYAMK/J. Ansamäki/Olio-ohjelmointi
Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
@ Leena Lahtinen Helia TIETO JA TIETOKONEOHJELMA  TIETOKONEOHJELMA KÄSITTELEE TIETOJA  TIETOJA VOIDAAN KÄSITELLÄ OHJELMASSA VAIN SALLITUILLA.
© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
© Hannu Laine 1 Tietorakenteet ja algoritmit Funktio-osoittimet Funktio-osoittimen ja taulukko-osoittimen vertailu Funktio-osoittimen käyttötapoja.
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ä.
© 2004 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice Java-perusteet Kari Kujansuu
Luokkakaaviot Luokkakaaviot Tekninen suunnittelu.
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)
Rakenteinen ohjelmointi
1. Olio-ohjelmointi.
Ohjelmointitaito (ict1td002, 12 op) Syksy 2008
Olio-mallinnus Tietojärjestelmien suunnittelu KYAMK, Liiketalous, Kouvola Jarkko Ansamäki, 2002.
13. Pakkaukset.
Perintä. Yleistä Olio-ohjelmoinnin menetelmä muodostaa uusia luokkia aiemmin määriteltyjen luokkien avulla Luokka saa automaattisesti käyttöönsä kaikki.
Antti-Jussi Lakanen Nuorten peliohjelmointi 2009 / Jyväskylän yliopisto.
Sovellusohjelman suunnittelu & toteutus
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.
Ohjelman jakaminen useampaan tiedostoon Olio-ohjelmointi (C++) KYAMK, Jarkko Ansamäki 2001.
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.
Vakio-osoitin ja osoitin vakioon tMyn1 Vakio-osoitin ja osoitin vakioon Tavallinen osoitin voi vaihtaa osoitettavaa keskusmuistialuetta. Tämä voidaan tehdä.
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
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.
7. Oliot ja viitteet.
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.
Poikkeukset Yleistä Virheeseen varautuminen tarkoittaa sitä, että ohjelmoija huomioi koodia kirjoittaessaan ajonaikaisen virheen mahdollisuuden.
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen
Toteutus. Ohjelmointikielen valinta Käytetään samaa kuin muutkin Työkalujen laatu Usein asiakas määrää Yleensä valittu jo ennen toteutusta Osaaminen vs.
Jouni Juntunen Oulun seudun ammattikorkeakoulu Liiketalouden yksikkö
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,
Poikkeustenkäsittely- lohkot tMyn1 Poikkeustenkäsittelylohkot try-catch Poikkeustilanteiden käsittelymekanismi toteutetaan varatuilla sanoilla try, throw.
Tiedostojen käsittely
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.
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
1 © Jukka Juslin Luokat, attribuutit ja metodit Yleistietoa: seuraavalla koulutusviikolla tarkempi käsittely.
Systeemityö 2 Viestiyhteyskaavio (Sekvenssi kaavio) – Sequence diagram
Osoittimen määrittely ja alustus tMyn1 Osoittimen määrittely ja alustus Osoitin (pointer) on muuttuja, joka voi sisältää keskusmuistiosoitteen. Osoitinmuuttujan.
Ohjausrakenteet Määräävät ohjelmakoodin suoritusjärjestyksen Ehtolause if – else on muotoa if (lauseke) lause1 else lause2 Jos lauseke on tosi, niin suoritetaan.
OneDrive -palvelussa Suoraan Office ohjelmasta Online
1.0 TE DiplomityöEsitelmä/ / JT Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olio- orientoituneeseen ohjelmointiin Jukka.
String-vertailusta ja Scannerin käytöstä (1/2)
5. Kapselointi.
13. Pakkaukset.
3. Luokat, oliot ja metodit Java-kielessä (Lausekielinen ohjelmointi I ja II –kursseilla opitun kertausta.)
Kantaluokan määrittely
13. Pakkaukset.
4. Attribuutit.
3. Attribuutit.
13. Pakkaukset.
4. Luokan testaus ja käyttö olion kautta
Esityksen transkriptio:

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi71 Olio-ohjelmointi 2. osa: diat (2. välikoe) KYMENLAAKSON AMMATTIKORKEAKOULU Jarkko Ansamäki, 2001

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi72 Läpikäytävät asiat  Olioiden kommunikaatio  Perintä ja olion koostuminen osaolioista  Tiedostojen käsittely  Virheiden käsittely  Debuggaus  Nopea tutustuminen Windows- ohjelmointiin.  Muuta?

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi73 Olioiden kommunikaatio  Viesti = oliolle lähetetty luokkaan kuuluvan aliohjelman (funktion) kutsu.  Aliohjelma käsittelee sen olion tietojäseniä, jolle kutsu on saapunut.  Eri kutsukerroilla sama aliohjelma voi siis käsitellä eri olioiden tietojäseniä.  Toteutuu this-osoittimen avulla.

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi74 this-osoitin  Osoitin on C++ kielessä valmiiksi esitelty:  Luokan_nimi *const this;  Osoitin pitää sisällään kutsutun olion muistiosoitteen.  void Luokka::Tulostus2(){  cout Tulostus1(); }

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi75 this-osoittimen käyttö  Käytännössä this-osoittimella on kaksi käyttötarkoitusta: 1. Osoitinta voidaan käyttää viestinvälityksessä, jos esimerkiksi kutsuttava olio tarvitsee kutsuvan olion muistiosoitetta johonkin. 2. Osoitinta voidaan käyttää apuna testausvaiheessa kun halutaan esimerkiksi selvittää olioiden olemassaoloaikoja.

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi76 Tehtävä 16  Toteuta Testi-luokka siten, että luokan oletusmuodostin ilmoittaa uuden olion syntymisestä muistipaikkaan sejase ja luokan tuhoaja ilmoittaa olion kuolemisesta muistipaikassa sejase.  Tee sitten seuraavanlainen pääohjelma:  void main(){ Testi eka, *toka; cout<<”\n”;  toka=new Testi; delete toka; cout<<”\n\n”; }

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi77 Olion palveluiden kutsuminen olion sisältä.  Luokassa määritellyt funktiot ovat suoraan käytettävissä muista luokan funktioista käsin. Esimerkiksi:  private: int a; void T(){ cout<<”Traa”; }  public: void A(int x){ a=x; }  void T2(){ T(); cout<<a; }  Myös funktioita voidaan siis sijoittaa private-näkyvyysalueelle (luokan sisäiseen käyttöön).

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi78 Toisen olion käsittely olion sisältä  Viestin saaneen olion lisäksi aliohjelmissa on mahdollista käsitellä myös parametrina välitetyn olion tietoja.  Olion välitys parametrina toteutetaan osoitin- tai viittausmuuttujan avulla.  Asiaa opiskellaan opettajajohtoisesti laadittavien esimerkkikoodien avulla.

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi79 Tehtävä 17  Lisää Henkilo-luokkaan palvelu, joka tulostaa yhden valitun (esim. sukunimen perusteella) henkilön tiedot.  Muuta tietojen tulostus –palvelua niin, että se käyttää hyväkseen tätä uutta palvelua.

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi80 Tehtävä 18  Lisää Henkilo-luokkaan palvelut, jotka palauttavat pyydetyn henkilön:  etunimen  sukunimen  osoitteen  puhelinnumeron…  Lisää Henkilo-luokkaan palvelu, jolla henkilön tietoja voi hakea esimerkiksi nimen perusteella.

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi81 Perintä  Perinnässä johdetaan olemassa olevasta (tai varta vasten periytettäväksi tehdystä) luokasta uusi tarkoitusperiin sopiva luokka.  Seuraavalla dialla yksinkertainen esimerkki julkisesta perinnästä.

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi82 Esimerkki perinnästä  #include  class VanhaLuokka{  int a;  public:  void Aseta(int x){ a=x; }  int Palauta(){ return a; }  };  class UusiLuokka : public VanhaLuokka{  public:  void Lisaa(int x){ Aseta(x+Palauta()); }  };  void main(){  UusiLuokka Oolio;  Oolio.Aseta(2); Oolio.Lisaa(3);  cout<<Oolio.Palauta();  }

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi83 Huomioita esimerkkikoodista  class UusiLuokka : public VanhaLuokka{…  Kaksoispiste, sana public ja kantaluokan nimi ilmaisevat perintäsuhteen. Toinen harvinaisempi perintätapa on yksityinen (private) jota kurssilla ei (luultavasti) käsitellä.  UusiLuokan oliolla on käyttöoikeus VanhaLuokan julkisiin jäseniin, mutta esimerkiksi a:n käsittely suoraan ei onnistu vaan pelkästään julkisten palveluiden kautta.

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi84 Tehtävä 19  Periytä VanhaLuokka-luokasta uusi luokka, jossa palveluina lisäksi  uuden luvun vähentäminen aikaisemmasta a:n arvosta.  vanhan a:n arvon kertominen syötteenä saatavalla luvulla.

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi85 Virtuaalifunktiot  virtual-sana kertoo funktion olevan virtuaalisen jäsenfunktion.  =0 –merkintä tarkentaa funktion puhtaaksi virtuaalifunktioksi (pure virtual function).  Puhtaita virtuaalifunktioita (abstraktit toiminnot) sisältävään luokkaan ei voi tehdä olioita, vaan luokasta on periytettävä uusia luokkia joissa määritellään virtuaalifunktioiden toteutus.

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi86 Esimerkkikoodi  #include  class Lauseke{  public:  virtual void Tulosta(ostream &) const = 0;  virtual double Arvo () const = 0; };  class Ynnaa : public Lauseke{  double eka, toka;  public:  Ynnaa(double x, double y) : eka(x), toka(y){}  void Tulosta (ostream &s) const { s<<eka<<"+"<<toka; }  double Arvo () const{ return(eka+toka); } };  void main(){  Lauseke *lauseke;  lauseke=new Ynnaa(2, 3);  lauseke->Tulosta(cout);  cout Arvo(); }

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi87 Huomioita koodista (kantaluokka)  Funktiot ovat vakiofunktioita (const), koska ne eivät muuta lauseketta, jolle niitä kutsutaan.  Lauseke-luokka siis esittelee kaksi funktiota, mutta ei määrittele niille mitään toimintaa.  Tulosta-palvelulle määritellään parametrin arvoksi tulostusvirtaan osoittava muistiosoite.

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi88 Huomioita koodista (johdettu luokka)  Luokkaan on määritelty tarvittavat tietojäsenet (eka ja toka)  Perityssä luokassa määritellyille palveluille on kirjoitettu metodit.  Myös luokan muodostin määritellään  Huomaa arvojen kopioiminen ’otsikkorivissä’:  Ynnaa (double x, double y):eka(x),toka(y){…}

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi89 Huomioita koodista (käyttö)  Pääohjelmassa luotu osoitin kantaluokkaan.  Myös johdetun luokan olio on eräänlainen kantaluokkansa olio, joten tämä onnistuu.  Luodaan uusi Ynnaa-luokan olio.  Huomaa cout:n käyttö Tulosta-funktion kanssa.

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi90 Tehtävä 20  Lisää äsken esiteltyyn esimerkkikoodiin luokat vähennys-, kerto- ja jakolaskua varten.  Testaa luokkien toiminta.

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi91 (epäpuhtaat) virtuaalifunktiot  Muillekin, kuin puhtaille virtuaalifunktioille voi kirjoittaa uuden merkityksen periytetyssä luokassa.  Johdetun luokan funktioiden lisäksi voidaan nyt kutsua myös kantaluokan funktioita kertomalla toteutuksessa halutun luokan nimi.

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi92 Esimerkkikoodi  #include  class Yliluokka{  int a;  public:  void Aseta(int x){ a=x;}  virtual int Palauta() { return a; }  };  class Aliluokka:public Yliluokka{  public:  int Palauta(){ return(Yliluokka::Palauta());};  };  void main(){  Aliluokka juu;  juu.Aseta(2);  cout<<juu.Palauta();  }

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi93 protected-näkyvyysalue  protected: -lohkossa olevat tietojäsenet ja funktiot ovat suojattuja.  protected-jäsenet ovat käytettävissä luokan sisällä ja luokasta johdetuissa luokissa.  protected-jäsenet eivät siis varsinaisesti ole osa luokan käyttöliittymää, koska ne eivät ole käytettävissä luokan ulkopuolella kuten public-jäsenet.

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi94 Tehtävä 21  Lisää tehtävän 19 VanhaLuokka- luokkaan protected-näkyvyysalueeseen funktio Nollaus, joka asettaa a:n arvoksi nollan.  Lisää tämän jälkeen johonkin periytettyyn luokkaan Nollaa-palvelu, joka kutsuu Nollaus-funktiota ja testaa toiminta.  Mieti, voitko käyttää perintää henkilörekisteriohjelmassasi?

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi95 Osista kokonaisuus  Toinen hierarkkinen luokkien välinen suhde on koostumissuhde, jossa jonkin luokan jäseninä on jonkin toisen luokan olioita.  Esimerkiksi korttipakassa on 52 kortti- oliota, lentokoneessa 0-4 lentokoneenmoottori-oliota.  Toteutus käyttämällä toiseen luokkaan kuuluvia olioita (tieto)jäseninä.

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi96  #include  class Osa{  char nimi[20];  public:  Osa(){ cout >nimi; }  char *Palauta(){return nimi;}  };  class Kokonaisuus{  Osa eka, toka;  char nimi[20];  public:  Kokonaisuus(){ cout >nimi; }  void Tulostus();  };  void Kokonaisuus::Tulostus(){  cout<<nimi<<":\n"<<eka.Palauta()<<endl<<toka.Palauta()<<endl<<endl;  }  void main(){  Kokonaisuus juttu;  juttu.Tulostus();  }

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi97 Osaolioiden käyttö  Yksinkertaisissa tapauksissa automaattiset oliot riittävät, mutta heti kun halutaan tehdä hieman monimutkaisempia asioita, täytyy siirtyä dynaamisen muistinhallinnan ja osoittimien käyttöön.  Osaolioiden luonti tarvittaessa.  Tarvittavien osaolioiden määrän epävarmuus  Muualla luotujen olioiden sitominen osaksi toista oliota.  Tutustuminen asiaan esimerkkikoodien avulla.

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi98 Tehtävä 22  Tee olio Sana-luokkaan. Sana-luokka koostuu Kirjain-luokan olioista. Mieti mitä palveluita tarvitaan missäkin luokassa ja miten asiat toteutetaan, jotta olio olisi joustava ja käyttökelpoinen.  Pisteiden haalimista varten voit tehdä puhelinmuistioosi ystäväryhmäluokan, jonka oliot koostuvat useammasta henkilöluokan oliosta.

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi99 Tiedostojen käsittely  Tällä kurssilla käsitellään kahta eri keinoa tiedostojen käsittelyyn:  fstream-kirjastoa: o/tiedostot/siframes.htm o/tiedostot/siframes.htm  MFC-kirjastoista löytyvää Cfile-luokkaa.

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi100 Tehtävä 23  Tutustu Visual Studion ohjeistuksesta CFilen käyttöön. Selvitä ainakin seuraavat asiat:  Tarvittava kirjasto.  Luokan tarjoamat palvelut.  Tiedoston avaus (ja tärkeimmät avausliput).  Tiedostoon kirjoitus.  Tiedostosta lukeminen.

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi101 Esimerkkiongelma  Toteutetaan ohjelma, jonka avulla voidaan kirjoittaa muutama rivi tekstiä tiedostoon tai lukea olemassa oleva tiedosto ja tulostaa tiedoston sisältö näytölle.

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi102 Tehtävä 24  Mietitään yhdessä, miten puhelinmuistioiden levytallennukset kannattaisi toteuttaa.

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi103 Virheiden käsittely  Ajonaikaisia C++ -ohjelman virhetilanteita voi käsitellä poikkeusten (exception) avulla.  MFC on tuonut jotain uusia keinoja poikkeusten hallintaan, mutta vanha hyvä keino on try-catch –lohkojen käyttö.

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi104 Esimerkkikoodi  #include  void main(){  int tulos, luku=4, jakaja=0;  try{  if (jakaja==0)  throw(jakaja);  tulos=luku/jakaja;  cout<<"Tulos on: "<<tulos<<endl;  }  catch(int jakaja){  cout<<"\nJakaja ei voi olla: "<<jakaja;  cout<<"Anna uusi jakaja: ";  cin>>jakaja;  if(jakaja==0)  throw;  cout<<"\nJakaja OK!\n";  }

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi105 Esimerkin läpikäyntiä  Koodin ’vaarallinen’ osuus on sijoitettu try- lohkoon.  Jos virhetilanne huomataan ’heitetään’ poikkeus throw-komennolla. Tässä tapauksessa poikkeus on siis int-tyyppinen tieto: jakaja.  catch-lohko ’sieppaa’ poikkeuksen, mikäli käsittelijä on samaa tyyppiä kuin heitetty poikkeus.  throw ilman parametria aiheuttaa ohjelman keskeyttämisen.

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi106 Tehtävä 25  Muuta esimerkkikoodia siten, että ohjelman toiminta on järkevää.  Jakaja kysytään alussakin käyttäjältä.  Virhekäsittelystä palataan koittamaan jakamista uudella jakajalla.  Tutustu tarvittaessa Visual Studion ohjeistukseen.  Lisää poikkeustenkäsittelyä omaan harjoitustyöhösi.

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi107 Debuggaus  Käännettäessä valittavissa kaksi eri tilaa: Debug ja Release.  Debuggausvalintoja ja –tiloja voi valita Project Settings –valintaikkunan C/C++ välilehdeltä.  Debug-työkalurivi.

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi108 Windows-ohjelmointi  Windows-ohjelmointi Visual C++:lla koostuu erilaisista vaiheista:  Käyttöliittymän rakentaminen.  Ohjelmakoodin tuottaminen.  Ohjelmakoodin liittäminen käyttöliittymään.  MDI/SDI/Dialogipohjainen/…  Kevyenä harjoituksena teemme johdetusti seuraavaksi pienen dialogipohjaisen sovelluksen.

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi109 Nappi-sovellus  Projektin tyypin valitseminen  MFC AppWizard(exe), Nappi, dialogi  Testiajo  Dialogipohjan muuttaminen  ResourceView, Dialog, IDD_NAPPI_DIALOG  TODO-teksti pois, painamua-nappi tilalle  Ohjelmakoodin liittäminen nappiin  Oikea hiiren nappi nappulan päällä -> Events  BN_CLICKED, Add/Edit  MessageBox(”Kiitti, jo helpotti!”);  Tutki luotuja tiedostoja

Syksy 2001 KYAMK/J.Ansamäki/Olio- ohjelmointi110 Muuta  Aiheita, joita käsitellään, mikäli jää aikaa ja mielenkiintoa riittää:  templatet  Katsaus funktiokirjastoihin  Operaattoreiden ylikuormitus  Muodostimet ja tuhoajat perinnässä  Ketjutetut listat…  ?