Esimerkit
Anchor | ||||
---|---|---|---|---|
|
Esimerkki Harjoitus 1:
Aiheet: Luokka, olion luonti sekä jäsenmuuttujien ja metodien käsittely.
ElainTietokone.h: Wiki Markup
Code Block |
---|
class |
...
Tietokone |
...
{ private: |
...
int ProsessoriLkm;
int Muisti;
public:
void TulostaTiedot();
void AsetaProsessoriLkm(int);
};
|
Tietokone.cpp:
Code Block |
---|
#include <stdio.h>
#include "Tietokone.h"
void Tietokone::TulostaTiedot()
{
printf("Tietokoneessa on %d prosessoria ja %d muistia\n", ProsessoriLkm, Muisti);
}
void Tietokone::AsetaProsessoriLkm(int p)
{
ProsessoriLkm = p;
}
|
main.cpp:
Code Block |
---|
#include "Tietokone.h"
int main()
{
Tietokone pc; // Tietokone = luokka, pc = olio
pc.AsetaProsessoriLkm(2);
pc.TulostaTiedot();
}
|
Harjoitus 1:
Aiheet: Luokka, olion luonti sekä jäsenmuuttujien ja metodien käsittely.
Elain.h:
Code Block |
---|
class CElain
{
private: // privaatti, vain luokan sisällä voidaan muuttaa
char m_Nimi[100]; // Eläimen nimi
float m_Massa; // Eläimen massa, paino
void TulostaNimi(); // Tulostaa ruudulle eläimen nimen
void TulostaMassa(); // Tulostaa ruudulle eläimen massan
public: // julkinen, kaikki voi kutsua
CElain(char Nimi[], float Massa); // Muodostin, parametreina Nimi ja Massa
bool AsetaNimi(char Nimi[]); // Asettaa eläimen nimen
bool AsetaMassa(float Massa); // Asettaa eläimen massan
void Tulosta();
};
|
Elain.cpp:
Code Block |
---|
#include "Elain.h" // CElain-luokan headeri
CElain::CElain(char Nimi[], float Massa)
{
strcpy(m_Nimi, Nimi); // Kopioidaan nimi luokkaan
m_Massa = Massa;
}
bool CElain::AsetaNimi(char Nimi[])
{
strcpy(m_Nimi, Nimi); // Kopioidaan nimi luokkaan
return true;
}
void CElain::TulostaNimi()
{
printf("Eläimen nimi on %s\n", m_Nimi);
}
bool CElain::AsetaMassa(float Massa)
{
m_Massa = Massa;
return true;
}
void CElain::TulostaMassa()
{
printf("Eläimen massa on %.2f kiloa\n", m_Massa);
}
void CElain::Tulosta()
{
TulostaNimi();
TulostaMassa();
}
|
main.cpp:
Code Block |
---|
#include "Elain.h"
int main(int argc, char* argv[])
{
CElain kissa("miuku", 2.4); // Luodaan olio CElain luokasta ja annetaan nimi ja massa parametreina
kissa.Tulosta();
return 0;
}
|
Anchor | ||||
---|---|---|---|---|
|
Harjoitus 2:
Aiheet: Periytyminen.
Elain.h:
Code Block |
---|
#include <stdio.h>
#include <string.h>
class CElain
{
private: // privaatti, vain luokan sisällä voidaan muuttaa
char m_Nimi[100]; // Eläimen nimi
float m_Massa; // Eläimen massa, paino
void TulostaNimi(); // Tulostaa ruudulle eläimen nimen
void TulostaMassa(); // Tulostaa ruudulle eläimen massan
public: // julkinen, kaikki voi kutsua
bool AsetaNimi(char Nimi[]); // Asettaa eläimen nimen
bool AsetaMassa(float Massa); // Asettaa eläimen massan
void Tulosta();
};
|
Elain.cpp:
Code Block |
---|
#include "Elain.h" // CElain-luokan headeri
bool CElain::AsetaNimi(char Nimi[])
{
strcpy(m_Nimi, Nimi); // Kopioidaan nimi luokkaan
return true;
}
void CElain::TulostaNimi()
{
printf("Eläimen nimi on %s\n", m_Nimi);
}
bool CElain::AsetaMassa(float Massa)
{
m_Massa = Massa;
return true;
}
void CElain::TulostaMassa()
{
printf("Eläimen massa on %.2f kiloa\n", m_Massa);
}
void CElain::Tulosta()
{
TulostaNimi();
TulostaMassa();
}
|
Kissa.h:
Code Block |
---|
#include "Elain.h"
class CKissa :
public CElain
{
public:
CKissa(void);
~CKissa(void);
void Kehraa();
};
|
Kissa.cpp:
Code Block |
---|
#include "Kissa.h"
CKissa::CKissa(void)
{
}
CKissa::~CKissa(void)
{
}
void CKissa::Kehraa()
{
|
void TulostaNimi(); // Tulostaa ruudulle eläimen nimen
void TulostaMassa(); // Tulostaa ruudulle eläimen massan
Wiki Markup |
---|
public: // julkinen, kaikki voi kutsua
CElain(char Nimi\[\], float Massa); // Muodostin, parametreina Nimi ja Massa
bool AsetaNimi(char Nimi\[\]); // Asettaa eläimen nimen
bool AsetaMassa(float Massa); // Asettaa eläimen massan
void Tulosta();
}; |
Elain.cpp:
#include "stdafx.h" // Ei tarvita, jos tekee Empty Project:in
#include "Elain.h" // CElain-luokan headeri
Wiki Markup |
---|
CElain::CElain(char Nimi\[\], float Massa)
\{
strcpy(m_Nimi, Nimi); // Kopioidaan nimi luokkaan
m_Massa = Massa;
} |
Wiki Markup |
---|
bool CElain::AsetaNimi(char Nimi\[\])
\{
strcpy(m_Nimi, Nimi); // Kopioidaan nimi luokkaan
return true;
} |
void CElain::TulostaNimi()
{
printf("Eläimen nimi on %s\n", m_Nimi);
}
bool CElain::AsetaMassa(float Massa)
{
m_Massa = Massa;
return true;
}
void CElain::TulostaMassa()
{
printf("Eläimen massa on %.2f kiloa\n", m_Massa);
}
void CElain::Tulosta()
{
TulostaNimi();
TulostaMassa();
}
main.cpp:
#include "stdafx.h"
#include "Elain.h"
Wiki Markup |
---|
int main(int argc, char\* argv\[\])
\{
CElain kissa("miuku", 2.4); // Luodaan olio CElain luokasta ja annetaan nimi ja massa parametreina |
kissa.Tulosta();
return 0;
}
Harjoitus 2:
Aiheet: Periytyminen.
Elain.h:#include <stdio.h>
#include <string.h>
Wiki Markup |
---|
class CElain
\{
private: // privaatti, vain luokan sisällä voidaan muuttaa
char m_Nimi\[100\]; // Eläimen nimi
float m_Massa; // Eläimen massa, paino |
void TulostaNimi(); // Tulostaa ruudulle eläimen nimen
void TulostaMassa(); // Tulostaa ruudulle eläimen massan
Wiki Markup |
---|
public: // julkinen, kaikki voi kutsua
bool AsetaNimi(char Nimi\[\]); // Asettaa eläimen nimen
bool AsetaMassa(float Massa); // Asettaa eläimen massan
void Tulosta();
};
Elain.cpp:#include "Elain.h" // CElain-luokan headeri |
Wiki Markup |
---|
bool CElain::AsetaNimi(char Nimi\[\])
\{
strcpy(m_Nimi, Nimi); // Kopioidaan nimi luokkaan
return true;
} |
void CElain::TulostaNimi()
{
printf("Eläimen nimi on %s\n", m_Nimi);
}
bool CElain::AsetaMassa(float Massa)
{
m_Massa = Massa;
return true;
}
void CElain::TulostaMassa()
{
printf("Eläimen massa on %.2f kiloa\n", m_Massa);
}
void CElain::Tulosta()
{
TulostaNimi();
TulostaMassa();
}
Kissa.h:#include "Elain.h"
class CKissa :
public CElain
{
public:
CKissa(void);
~CKissa(void);
void Kehraa();
};
Kissa.cpp:#include "Kissa.h"
CKissa::CKissa(void)
{
}
CKissa::~CKissa(void)
{
}
...
printf("Kehraa..."); |
...
} |
main.cpp:
Code Block |
---|
#include <stdio.h> |
...
#include <conio.h> |
...
#include "Kissa.h" |
...
int main() |
...
{ CKissa kissa; kissa.AsetaNimi("Miuku"); |
...
kissa.AsetaMassa(1.2); |
...
kissa.Tulosta(); |
...
kissa.Kehraa(); |
...
getch(); |
...
return 0; } |
Anchor | ||||
---|---|---|---|---|
|
}
Harjoitus 3:
Aiheet: Tulostaminen cin ja cout ja käyttäjän syötteen lukeminen cin ja cout -olioilla.
main.cpp:
Code Block |
---|
#include <iostream> |
...
#include <string> |
...
using namespace std; |
...
int main() |
...
{
|
...
int Luku1, Luku2; |
...
char Operaattori; |
...
char Nimi |
...
[100 |
...
]; |
...
cout << "Anna nimesi: "; |
...
cin >> Nimi;
cout << "Anna 1. luku: ";
cin >> Luku1;
cout << "Anna 2. luku: ";
cin >> Luku2;
cout << "Anna operaattori: + - * / ";
cin >> Operaattori;
cout << "Hei " << Nimi << ", annoit laskutoimituksen: " << Luku1 << " " << Operaattori << " " << Luku2 << endl;
return 0;
}
|
Anchor | ||||
---|---|---|---|---|
|
Harjoitus
cout << "Anna 1. luku: ";
cin >> Luku1;
cout << "Anna 2. luku: ";
cin >> Luku2;
cout << "Anna operaattori: + - * / ";
cin >> Operaattori;
cout << "Hei " << Nimi << ", annoit laskutoimituksen: " << Luku1 << " " << Operaattori << " " << Luku2 << endl;
return 0;
}
Harjoitus 4:
Aiheet: Const-määritteet.
main.cpp:
Code Block |
---|
#include "Luokka.h" |
...
int main() |
...
{ const CLuokka luokka; luokka.YmpyranKeha(1.2467); |
...
CLuokka luokka2; luokka2.YmpyranKeha(283947); |
...
luokka2.TeeJotain(); |
...
} |
Luokka.h:
Code Block |
---|
class CLuokka |
...
{ |
...
private: |
...
const float m_Pii; // const tarkoittaa vakiota. Arvo ei voi muuttua ohjelman ajon |
...
aikana int m_Luku; |
...
public: |
...
CLuokka(); |
...
float YmpyranKeha(const float r) const; // Parametri on const, arvo ei voi muuttua funktion |
...
sisällä void TeeJotain(); |
...
}; |
Luokka.cpp:
Code Block |
---|
#include "Luokka.h" |
...
CLuokka::CLuokka() |
...
: m_Pii(3.14) |
...
{ m_Luku = 0; |
...
} |
...
float CLuokka::YmpyranKeha(const float r) const |
...
{ return 2*m_Pii*r; |
...
} |
...
void CLuokka::TeeJotain() |
...
{ m_Luku = 2; |
...
} |
Harjoitus 5:
Aiheet: Funktioiden ylikuormitus.
...
Wiki Markup |
---|
}
} else
\{ m_pSeuraava->Lisaa(UusiSolmu); //rekursiivinen kutsu }
}
}
void CSolmu::Poista(char Nimi\[\])
\{ char seNimi\[100\]; CSolmu\* pTemp; CSolmu\* pTemp2; if |
CSolmu* pTemp;
CSolmu* pTemp2;
if (m_pSeuraava) \{ if (
{ if (strcmp(Nimi,m_pSeuraava->AnnaTyontekija()>KysyNimi(seNimi))==0) \{
{ printf("Loytyi"); getch(); pTemp=m_pSeuraava; pTemp2=m_pSeuraava->m_pSeuraava; if (Debug==1) \{ printf("\n%s",pTemp>AnnaTyontekija()>KysyNimi(seNimi)); // Tarkistetaan onko poistettavaa seuraava olemassa if (pTemp2) printf("\n%s",pTemp2->AnnaTyontekija()->KysyNimi(seNimi)); }
delete m_pSeuraava;
if (pTemp2)
\
getch();
pTemp=m_pSeuraava;
pTemp2=m_pSeuraava->m_pSeuraava;
if (Debug==1)
{ printf("\n%s",pTemp>AnnaTyontekija()>KysyNimi(seNimi));// Tarkistetaan onko poistettavaa seuraava olemassa
if (pTemp2)
printf("\n%s",pTemp2->AnnaTyontekija()->KysyNimi(seNimi));
}
delete m_pSeuraava;
if (pTemp2)
{m_pSeuraava=pTemp2; //hypätään yli
}
else
{m_pSeuraava=0;
...
}
do
{ if (pTemp->m_pSeuraava)
{ iLukum=fwrite(pTemp->m_pSeuraava->m_pTyontekija, sizeof(CTyontekija),1,pTiedosto);
if(Debug)
{ pSeuraavanNimi=pTemp->m_pSeuraava->AnnaTyontekija()->KysyNimi(SeuraavanNimi);
printf("\nTalletettava %s",pSeuraavanNimi);
; }
}
// Siirrytään tietokannassa seuraavaan kohtaan
pTemp=pTemp->m_pSeuraava;
}
...
Linkitetylle listalle on seuraavassa esitetty pääohjelma:
/************************************************************
Työntekijätietokanta
Tietokanta on toteutettu linkitettynä listana
Tietokanta muodostuu solmuista, jotka on likitetty osoittimilla toisiinsa
*************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include "Tyontekija.h"
#include "Solmu.h"
void Menu();unmigrated-wiki-markup
int main()
\
{ int Valitsin;
Wiki Markup |
---|
Valitsin; char Nimi\[100\]; |
CSolmu\* pSolmu=0;
int Tiedosto=0; // Varataan tietokannalle alkukohta
CTyontekija\* pTyontekija = new CTyontekija();
pTyontekija->AsetaNimi("aaa");
CSolmu\* pJuuri = new CSolmu(pTyontekija);
Tiedosto = pJuuri->HaeTiedostosta(); // Haetaan tiedostosta alkukohtaa seuraavat tiedot
while(1)
\{ Menu(); Valitsin=getch();
switch (Valitsin)
\{ case '0': exit(1);
// lisäys case '1':
pTyontekija=new CTyontekija();
pTyontekija->AsetaNimi();
pSolmu=new CSolmu(pTyontekija);
pJuuri->Lisaa(pSolmu); // lisätään duunari listaan
pJuuri->Talleta();
break;
// Tulostus case '2':
pJuuri->Tulosta();
break;
// Poisto case '3':
printf("Anna nimi: ");
gets(Nimi);
pJuuri->Poista(Nimi);
pJuuri->Talleta();
break;
default:
break;
}
}
}
void }
}
}
void Menu()
\{
{ printf("\n\n0=ohjelman lopetus");
printf("\n1=Duunarin lisays tietokantaan");
...