Documente Academic
Documente Profesional
Documente Cultură
A verificat: dr.conf
Ştefan Marin
Chişinău 2014
Obiective:
– de studiat şi însuşit materialul teoretic pentru evidenţierea esenţialului şi elaborarea
modelului conceptual pentru fiecare compartiment aparte (variante);
– să se elaboreze scenarii de modelare şi analiza a diferitor modele de programare pentru
propria variantă;
– să se descrie etapele si principiile de algoritmizare si rezolvare ale problemei în baza
diferitor modele OO în limbajul de programare C/C++;
– să se aplice tehnica modelării şi programării eficiente pentru diverse compartimente ale
diferitor situaţii cu diverse modele de structuri abstracte.
– Programul sa conţină o baza de date cu informaţia la aceste intrebari şi teste de verificare.
Concepte fundamentale.
Ideea de baza de la care pleaca programarea orientata obiect este de a grupa structurile de date cu
operatiile care prelucreaza respectivele date. Un asemenea ansamblu poarta denumirea de obiect sau
clasa. Proiectarea de programe utilizand clase se numeste programare orientata pe obiecte (OOP).
In mod frecvent, pentru structurile de date se utilizeaza denumirea de date membre sau campuri, iar
pentru procedurile ce prelucreaza aceste date, termenul de functii membre sau metode.
In analogie cu ecuatia programarii structurate, se poate considera ca valabila urmatoarea relatie:
lucru este normal, deoarece variabila x trebuie initializata inaintea lansarii in executie a functiei
main().
Intrari/iesiri in limbajul C++ Limbajul C++ permite definirea tipurilor abstracte de date prin
intermediul claselor. Clasele nu sunt altceva decat generalizari ale structurilor din limbajul C. Ele contin
date membre, adica variabile de tipuri predefinite sau definite de utilizator prin intermediul altor clase,
precum si functii membre, reprezentand metodele clasei.
Programare avansata utilizand clase .
a. Controlul accesului la clase
Spre deosebire de limbajele orientate obiect pure, C++ permite controlul accesului la
membrii claselor. In acest scop, s-au creat trei specificatori de cotrol al accesului:
public, membrul poate fi accesat de orice functie din domeniul declaratiei clasei;
private, membrul este accesibil numai functiilor membre si prietene ale clasei;
protected, similar cu private, insa accesul se extinde si la functiile membre si prietene ale
claselor derivate.
De remarcat este faptul ca o functie membra a unei clase are acces la toti membrii clasei,
indiferent de specificatorul de acces.
friend NumeFunctie
Clase virtuale
Utilizarea mostenirii multiple se poate complica odata cu cresterea dimensiunii ierarhiei de
clase. O situatie care poate apare este derivarea din doua clase de baza, Clasa1 si Clasa2, care la
randul lor sunt derivate dintr-o clasa comuna, ClasaDeBaza. In acest caz, noua clasa,
ClasaNoua, va contine datele membre ale clasei ClasaDeBaza duplicate. Daca prezenta acestor
date duplicate este utila, ele pot fi distinse evident cu ajutorul operatorului de rezolutie, ::.
Totusi, in cele mai multe cazuri, aceasta duplicare nu este necesara si duce la consum inutil de
memorie. De aceea, in C++ a fost creat un mecanism care sa evite aceasta situatie, prin
intermediul conceptului de clasa virtuala. Sintaxa este:
5.Listingul programului:
#include <iostream.h>
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
int poly[10],x,y;
char c;
class Gimnast
{
//Declararea tipului de variabile, "public" vor fi vizibile din tot programul
public:
// Declararea functiior ca variabile a clasei
void DrawHead ( int x, int y, double Radius );
void DrawLeftEye ( int x, int y, double Radius );
void DrawRightEye ( int x, int y, double Radius );
void DrawNose ( int x, int y );
void DrawMounth ( int x, int y, int StartAngle, int EndAngle, int Radius );
void DrawBody ( int x, int y );
void DrawRightHand ( int x, int y );
void DrawLeftHand ( int x, int y );
void DrawRightFoot ( int x, int y );
void DrawLeftFoot ( int x, int y );
};
//Functiile declarate in clasa, si corpul acestora. Declararea se face ca apel a functiei sau
variabilei publice dintr-o clasa
drawpoly(5,poly);
}
void Gimnast::DrawRightHand( int x, int y )
{
//Mina dreapta
// x y
poly[0]=x+40; poly[1]=y+25;
poly[2]=x+80; poly[3]=y+105;
poly[4]=x+70; poly[5]=y+108;
poly[6]=x+38; poly[7]=y+32;
poly[8]=poly[0]; poly[9]=poly[1];
drawpoly(5,poly);
}
void Gimnast::DrawLeftFoot( int x, int y )
{
//Piciorul sting
rectangle( x-20,y+150,x-10,y+200 );
}
void Gimnast::DrawRightFoot( int x, int y )
{
//Piciorul drept
rectangle( x+10,y+150,x+20,y+200 );
}
//*****************************************************************
//Middle jump
6.Concluzie:
Paradigma de programare orientată-obiect stabileşte modul de conceptualizare a lumii
reale şi a problemelor concrete prin utilizarea obiectelor, ca unităţi universale de definire a unor
aspecte ale realităţii. Clasele şi obiectele, ce reprezintă o instanţă ale acestora, sunt modele
simplificate ale unei entităţi concrete sau abstracte, proces, fenomen, etc. POO operează cu
modele şi relaţiile dintre acestea.