Olio-ohjelmointi 1

TiteWiki

Loikkaa: valikkoon, hakuun

Sisällysluettelo

Kurssin perustiedot

  • Nimi: Olio-ohjelmointi 1
  • Koodi: KTE1316
  • Aika: 08.01.2007 - 04.05.2007
  • Suoritus: pakollinen
  • Luokittelu: koulutusohjelman ammattiopinnot, ohjelmointitekniikka
  • Laajuus: 5 op
  • Oppitunteja/viikko:
    • 3. periodi: 6 (virallisesti, mutta käytännössä "hiljaisella sopimuksella" 10)
    • 4. periodi: 4 (virallisesti, mutta käytännössä "hiljaisella sopimuksella" 10)
  • Arvostelu: 0-5
    • Oma arvosana: 5
    • Arvostelupvm: 30.04.2007
  • Läsnäolopakko: ei
  • Opettaja: Martti Ylä-Jussila

Virallinen kuvaus (scp.fi, opinto-opas 2005-2006)

Tavoite

Perehdyttää opiskelija oliopohjaiseen ohjelmointiin C++-kielellä.

Sisältö

Olio-ohjelmoinnin peruskäsitteet, C++-ohjelmointikieli, oliot ja luokat, metodit ja viestinvälitys, periytyvyys, uudelleenkäytettävyys.

Opetusjärjestelyt

Luentoja ja harjoituksia.

Oppimateriaali

Käsikirjat ja luentomateriaali, Päivi Hietanen: C++ ja olio-ohjelmointi, Teknolit Oy, Kai Koskimies: Pieni oliokirja, Suomen ATK-kustannus Oy.

Hyväksymisvaatimukset

Luennot, harjoitustyöt ja välikokeet tai tentti.

Oma kuvaus

Opetusjärjestelyt

Tällä kurssilla jatkettiin samaa "hiljaisen sopimuksen" tuntimäärälinjaa kuin saman opettajan Ohjelmoinnin jatko -kurssilla. Eli: virallisesti lukujärjestyksessä on käytössä ryhmäjako, ja yhdelle ryhmälle tulee oppitunteja kuusi kappaletta viikossa ensimmäisen periodin aikana ja neljä kappaletta toisen periodin aikana. Koska läpikäytävää asiaa on kuitenkin niin paljon, on ryhmäjaoista pääasiassa luovuttu ja tuntimäärä näin nostettu kaikille oppilaille 10 tuntiin viikossa. On toki mainittava, että tuntimäärä oli varsin liukuva: jos halusi tehdä tehtäviä koulussa, pystyi istumaan tunneilla tuon 10 tuntia (jopa hieman enemmänkin), mutta vähemmällä selvisi, jos osasi tehdä asioita kotona.

Muiltakin osin opetusjärjestelyt muistuttavat hyvin pitkälti Ohjelmoinnin jatko -kurssin järjestelyjä. Oppikirja on sama (Päivi Hietasen C++ ja olio-ohjelmointi, jatketaan siitä mihin jäätiin), tunneilla katsotaan kalvoja ja tehdään tuntitehtäviä, kokeita on iso nippu ja jokaiseen liittyy jaksotehtävä. Jaksotehtävien ja kokeiden suhteista täytyy kuitenkin mainita sellainen uudistus, että nyt jaksotehtävä täytyy olla palautettu ennen koetta - jos ei ole palauttanut, ei saa koepaperia laisinkaan. Ai niin, jaksotehtävät täytyy palauttaa nyt entiseen tapaan levykkeellä, mutta myös lähdekoodi tulostettuna paperille. Paperia tuleekin aikamoinen nippu, jos koodirivejä on paljon (tämä johti lopulta siihen, että myöhemmässä vaiheessa jaksotehtäviä ei enää tulostettu). Kokeissa myös sellainen uudistus, että ne tehdään käsin paperille (mielenkiintoista ohjelmoinnin ollessa kyseessä, eikö?).

Kurssin loputtua tuli huomattua, että kurssin koodi on eri kuin mitä alkuperäisessä opintosuunnitelmassani. Samalla myös opintopisteiden määrä on muuttunut: alkuperäisessä 5, mutta nyt tuli vain 4,5.

Sisältö

Kun aiempi Ohjelmoinnin jatko -kurssi käsitteli C++:n perusteita, siirryttiin nyt olio-ohjelmointiin. Listataan aiemman kurssin tapaan käsitellyt aiheet suoraan oppikirjan sisällysluettelosta, koska opiskelussa todellakin edettiin orjallisesti sen mukaan:

  • luokkatyypit ja kapselointi (esim. luokan määrittely, metodien toteutus, muistinvarausluokat, modularisointi)
  • luokan jäsenet (tietojäsenet ja aliohjelmajäsenet)
  • oliokohtaiset toiminnot (luonti, tuhoaminen, muodostimet, sijoitus, olio aliohjelman parametrina)
  • dynaamisten tietojäsenten käsittely
  • olioiden ja luokkien välisten yhteyksien toteuttaminen (koostumussuhde, yhteyssuhde, sisäkkäiset luokat)
  • luokkakohtaiset tieto- ja aliohjelmajäsenet
  • johdanto periytymiseen (käyttötilanteet, yliluokan määrittely, aliluokan määrittely)
  • palveluliittymän laajentaminen ja public-periytymistapa
  • monimuotoisuus ja public-periytymistapa (virtuaaliset metodit)
  • abstraktit luokat ja public-periytymistapa
  • toteutustavan periytyminen protected- ja private-periytymistavoilla
  • moniperiytyminen (erotteleva ja yhdistävä)
  • luokan ystävät ja operaattoreiden kuormitus
  • tietorakenneluokat (lähinnä vain yksisuuntainen linkitetty lista)
  • mallit (luokat ja aliohjelmat)
  • tyyppi-informaatio ja tyyppimuunnokset
  • poikkeuskäsittely

Koe/muu arvostelu

Välikokeita oli nyt seitsemän kappaletta, eli yksi vähemmän kuin pitkälti samankaltaisessa Ohjelmoinnin jatko -kurssissa. Jokaiseen välikokeeseen liittyi jaksotehtävä ja tämä täytyi myös palauttaa ennen koetta, jotta edes sai tehdä kokeen. Tästä muodostuikin suurehko ongelma joillekin, sillä kun yksi jaksotehtävä myöhästyi, siirtyi koe, sitten myöhästyikin jo seuraava jaksotehtävä... eli syntyi oravanpyörä, josta oli vaikea päästä pois. Tässä oikestaan myös syy sille, miksi opettaja lisäsi kurssiin oppitunteja kesken kaiken niitä kaipaaville.

Siinä vaiheessa, kun ensimmäiset saivat arvosanat kurssista, oli arvosanalistan katsominen melko lohdutonta katsottavaa: seitsemän henkilöä hieman yli 40:stä oli saanut kaikki kokeet suoritettua ja jaksotehtävät tehtyä. Okei, ei tuo n. 40 oppilasta ole todellinen määrä mikä kurssille osallistui, mutta virallisen listan mukaan kuitenkin...

Todellinen hyöty oppimisen kannalta

Aiemman Ohjelmoinnin jatko -kurssin tapaan hyöty oli todella suuri, sillä C++ oli itselle täysin uusi asia. Aiemmassa kurssissa käsiteltiin C++:n perusteita, tässä tarkasteltiin asiaa olio-ohjelmoinnin kannalta. Toisin sanoen ensimmäinen kurssi oli vasta verryttelyä, nyt päästiin itse asiaan. Hyvä, opettavainen kurssi.

Arvosanat kurssille (0-5)

  • Toteutus: 5
  • Opetus: 5
  • Hyödyllisyys: 5
  • Oma suoritus: 5
Henkilökohtaiset työkalut