Ohjelmointi++ 2002/ 18.3

Demo 9, guru-tehtävät


Näitä Guru-tehtäviä voit "varastoida" tuleviin demoihin. Eli jos nyt täyttää 8 tehtävää, niin ilmoita seuraavalla kerralla "käyttämättä" jääneet.

G1-3
Katso osuuko3.cpp. Muuta ohjelmaa siten, että käytössä olevat luokat voidaan määrätä seuraavasti:
int main(void)
{
  cKuviot kuviot(6);
  cNaytto naytto(&kuviot);
  kuviot.lisaa_malli(new cYmpyra(),'1');
  kuviot.lisaa_malli(new cNelio(),'2');

naytto.ohjeet(); naytto.kysy_kuviot(); naytto.kysele_pisteita(); naytto.kiitokset(); return 0; }


Jos ohjelmassa halutaan käyttää muita kuvioita, tarvitsee sitten vain kirjoittaa uusi luokka ja lisätä tuohon pääohjelmaan yksi rivi. Mihinkään muualle ei luokan (kuvion) lisäyksestä saa tulla lisäkoodia!

G4-6
Muuta kuvio-ohjelmaa siten, että ohjelman päätyttyä syötetyt kuviot talletetaan tiedostoon ja seuraavassa käynnistyksessä kuviot luetaan tiedostosta.

G7-16
Muuta ohjelma toimimaan graaffisella käyttöliittymällä. Vinkkejä:
Muunnosmatriisit C++:lla (ja piirtäminen OWL:llä, ei kannata
opetella enää)
http://www.mit.jyu.fi/~vesal/kurssit/winohj/oop/apf/owl5/piirto/sin.cpp
Piirtäminen Delphillä (sama VCL kuin Builderissä):
http://www.mit.jyu.fi/~vesal/kurssit/winohj/winohj/delphi/comps/piirto
GKO:n malliharjoitustyö:
http://www.cc.jyu.fi/~vesal/gko/
Tee ensin muunnosmatriisit C++:lla (saa kopioitua soveltuvin osin em. linkistä), lisää sinne käänteismatriisin laskenta (tarvitaan kun hiirellä klikataan ruutua ja selvitetään mitä "reaalimaailman pistettä" klikkaus vastaa. Koita keksiä systeemi, missä et kuvioiden kohdalla ainakaan pilaa mahdollisuutta edelleen käyttää tekstipohjaissa systeemissä. Ihanne olisi, jos tekstipohjaisessakin systeemissä voisi piirtää kuvasta havainnollisen esityksen (* tms. merkkejä käyttäen).

G17-20
kassa2.cpp:n tehtävä 11: Graafinen käyttöliittymä kassa3.cpp:een tehtynä.