Näissä harjoituksissa on tarkoitus harjoitelle isomman(useampi kuin yksi tiedosto)
projektin käsittelyä Delphi/Turbo-C++ tai Eclipse-ympäristössä. Sekä makefilen tekoa
Unix/Linux-ympäristössä. 
1. IDEt ja usean tiedoston sisältävät projektit.
Harjoitellaan ohjelman kääntämistä, joka sisältää useita tiedostoja.
  - Luo uusi projekti. Anna	projektille nimeksi kassa.
	
- Kopioi 
	kassa2.cpp ja 
	mjonot.c samaan hakemistoon projektisi kanssa.
	
- Lisää 
	kassa2.cpp ja 
	mjonot.c projektiisi(Project->Add Files).
	
- Avaa 
	kassa2.cpp ja katso mitä otsikkotiedostoja(.h) se tarvitsee.
	Hae tarvittavat otsikkotiedostot 
	täältä ja kopioi ne samaan hakemistoon projektisi kanssa.
	
- Avaa 
	mjonot.c ja tee sama kuin edellä.
	
- Kokeile kääntää projekti.
 
2. Ohjelman hajoittaminen useampaan tiedostoon.
Isommissa projekteissa on hyödyllistä jakaa ohjelma useampaan tiedostoon, jolloin
koodia on selkeämpi lukea ja jos projektin parissa työskentelee useampi ihminen,
niin voivat eri ihmiset työstää eri osia ohjelmasta. Näin vältytään tilanteelta,
jossa kaksi ihmistä on editoinut samaa tiedostoa saman aikaisesti. Harjoitellaan
nyt yksinkertaisen ohjelman hajottamista useampaan tiedostoon.
	- Tee uusi projekti ja anna sille nimeksi tietokanta.
  
- Avaa tietokantaiso.cpp 
	
- Lisää projektiin uudet tiedostot alkio.h, alkiot.h, tietokanta.h,
	alkiot.cpp, alkio.cpp ja tietokanta.cpp
	
- Hajoita tietokantaiso.cpp näihin
	tiedostoihin siten, että jokaiseen .h tiedostoon tulee vastaava luokka
	ja .cpp tiedostoon luokan metodien toteutus. Jokaiselle luokalle on
	siis oma tiedostopari .cpp ja .h. 
 Huom. On hyvä lisätä jokaisen
	otsikkotiedoston(.h) alkuun ehto sille, että onko koodi käyty jo
  läpi. Esimerkiksi tiedostoon alkio.h:  #if !defined(alkio_H)
  #define alkio_H
  //tähän väliin ohjelmakoodi
  #endif Tällä varmistetaan ettei tule ongelmia, jos otsikkotiedosto jostain syystä
	tulisi sisällytettyä useammin kuin kerran.
- Kokeile lopuksi kääntää ohjelma ja testaa sitä.
 
3. Unix/Linux ja makefile.
  - Siirrä edellisessä tehtävässä tekemäsi ohjelma jollekkin atk-keskuksen
	Linux-koneista(itu, silmu, verso) ssh file transfer-ohjelmalla.
 TAI
 Ota ssh-yhteys johonkin atk-keskuksen Linux-koneista ja ota tiedostot alkio.cpp,
	alkiot.cpp, tietokanta.cpp,
	alkio.h, alkiot.h,
	tietokanta.h wget-ohjelmalla. Wget toimii käskyllä
	wget URL. Eli esim. wget http://www.mit.jyu.fi/vesal/kurssit/ohjelmointi2007/paate/alkio.cpp jne.
- Yritä kääntää ja linkittää ohjelma käyttäen g++-kääntäjää.
	Katso tästä
	ohjeita miten käännetään useamman tiedoston ohjelma	Unix/Linux-ympäristössä.
	Ensiksi siis pitää kääntää .cpp tiedostot objektitiedostoiksi ja sen jälkeen
	linkittää ne.
	
- Testaa ohjelmaa.
	
- Kirjoita nyt makefile ohjelmalle siten, että kirjoittamalla make -f tietokanta.mak
	ohjelma kääntyy ja linkittyy ajettavaksi ohjelmaksi tietokanta. Voit käyttää
	mitä tahansa editoria(esim. pico, emacs, vim). Ohjeita voit	taas katsoa
	tästä.
	Tee makefileen myös clean-optio, joka poistaa käännetyn ohjelman,
	objektitiedostot ja mahdollisen core-tiedoston.
	
- Testaa makefilen toimintaa ja aja syntynyt ohjelma käskyllä ./tietokanta.
	Testaa lopuksi vielä clean-optiota käskyllä make -f tietokanta.mak clean.
	Tarkasta ls-käskyllä, että käännetty ohjelma, objektitiedostot ja
	mahdollinen core-tiedosto hävisivät.
 
4. C++ ja perintä.
  - Tee uusi projekti ja anna nimeksi perinta.
	
- Olet saanut käyttöösi tiedoston henkilo.h.
        Lisää projektiin uusi .cpp
	tiedosto ja anna sille nimeksi henkilo.cpp. Lisää tähän tiedostoon seuraava
	main funktio:
	  int main(void)
  {
    cOpiskelija p=cOpiskelija("Kalle",1979,75); //nimi,syntymävuosi,opintoviikot
    cTyontekija t=cTyontekija("Teppo",1970);
    p.protestoi();
    t.protestoi();
    p.tulosta();
    t.tulosta();
    t.elake();
    return 0;
  }
	Ohjelman pitäisi tulostaa seuraava:  Opintotuki on liian pieni!
  Verot ovat liian korkeat!
  Kalle 1979 75ov
  Teppo 1970
  Teppo pääsee eläkkeelle 31 vuoden päästä
	 Täydennä ohjelma toimivaksi tekemällä cOpiskelija- ja cTyontekija-luokat. Älä
	muuta main funktiota ja kaiken tulostuksen pitää tapahtua protestoi(),
	tulosta() ja elake()-metodeissa. Käytä ohjelmassasi henkilo.h-tiedostoa.
	Huomaa että cHenkilo on abstraktiluokka. Siitä siis ei voida tehdä esiintymää,
	koska	siinä on pelkkä	virtuaalinen(pure virtual) metodi protestoi().Apua saat tästä,
	sekä luentomoniseesta. 
 
5. STL:n tietorakenteet.
  - Tee uusi projekti ja anna nimeksi vaikka rekisteri. Tee uusi .cpp tiedosto ja anna
	sille nimeksi kurssit.cpp.
	
- Olet saanut käyttöösi tiedoston kurssi.h ja main funktion:
	  int main(void)
  {
    cKurssit kurssit;
    cKurssi ohj2("Ohjelmointi 2",4);
    cKurssi alg1("Algoritmit 1",1);
    cKurssi vema("Vektorit ja Matriisit",4);
    kurssit.lisaa(ohj2);
    kurssit.lisaa(alg1);
    kurssit.lisaa(vema);
    kurssit.tulosta();
    kurssit.poista(alg1);
    cout<<endl;
    kurssit.tulosta();
    return 0;
  }
	Täydennä ohjelma toimivaksi tekemällä cKurssit-luokka. Käytä ohjelmassasi
	kurssi.h-tiedostoa. Käytä cKurssit-luokassa jotain STL:n
	valmista tietorakennetta. Voit katsoa toisen tehtävän ohjelmasta vinkkejä
	tai apua saat myös luentomonisteesta.