Documente Academic
Documente Profesional
Documente Cultură
(1/2 grupa in
Notare:
Semestru: lucrare verificare (sapt. 7/8)
30 pt.
colocviu laborator (practic)
30 pt.
LUCRARILE NU SE REFAC / REPETA
Sesiune:
examen (scris)
Nr. Credite: 4
40 pt.
Bibliografie:
F. Ionescu, Elemente de programare orientata pe obiecte,
Ed. Printech, Bucuresti,2000;
D. Somnea, D. Turturea, Initiere in C++, Ed.Tehnica,
Bucuresti, 1993;
L. Negrescu, Limbajele C si C++ pentru incepatori, Editura
MicroInformatica, Cluj, 1998.
Surse internet:
http://ai.pub.ro/content/POO.htm
Conventie definire nume in C++
http://geosoft.no/development/cppstyle.html
Alternativa in C++
#include <iostream.h>
void main()
{
cout<<Mesaj de afisat<<endl;
}
b=<<b<<endl;
Sintaxa C++
#include <stdio.h>
#include <iostream.h>
void main()
{
int a;
scanf(%d,&a);
printf(a= %d \n,a);
}
void main()
{
int a;
cin>>a;
cout<<a= <<a<<endl;
}
Tipuri de date
Limbajul C++ preia de la limbajul C tipurile de date, la care
adauga altele tipuri sau le modifica/nuanteaza/flexibilizeaza pe
unele dintre ele, dupa caz.
struct nume
{ TipDate1 v1;
TipDate2 v2;
............
};
Operatori:
.
->
Exemplu:
struct Persoana
{ char nume[20];
int an_nastere;
char adresa[50];
}
in C++
Persoana
Deci, sintaxa pt. declararea unei variabile din noul tip de date este:
in C
struct Persoana v1;
in C++
Persoana v1;
Exemplu:
struct NrComplex
{
double re;
double im;
}
Exemplu: Comparatii
struct Data1
{
int i1;
double d1;
};
class Data2
{
int i1;
double d1;
};
int main()
{
struct Data1 a;
int main()
{
Data2 b;
a.i1=3;
a.d1=5.7;
b.i1=3;
b.d1=5.7;
EROARE compilare
De ce apare eroarea???
In spiritul generalizari/flexibilizarii tipului de date structura, in C++
datelor membre ale unei clase (dar si ale unei structuri) pot avea
grade de acces diferite. Astfel, ele pot fi declarate:
public
pot fi accesate (modificate/citite) din exteriorul tipului de date
private pot fi accesate (modificate/citite) numai din interiorul tipului de date
protected
Prin urmare, datele membre ale unei clase avand tip de acces implicit
(private) NU pot fi accesate din exteriorul clasei. Pentru a le
accesa trebuie declarate in mod explicit cu tipul de acces public
class Data2
{ public:
int i1;
double d1;
};
Obs.: In general, datele membre ale unei clase sunt declarate private
pentru a beneficia de unul dintre avantajele tehnologiei POO, numit
mecanism de protejare a datelor sau ascunderea datelor (data
hiding), conform caruia blocarea accesului din exteriorul clasei
(structurii) conduce la evitarea alterarii (modificarea
nedorita/neglijenta/accidentala) a valorilor stocate in datele
membre.
Aplicatie
clasa1
{ date,
metode
}
functie2()
{
functie1()
} {
main()
} {
}
clasa3
{ date,
clasa2
metode
{ date,
}
metode
}
Dar, scopul oricarei aplicatii este de a prelucra datele, iar pentru aceasta
trebuie sa avem posibilitatea sa facem schimb de date intre partile
aplicatiei. Prin urmare trebuie sa asiguram accesul la date prin alta
metoda = definire functiilor de acces la date (functii de interfata)
clasa1
{ date,
metode
}
Functii
Interfata
Aplicatie
functie2()
{
functie1()
} {
main()
} {
}
clasa3
{ date,
clasa2
metode
{ date,
}
metode
}
Exemplu:
class Data2
{
int i1;
double d1;
public:
int get_i1() { return i1;};
double get_d1() { return d1;};
void set_i1(int i1_) {i1=i1_};
void set_d1(double d1_) {d1=d1_};
};
int main()
{
Data2 c;
c.set_i1(3);
c.set_d1(5.7);
cout<<c.i1=<<c.get_i1()<<c.d1=<<c.get_d1();
}
Obs.: Functiile membre (la fel ca si datele membre) pot avea diferite
tipuri/grade de acces:
public, private, protected, friend
Echivalenta cu:
struct Data1 var1;
var1.i1=1;
var1.d1=3;
class Data3
{
int i1, i2;
public:
Data3(int v1,int v2)
{
i1=v1;
i2=v2;
}
};
class Poligon
{
int nrVf;
pct2D *coordonateVf;
public:
double calcPerimetru();
. . . . . . . . . . . . . . . . . . . .
};
Tema:
1. Sa se abstractizeze
notiunile: matrice,
vector
2. def. tipului de date
pct2D
3. def. constructorului
Poligon(int nVf)
c=a+b;
}
c=a+b;
}
};
- - - - - - - - - - - - - - - - - - - - - - - - -
};
- - - - - - - - - - - - - - - - - - - - - - - - -
};
};