Documente Academic
Documente Profesional
Documente Cultură
CLASE ŞI OBIECTE
CONSTRUCTORI ŞI
DESTRUCTORI
INIŢIALIZAREA OBIECTELOR UNEI CLASE -
CONSTRUCTOR
#include <stdio.h>
class intreg //declarare clasa integ
{
public:
int a; //declarare variabilă publică a
};
intreg g; //declararea obiectului g
main() //funcţia rădăcină
{
intreg x, y, z; //declararea obiectelor x,z,y
}
Observaţie - obiectele g, x, y, z sunt instanţiate cu un
constructor implicit apelat automat la declararea obiectelor
EXEMPLUL 3
#include <iostream.h>
class intreg //declarare clasa întreg
{
public:
int a; //declarare variabila publică a
intreg () //constructor implicit fără parametri
{
cout<<“INTREG\n”; //tipăreşte cuvântul INTREG
}
};
intreg g; //declararea obiectului g
main() //funcţia rădăcină
{
intreg x, y, z; //declararea obiectelor x,z,y
}
Observaţie –programul tipăreşte de 4 ori cuvântul INTREG
deoarece se apelează constructorul de 4 ori, pentru fiecare
obiect declarat g, x, y, z
TIPURI DE CONSTRUCTORI
2. CONSTRUCTORI CU LISTĂ DE PARAMETRI –
Ex.
class ex
{
static float a; //declarare variabilă statică
public:
static float b; //declarare variabilă statică
};
float ex::a=10; //iniţializare corectă
float ex::b=12; //iniţializare corectă
CÂMPURI DE DATE/VARIABILE STATICE
Accesarea variabilelor statice se face prin
intermediul oricărui obiect al clasei
Variabile statice publice
Pot fi accesate folosind operatorul de rezoluţie (::)
Ex. Angajat::contor
Variabile statice private
Când nu există obiecte ale clasei
Pot fi accesate doar prin intermediul funcţiilor
Destructor
Când obiectele abandonează scopul lor
Nu este apelat dacă programul se termină cu exit sau
abort
APELAREA CONSTRUCTORILOR ŞI DESTRUCTORILOR
obiectul
Destructor
Când funcţia main se termină sau este apelată funcţia exit
Nu este apelat dacă programul se termină cu abort
CLASE IMBRICATE
În cazul în care o clasă are ca membri obiecte (instanţieri) ale
altor clase spunem că avem clase imbricate
În acest caz este foarte important modul în care se face apelul
constructorilor obiectelor membru.
Pentru a ilustra folosirea acestor tipuri de clase vom analiza
exemplul următor în care:
Vom defini tipul punct, cu datele membre x şi y (abscisa şi ordonata
unui punct). Operaţiile care pot fi realizate asupra obiectelor de tip
punct, sunt: afişare (afişează coordonatele unui punct), deplasare
(deplasează un punct, noile coordonate ale punctului fiind obţinute prin
adunarea unor valori transmise ca parametri, la valorile anterioare ale
coordonatelor), abscisa (returnează valoarea abscisei), ordonata
(returnează valoarea ordonatei).
Vom defini tipul segment, cu datele membre A şi B, de tip punct,
reprezentând capetele unui segment (originea şi vârful). Operaţiile care
pot fi realizate asupra obiectelor de tip segment, sunt: afişare (afişează
coordonatele capetellor segmentului), deplasare (translatează un
segment, deplasând capetele acestuia cu valorile transmise ca
parametri), origine (returnează originea segmentului), vârf (returnează
vârful segmentului).
EXEMPLUL 10
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>