C++ vam dozvoljava da odvojite definiciju klase od njene implementacije
Stoga, većina programera piše deklaracije klasa odvojeno u header fajlu. Ovaj fajl, obično, ima isto ime kao i fajl sa implementacijom ali ima ekstenziju.h (ili .hpp ) dok glavni fajl ima ekstenziju .cpp.
Pretpostavimo da imamo klasu za Trougao. Nju ćemo da definišemo u fajlu Trougao.h .
class Trougao { public: double s1, s2, a12; Trougao (double, double, double); double visina(); double povrs (); double strana3(); private: double ugao13(); double ugao23(); };
Fajl zaglavlja (header file) koji sadrži deklaraciju klase se može zatim uključiti korišćenjem jedne #include pretprocesorske direktive. (npr. #include “Trougao.h”).
Odvajanjem deklaracije klase na ovaj način, veličina glavnog programa se smanjuje i klasa postaje modularna pa se može koristiti unutar bilo kojeg programa, jednostavno pomoću dodavanja #include direktive.
Definicija klase će biti smeštena u zasebnom fajlu triangle.cpp :
#include "triangle.h" #include "math.h" #define PI 3.14 //KONSTRUKTOR: Trougao::Trougao (double str1, double str2, double ugao12) { // duza strana je s1 if (str1 > str2) { s1 = str1; s2 = str2; } else { s1 = str2; s2 = str1; } if (ugao12 < 0) ugao12 = -1 * ugao12; // a12 u stepenima, konvertovano u radijane a12 = ugao12 * PI / 180; } //OSTALE FUNKCIJE CLANOVI: double Trougao::visina() { return s2 * sin(a12); } double Trougao::povrs() { return 0.5 * s1 * visina(); } double Trougao::strana3() { return 0.5 * s1 * visina(); }
Iako je konstruktor klase definisan u zasebnom fajlu triangle.cpp , pristup podacima te iste klase se vrši samo navođenjem podataka članova (npr. s1 i s2), čime se direktno vrši izmena stvarnih podataka kreiranog objekta.
Ostaje nam da napišemo glavni pokretački program, i njega ćemo smestiti u fajlu main.cpp :
#include <iostream> #include "triangle.h" using namespace std; int main() { double side1, side2, a12; cout << "Unesi duzine 2 strane \n"; cin >> side1; cin >> side2; cout << "Ugao izmedju njih (degrees)\n"; cin >> a12; Trougao my_tro(side1, side2, a12); cout << "duzina 3. strane " << my_tro.strana3() << endl; cout << "povrsina " << my_tro.povrs() << endl; }
Napravite projekat sa ova tri fajla i probajte da ga iskompajlirate.