Placering av klasser i uppdelad kod
Skapa
egna header-filer
Den
kod som vi skrivit hittills har vi skrivit i en och samma .cpp-fil.
När man skriver objektorienterade program i C++ är det absolut vanligaste
sättet att man
skriver deklarationen av klassen i en separat fil, man skapar alltså en egen header-fil.
Endast klassdeklarationen ska finnas i header-filen:
Definitionen av klassens metoder skriver man i en .cpp-fil.
Den .h-fil där klassen finns
inkluderar du sedan i din ”programfil”
OBS!
Citationstecken istället för "<" och ">"
#include "DenEgnaHeaderfilen.h"
När
program består av flera delar (filer) blir de också enklare att uppdatera och
underhålla.
Det här gäller speciellt större program.
För det mesta är det enklare att uppdatera en modul av programmet än att
försöka uppdatera hela programmet.
1.
En .h –fil med klassens deklaration
#ifndef TESTKLASS_H
#define TESTKLASS_H
class testklass
{
public:
void
set_a_b_c();
void get_a_b_c();
private:
int a,b,c;
};
#endif//********************************************
/*
#ifndef TESTKLASS_H
#define TESTKLASS_H
TESTKLASS_H är namnet på en konstant som man kan definiera själv,
ett s.k makro.
#ifndef TESTKLASS_H är till för att
förhindra att filen testklass.h inkluderas mer
än en gång i en kompilering. #ifndef betyder ”if not
defined”.
Om testklass.h inte är
definierad läser kompilatorn hela texten fram till #endif.
*/
2.
En .cpp –fil med klassens
definitioner// inkluderar .h filen
/*Name: testklass.cpp*/
#include <cstdlib>
#include <iostream>
#include "testklass.h"
void testklass::set_a_b_c()
{
std::cout<<"Ge
varden för dina a b c";
std::cin>>a>>b>>c;
}
void testklass::get_a_b_c()
{
std::cout<<a<<b<<c;
}
/* EOF */
//********************************************
3.
main()
där du använder klassen
#include "testklass.h" /*inkluderar din filen med
klassdeklarationer ” ” ingen sökväg = samma katalog*/
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
testklass minklass;
minklass.set_a_b_c();
system("PAUSE");
minklass.get_a_b_c();
system("PAUSE");
return EXIT_SUCCESS;
}
//********************************************