SlideShare a Scribd company logo
1 of 13
C++/CLI: TIPURI DE
DATE
Mihail Croitor
Cuprins
 Tipuri de date
 Tipuri de date primitive
 Tipuri de date compuse
 Tip-referința
 Tip-valoare
 Tip enumerabil
 Interfețe
 Proprietăți noi a claselor
 Proprietăți
 Delegați
 Evenimente
 Funcții virtuale
Tipuri de date
 C++/CLI este un limbaj care permite crearea
codului gestionabil și negestionabil.
 Tipurile gestionabile se plasează în memoria
gestionabilă.
 Fiecare tip gestionabil este moștenit de la
clasa Object.
 Există tipuri de date gestionabile primitive(sau
simple) si compuse.
Tipuri de date primitive
Tip gestionabil echivalentul
Boolean bool
Byte unsigned char
Char wchar_t
Double double
Int16 short
Int32 long, int
Int64 __int64, long long
SByte char
Single float
UInt16 unsigned short
UInt32 unsigned int, unsigned long
Uint64 unsigned __int64, unsigned long long
Void void
Tipuri de date compuse:
Tip referință
 are semantica referințelor
 se păstrează in memoria tipurilor
de referință (reference heap)
 Acces la valori variabilelor se
realizează prin descriptor (^)
 Descriptorul poate schimba
valoarea sa în timpul executării
aplicației («compactare
memoriei tipurilor de referință»)
 Memoria se alocă cu ajutorul
operatorului gcnew
 Dacă variabilă nu este legată cu
memoria tipurilor de referință,
atunci ea primește valoare
nullptr
ref class Man{
String^ name;
Byte age;
public:
Man(): age(0)
{
name = gcnew String("");
}
Man(String^ n, Byte a): age(a)
{
name = n;
}
};
Man^ m = gcnew Man(“Henry“, 20);
Tipuri de date compuse:
Tip valoare
value struct Point
{
Int32 x, y;
};
Point pt;
 Sunt structuri simple
 Memoria pentru acest tip se
alocă în stiva programului.
 Efectuarea operațiilor cu
tipuri valoare sunt mai
efective decât cu cele de tip
referință.
Tipuri de date compuse:
tip numărabil
 Este echivalent tipului
enum din С++
standard
 Este moștenit de la
Object
 Are proprietate
ToString
enum class COLOR
{
BLACK = 0,
RED, GREEN,
BLUE, WHITE
};
COLOR c = COLOR::RED;
Tipuri de date compuse:
interfețe
interface class Shape {
void Draw();
void Move(Int32, Int32);
};
value struct Point: Shape {
Int32 x, y;
virtual void Move(Int32 dx,
Int32 dy) {
x += dx;
y += dy;
}
virtual void Draw(){}
};
 În C++/CLI nu există moștenire
multiplă
 Interfața - tip de date ce declară
metode, dar nu au câmpuri și
realizări de metode
 Interfața este un tip echivalent
claselor abstracte din C++
 Clasa gestionabilă poate fi
moștenită de la mai multe
interfețe.
Proprietăți noi a claselor:
proprietăți
Proprietăți(properties) este
o construcție specială a
limbajului destinată pentru
setarea/extragerea valorii unui
câmp.
ref struct Value {
property int x;
};
//…
ref struct Value {
property int x {
void set(int v){ this->__x
= v; }
int get() const { return
this->__x; }
}
private:
int __x;
};
Proprietăți noi a claselor:
delegare
delegate void Reshape();
ref struct Shape{
Shape(){}
void Draw(){}
};
ref struct Point{
property int x;
property int y;
Reshape^ reshape;
Point(){
reshape = gcnew Reshape(gcnew
Shape(), &Shape::Draw);
}
};
int main(){
Point^ p = gcnew Point();
p->reshape();
return 0;
}
 Delegare este transmiterea
dreptului de a acționa altui obiect
sau funcției
 Se declară cu ajutorul cuvântului
cheie delegate
 Delegate sunt moștenite de la
clasa
System::MulticastDelegate
 Delegat poate fi legat cu o lista
de funcții
 Adăugarea funcțiilor în lista se
face prin +=, eliminarea funcției
din lista – -=.
 Executarea delegatului –
Void Invoke();
Proprietăți noi a claselor:
evenimente
 Evenimentele se reprezintă prin
delegații
 se definesc cu ajutorul
cuvântului-cheie event
 Funcții legate cu eveniment se
numesc prelucrători
evenimentului
 Tip de baza a evenimentului este
System::EventHandler
 Reprezentare obișnuită
prelucrătorului evenimentului
este Void OnEvent(Object^
sender, EventArgs^ args);
ref class Car{
Int32 speed;
public:
event EventHandler^
lowTemperature;
Car(Int32 initSpeed):
speed(initSpeed) {
lowTemperature += gcnew
EventHandler(this,
&Car::OnLowTemperature);
}
Void OnLowTemperature(Object^
sender, EventArgs^ args){
speed = 0;
}
};
Funcții virtuale
 Dacă funcția virtuală redefinește
funcția clasului de bază, atunci
după declararea funcției se
adaugă modificatorul override.
În acest caz funcția se
înregistrează în tabelul funcțiilor
virtuale
 În caz dacă funcția virtuală nu
participă în mecanismul
polimorfismului, după declararea
funcției se adaugă modificatorul
new
Întrebări?
Mulțumesc pentru atenție!

More Related Content

Viewers also liked

Metrologia electromecanica. UCV Ingenieria Industrial
Metrologia electromecanica. UCV Ingenieria IndustrialMetrologia electromecanica. UCV Ingenieria Industrial
Metrologia electromecanica. UCV Ingenieria IndustrialIsrael Grajales Ramirez
 
Programarea independenta de platforma in C++. Qt
Programarea independenta de platforma in C++. QtProgramarea independenta de platforma in C++. Qt
Programarea independenta de platforma in C++. QtDragos Tudor Acostachioaie
 
Carte probleme rezolvate cef (1)
Carte probleme rezolvate cef (1)Carte probleme rezolvate cef (1)
Carte probleme rezolvate cef (1)Claudiu Luiuz
 
Cursu PS - ASM Cluj
Cursu PS - ASM ClujCursu PS - ASM Cluj
Cursu PS - ASM ClujASMCluj
 
Microsoft power point 2007 tic 10
Microsoft power point 2007 tic 10Microsoft power point 2007 tic 10
Microsoft power point 2007 tic 10technoconcord
 
Suport 03-cls9-tic-cap05-crearea paginilor web-liste in pagini web
Suport 03-cls9-tic-cap05-crearea paginilor web-liste in pagini webSuport 03-cls9-tic-cap05-crearea paginilor web-liste in pagini web
Suport 03-cls9-tic-cap05-crearea paginilor web-liste in pagini webGeorge Brebenel
 
Olga Gaidet, Copilul intra in Internet...
Olga Gaidet, Copilul intra in Internet...Olga Gaidet, Copilul intra in Internet...
Olga Gaidet, Copilul intra in Internet...Alianta INFONET
 
Microsoft access 2007
Microsoft access 2007Microsoft access 2007
Microsoft access 2007aditu_7
 
Aplicaţia power point
Aplicaţia power pointAplicaţia power point
Aplicaţia power pointmihaelamatroz
 
Orasul roman
Orasul romanOrasul roman
Orasul romananatmd
 

Viewers also liked (20)

Metrologia
MetrologiaMetrologia
Metrologia
 
Metrologia electromecanica. UCV Ingenieria Industrial
Metrologia electromecanica. UCV Ingenieria IndustrialMetrologia electromecanica. UCV Ingenieria Industrial
Metrologia electromecanica. UCV Ingenieria Industrial
 
Metrologia
MetrologiaMetrologia
Metrologia
 
Pp step-by-step
Pp step-by-stepPp step-by-step
Pp step-by-step
 
Programarea independenta de platforma in C++. Qt
Programarea independenta de platforma in C++. QtProgramarea independenta de platforma in C++. Qt
Programarea independenta de platforma in C++. Qt
 
Carte probleme rezolvate cef (1)
Carte probleme rezolvate cef (1)Carte probleme rezolvate cef (1)
Carte probleme rezolvate cef (1)
 
Powerpoint
PowerpointPowerpoint
Powerpoint
 
Cursu PS - ASM Cluj
Cursu PS - ASM ClujCursu PS - ASM Cluj
Cursu PS - ASM Cluj
 
Soc Cap01
Soc Cap01Soc Cap01
Soc Cap01
 
Microsoft power point 2007 tic 10
Microsoft power point 2007 tic 10Microsoft power point 2007 tic 10
Microsoft power point 2007 tic 10
 
Despre powerpoint
Despre powerpointDespre powerpoint
Despre powerpoint
 
Suport 03-cls9-tic-cap05-crearea paginilor web-liste in pagini web
Suport 03-cls9-tic-cap05-crearea paginilor web-liste in pagini webSuport 03-cls9-tic-cap05-crearea paginilor web-liste in pagini web
Suport 03-cls9-tic-cap05-crearea paginilor web-liste in pagini web
 
C++
C++C++
C++
 
Olga Gaidet, Copilul intra in Internet...
Olga Gaidet, Copilul intra in Internet...Olga Gaidet, Copilul intra in Internet...
Olga Gaidet, Copilul intra in Internet...
 
Microsoft access 2007
Microsoft access 2007Microsoft access 2007
Microsoft access 2007
 
Aplicaţia power point
Aplicaţia power pointAplicaţia power point
Aplicaţia power point
 
Orasul roman
Orasul romanOrasul roman
Orasul roman
 
Facebook
FacebookFacebook
Facebook
 
C++ ppt
C++ pptC++ ppt
C++ ppt
 
Facebook ppt
Facebook pptFacebook ppt
Facebook ppt
 

More from mcroitor

09 server mgmt_ii_ro
09 server mgmt_ii_ro09 server mgmt_ii_ro
09 server mgmt_ii_romcroitor
 
09 server mgmt_ii_ru
09 server mgmt_ii_ru09 server mgmt_ii_ru
09 server mgmt_ii_rumcroitor
 
10 server security_ro
10 server security_ro10 server security_ro
10 server security_romcroitor
 
10 server security_ru
10 server security_ru10 server security_ru
10 server security_rumcroitor
 
08 server mgmt_ro
08 server mgmt_ro08 server mgmt_ro
08 server mgmt_romcroitor
 
08 server mgmt_ru
08 server mgmt_ru08 server mgmt_ru
08 server mgmt_rumcroitor
 
07 virtual hosts_ru
07 virtual hosts_ru07 virtual hosts_ru
07 virtual hosts_rumcroitor
 
07 virtual hosts_ro
07 virtual hosts_ro07 virtual hosts_ro
07 virtual hosts_romcroitor
 
06 php instalation_ro
06 php instalation_ro06 php instalation_ro
06 php instalation_romcroitor
 
06 php instalation_ru
06 php instalation_ru06 php instalation_ru
06 php instalation_rumcroitor
 
05 db server_deployment_ro
05 db server_deployment_ro05 db server_deployment_ro
05 db server_deployment_romcroitor
 
05 db server_deployment_ru
05 db server_deployment_ru05 db server_deployment_ru
05 db server_deployment_rumcroitor
 
04 web server_deployment_ro
04 web server_deployment_ro04 web server_deployment_ro
04 web server_deployment_romcroitor
 
04 web server_deployment_ru
04 web server_deployment_ru04 web server_deployment_ru
04 web server_deployment_rumcroitor
 
03 web server_architecture_ro
03 web server_architecture_ro03 web server_architecture_ro
03 web server_architecture_romcroitor
 
03 web server_architecture_ru
03 web server_architecture_ru03 web server_architecture_ru
03 web server_architecture_rumcroitor
 
02 server hardware_ro
02 server hardware_ro02 server hardware_ro
02 server hardware_romcroitor
 
02 server hardware_ru
02 server hardware_ru02 server hardware_ru
02 server hardware_rumcroitor
 
01 server definition_ro
01 server definition_ro01 server definition_ro
01 server definition_romcroitor
 
01 server definition
01 server definition01 server definition
01 server definitionmcroitor
 

More from mcroitor (20)

09 server mgmt_ii_ro
09 server mgmt_ii_ro09 server mgmt_ii_ro
09 server mgmt_ii_ro
 
09 server mgmt_ii_ru
09 server mgmt_ii_ru09 server mgmt_ii_ru
09 server mgmt_ii_ru
 
10 server security_ro
10 server security_ro10 server security_ro
10 server security_ro
 
10 server security_ru
10 server security_ru10 server security_ru
10 server security_ru
 
08 server mgmt_ro
08 server mgmt_ro08 server mgmt_ro
08 server mgmt_ro
 
08 server mgmt_ru
08 server mgmt_ru08 server mgmt_ru
08 server mgmt_ru
 
07 virtual hosts_ru
07 virtual hosts_ru07 virtual hosts_ru
07 virtual hosts_ru
 
07 virtual hosts_ro
07 virtual hosts_ro07 virtual hosts_ro
07 virtual hosts_ro
 
06 php instalation_ro
06 php instalation_ro06 php instalation_ro
06 php instalation_ro
 
06 php instalation_ru
06 php instalation_ru06 php instalation_ru
06 php instalation_ru
 
05 db server_deployment_ro
05 db server_deployment_ro05 db server_deployment_ro
05 db server_deployment_ro
 
05 db server_deployment_ru
05 db server_deployment_ru05 db server_deployment_ru
05 db server_deployment_ru
 
04 web server_deployment_ro
04 web server_deployment_ro04 web server_deployment_ro
04 web server_deployment_ro
 
04 web server_deployment_ru
04 web server_deployment_ru04 web server_deployment_ru
04 web server_deployment_ru
 
03 web server_architecture_ro
03 web server_architecture_ro03 web server_architecture_ro
03 web server_architecture_ro
 
03 web server_architecture_ru
03 web server_architecture_ru03 web server_architecture_ru
03 web server_architecture_ru
 
02 server hardware_ro
02 server hardware_ro02 server hardware_ro
02 server hardware_ro
 
02 server hardware_ru
02 server hardware_ru02 server hardware_ru
02 server hardware_ru
 
01 server definition_ro
01 server definition_ro01 server definition_ro
01 server definition_ro
 
01 server definition
01 server definition01 server definition
01 server definition
 

C++/CLI: TIpuri de date

  • 2. Cuprins  Tipuri de date  Tipuri de date primitive  Tipuri de date compuse  Tip-referința  Tip-valoare  Tip enumerabil  Interfețe  Proprietăți noi a claselor  Proprietăți  Delegați  Evenimente  Funcții virtuale
  • 3. Tipuri de date  C++/CLI este un limbaj care permite crearea codului gestionabil și negestionabil.  Tipurile gestionabile se plasează în memoria gestionabilă.  Fiecare tip gestionabil este moștenit de la clasa Object.  Există tipuri de date gestionabile primitive(sau simple) si compuse.
  • 4. Tipuri de date primitive Tip gestionabil echivalentul Boolean bool Byte unsigned char Char wchar_t Double double Int16 short Int32 long, int Int64 __int64, long long SByte char Single float UInt16 unsigned short UInt32 unsigned int, unsigned long Uint64 unsigned __int64, unsigned long long Void void
  • 5. Tipuri de date compuse: Tip referință  are semantica referințelor  se păstrează in memoria tipurilor de referință (reference heap)  Acces la valori variabilelor se realizează prin descriptor (^)  Descriptorul poate schimba valoarea sa în timpul executării aplicației («compactare memoriei tipurilor de referință»)  Memoria se alocă cu ajutorul operatorului gcnew  Dacă variabilă nu este legată cu memoria tipurilor de referință, atunci ea primește valoare nullptr ref class Man{ String^ name; Byte age; public: Man(): age(0) { name = gcnew String(""); } Man(String^ n, Byte a): age(a) { name = n; } }; Man^ m = gcnew Man(“Henry“, 20);
  • 6. Tipuri de date compuse: Tip valoare value struct Point { Int32 x, y; }; Point pt;  Sunt structuri simple  Memoria pentru acest tip se alocă în stiva programului.  Efectuarea operațiilor cu tipuri valoare sunt mai efective decât cu cele de tip referință.
  • 7. Tipuri de date compuse: tip numărabil  Este echivalent tipului enum din С++ standard  Este moștenit de la Object  Are proprietate ToString enum class COLOR { BLACK = 0, RED, GREEN, BLUE, WHITE }; COLOR c = COLOR::RED;
  • 8. Tipuri de date compuse: interfețe interface class Shape { void Draw(); void Move(Int32, Int32); }; value struct Point: Shape { Int32 x, y; virtual void Move(Int32 dx, Int32 dy) { x += dx; y += dy; } virtual void Draw(){} };  În C++/CLI nu există moștenire multiplă  Interfața - tip de date ce declară metode, dar nu au câmpuri și realizări de metode  Interfața este un tip echivalent claselor abstracte din C++  Clasa gestionabilă poate fi moștenită de la mai multe interfețe.
  • 9. Proprietăți noi a claselor: proprietăți Proprietăți(properties) este o construcție specială a limbajului destinată pentru setarea/extragerea valorii unui câmp. ref struct Value { property int x; }; //… ref struct Value { property int x { void set(int v){ this->__x = v; } int get() const { return this->__x; } } private: int __x; };
  • 10. Proprietăți noi a claselor: delegare delegate void Reshape(); ref struct Shape{ Shape(){} void Draw(){} }; ref struct Point{ property int x; property int y; Reshape^ reshape; Point(){ reshape = gcnew Reshape(gcnew Shape(), &Shape::Draw); } }; int main(){ Point^ p = gcnew Point(); p->reshape(); return 0; }  Delegare este transmiterea dreptului de a acționa altui obiect sau funcției  Se declară cu ajutorul cuvântului cheie delegate  Delegate sunt moștenite de la clasa System::MulticastDelegate  Delegat poate fi legat cu o lista de funcții  Adăugarea funcțiilor în lista se face prin +=, eliminarea funcției din lista – -=.  Executarea delegatului – Void Invoke();
  • 11. Proprietăți noi a claselor: evenimente  Evenimentele se reprezintă prin delegații  se definesc cu ajutorul cuvântului-cheie event  Funcții legate cu eveniment se numesc prelucrători evenimentului  Tip de baza a evenimentului este System::EventHandler  Reprezentare obișnuită prelucrătorului evenimentului este Void OnEvent(Object^ sender, EventArgs^ args); ref class Car{ Int32 speed; public: event EventHandler^ lowTemperature; Car(Int32 initSpeed): speed(initSpeed) { lowTemperature += gcnew EventHandler(this, &Car::OnLowTemperature); } Void OnLowTemperature(Object^ sender, EventArgs^ args){ speed = 0; } };
  • 12. Funcții virtuale  Dacă funcția virtuală redefinește funcția clasului de bază, atunci după declararea funcției se adaugă modificatorul override. În acest caz funcția se înregistrează în tabelul funcțiilor virtuale  În caz dacă funcția virtuală nu participă în mecanismul polimorfismului, după declararea funcției se adaugă modificatorul new