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:

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

3 Responses

Subscribe to comments via RSS

  1. Written by Romina
    on 28/05/2010 at 2:08 PM
    Permalink

    Sunt foarte bine explicate principiile OOP. Nota 10!
    :wink:

  2. Written by ioana
    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 ;)

  3. Written by Pop Ioan Mihai
    on 07/07/2011 at 9:31 AM
    Permalink

    Thanks!

Subscribe to comments via RSS

Leave a Reply

*