Risipa de key_press | Programare

Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Risipa de key_press | Programare - Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Programarea orientata pe obiecte cu c#

     Programarea orientata pe obiecte este notiunea de baza a limbajului C# si reprezinta o metodologie puternica de abordare a programarii, pornind de la programarea nestructurata, programarea procedurala si programarea modulara.

Programele orientate spre obiect sunt organizate in jurul datelor (ceea ce este afectat de executia programului). Programele contin datele cat si metodele asociate crearii, prelucrarii si distrugerii datelor.

     Caracteristicile comune limbajelor care implementeaza programarea pe obiecte sunt: incapsularea, polimorfism, mostenirea. Despre ultimele doua notiuni, vom discuta in urmatoarele doua articole.

     Incapsularea e un mecanism care combina codul si datele mentinandu-le integritatea in timpul utilizarii. Din aceasta combinatie, se creeaza obiectul. Tot la nivelul incapsularii se defineste nivelul de acces la datele unui obiect.

     In cadrul unui obiect, codul si datele pot fi private sau public. Cand sunt private, ele sunt vizibile si accesibile doar in interiorul obiectului. In cazul public, celelalte parti ale programului le pot utiliza.

     Forma unui obiect este definata de clasa. Datele care constituie o clasa sunt denumite variabile membri. Codul care opereaza asupra datelor este numit metoda .

     Metoda implementeaza o actiune, poate admite parametri si returna valori de tip predefinit, de tip obiect sau tipul void (nimic). Un parametru sau argument este o valoare transmisa unei metode, cu valabilitate in corpul functiei.

Exemplu :

 public class Student
    {
        //declararea variabilelor membru
        public double nota;
        private int varsta;

        //declarea unei metode 
        //care va returna true/false
        public bool Admis()
        {
            //
        }
    }

     Datorita modificatorului de acces public, clasa Student va fi vizibila peste tot si cu acces nelimitat. In cazul in care nu adaugam un modificator in declarea clasei, ea ar primit implicit tot acest modificator de acces.

modificator access Explicatii
public access nelimitat
internal acces permis doar in clasa sau spatiul de nume in care e cuprinsa
protected acces in clasa curenta sau in cele derivate
private implicit.Doar pentru clasele interioare
protected internal folosit pentru clasele interioare semnificand accesul in clasa care-l contine sau in tipurile derivate din clasa care-l contine

     Atat datele cat si metodele pot avea modificatori de acces:

modificator access explicatie
public membrul accesibil de oriunde
internal accesbil doar intr-un bloc functional al unei aplicatii .Net
protected accesibil oricarui membru al clasei care-l contine si al claselor derivate
private implicit. acces permis doar pentru clasa care contine membrul
protected internal accesibil oricarui membru al al clasei care il contine si al claselor derivate, precum si in blocul functional

     Definitia unei clase creeaza un nou tip de data (clasa este un tip de date referinta). Continuand cu exemplu, vom creea un obiect de tipul Student.

  //creeaza un obiect Student 
  Student Popescu = new Student();

     Dupa executia instructiunii, Popescu va fi o instanta a clasei Student. La crearea unei instante, se va crea un obiect care contine o copie proprie a fiecarei variabile membru din cadrul clasei. Pentru a referi este variabile, se va utiliza operatorul “.” .

Exemplu:

            //operatorul punct leaga 
            //numele unui obiect de numele
            //unui membru al sau
            Popescu.nota;

Constructorul

     Constructorul este o metoda care face parte dintr-o clasa. Constructorul contine instructiuni care se executa la crearea unui nou obiect al clasei. Daca o clasa nu are definit un constructor, atunci se va atribui automat constructorul fara parametri al clasei de baza.

        //constructor implicit
        public Student()
        {
            nota = 0;
            varsta = 0;
  
        }

  //constructor cu doi parametri
        public Student(double nota, int varsta)
        {
            this.nota = nota;
            this.varsta = varsta;
        }

O clasa poate avea mai multi constructori.

La instantierea clasei, apelam constructorul parametrizat:

 Student Ionescu = new Student(8.2, 23);
 Console.WriteLine(Ionescu.nota);

Destructorul

     Corpul destructorului este format din instructiuni care se executa la distrugerea unui obiect al clasei. Destructorul nu este apelat in mod explicit, pentru ca, in mod normal, la procesul de distrugere este invocat Garbage Collector .

Operatorul new

     Operatorul new este folosit pentru crearea obiectelor si invocarea constructorilor (reamintim ca si la tipurile de date se apela constructorul implicit: int variabila = new int ();).

    Operatorul new nu poate fi supraincarcat.

Operatorul this

     Acest operator se refera la instanta curenta pentru care a fost apelata o metoda, o proprietate.

    Operatorul mai este folosit in situatia cand numele unui parametru sau al unei variabile locale coincide cu numele unei variabile membru. In acest caz, numele local “va ascunde” variabila membru. Prin intermediul lui this, se va putea referi la acea variabila membru. (exemplu mai sus, la declararea constructorului cu parametri).

     Pentru o aplicare cat mai buna a principiilor POO, sunt importante operatiile de identificare a entitatilor, a datelor si operatiilor, a relatiilor dintre entitati si o posibila ierarhie a claselor.

Category: Uncategorized

Your email address will not be published. Required fields are marked *

*