diff --git a/_1_basics/src/main/java/code/_3_in_class/Salut.java b/_1_basics/src/main/java/code/_3_in_class/Salut.java new file mode 100644 index 000000000..f2e92b7ae --- /dev/null +++ b/_1_basics/src/main/java/code/_3_in_class/Salut.java @@ -0,0 +1,8 @@ +package code._3_in_class; + +public class Salut { + + public static void main(String[] args) { + System.out.println("Salut!"); + } +} diff --git a/_3_design_patterns/src/main/java/code/_3_in_class/Boomer.java b/_3_design_patterns/src/main/java/code/_3_in_class/Boomer.java new file mode 100644 index 000000000..4e35915dd --- /dev/null +++ b/_3_design_patterns/src/main/java/code/_3_in_class/Boomer.java @@ -0,0 +1,20 @@ +package code._3_in_class; + +public class Boomer implements IStudent{ + int varsta; + String scoala; + + public Boomer(String name, int age) { + this.scoala = name; + this.varsta = age; + } + @Override + public void getScoala() { + System.out.println(scoala); + } + + @Override + public void afisareGeneratie() { + System.out.println("Am varsta de " + varsta + " ani, sunt din generati Boomer si sunt la scoala " + scoala); + } +} diff --git a/_3_design_patterns/src/main/java/code/_3_in_class/GenZ.java b/_3_design_patterns/src/main/java/code/_3_in_class/GenZ.java new file mode 100644 index 000000000..be78ce9ab --- /dev/null +++ b/_3_design_patterns/src/main/java/code/_3_in_class/GenZ.java @@ -0,0 +1,21 @@ +package code._3_in_class; + +public class GenZ implements IStudent{ + + int varsta; + String scoala; + + public GenZ(String name, int age) { + this.scoala = name; + this.varsta = age; + } + @Override + public void getScoala() { + System.out.println(scoala); + } + + @Override + public void afisareGeneratie() { + System.out.println("Am varsta de " + varsta + " ani si sunt din generati GenZ!"); + } +} diff --git a/_3_design_patterns/src/main/java/code/_3_in_class/IStudent.java b/_3_design_patterns/src/main/java/code/_3_in_class/IStudent.java new file mode 100644 index 000000000..ed7cba38b --- /dev/null +++ b/_3_design_patterns/src/main/java/code/_3_in_class/IStudent.java @@ -0,0 +1,6 @@ +package code._3_in_class; + +public interface IStudent { + void getScoala(); + void afisareGeneratie(); +} diff --git a/_3_design_patterns/src/main/java/code/_3_in_class/Main.java b/_3_design_patterns/src/main/java/code/_3_in_class/Main.java index 3b87b4563..51cc90f07 100644 --- a/_3_design_patterns/src/main/java/code/_3_in_class/Main.java +++ b/_3_design_patterns/src/main/java/code/_3_in_class/Main.java @@ -1,8 +1,34 @@ package code._3_in_class; +import java.util.Scanner; + +//Trebuia in student effort public class Main { public static void main(String[] args) { - //TODO put your code changes in here + //user input + Scanner scanner = new Scanner(System.in); + + System.out.println("Pentru iesirea din program tastati x."); + while(true){ + System.out.print("Introduceți o varsta: "); + int userInput = scanner.nextInt(); + + scanner.nextLine(); + + System.out.print("Introduceți scoala: "); + String userString = scanner.nextLine(); + if(userString.equals("x")) break; + + //System.out.println("Input-ul utilizatorului este: " + userInput); + if (userInput < 30 && userInput > 0){ + GenZ genz = new GenZ(userString, userInput); + genz.afisareGeneratie(); + } + else if (userInput >= 30 && userInput <=60){ + Boomer boomer = new Boomer(userString, userInput); + boomer.afisareGeneratie(); + } + } } } \ No newline at end of file diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Iterator.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Iterator.java new file mode 100644 index 000000000..9a53cc9be --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Iterator.java @@ -0,0 +1,9 @@ +package clean.code.design_patterns.requirements; + +//Interfața Iterator definește metodele hasNext() și next() +// pentru verificarea existenței unui obiect urmator(de tipul jucatorFotbal) +// și pentru a obține elementul următor din iterație. +public interface Iterator{ + boolean hasNext(); + jucatorFotbal next(); +} diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Main.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Main.java index 8a9fccb7b..3c8f79fc2 100644 --- a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Main.java +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Main.java @@ -4,5 +4,37 @@ public class Main { public static void main(String[] args) { //TODO implement your design patterns in this package + jucatorFotbal j1 = new jucatorFotbal("Marginean Razvan", "Machester City", 20, 20, 7, 31, 2, 1); + jucatorFotbal j2 = new jucatorFotbal("Erling Halland", "Machester City", 22, 35, 7, 38, 2, 0); + jucatorFotbal j3 = new jucatorFotbal("Cristiano Ronaldo", "Real Madrid", 30, 24, 2, 30, 1, 1); + jucatorFotbal j4 = new jucatorFotbal("Banel Nicolita", "Steaua Bucuresti", 28, 12, 20, 40, 2, 3); + jucatorFotbal j5 = new jucatorFotbal("Adrian Mutu", "Fiorentina", 25, 28, 5, 23, 2, 2); + databaseJucatori db = databaseJucatori.getInstance(); + //System.out.println(j1.toString()); + //j1.toString(); + db.adaugaJucator(j1); + db.adaugaJucator(j2); + db.adaugaJucator(j3); + db.adaugaJucator(j4); + db.adaugaJucator(j5); + System.out.println("Numarul de jucatori din database este " + db.getSize() + "."); + //db.toString(); + + + //Iterator iterator = (Iterator) db.iterator(); + + //while (db.iterator().hasNext()) { + //String item = iterator.next(); + // jucatorFotbal item = db.iterator().next();; + // System.out.println(item); + // } + //databaseJucatori.databaseIterator iterator = db.Createiterator(); + //dbIterator iterator = new dbIterator(db.getAllObjects()); + //while (iterator.hasNext()) { + // jucatorFotbal item = iterator.next(); + // System.out.println(item.ratingJucator()); + //} + UI console = new UI(); + console.runMenu(); } } diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/UI.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/UI.java new file mode 100644 index 000000000..4ba8ff40e --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/UI.java @@ -0,0 +1,63 @@ +package clean.code.design_patterns.requirements; + +import java.util.Collections; +import java.util.Scanner; + +public class UI { + //private static UI instance = new UI(); + private databaseJucatori db = databaseJucatori.getInstance(); + private dbIterator iterator; + + //make the constructor private so that this class cannot be + //instantiated + public UI(){} + + public void menu(){ + System.out.println("1.Afisare jucatori"); + System.out.println("2.Afisare castigator balon de aur sezon 2022-2023"); + System.out.println("3.Exit"); + } + public void runMenu(){ + Scanner scanner = new Scanner(System.in); + while(true){ + menu(); + System.out.print("Alegeti optiune: "); + int userInput = scanner.nextInt(); + scanner.nextLine(); + if (userInput == 3) + { + break; + } + + else if (userInput == 1) + { iterator = new dbIterator(db.getAllObjects()); + while (iterator.hasNext()) + { + jucatorFotbal item = iterator.next(); + System.out.println(item); + } + } else if (userInput == 2) { + iterator = new dbIterator(db.getAllObjects()); + float rating = 0f; + boolean findCastigarot = false; + while (iterator.hasNext()) + { + jucatorFotbal item = iterator.next(); + if(item.ratingJucator() >= rating) rating = item.ratingJucator(); + //System.out.println(rating); + } + //System.out.println(rating); + iterator = new dbIterator(db.getAllObjects()); + while (!findCastigarot && iterator.hasNext()){ + jucatorFotbal item = iterator.next(); + if(rating == item.ratingJucator()) { + System.out.println(item.getNume() + "este castigatorul balonului de aur cu un rating de:" +item.ratingJucator()); + findCastigarot = true; + } + } + } + + } + } + +} diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/databaseJucatori.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/databaseJucatori.java new file mode 100644 index 000000000..53190488d --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/databaseJucatori.java @@ -0,0 +1,59 @@ +package clean.code.design_patterns.requirements; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +//Folosim Singleton Pattern pentru a avea o singura baza de date care sa stocheze datele jucatorilor +public class databaseJucatori { + + private static databaseJucatori instance = new databaseJucatori();//cream un obiect de tipul databaseJucator + private List listJucatori; + + //facem constructorul privat pentru ca aceasta clasa sa nu mai poata fi initializata + //astfel vom avea doar o instanta a clasei databaseJucatori + private databaseJucatori() { + listJucatori = new ArrayList(); + } + //Get the only object available + public static databaseJucatori getInstance(){ + System.out.println("Database-ul a fost creat!"); + return instance; + } + + public void adaugaJucator(jucatorFotbal j) { + listJucatori.add(j); + } + + public void removeObject(jucatorFotbal j) { + listJucatori.remove(j); + } + + public List getAllObjects() { + return listJucatori; + } + + public int getSize() { + return listJucatori.size(); + } + + //Iterator design pattern + + // private class databaseIterator implements Iterator { +// private int currentIndex = 0; +// +// public boolean hasNext() { +// return currentIndex < getSize(); +// } +// +// public jucatorFotbal next() { +// if (hasNext()) { +// jucatorFotbal item = listJucatori.get(currentIndex); +// currentIndex++; +// return item; +// } +// throw new NoSuchElementException(); +// } +// } + +} diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/dbIterator.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/dbIterator.java new file mode 100644 index 000000000..9c6319061 --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/dbIterator.java @@ -0,0 +1,21 @@ +package clean.code.design_patterns.requirements; + +import java.util.Iterator; +import java.util.List; + +public class dbIterator implements Iterator { + private List list; + private int currentIndex; + + public dbIterator(List listJucatori) { + this.list = listJucatori; + this.currentIndex = 0; + } + public boolean hasNext() { return this.currentIndex < list.size(); } + + public jucatorFotbal next() { + jucatorFotbal jucator = this.list.get(currentIndex); + this.currentIndex += 1; + return jucator; + } +} diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/jucatorFotbal.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/jucatorFotbal.java new file mode 100644 index 000000000..8c01521cb --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/jucatorFotbal.java @@ -0,0 +1,125 @@ +package clean.code.design_patterns.requirements; + +import java.util.Objects; + +public class jucatorFotbal { + private String nume; + private String echipa; + private int varsta; + private int goluriMarcate; + + private int assisturi; + + private int meciuriJucate; + + private int numarTrofee; + private int cartonaseRosii; + + public jucatorFotbal(String nume, String echipa, int varsta, int goluriMarcate, int assisturi, int meciuriJucate, int numarTrofee, int cartonaseRosii) { + this.nume = nume; + this.echipa = echipa; + this.varsta = varsta; + this.goluriMarcate = goluriMarcate; + this.assisturi = assisturi; + this.meciuriJucate = meciuriJucate; + this.numarTrofee = numarTrofee; + this.cartonaseRosii = cartonaseRosii; + } + + public String getNume() { + return nume; + } + + public void setNume(String nume) { + this.nume = nume; + } + + public String getEchipa() { + return echipa; + } + + public void setEchipa(String echipa) { + this.echipa = echipa; + } + + public int getVarsta() { + return varsta; + } + + public void setVarsta(int varsta) { + this.varsta = varsta; + } + + public int getGoluriMarcate() { + return goluriMarcate; + } + + public void setGoluriMarcate(int goluriMarcate) { + this.goluriMarcate = goluriMarcate; + } + + public int getAssisturi() { + return assisturi; + } + + public void setAssisturi(int assisturi) { + this.assisturi = assisturi; + } + + public int getMeciuriJucate() { + return meciuriJucate; + } + + public void setMeciuriJucate(int meciuriJucate) { + this.meciuriJucate = meciuriJucate; + } + + public int getNumarTrofee() { + return numarTrofee; + } + + public void setNumarTrofee(int numarTrofee) { + this.numarTrofee = numarTrofee; + } + + public int getCartonaseRosii() { + return cartonaseRosii; + } + + public void setCartonaseRosii(int cartonaseRosii) { + this.cartonaseRosii = cartonaseRosii; + } + + @Override + public String toString() { + return "Jucator: " + + "nume='" + nume + '\'' + + ", echipa='" + echipa + '\'' + + ", varsta=" + varsta + + ", goluriMarcate=" + goluriMarcate + + ", assisturi=" + assisturi + + ", meciuriJucate=" + meciuriJucate + + ", numarTrofee=" + numarTrofee + + ", cartonaseRosii=" + cartonaseRosii+ + ", Rating=" + ratingJucator(); + + } + public float ratingJucator(){ + float r; + r = (getGoluriMarcate() * 0.7f) + (getAssisturi() * 0.5f) + (getMeciuriJucate() * 0.2f) + (getNumarTrofee() * 5.f) - (getCartonaseRosii() * 2.f); + return r; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + jucatorFotbal that = (jucatorFotbal) o; + return varsta == that.varsta && goluriMarcate == that.goluriMarcate && assisturi == that.assisturi && meciuriJucate == that.meciuriJucate && numarTrofee == that.numarTrofee && cartonaseRosii == that.cartonaseRosii && Objects.equals(nume, that.nume) && Objects.equals(echipa, that.echipa); + } + + @Override + public int hashCode() { + return Objects.hash(nume, echipa, varsta, goluriMarcate, assisturi, meciuriJucate, numarTrofee, cartonaseRosii); + } +}