Projektityön kuvaus on julkaistu 25.10.2007.


Perustiedot opintojaksosta C++-ohjelmointi, päivitetty 4.12.2007 (Hannu Laine)
 


C++-ohjelmointi T0199 (TP05S1)

Ilmoittautuminen opintojaksolle tapahtuu Winha-järjestelmän kautta. Opintojakson  koodi on T0199ja toteutuksen koodi on TP05S1.  

Opintojakso antaa perusvalmiudet olio-ohjelmoinnin hyväksikäyttöön käytännön ohjelmistotyössä erityisesti C++-kielellä. Kurssin suoritettuaan opiskelijalla on yleiskuva olio-ohjelmoinnin merkityksestä ja soveltamismahdollisuuksista tietojenkäsittelytekniikan eri osa-alueilla. Opiskelija ymmärtää olio-ohjelmoinnin keskeiset periaatteet ja osaa käyttää niitä ohjelmiston suunnittelussa ja toteutuksessa. Kurssilla painotetaan C++-kielen niitä piirteitä, jotka eroavat Javasta. Esimerkiksi muistinkäytön hallinta ja ymmärtäminen, osoittimien käyttö olioiden käsittelyssä ja C++:n standard  template luokkien ja template algoritmien käyttö ovat tällaisia asioita. Kurssilla käsiteltävät asiat ovat välttämätöntä pohjatietoa esimerkiksi Symbian C++-ohjelmointiin


[ Perustiedot   |   Pääkohdat   |   Toteutumat  |   Kurssimateriasaali Harjoitukset  | RyhmätyöharjoitusTentti   ]


o Perustiedot


oSisällön pääkohdat

Seuraavassa on alustavasti sisällön pääkohdat. Lista tarkentuu opintojakson aikana.


oKäsitellyt asiat

Klikkaamalla seuraavaa linkkiä, saat näkyviin tarkemman listan, mitä tähän mennessä on tunneilla käsitelty:

Lista käsitellyistä asioista


 o Kurssimateriaali


    Lafore Robert: Object oriented Programming in C++


    Bjarne : The C++ programming Language
    Lippman, Jajoie : C++ Primer


    Kai Koskimies : Oliokirja
    Matti Rintala, Jyke Jokinen : Olioiden ohjelmointi C++:lla
    Päivi Hietanen : C++ ja olio-ohjelmointi


Luentokalvot :
Osa 1a    Osa 1b   ( Eroja C:n ja C++:n välillä )

Osa 2a   Osa 2b   ( Johdanto olio-ohjelmointiin )

Osa 3   ( Konstruktorit ja destruktorit )

Osa 4   ( Operaattorien ylikuormitus )  

Osa 5   ( Luokka string )  

Osa 6   (Staattiset/dynaamiset taulukot, joiden sisältönä on oliot/olioiden osoittimet. Olioilla on staatisia/dynaamisia jäseniä ) 

Osa  7   (Staattiset datajäsenet (avainsana static) ja const määritteet) 

Osa  8  (Osasuhde ja assosiaatiosuhde)

Osa 9a   Osa 9b     (Perusasiat perinnästä)

Osa 10a    Osa 10b     (Lisää perinnästä: Myöhäinen sidonta, virtuaalimetodit, polymofismi jne.)

Osa 11    (Template funktiot ja luokat. Johdanto STL:ään: vector ja iteraattorit ) 

Osa 12    (Muut STL-containerit, container adaptorit, iterator adaptorit ja funktio-oliot) 




o Harjoitukset

Harjoitus 1  

Harjoitus 2  

Harjoitus 3  

Harjoitus 4  

Harjoitus 5   xmltemperature_pohja.cpp  weather.xml

Harjoitus 6  

Harjoitus 7L   (Lisätehtävä)  (files counter.h  ,  counterDevCpp.obj  for DevC++ environment)

Harjoitus 8   (files list.h  ,  listDevCpp.obj  for DevC++ environment)

Harjoitus 9  

Harjoitus 10  

Harjoitus 11  

Harjoitus 12  

Harjoitus 13L   (Lisätehtävä) 



oRyhmätyöharjoitus

Opintojaksoon kuuluu ryhmätyöharjoitus, josta erillinen kuvaus: ryhmätyöharjoituksen kuvaus. Ryhmätyö tehdään pääsääntöisesti kolmen hengen ryhmissä. Yleisluonteisia ohjeita projektityöstä löytyy tästä linkistä: ohjeita ohjelmistoprojektin läpivientiin..


oTentti

Tentti on toisen periodin jälkeen joulukuussa keskiviikkona 12.12.2007 klo 13.00 huoneessa EA1.124.

Tentissä tutkitaan kurssilla käsiteltyjen aiheiden ymmärtäminen ja kyky niiden soveltamiseen. Opintojakson arvosana määräytyy pääsiassa kokeen perusteella (80%). Aktiivisuus labratehtävien tekemisessä vaikuttaa max 20% ( yksi askel numeroskaalassa). Tehtävien luonne noudattaa pitkälle labraharjoituksissa olleita tehtäviä, mutta labratehtävät eivät suinkaan anna suoria vastauksia kysymyksiin. Tässä muutamia vihjeitä miltä olio-ohjelmoinnin kokeen kysymykset voivat näyttää.

Periaatteessa mikä tahansa kurssin aikana opiskeltu aihe voi olla kysymyksen kohteena kokeessa. Seuraavassa kuvataan muutamia kokeessa tyypillisiä kysymystyyppejä.

Kysymystyyppi 1) Kysymyksessä kuvataan jonkin reaalimaailman olion ominaisuudet ja käyttäytyminen. Tehtävänä on kirjoittaa luokkamäärittely ja luokan toteutus kuvatuille olioille.

Kysymystyyppi 2) Luokan xxxx luokkamäärittely (tai useamman luokan luokkamäärittely on annettu). Tehtävässä pitää kirjoittaa sovellus (main funktio) , joka ratkaisee tietyn probleeman tai suorittaa tietyn tehtävän käyttäen hyväksi annetun luokan palveluja.

Kysymystyyppi 3) Luokan xxxx luokkamäärittely (tai useamman luokan luokkamäärittely on annettu). Tehtävässä pitää kirjoittaa annetut vaatimukset täyttävä luokkamäärittely ja jäsenfunktioiden toteutukset käyttäen hyväksi annettuja luokkia tavalla tai toisella (esimerkiksi käyttäen annettuja luokkia osakomponentteina, periyttämällä se annetusta luokasta tai käyttäen assosiaatiota).

Kysymystyyppi 4) Kysymyspaperilla voi löytyä myös valmis ohjelma, josta saatetaan kysyä esimerkiksi: Mikä on probleema, jonka kyseinen ohjelma tai funktio suorittaa? Tai mitkä probleemat syntyvät ohjelmaa suoritettaessa (virheet, muistinkäytön epätehokkuus tms.)? Kuinka ohjelmaa pitäisi parantaa, jotta kyseiset ongelmat voidaan poistaa?

Kysymystyyppi 5) Geneerinen ohjelmointi on yksi tärkeimmistä olio-ohjelmoinnin tavoitteista. Yksi kysymyksistä käsittelee lähes varmuudella tätä asiaa tavalla tai toisella.

Kysymystyyppi 6) Kysymystyypit 1 – 5 ovat hyvin tyypillisiä ja varmasti ainakin kaksi kysymyksistä voidaan luokitella suoraan niihin tyyppeihin kuuluvaksi. Niiden lisäksi voi löytyä kysymyksiä, jotka eivät selkeästi kuulu mihinkään yllämainittuun ryhmään.