generated from mcmarius/oop-template
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
204c6c1
commit 27bf64a
Showing
1 changed file
with
41 additions
and
34 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,58 +1,65 @@ | ||
# OOP Template | ||
# Travel Planner | ||
|
||
### Mod de Functionare | ||
|
||
- Se vor introduce coordonatele punctului de plecare. | ||
- Se va raspunde la un set de intrebari (Intrebari cu DA/NU, intrebari cu scara) | ||
- Pe baza intrebarilor aplicatia va stabili un profil al utilizatorului | ||
- Se va introduce distanta maxima in km pe care utilizatorul este dispus sa o parcurga | ||
- La final aplicatia va oferi destinatia cu cel mai bun match cu profilul creat si care se afla in limitele de distanta | ||
|
||
### Tema 0 | ||
|
||
- [ ] Nume proiect (poate fi schimbat ulterior) | ||
- [ ] Scurtă descriere a temei alese, ce v-ați propus să implementați | ||
- [X] Nume proiect (poate fi schimbat ulterior) | ||
- [X] Scurtă descriere a temei alese, ce v-ați propus să implementați | ||
|
||
## Tema 1 | ||
|
||
#### Cerințe | ||
- [ ] definirea a minim 3-4 clase folosind compunere | ||
- [ ] constructori de inițializare | ||
- [ ] pentru o clasă: constructor de copiere, `operator=` de copiere, destructor | ||
- [X] definirea a minim 3-4 clase folosind compunere | ||
- [X] constructori de inițializare | ||
- [X] pentru o clasă: constructor de copiere, `operator=` de copiere, destructor | ||
<!-- - [ ] pentru o altă clasă: constructor de mutare, `operator=` de mutare, destructor --> | ||
<!-- - [ ] pentru o altă clasă: toate cele 5 funcții membru speciale --> | ||
- [ ] `operator<<` pentru toate clasele pentru afișare (std::ostream) | ||
- [ ] cât mai multe `const` (unde este cazul) | ||
- [ ] implementarea a minim 3 funcții membru publice pentru funcționalități specifice temei alese | ||
- [ ] scenariu de utilizare a claselor definite: | ||
- [X] `operator<<` pentru toate clasele pentru afișare (std::ostream) | ||
- [X] cât mai multe `const` (unde este cazul) | ||
- [X] implementarea a minim 3 funcții membru publice pentru funcționalități specifice temei alese | ||
- [X] scenariu de utilizare a claselor definite: | ||
- crearea de obiecte și apelarea funcțiilor membru publice în main | ||
- vor fi adăugate în fișierul `tastatura.txt` exemple de date de intrare de la tastatură (dacă există) | ||
- [ ] tag de `git`: de exemplu `v0.1` | ||
- [ ] serviciu de integrare continuă (CI); exemplu: GitHub Actions | ||
- [X] tag de `git`: de exemplu `v0.1` | ||
- [X] serviciu de integrare continuă (CI); exemplu: GitHub Actions | ||
|
||
## Tema 2 | ||
|
||
#### Cerințe | ||
- [ ] separarea codului din clase în `.h` (sau `.hpp`) și `.cpp` | ||
- [ ] moșteniri | ||
- [ ] clasă cu atribut de tip pointer la o clasă de bază cu derivate | ||
- [ ] funcții virtuale (pure) apelate prin pointeri de bază din clasa de mai sus, constructori virtuali (clone) | ||
- [X] separarea codului din clase în `.h` (sau `.hpp`) și `.cpp` | ||
- [x] moșteniri | ||
- [X] clasă cu atribut de tip pointer la o clasă de bază cu derivate | ||
- [X] funcții virtuale (pure) apelate prin pointeri de bază din clasa de mai sus, constructori virtuali (clone) | ||
- minim o funcție virtuală va fi **specifică temei** (e.g. nu simple citiri/afișări) | ||
- [ ] apelarea constructorului din clasa de bază din constructori din derivate | ||
- [ ] smart pointers | ||
- [ ] `dynamic_cast` | ||
- [ ] suprascris cc/op= pentru copieri/atribuiri corecte, copy and swap | ||
- [ ] excepții | ||
- [ ] ierarhie proprie cu baza `std::exception` sau derivată din `std::exception`; minim 2 clase pentru erori specifice | ||
- [ ] utilizare cu sens: de exemplu, `throw` în constructor, `try`/`catch` în `main` | ||
- [ ] funcții și atribute `static` | ||
- [ ] STL | ||
- [ ] cât mai multe `const` | ||
- [ ] la sfârșit: commit separat cu adăugarea unei noi derivate fără a modifica restul codului | ||
- [ ] tag de `git`: de exemplu `v0.2` | ||
- [X] apelarea constructorului din clasa de bază din constructori din derivate | ||
- [X] smart pointers | ||
- [X] `dynamic_cast` | ||
- [X] suprascris cc/op= pentru copieri/atribuiri corecte, copy and swap | ||
- [X] excepții | ||
- [X] ierarhie proprie cu baza `std::exception` sau derivată din `std::exception`; minim 2 clase pentru erori specifice | ||
- [X] utilizare cu sens: de exemplu, `throw` în constructor, `try`/`catch` în `main` | ||
- [X] funcții și atribute `static` | ||
- [X] STL | ||
- [X] cât mai multe `const` | ||
- [X] la sfârșit: commit separat cu adăugarea unei noi derivate fără a modifica restul codului | ||
- [X] tag de `git`: de exemplu `v0.2` | ||
|
||
## Tema 3 | ||
|
||
#### Cerințe | ||
- [ ] 2 șabloane de proiectare (design patterns) | ||
- [ ] o funcție șablon (template) cu sens; minim 2 instanțieri | ||
- [ ] o clasă șablon cu sens; minim 2 instanțieri | ||
<!-- - [ ] o specializare pe funcție/clasă șablon --> | ||
- [ ] tag de `git`: de exemplu `v0.3` sau `v1.0` | ||
- [X] 2 șabloane de proiectare (design patterns) | ||
- [X] o funcție șablon (template) cu sens; minim 2 instanțieri | ||
- [X] o clasă șablon cu sens; minim 2 instanțieri | ||
- [X] o specializare pe funcție/clasă șablon | ||
- [X] tag de `git`: de exemplu `v0.3` sau `v1.0` | ||
|
||
## Resurse | ||
|
||
- [SFML](https://github.com/SFML/SFML/tree/aa82ea132b9296a31922772027ad5d14c1fa381b) (Zlib) | ||
- adăugați trimiteri către resursele externe care v-au ajutat sau pe care le-ați folosit |