Programarea orientată pe obiecte Curs 2
Clase şi obiecte Aceasta prezentare (si cele ce vor urma) are la baza cartea  Ioan Jurca – Programarea Orientata pe Obiecte  cat si diferite materiale “culese” din Internet. Peste tot unde am folosit diferite surse am incercat sa mentionez autorii acestora. Eventualele scapari sunt  mea culpa .
Clase şi obiecte Elementele componente ale unei clase
Modificatori
Crearea obiectelor
Supraîncărcarea metodelor
Metoda main
Tablouri
Enumerări
Clase înfăşurătoare
Clase şi metode generice
Clase şi obiecte (2) Clasa – unitatea fundamentală de structurare a programelor orientate pe obiecte;
Clasa este  tiparul  care defineşte  variabilele de stare  ale unui obiect şi
operaţiile permise  asupra obiectului
În C#: variabile de stare =  câmpuri , operaţii =  metode
Câmpurile, metodele şi sema n tica lor =  contractul clasei
Reprezentarea câmpurilor şi  implementarea  (codul) metodelor  se pot modifica ,
dacă nu afectează contractul ( open/close principle )
Este recomandabil ca numai unele dintre metode (de regulă nu şi câmpurile )
să fie vizibile utilizatorilor   Trebuie şi un  mecanism de control al vizibilităţii
elementelor
Alt mecanism:  crearea de obiecte  (în C#:  operatorul  new  aplicat pe un
constructor al clasei)
Elementele componente ale unei clase Cazul general:  1) câmpuri; 2) metode; 3) clase şi interfeţe încuibate Oricare dintre elemente pot lipsi class   Persoana { public   String  CNP;  // cod numeric personal public   String  nume;  // numele persoanei public   Persoana  pereche;  // sotul/sotiei public   static   long  populatie = 0; public  Persoana( String  nume,  String  CNP,  Persoana  peer) { this .nume = nume; this .CNP = CNP; pereche = peer;  //!!! populatie++; } public   String  getNume() { return  nume; } public   bool  checkCNP() { return   true ;  // nu e obligatoriu sa fie true :) } }
Campuri Variabile  de exemplar  şi variabile  de clasă Iniţializatori : constante sau expresii de tip corespunzător cu al câmpului,  stabilesc valoarea iniţială Exemple: double sapte = 3.5 * 2; // expresie constanta   double altSapte = sapte; // expresie cu alt camp al obiectului   double sin45 = Math.sin(Math.PI/4); // apel de metoda   double expr = sapte + Math.sqrt(sin45); //expresie combinata Tipuri predefinite Tipuri predefinite  non-obiecte : numerice, char, boolean Tipuri numerice:  Byte, short, int, long, float, double Char :reprezentare Unicode câmpuri  constante : declarate cu  final   câmpurile cu tip clasă conţin  referinţe  !!
Metode (1) Declararea metodelor:  antet  şi  corp
Antet:  modificatori ,  tipul val. returnate ,  semnătura ;
Semnătura : nume + lista de parametri
Corpul : instrucţiuni între acolade class   Persoana { //declaratii de campuri, variabile si initializari public   String  ToString() { String  reprez =  "Persoana "  + nume + " are codul numeric personal "  + CNP +  "\nsi " ; if  (pereche ==  null ) reprez +=  "nu " ; return  reprez +  " este casatorita." ; } public   static   void  main( String [] args) { Persoana  pers =  new   Persoana (); pers.CNP =  "1760223364760" ; pers.nume =  "Ion Ionescu" ; Console .WriteLine(pers.ToString()); } }
Metode (2) Execuţia  unui program începe în  metoda  main
S-a folosit un  constructor no-arg ,  Persoana()

Curs2-POO

  • 1.
  • 2.
    Clase şi obiecteAceasta prezentare (si cele ce vor urma) are la baza cartea Ioan Jurca – Programarea Orientata pe Obiecte cat si diferite materiale “culese” din Internet. Peste tot unde am folosit diferite surse am incercat sa mentionez autorii acestora. Eventualele scapari sunt mea culpa .
  • 3.
    Clase şi obiecteElementele componente ale unei clase
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
    Clase şi obiecte(2) Clasa – unitatea fundamentală de structurare a programelor orientate pe obiecte;
  • 13.
    Clasa este tiparul care defineşte variabilele de stare ale unui obiect şi
  • 14.
    operaţiile permise asupra obiectului
  • 15.
    În C#: variabilede stare = câmpuri , operaţii = metode
  • 16.
    Câmpurile, metodele şisema n tica lor = contractul clasei
  • 17.
    Reprezentarea câmpurilor şi implementarea (codul) metodelor se pot modifica ,
  • 18.
    dacă nu afecteazăcontractul ( open/close principle )
  • 19.
    Este recomandabil canumai unele dintre metode (de regulă nu şi câmpurile )
  • 20.
    să fie vizibileutilizatorilor  Trebuie şi un mecanism de control al vizibilităţii
  • 21.
  • 22.
    Alt mecanism: crearea de obiecte (în C#: operatorul new aplicat pe un
  • 23.
  • 24.
    Elementele componente aleunei clase Cazul general: 1) câmpuri; 2) metode; 3) clase şi interfeţe încuibate Oricare dintre elemente pot lipsi class Persoana { public String CNP; // cod numeric personal public String nume; // numele persoanei public Persoana pereche; // sotul/sotiei public static long populatie = 0; public Persoana( String nume, String CNP, Persoana peer) { this .nume = nume; this .CNP = CNP; pereche = peer; //!!! populatie++; } public String getNume() { return nume; } public bool checkCNP() { return true ; // nu e obligatoriu sa fie true :) } }
  • 25.
    Campuri Variabile de exemplar şi variabile de clasă Iniţializatori : constante sau expresii de tip corespunzător cu al câmpului, stabilesc valoarea iniţială Exemple: double sapte = 3.5 * 2; // expresie constanta double altSapte = sapte; // expresie cu alt camp al obiectului double sin45 = Math.sin(Math.PI/4); // apel de metoda double expr = sapte + Math.sqrt(sin45); //expresie combinata Tipuri predefinite Tipuri predefinite non-obiecte : numerice, char, boolean Tipuri numerice: Byte, short, int, long, float, double Char :reprezentare Unicode câmpuri constante : declarate cu final câmpurile cu tip clasă conţin referinţe !!
  • 26.
    Metode (1) Declarareametodelor: antet şi corp
  • 27.
    Antet: modificatori, tipul val. returnate , semnătura ;
  • 28.
    Semnătura : nume+ lista de parametri
  • 29.
    Corpul : instrucţiuniîntre acolade class Persoana { //declaratii de campuri, variabile si initializari public String ToString() { String reprez = "Persoana " + nume + " are codul numeric personal " + CNP + "\nsi " ; if (pereche == null ) reprez += "nu " ; return reprez + " este casatorita." ; } public static void main( String [] args) { Persoana pers = new Persoana (); pers.CNP = "1760223364760" ; pers.nume = "Ion Ionescu" ; Console .WriteLine(pers.ToString()); } }
  • 30.
    Metode (2) Execuţia unui program începe în metoda main
  • 31.
    S-a folosit un constructor no-arg , Persoana()