Differences

This shows you the differences between two versions of the page.

Link to this comparison view

poo-ca-cd:laboratoare:abstractizare-clase-speciale-si-restrictii [2025/10/27 01:10]
florian_luis.micu [Interfețe]
poo-ca-cd:laboratoare:abstractizare-clase-speciale-si-restrictii [2025/10/27 01:22] (current)
florian_luis.micu [Exerciții]
Line 479: Line 479:
 ====Clase abstracte vs. Interfețe==== ====Clase abstracte vs. Interfețe====
  
-După cum se poate observa, atât clasele abstracte cât și interfețele oferă avantaje similare. ​Pentru a observa asemănările și diferențele dintre acestea am creat următorul tabel:+După cum se poate observa, atât clasele abstracte cât și interfețele oferă avantaje similare. ​Să observăurmătorul tabel pentru o comparație directă:
  
 ^ Caracteristică ​              ^ Clasă abstractă ​                                                         ^ Interfață ​                                                                                               ^ ^ Caracteristică ​              ^ Clasă abstractă ​                                                         ^ Interfață ​                                                                                               ^
Line 494: Line 494:
 ====Exemplu ierarhie de clase==== ====Exemplu ierarhie de clase====
  
-Proiectele voastre ​ar trebui să conțină o combinație între clase abstracte și interfețe.+Un proiect complex ​ar trebui să conțină o **combinație** între clase abstracte și interfețe.
  
-Să presupunem următoarea ierarhie de clase.+Să presupunem următoarea ierarhie de clase:
  
 {{:​poo-ca-cd:​laboratoare:​abstractizare-clase-speciale-si-restrictii:​inheritance_example.png?​nolink&​600|}} {{:​poo-ca-cd:​laboratoare:​abstractizare-clase-speciale-si-restrictii:​inheritance_example.png?​nolink&​600|}}
Line 654: Line 654:
 ====Enums==== ====Enums====
  
-Enums sunt tipuri speciale de clasă care definesc un set fix de constante. Ele oferă o modalitate sigură și lizibilă de a reprezenta valori finite și constante într-un program.+Enums sunt tipuri speciale de clasă care definesc un **set fix de constante**. Ele oferă o modalitate ​**sigură** și **lizibilă** de a reprezenta ​**valori finite** și **constante** într-un program.
  
 Exemplu simplu: Exemplu simplu:
Line 762: Line 762:
 ===Avantaje ale folosirii Enum=== ===Avantaje ale folosirii Enum===
  
-  * Cod mai clar și mai lizibil comparativ cu constantele int sau String. +  * Cod mai clar și mai lizibil comparativ cu constantele ​de tip ''​int'' ​sau ''​String''​
-  * Siguranță la compilarenu poți atribui valori invalide. +  * Siguranță la compilare, deoarece ​nu putem atribui valori invalide. 
-  * Poți adăuga metode și comportamente specifice fiecărei constante.+  * Putem adăuga metode și comportamente specifice fiecărei constante.
   * Se integrează bine cu switch/case pentru decizii pe valori finite.   * Se integrează bine cu switch/case pentru decizii pe valori finite.
  
 <note tip> <note tip>
-Puteți folosi în continuare câmpuri de tipul ''​static final''​ într-o clasă normală care are rol de a ține constante, însă este de preferat să folosiți Enum-uri fiind o alternativă mai modernă.+Puteți folosi în continuare câmpuri de tipul ''​static final''​ într-o clasă normală care are rol de a ține constante, însă este de **preferat** să folosiți Enum-uri fiind o alternativă mai modernă ​cu toate avantajele de mai sus.
 </​note>​ </​note>​
  
Line 946: Line 946:
   * Exercițiile vor fi făcute pe platforma [[https://​code.devmind.ro/​|Devmind Code]]. Găsiți exercițiile din acest laborator în **contestul aferent**.   * Exercițiile vor fi făcute pe platforma [[https://​code.devmind.ro/​|Devmind Code]]. Găsiți exercițiile din acest laborator în **contestul aferent**.
   * Vă recomandăm să copiați scheletul și să faceți exercițiile **mai întâi** în IntelliJ, deoarece acolo aveți acces la o serie de **instrumente** specifice unui IDE. După ce ați terminat exercițiile puteți să le **copiați** pe Devmind Code.   * Vă recomandăm să copiați scheletul și să faceți exercițiile **mai întâi** în IntelliJ, deoarece acolo aveți acces la o serie de **instrumente** specifice unui IDE. După ce ați terminat exercițiile puteți să le **copiați** pe Devmind Code.
 +</​note>​
 +
 +<note note>
 +În contest veți observa că problema se cheamă //​Problem-LAB05-POO//,​ însă nu este o problemă. Vom redenumi numele problemei cât de curând.
 </​note>​ </​note>​
  
Line 955: Line 959:
   * Un task (''​CounterOutTask.java''​) care incrementeaza un contor global și afișează valoarea contorului după fiecare incrementare. ​   * Un task (''​CounterOutTask.java''​) care incrementeaza un contor global și afișează valoarea contorului după fiecare incrementare. ​
  
-<​note>​**Notă**:​ Acesta este un exemplu simplu pentru [[http://​en.wikipedia.org/​wiki/​Command_pattern|Command Pattern]]</​note>​+<​note>​**Notă**:​ Acesta este un exemplu simplu pentru ​Design Pattern-ul ​[[http://​en.wikipedia.org/​wiki/​Command_pattern|Command Pattern]], despre care vom învăța în următoarele laboratoare.</​note>​
  
 {{:​poo-ca-cd:​laboratoare:​clase-abstracte-interfete:​ex1.png?​600|}} {{:​poo-ca-cd:​laboratoare:​clase-abstracte-interfete:​ex1.png?​600|}}
poo-ca-cd/laboratoare/abstractizare-clase-speciale-si-restrictii.1761520218.txt.gz · Last modified: 2025/10/27 01:10 by florian_luis.micu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0