Sari la conținut

[Programare Orientata pe Obiecte - C++] Incapsulare


Postări Recomandate

  • LCS PREMIUM
Postat

** Introducere in Incapsulare ** 

Incapsularea reprezinta un alt concept crucial in paradigma orientata pe obiecte care ne permite capacitatea de a restrictiona accesul campurilor unei clase de catre exterior . De exemplu , utilizatorului  NU i se permite modificarea sau citirea parolei de catre persoane NEAUTORIZATE (DOAR DE CATRE ADMINISTRATOR SAU UTILIZATORUL RESPECTIV) . 

** Nivele de Acces ** 

In limbajul C++ , exista 3 nivele de acces

  • "private" --> nu se permite accesul (modificare/citire) din exterior (doar in interiorul clasei) ;
  • "public" --> se permite accesul (modificare/citire) din exterior . 
  • "protected" --> similar cu "private" doar ca se permite accesul de catre alte clase derivate . (VOM DISCUTA LA MOMENTU POTRIVIT)

De exemplu :

#include <iostream>

using namespace std;

class Utilizator {

	private: // Sector Privat (Membrii aflati la acest nivel de acces NU pot fi accesati)

		char username[50]; // Declar Privat

    public : // Sector Public (Membrii aflati la acest nivel de acces POT FI ACCESATI) 

		char email[50]; // Declar Public 

protected : // Sector Protejat (Membrii aflati la acest nivel de acces NU POT FII ACCESATI DIN EXTERIOR CU EXCEPTIA MEMBRIILOR CARE APARTIN DE CLASE DERIVATE DIN ACEASTA)

	char password[50]; // Declar Protected 

};

int main()
{

	Utilizator vasileEntitate; // Instantiez 


	/// Atribuim valori catre instanta 

	strcpy_s(vasileEntitate.email, "vasileemai@gmail.com"); // OK
	strcpy_s(vasileEntitate.username, "vasile"); // EROARE MEMBRU INACCESIBIL --> MEMBRU PRIVAT
	strcpy_s(vasileEntitate.password, "vasileParola"); // EROARE MEMBRU INACCESIBIL --> MEMBRU PROTECTED



	return  0;
}

NOTA ** : SE RECOMANDA CA VARIABILELE SA FIE STOCATE PE SECTOR PRIVAT IAR FUNCTIILE (METODELE) PE PUBLIC !!! 

** Getteri && Setteri **

Pentru citirea si modificarea campurilor private din exterior , exista conceptul de getteri (pentru citire) & setteri (pentru modificari) . Practic , putem modifica campurile private prin intermediul unor metode publice . 

De exemplu

#include <iostream>

using namespace std;

class Utilizator {

	private: // Sector Privat (Membrii aflati la acest nivel de acces NU pot fi accesati)

		char username[50]; // Declar Privat
		char email[50]; // Declar Privat
		char password[50]; // Declar Privat 


    public : // Sector Public (Membrii aflati la acest nivel de acces POT FI ACCESATI) 

		// Getteri ( Getteri Trebuie sa returneze tipul de date al campului)

		const char* getUsername()
		{
			return username;
		}

		const char* getEmailAddress()
		{
			return email;
		}

		const char* getPassword()
		{
			return password;
		}

		// Setteri (Setteri NU returneaza nimic doar modifica)

		void  setUsername(const char* _username)
		{
			strcpy_s(username, _username);
		}
		void  setEmail(const char*  _email)
		{
			strcpy_s(email , _email);
		}
		void  setPassword (const char* _password)
		{
			strcpy_s(password, _password);
		}
		 

};

int main()
{

	Utilizator vasileEntitate; // Instantiez 


	/// Atribuim valori catre instanta prin Setteri

	vasileEntitate.setUsername("Vasile");
	vasileEntitate.setEmail("vasileEmail@gmail.com");
	vasileEntitate.setPassword("vasileParola");

	// Afisam valorile prin getteri 

	cout << vasileEntitate.getUsername() << endl;
	cout << vasileEntitate.getEmailAddress() << endl;
	cout << vasileEntitate.getPassword() << endl;

	return  0;
}

Rezultat output

Citat

Vasile
vasileEmail@gmail.com
vasileParola

TUTORIAL CONSTRUIT DE CATRE MINE PENTRU UTILIZATORI LEAGUECS !!! 

PENTRU SUGESTII , RECLAMATII , OBIECTII , va astept cu PM sau jos , in comentarii !!! 

  • Like 1
Vizitator
Acest topic este acum închis pentru alte răspunsuri.
  • Navigare recentă   0 membri

    • Nici un utilizator înregistrat nu vede această pagină.
×
×
  • Creează nouă...

Informații Importante

Termeni de Utilizare & Politică Intimitate