C++-ohjelmointi
T0177 (TP03S1)
Ilmoittautuminen opintojaksolle
tapahtuu
Winha-järjestelmän kautta.
Opintojakson koodi on T0177 ja toteutuksen koodi on TP03S1.
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öharjoitus
| Tentti ]
Perustiedot
- Opettaja : Hannu Laine
- Opintojakso opiskellaan periodeilla 1 ja 2 kolmannella
vuosikurssilla
- Opintojakson laajuus on 4.5 op
- Luentoja 2 h / viikko ensimmäisellä ja toisella
periodilla
periodilla
( 28 h yhteensä)
- Labratunteja 2 h / viikko ensimmäisellä ja toisella
periodilla
(28 h yhteensä)
- Ryhmätyöharjoitus
- Itseopiskelua (arviolta 36h)
- Tentti kurssin loputtua
Sisällön
pääkohdat
Seuraavassa on alustavasti sisällön pääkohdat.
Lista tarkentuu opintojakson aikana.
- C/C++
- Olioparadigma ja C++
- Luokat ja oliot
- Esimerkkejä luokkien ja olioiden käytöstä
- C++:n standardiluokat
- Konstruktorit ja destruktorit
- Operaattorien ylikuormitus ja muita C++:n tuomia parannuksia
- Olioiden vuorovaikutus ja "yhteispeli"
- Periyttäminen ja sen merkitys
- Ominaisuuksien muutto
- Virtuaalimetodit
- Polymorfismi
- Geneerinen ohjelmointi
- STL
- Hyödyllisä suunnittelumalleja (design patterns)
- Esimerkkejä suunnittelumalleista
Käsitellyt
asiat
Klikkaamalla seuraavaa linkkiä, saat näkyviin tarkemman
listan,
mitä tähän mennessä on tunneilla käsitelty:
Kurssimateriaali
- Oppikirja Deitel H, Deitel B : C++ How to program
- Muita hyviä kirjoja on useita:
Lafore Robert: Object oriented Programming in C++ - Klassikoiksi
ovat muodostuneet seuraavat referenssimateriaaliksi
sopivat
kirjat
Bjarne Stroustrup : The C++ programming Language
Lippman, Jajoie : C++ Primer - Myös suomeksi
on hyviä kirjoja
Kai Koskimies : Oliokirja
Matti Rintala, Jyke Jokinen : Olioiden ohjelmointi
C++:lla
Päivi Hietanen : C++ ja olio-ohjelmointi - Luentokalvot
- Luentotunneilla tehdyt muistiinpanot
Moniste 1 ( C:n ja C++:n
eroista )
Kalvot
Osa 1a
Osa
1b (Eroja C:n ja C++:n välillä)
Osa
2 (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 9
(Perintä)
Osa10a
Osa
10b (Lisää perinnästä )
Osa 11
(Template funktiot ja luokat. Johdanto STL:ään: vector ja
iteraattorit)
Osa
12 (Muut STL-containerit, container adaptorit, iterator
adaptorit ja funktio-oliot)
Harjoitukset
Ryhmä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ä.
Tentti
Tentti on toisella tenttikaudella maanantaina 19.12.2005 klo 9.00
huoneessa 1.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.