Octav's Blog Software, hardware, gadgets, hobbies

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
Share and Enjoy:
  • Digg
  • Facebook
  • Google Bookmarks
  • Live
  • RSS
  • Twitter
Comments (3) Trackbacks (0)
  1. Sunt foarte bine explicate principiile OOP. Nota 10!
    :wink:

  2. Ai perfecta dreptate cu interviurile… desi multi stim ce este si cu ce se mananca OOP, la un interviu, multi gresim ;)

  3. Thanks!


Leave a comment

(required)


*

Trackbacks are disabled.