This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
laboratoare:visitor [2019/11/10 12:51] Adriana Draghici [Exerciţii] |
laboratoare:visitor [2019/11/30 12:17] (current) Adriana Draghici [Resurse] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | = More OOP & Visitor pattern = | + | = Overriding, Overloading & Visitor pattern = |
== Obiective == | == Obiective == | ||
Line 401: | Line 401: | ||
* [[http://docs.oracle.com/javase/tutorial/essential/io/walk.html | un tutorial]] | * [[http://docs.oracle.com/javase/tutorial/essential/io/walk.html | un tutorial]] | ||
- | == TL;DR == | + | == Summary == |
**Supraîncărcarea (overloading) ** - mai multe metode cu același nume dar cu listă diferită de argumente | **Supraîncărcarea (overloading) ** - mai multe metode cu același nume dar cu listă diferită de argumente | ||
Line 436: | Line 436: | ||
* Fișierul **[[https://github.com/oop-pub/laboratoare/tree/master/visitor/skel|README]]** din scheletul de cod cuprinde informațiile necesare designului dorit. | * Fișierul **[[https://github.com/oop-pub/laboratoare/tree/master/visitor/skel|README]]** din scheletul de cod cuprinde informațiile necesare designului dorit. | ||
+ | * implementați structura de clase din diagrama din README | ||
+ | * implementați TODO-urile din scheletul de cod | ||
* Pentru simplitatea testării scheletul oferă clasa ''Test'' care oferă bucățile de text pe care să le prelucrați. | * Pentru simplitatea testării scheletul oferă clasa ''Test'' care oferă bucățile de text pe care să le prelucrați. | ||
* dacă folosiți IntelliJ creați proiect din scheletul de laborator: File -> New Project -> select Java -> select the skel folder | * dacă folosiți IntelliJ creați proiect din scheletul de laborator: File -> New Project -> select Java -> select the skel folder | ||
+ | * În implementare va trebui sa folositi clasa [[https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/lang/StringBuilder.html|StringBuilder]]. Aceasta este o clasă mutabilă (//mutable//), spre deosebire de String, care e imutabilă (//immutable//). Vă recomandăm [[https://www.geeksforgeeks.org/string-vs-stringbuilder-vs-stringbuffer-in-java/|acest link]] pentru un exemplu si explicații despre diferențele dintre ele. | ||
+ | * //Tips for faster coding//: | ||
+ | * atunci cand creati o clasa care implementeaza o interfata sau o clasa cu metode abstracte, nu scrieti de mana antetul fiecarei metode, ci folositi-va de IDE. | ||
+ | * In Intellij va aparea cu rosu imediat dupa ce scrieti extends.../implements... Dati alt-enter sau option-enter (pe mac), si vi se vor genera metodele pe care trebuie sa le implementati, voi completand apoi continutul lor. | ||
+ | * generati constructorii folosind IDE-ul | ||
** Task 2 ** - Utilizare API implementat folosind Visitor [2p] | ** Task 2 ** - Utilizare API implementat folosind Visitor [2p] | ||
- | - Găsiți folosind java.nio toate fișierele cu extensia ".class" dintr-un director. | + | |
- | * implementați un [[http://docs.oracle.com/javase/8/docs/api/index.html?java/nio/file/FileVisitor.html | FileVisitor]], extinzând [[http://docs.oracle.com/javase/8/docs/api/java/nio/file/SimpleFileVisitor.html | SimpleFileVisitor]] în care suprascrieți metoda de vizitare a fișierelor | + | Afișați folosind ''java.nio'' informații despre fișierele cu extensia ".class" sau ".java" dintr-un director. |
- | * un exemplu similar găsiți în [[http://docs.oracle.com/javase/tutorial/essential/io/walk.html | acest tutorial]] | + | * Implementați un [[https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/nio/file/FileVisitor.html | FileVisitor]], extinzând [[https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/nio/file/SimpleFileVisitor.html | SimpleFileVisitor]] în care suprascrieți metoda de vizitare a fișierelor |
+ | * Un exemplu similar găsiți în [[http://docs.oracle.com/javase/tutorial/essential/io/walk.html | acest tutorial]] | ||
== Resurse == | == Resurse == | ||
- | * {{.| Schelet cod}} | + | * {{ :laboratoare:visitor:lab-visitor-skel.zip |Schelet de cod}} |
+ | * {{ :laboratoare:visitor:lab-visitor-sol.zip |Soluție}} | ||
+ | * [[laboratoare:old-exercises|Exerciții din alți ani]] | ||
+ | * [[https://github.com/oop-pub/laboratoare/tree/master/visitor|Github repository]] | ||