Showing posts with label constructori. Show all posts
Showing posts with label constructori. Show all posts

Monday, January 18, 2016

Limbajul PHP. Mostenirea de clase. O problema de sinteza

Enuntul urmator sintetizeaza aspectele esentiale ale mecanismului si sintaxei mostenirii de clase in PHP, intre care accesul din clasa derivata la membrii privati ai clasei parinte prin intermediul metodelor mostenite, apelarea din clasa derivata a constructorului din clasa parinte, apelul membrilor constanti, suprascrierea metodelor.

"Develop a hierarchic structure of classes:Circle and Cylinder 
The base class is Circle and the derived class is Cylinder. It inherits the method Display() from base class Circle. 
You have to define the new necessary fields and methods and override the method Display() to print the total surface area and volume of the cylinder. "


Daca baza cilindrului cu inaltimea H este cercul de raza R cu suprafata S = PI*R*R, atunci suprafata totala a cilindrului este: 2*PI*R*H + 2*S iar volumul este: S*H. 
Codul si printscreenul:

Thursday, December 31, 2015

Limbajul C++. Implementarea unei functionalitati aritmetice intr-o clasa

Exemplul urmator propus de programmr.com are un singur aspect netrivial: se cere ca initializarea membrilor clasei sa se faca prin metode, si nu prin explicitarea constructorilor.

Clasa student invocata in enunt are trei membri - un string care prezerva numele studentului, un integer pentru matricola si un tablou de intregi pentru notele la cinci materii.

O metoda publica input initializeaza membrii dupa instantierea unui obiect student. O alta metoda publica output afiseaza media notelor.

Enuntul original:

"A class student has three data members: name, roll, marks of 5 subjects and member functions to input name, roll no and marks, and display Percentage. Declare the class student and define the member functions. The program should ask user for name, roll no and marks in 5 subjects, and should display the percentage."

Codul si printscreen-ul:

Tuesday, December 29, 2015

Limbajul C++. Implementarea unei aplicatii cu clase derivate


Urmatorul enunt reprezinta un assignment aferent uneia dintre lectiile din cadrul cursului "Bazele programarii C++" sustinut la InfoAcademy.

Aceasta prezentare nu are intentia de a compromite procesul didactic, ci de a oferi o perspectiva asupra felului in care sunt prezentate in viata reala cerintele de implementare a unui proiect.

Enuntarea si implementarea cerintelor sunt abordate pas cu pas.

Se lucreaza intr-un spatiu de nume intitulat "Assignment9".

Declaratiile de clase sunt salvate in fisiere header (.h). Definitiile sunt salvate in fisiere sursa (.cpp).

Limbajul C++. Clonarea obiectelor folosind metodele virtuale si constructorul de copiere


Realizarea unei clone a unui obiect presupune crearea unui obiect nou, cu existenta independenta de cel clonat, care ocupa in memorie un spatiu distinct de cel clonat dar care are toate atributele si metodele identice cu ale celui clonat.

Mecanismul urmator foloseste constructorul de copiere si o metoda declarata virtuala, care este supracrisa in clasa derivata. Declararea virtuala este necesara pentru apelul corect al metodelor: metoda Clone va fi cautata intai in clasa derivata, indiferent de scenariu - fie ca variabila are tipul clasei de baza sau cel al clasei derivate.

Stim ca o variabila initializata cu o instanta a clasei derivate are si tipul clasei de baza (invers nu!)

Suprascrierea metodei implica prezervarea aceleiasi semnaturi (nume, argumente, tip de return) dar o implementare diferita in clasa derivata.