Principii OOP
De multe ori sunteti intrebati la un interviu care sunt principiile OOP(POO), si multi dintre voi habar nu aveti ce sa ziceti, multi zic ca e teorie si nu trebuie sa stii chestii de genul asta, altii mai aproape de adevar spun ca le folosesc in fiecare zi dar au probleme in a le defini si explica cand sunt intrebati, mai e si o mica parte carora articolul de fata nu li se adreseaza, cei care deja stiu sa enunte si sa explice principiile OOP.
Sa incepem:
- Incapsularea
- Abstractizarea
- Mostenirea
- Polimorfism
Astea sunt toate cele 4 principii care stau la baza programarii orientate pe obiecte, daca ele nu pot fi implementate atunci platforma folosita nu e OOP.
Incapsularea
Incapsularea se defineste ca fiind inglobarea si ascunderea datelor intr-o clasa(structura).
Ex C#
public class User
{
private string m_name;//aici incapsulam numele utilizatorului si il ascundem
public string Name
{
get
{
return m_name.ToUpper(); //putem formata rezultatul
}
set //putem valida "input"-ul
{
if (value != string.Empty) m_name = value;
else m_name = "No Name";
}
}
}
Abstractizarea
Putem defini abstractizarea ca fiind procesul de a lua obiecte reale si a le transforma in concepte virtuale. Clasele si atributele pe care le definesc modeleaza lumea reala intr-un mod abstract. Ca exemplu putem lua codul de mai sus, clasa User e modelul simplificat al unui utilizator de computer, ea reprezinta o persoana care poate fi reala si are un nume atasat.
Ex. C#
class Program
{
static void Main(string[] args)
{
User u = new User();
u.Name = "Popescu Ion";
}
}
Mostenirea
Mostenirea e capacitatea de a crea noi clase pornind de la definitii de obiecte deja existente, aceste clase nou create au aceleasi proprietati si functionalitati ca si clasele parinte. Intr-un mod simplist putem spune ca mostenirea ajuta la reutilizarea codului.
Ex. C#
public class Student : User
{
private float m_grade;
public float Grade
{
get { return m_grade; }
set { m_grade = value; }
}
}
class Program
{
static void Main(string[] args)
{
Student s = new Student();
s.Name = "Popescu Ion";
s.Grade = 4.75F;
}
}
Conform exemplului avem clasa Student ea va contine ca proprietati atat Name, cat si Grade primul fiind mostenit din clasa de baza User.
Polimorfismul
Dupa cum numele sugereaza e capacitatea obiectelor de a contine functionalitati diferite sub acelasi nume, ca o consecinta directa a polimorfismului avem redefinirea metodelor, mai exact aceeasi metoda poate executa actiuni diferite in functie de locul in care este implementata.
Ex. C#
public class User
{
public override string ToString()
{
return "Sunt un User";
}
}
public class Student : User
{
public override string ToString()
{
return "Sunt un Student";
}
}
class Program
{
static void Main(string[] args)
{
User u = new User();
Student s = new Student();
Console.WriteLine(u.ToString());
Console.WriteLine(s.ToString());
Console.ReadLine();
}
}
Rezultatul evident va fi:
Sunt un User Sunt un Student

on 28/05/2010 at 2:08 PM
Permalink
Sunt foarte bine explicate principiile OOP. Nota 10!
on 06/06/2011 at 3:14 PM
Permalink
Ai perfecta dreptate cu interviurile… desi multi stim ce este si cu ce se mananca OOP, la un interviu, multi gresim
on 07/07/2011 at 9:31 AM
Permalink
Thanks!