Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Doar rabdarea si perseverenta in invatare aduce rezultate bune.stiinta, numere naturale, teoreme, multimi, calcule, ecuatii, sisteme




Biologie Chimie Didactica Fizica Geografie Informatica
Istorie Literatura Matematica Psihologie

C


Index » educatie » » informatica » C
» Clase. Incapsularea


Clase. Incapsularea


Clase. Incapsularea

Definitii

O clasa este o extindere a conceptului de structura din C. Spre deosebire de structura din C, care poate contine doar date, clasa poate contine atat date cat si functii. O variabila de tip clasa se numeste obiect. Obiectul se mai numeste instanta a clasei. Datele si functiile declarate in interiorul clasei se numesc membrii clasei. Datele membre ale unei clase se numesc campuri. Functiile membre se numesc metode



Clasele sunt declarate cu ajutorul cuvantului cheie class, folosind urmatoarea sintaxa:

class NumeClasa ;

Obiectele sunt declarate ca si variabilele de orice alt tip:

NumeClasa numeObiect1, numeObiect2, ;

Totul este similar cu declaratia structurilor din C, doar ca aici membrii pot fi atat date, cat si functii. O alta deosebire o reprezinta modurile de acces. Modul de acces poate fi definit prin unul din cuvintele cheie public sau private. Acesta indica dreptul de acces la membrii definiti dupa el.

Membrii private sunt accesibili doar din interiorul altor membri ai aceleiasi clase.

Membrii public sunt accesibili de oriunde din interiorul sau din afara clasei.

In mod implicit, toti membrii unei clase au modul de acces private.

De exemplu:

class Dreptunghi ;

Exemplul declara o clasa (adica un tip) numita Dreptunghi. Aceasta contine 4 membri: doua campuri de tip int lungime si latime) cu modul de acces privat si doua metode cu modul de acces public: setValori() si arie(). Pentru moment am inclus doar declaratia acestor metode, nu si definitia lor.

Pentru a declara un obiect (o variabila) cu numele dr, vom folosi urmatoarea sintaxa:

Dreptunghi dr;

Remarcam diferenta dintre numele clasei si numele obiectului: Dreptunghi este numele clasei, iar dr este numele obiectului.

Dupa ce am declarat Dreptunghi si dr, putem sa accesam din corpul programului orice membru public al obiectului dr, ca si cum ar fi functii sau variabile normale, folosind sintaxa:

numeObiect.numeMembru

Este foarte asemanator cu accesul datelor dintr-o structura. De exemplu:

dr.setValori(3,4);

valArie = dr.arie();

Singurii membri ai dr pe care nu-i putem accesa in corpul programului nostru din afara clasei sunt lungime si latime, deoarece au accesul privat.

In continuare vom completa clasa Dreptunghi cu definitia metodelor membre:

// exemplu clase

#include<iostream>

#include<conio.h>

using namespace std;

class Dreptunghi

/* metoda definita in exteriorul corpului clasei */

void Dreptunghi::setValori(int lungime1, int latime1)

int main ()

arie: 12

Cel mai important aspect nou in acest cod este operatorul de rezolutie ( ) folosit in definirea metodei setValori(). Operatorul este folosit pentru a defini un membru a unei clase in afara declaratiei (corpului) clasei.

Putem remarca ca definitia functiei arie(), a fost inclusa direct in corpul clasei Dreptunghi, datorita faptului ca este foarte simpla. Pe de alta parte, metoda setValori() are doar prototipul (declaratia) in interiorul clasei, dar definitia este in afara ei. Cand definim metoda in afara clasei, trebuie sa folosim operatorul de rezolutie ( ) , ca sa specificam ca definim o metoda membra a clasei Dreptunghi si nu o functie globala obisnuita.

Membrii lungime si latime au modul de acces privat. Declarandu-i privati, interzicem accesul lor din orice parte de cod din afara clasei. Acest lucru are sens, deoarece am definit o metoda membru care seteaza valorile campurilor lungime si latime din interiorul obiectului si anume metoda setValori(). Datorita acestei metode, in restul programului nu este nevoie sa se acceseze direct campurile clasei. Poate ca acest exemplu este prea simplu, si este greu de observat utilitatea de a proteja aceste doua campuri. In proiectele mai mari, este foarte important ca datele sa nu poata fi modificate in mod nedorit (nedorit din punct de vedere al logicii clasei).

Definitii

Posibilitatea de a ascunde de utilizatorul unei clase detaliile ei de realizare se numeste Incapsulare. Utilizatorului ii este oferit doar un set de membri publici, suficient pentru a utiliza clasa. Acesti membri publici se numesc Interfata a clasei. Membrii inaccesibili din exterior sunt declarati privati si se numesc Implementare a clasei.

Incapsularea este unul dintre cele trei principii de baza ale programarii orientate obiect. Celelalte doua principii: mostenirea si polimorfismul, le vom studia in laboratoarele urmatoare.






Politica de confidentialitate




Copyright © 2024 - Toate drepturile rezervate