diff --git a/_1_basics/src/main/java/code/_2_challenge/_1_fizzbuzz/FizzBuzz.java b/_1_basics/src/main/java/code/_2_challenge/_1_fizzbuzz/FizzBuzz.java index 47838aba3..16fe314d4 100644 --- a/_1_basics/src/main/java/code/_2_challenge/_1_fizzbuzz/FizzBuzz.java +++ b/_1_basics/src/main/java/code/_2_challenge/_1_fizzbuzz/FizzBuzz.java @@ -20,7 +20,6 @@ public String fizzBuzz(int i) { s = String.valueOf(i); } - return s; } @@ -44,7 +43,6 @@ public String fizzBuzz2(int i) { s = String.valueOf(i); } - return s; } } \ No newline at end of file diff --git a/_1_basics/src/main/java/code/_3_in_class/ClasaBunaZiua.java b/_1_basics/src/main/java/code/_3_in_class/ClasaBunaZiua.java new file mode 100644 index 000000000..36eb5b39a --- /dev/null +++ b/_1_basics/src/main/java/code/_3_in_class/ClasaBunaZiua.java @@ -0,0 +1,8 @@ +package code._3_in_class; + +public class ClasaBunaZiua { + + public static void main(String[] args) { + System.out.println("Buna ziua!"); + } +} diff --git a/_1_basics/src/main/java/code/_4_student_effort/Main.java b/_1_basics/src/main/java/code/_4_student_effort/Main.java deleted file mode 100644 index 95bb1182c..000000000 --- a/_1_basics/src/main/java/code/_4_student_effort/Main.java +++ /dev/null @@ -1,8 +0,0 @@ -package code._4_student_effort; - -public class Main { - - public static void main(String[] args) { - //TODO put your code changes in here - } -} diff --git a/_1_basics/src/main/java/code/_4_student_effort/fizz_buzz/Correlation.java b/_1_basics/src/main/java/code/_4_student_effort/fizz_buzz/Correlation.java new file mode 100644 index 000000000..afd84efb5 --- /dev/null +++ b/_1_basics/src/main/java/code/_4_student_effort/fizz_buzz/Correlation.java @@ -0,0 +1,17 @@ +package code._4_student_effort.fizz_buzz; + +public class Correlation { + private Integer number; + private String word; + + public Correlation (Integer number, String word) { + this.number = number; + this.word = word; + } + public Integer getNumber() { + return this.number; + } + public String getWord() { + return this.word; + } +} diff --git a/_1_basics/src/main/java/code/_4_student_effort/fizz_buzz/Fizz2.java b/_1_basics/src/main/java/code/_4_student_effort/fizz_buzz/Fizz2.java new file mode 100644 index 000000000..593010d5e --- /dev/null +++ b/_1_basics/src/main/java/code/_4_student_effort/fizz_buzz/Fizz2.java @@ -0,0 +1,50 @@ +package code._4_student_effort.fizz_buzz; + +public class Fizz2 { + + public String fizz (int i) { + String s = ""; + + Correlation[] correlations = { + new Correlation(3, "Fizz"), + new Correlation(5, "Buzz"), + }; + + boolean isDivisible = false; + for(Correlation correlation : correlations) { + if(i % correlation.getNumber() == 0) { + isDivisible = true; + s += correlation.getWord(); + } + } + + if(!isDivisible) { + s = String.valueOf(i); + } + + return s; + } + public String fizz2(int i) { + String s = ""; + Correlation[] correlations = { + new Correlation(3, "Fizz"), + new Correlation(5, "Buzz"), + new Correlation(7, "Rizz"), + new Correlation(11, "Jazz"), + }; + + boolean isDivisible = false; + for(Correlation correlation : correlations) { + if(i % correlation.getNumber() == 0) { + isDivisible = true; + s+= correlation.getWord(); + } + } + + if(!isDivisible) { + s = String.valueOf(i); + } + + return s; + } +} diff --git a/_1_basics/src/main/java/code/_4_student_effort/fizz_buzz/Fizz_Buzz.java b/_1_basics/src/main/java/code/_4_student_effort/fizz_buzz/Fizz_Buzz.java new file mode 100644 index 000000000..3b844f5db --- /dev/null +++ b/_1_basics/src/main/java/code/_4_student_effort/fizz_buzz/Fizz_Buzz.java @@ -0,0 +1,24 @@ +package code._4_student_effort.fizz_buzz; +// basic implementation +// +public class Fizz_Buzz { + public static void main(String[] args) { + for(int i = 1; i < 101; i++) { + if (i % 3 == 0 && i % 5 == 0) { + System.out.println("FizzBuzz"); + } else if (i % 5 == 0) { + System.out.println("Buzz"); + } else if (i % 3 == 0) { + System.out.println("Fizz"); + } else if(i % 7 == 0) { + System.out.println("Rizz"); + } else if(i % 11 == 0) { + System.out.println("Jazz"); + } + else { + System.out.println(i); + } + + } + } +} diff --git a/_1_basics/src/main/java/code/_4_student_effort/fizz_buzz/Main.java b/_1_basics/src/main/java/code/_4_student_effort/fizz_buzz/Main.java new file mode 100644 index 000000000..f3eb96c3a --- /dev/null +++ b/_1_basics/src/main/java/code/_4_student_effort/fizz_buzz/Main.java @@ -0,0 +1,18 @@ +package code._4_student_effort.fizz_buzz; + +public class Main { + + public static void main(String[] args) { + Fizz2 test_obj = new Fizz2(); + String s; + for(int i = 1; i < 101; i++) { + s = test_obj.fizz(i); + System.out.print(s + " "); + } + System.out.println(); + for(int i = 1; i < 101; i++) { + s = test_obj.fizz2(i); + System.out.print(s + " "); + } + } +} diff --git a/_1_basics/src/main/java/code/_4_student_effort/foo_bar_qix/Correlation.java b/_1_basics/src/main/java/code/_4_student_effort/foo_bar_qix/Correlation.java new file mode 100644 index 000000000..508320def --- /dev/null +++ b/_1_basics/src/main/java/code/_4_student_effort/foo_bar_qix/Correlation.java @@ -0,0 +1,19 @@ +package code._4_student_effort.foo_bar_qix; + +public class Correlation { + private Integer number; + private String word; + + public Correlation(Integer number, String word) { + this.number = number; + this.word = word; + } + + public Integer getNumber() { + return this.number; + } + + public String getWord() { + return this.word; + } +} diff --git a/_1_basics/src/main/java/code/_4_student_effort/foo_bar_qix/Foo_Bar_Qix.java b/_1_basics/src/main/java/code/_4_student_effort/foo_bar_qix/Foo_Bar_Qix.java new file mode 100644 index 000000000..e752e2a2d --- /dev/null +++ b/_1_basics/src/main/java/code/_4_student_effort/foo_bar_qix/Foo_Bar_Qix.java @@ -0,0 +1,63 @@ +package code._4_student_effort.foo_bar_qix; + +public class Foo_Bar_Qix { + public String compute(int i) { + String s = ""; + + Correlation[] correlations = { + new Correlation(3, "Foo"), + new Correlation(5, "Bar"), + new Correlation(7, "Qix"), + }; + boolean isDivisible = false; + boolean contains = false; + for(Correlation correlation : correlations) { + if(i % correlation.getNumber() == 0) { + isDivisible = true; + s+=correlation.getWord(); + } + int temp = i; + while(temp > 0) { + if(temp % 10 == correlation.getNumber()) { + contains = true; + s+=correlation.getWord(); + } + temp /= 10; + } + } + if(!isDivisible && !contains) { + s = String.valueOf(i); + } + return s; + } + + public String compute2(int i) { + String s = ""; + + Correlation[] correlations = { + new Correlation(3, "Foo"), + new Correlation(5, "Bar"), + new Correlation(7, "Qix"), + }; + + boolean isDivisible = false; + for(Correlation correlation : correlations) { + if(i % correlation.getNumber() == 0) { + isDivisible = true; + s+=correlation.getWord(); + } + + } + + char[] digits = String.valueOf(i).toCharArray(); + for(char digit : digits) { + if(digit == '3') {s+= "Foo";} + else if(digit == '5') {s+="Bar";} + else if(digit == '7') {s+= "Qix";} + else if(digit == '0') {s+="*"; } + else if(!isDivisible) {s+=digit;} + } + + return s; + } +} diff --git a/_1_basics/src/main/java/code/_4_student_effort/foo_bar_qix/Main.java b/_1_basics/src/main/java/code/_4_student_effort/foo_bar_qix/Main.java new file mode 100644 index 000000000..21a4db271 --- /dev/null +++ b/_1_basics/src/main/java/code/_4_student_effort/foo_bar_qix/Main.java @@ -0,0 +1,20 @@ +package code._4_student_effort.foo_bar_qix; + +public class Main { + public static void main(String[] args) { + Foo_Bar_Qix test_obj = new Foo_Bar_Qix(); + String s; +// for(int i = 1; i < 61; i++) { +// s = test_obj.compute(i); +// System.out.print(s + " "); +// } +// System.out.println(); + System.out.println(test_obj.compute2(101)); + s = test_obj.compute2(303); + System.out.println(s); + s = test_obj.compute2(105); + System.out.println(s); + s = test_obj.compute2(10101); + System.out.println(s); + } +} diff --git a/_1_basics/src/main/java/code/_4_student_effort/package-info.java b/_1_basics/src/main/java/code/_4_student_effort/package-info.java new file mode 100644 index 000000000..9bb3cd8c3 --- /dev/null +++ b/_1_basics/src/main/java/code/_4_student_effort/package-info.java @@ -0,0 +1 @@ +package code._4_student_effort; \ No newline at end of file diff --git a/_1_basics/src/main/java/code/_4_student_effort/pair_of_2/Main.java b/_1_basics/src/main/java/code/_4_student_effort/pair_of_2/Main.java new file mode 100644 index 000000000..d36ac5a9e --- /dev/null +++ b/_1_basics/src/main/java/code/_4_student_effort/pair_of_2/Main.java @@ -0,0 +1,12 @@ +package code._4_student_effort.pair_of_2; + +public class Main { + + public static void main(String[] args) { + Integer[] numbers = new Integer[]{3, 2, -3, -2, 3, 0}; + Integer[] numbers1 = new Integer[]{1, 1, 0, -1, -1}; + Integer[] numbers2 = new Integer[]{5, 9, -5, 7, -5}; + PairOfTwo pairOfTwo = new PairOfTwo(); + System.out.println(pairOfTwo.pairs(numbers2)); + } +} diff --git a/_1_basics/src/main/java/code/_4_student_effort/pair_of_2/PairOfTwo.java b/_1_basics/src/main/java/code/_4_student_effort/pair_of_2/PairOfTwo.java new file mode 100644 index 000000000..cbd051ea9 --- /dev/null +++ b/_1_basics/src/main/java/code/_4_student_effort/pair_of_2/PairOfTwo.java @@ -0,0 +1,29 @@ +package code._4_student_effort.pair_of_2; + +public class PairOfTwo { + + public Integer pairs(Integer[] numbers) { + Integer[] indexesInPairs = new Integer[numbers.length]; + int pairs = 0; + int noOfIndexesInPairs = 0; + + for(int i = 0; i < numbers.length - 1; i++) { + for(int j = i + 1; j < numbers.length; j++) { + boolean isInOtherPairs = false; + for(int k = 0; k < noOfIndexesInPairs; k++) { + if(indexesInPairs[k] == i || indexesInPairs[k] == j) { + isInOtherPairs = true; + break; + } + } + if(!isInOtherPairs && (numbers[i] + numbers[j] == 0)) { + indexesInPairs[noOfIndexesInPairs++] = i; + indexesInPairs[noOfIndexesInPairs++] = j; + pairs++; + break; + } + } + } + return pairs; + } +} diff --git a/_1_basics/src/main/java/code/_4_student_effort/pair_of_3/PairOfThree.java b/_1_basics/src/main/java/code/_4_student_effort/pair_of_3/PairOfThree.java new file mode 100644 index 000000000..0ee98b85c --- /dev/null +++ b/_1_basics/src/main/java/code/_4_student_effort/pair_of_3/PairOfThree.java @@ -0,0 +1,4 @@ +package code._4_student_effort.pair_of_3; + +public class PairOfThree { +} diff --git a/_2_oo/src/main/java/code/_3_in_class/Boxer.java b/_2_oo/src/main/java/code/_3_in_class/Boxer.java new file mode 100644 index 000000000..bb81b08c9 --- /dev/null +++ b/_2_oo/src/main/java/code/_3_in_class/Boxer.java @@ -0,0 +1,35 @@ +package code._3_in_class; +import java.util.Random; + +public class Boxer implements IBoxer { + + String nume; + int health = 100; + int damagePerAttack = 10; + + public Boxer(String nume, int health, int damagePerAttack) { + this.nume = nume; + this.health = health; + this.damagePerAttack = damagePerAttack; + } + + public Boxer(String nume) { + this.nume = nume; + } + + public void attack(Boxer opponent) { + int defendValue = this.damagePerAttack * this.defend() / 100; + opponent.health = opponent.health - this.damagePerAttack - defendValue; +// System.out.println(this.nume + " il ataca pe " + opponent.nume + " "); + System.out.println("defendValue: " + defendValue); + System.out.println("newHealth: " + opponent.health); + } + public int defend() { + Random random = new Random(); + int defendPercentage = random.nextInt(101); + + + return defendPercentage; + + } +} diff --git a/_2_oo/src/main/java/code/_3_in_class/BruceLee.java b/_2_oo/src/main/java/code/_3_in_class/BruceLee.java new file mode 100644 index 000000000..b36746c0e --- /dev/null +++ b/_2_oo/src/main/java/code/_3_in_class/BruceLee.java @@ -0,0 +1,12 @@ +package code._3_in_class; + +//public class BruceLee extends Boxer { +// public BruceLee(String nume, int health, int damagePerAttack) { +// super(nume, health, damagePerAttack); +// } +// +// void attack(Boxer opponent) { +// opponent.health = 0; +//// System.out.println(this.nume + " il ataca pe " + opponent.nume + " "); +// } +//} diff --git a/_2_oo/src/main/java/code/_3_in_class/Gloves.java b/_2_oo/src/main/java/code/_3_in_class/Gloves.java new file mode 100644 index 000000000..c9ffe401d --- /dev/null +++ b/_2_oo/src/main/java/code/_3_in_class/Gloves.java @@ -0,0 +1,11 @@ +package code._3_in_class; + +public class Gloves { + + int size; + String color; + public Gloves(int size, String color) { + this.size = size; + this.color = color; + } +} diff --git a/_2_oo/src/main/java/code/_3_in_class/IBoxer.java b/_2_oo/src/main/java/code/_3_in_class/IBoxer.java new file mode 100644 index 000000000..d953438bc --- /dev/null +++ b/_2_oo/src/main/java/code/_3_in_class/IBoxer.java @@ -0,0 +1,7 @@ +package code._3_in_class; + +public interface IBoxer { + + public void attack(Boxer opponent); + public int defend(); +} diff --git a/_2_oo/src/main/java/code/_3_in_class/Main.java b/_2_oo/src/main/java/code/_3_in_class/Main.java index 3b87b4563..5859d0163 100644 --- a/_2_oo/src/main/java/code/_3_in_class/Main.java +++ b/_2_oo/src/main/java/code/_3_in_class/Main.java @@ -1,8 +1,40 @@ package code._3_in_class; +import java.util.Random; public class Main { public static void main(String[] args) { //TODO put your code changes in here + IBoxer ion = new Boxer("ion", 100, 10); + IBoxer vasile = new Boxer("vasile"); +// IBoxer bruceLee = new BruceLee("bruzli", 100, 10); +// startBoxingMatch(ion, vasile); +// announceVictory(ion); + +// startBoxingMatch(bruceLee, ion); +// announceVictory(bruceLee); + } + + + private static void announceVictory(Boxer ion) { + // anuntam castigatorul + if(ion.health <= 0) { + System.out.println(ion.nume + " a castigat meciul"); + } else { + System.out.println("Celalalt a castigat meciul"); + } + } + + private static void startBoxingMatch(Boxer ion, Boxer vasile) { + Random random = new Random(); + // start meci + while(ion.health >= 0 && vasile.health >= 0) { + int zeroOrOne = random.nextInt(2); + if(zeroOrOne == 1 ) { + ion.attack(vasile); + } else { + vasile.attack(ion); + } + } } } \ No newline at end of file diff --git a/_2_oo/src/main/java/code/_3_in_class/SuperBoxer.java b/_2_oo/src/main/java/code/_3_in_class/SuperBoxer.java new file mode 100644 index 000000000..cd40f2879 --- /dev/null +++ b/_2_oo/src/main/java/code/_3_in_class/SuperBoxer.java @@ -0,0 +1,15 @@ +package code._3_in_class; + +public class SuperBoxer { + String name; + int health; + int damagePerAttack; + + public SuperBoxer(String name, int health, int damagePerAttack) { + this.name = name; + this.health = health; + this.damagePerAttack = damagePerAttack; + } + +// public void attack +} diff --git a/_2_oo/src/main/java/code/_3_in_class/car/Main.java b/_2_oo/src/main/java/code/_3_in_class/car/Main.java new file mode 100644 index 000000000..424c23bd1 --- /dev/null +++ b/_2_oo/src/main/java/code/_3_in_class/car/Main.java @@ -0,0 +1,55 @@ +package code._3_in_class.car; + +public class Main { + static class Human { + Car car; + + public Human(Car car) { + this.car = car; + } + + void increaseSpeed() { + car.increaseSpeed(); + } + } + static interface Car { + void increaseSpeed(); + } + + static class GasCar implements Car { + Engine engine = new GasEngine(); + public void increaseSpeed() { + engine.increaseSpeed(); + }; + } + + static class ElectricCar implements Car { + Engine engine = new ElectricEngine(); + public void increaseSpeed() { + engine.increaseSpeed(); + } + } + static interface Engine { + void increaseSpeed(); + } + + static class ElectricEngine implements Engine { + @Override + public void increaseSpeed() { + System.out.println("Increase speed implementation from ElectricEngine"); + } + } + static class GasEngine implements Engine { + @Override + public void increaseSpeed() { + System.out.println("Increase speed implementation from GasEngine"); + } + } + + public static void main(String[] args) { + Human human01 = new Human(new ElectricCar()); // compozitie + human01.increaseSpeed(); // delegare + Human human02 = new Human(new GasCar()); + human02.increaseSpeed(); + } +} diff --git a/_2_oo/src/main/java/code/_3_in_class/specializare/AlgoritmSortare.java b/_2_oo/src/main/java/code/_3_in_class/specializare/AlgoritmSortare.java new file mode 100644 index 000000000..f344cff92 --- /dev/null +++ b/_2_oo/src/main/java/code/_3_in_class/specializare/AlgoritmSortare.java @@ -0,0 +1,20 @@ +package code._3_in_class.specializare; + +public class AlgoritmSortare { + + void sort(int[] arr) { + for(int i = 0; i < arr.length - 1; i++) { + for(int j = i + 1; j < arr.length; j++) { + if(sortDirection(arr, i, j)) { + int temp = arr[i]; + arr[i] = arr[j]; + arr[j] = temp; + } + } + } + } + + boolean sortDirection(int[] arr, int i, int j) { + return (arr[i] > arr[j]); + } +} diff --git a/_2_oo/src/main/java/code/_3_in_class/specializare/AlgoritmSortareDescendent.java b/_2_oo/src/main/java/code/_3_in_class/specializare/AlgoritmSortareDescendent.java new file mode 100644 index 000000000..f3534f91c --- /dev/null +++ b/_2_oo/src/main/java/code/_3_in_class/specializare/AlgoritmSortareDescendent.java @@ -0,0 +1,8 @@ +package code._3_in_class.specializare; + +public class AlgoritmSortareDescendent extends AlgoritmSortare { + @Override + boolean sortDirection(int[] arr, int i, int j) { + return arr[i] < arr[j]; + } +} diff --git a/_2_oo/src/main/java/code/_3_in_class/specializare/Main.java b/_2_oo/src/main/java/code/_3_in_class/specializare/Main.java new file mode 100644 index 000000000..7aa5f5c87 --- /dev/null +++ b/_2_oo/src/main/java/code/_3_in_class/specializare/Main.java @@ -0,0 +1,9 @@ +package code._3_in_class.specializare; + +public class Main { + + public static void main(String[] args) { + AlgoritmSortare alg = new AlgoritmSortare(); + int[] arr = new int[] {3,5,1,2,4}; + } +} diff --git a/_3_design_patterns/src/main/java/code/_3_in_class/factory/IStudent.java b/_3_design_patterns/src/main/java/code/_3_in_class/factory/IStudent.java new file mode 100644 index 000000000..e76e7c485 --- /dev/null +++ b/_3_design_patterns/src/main/java/code/_3_in_class/factory/IStudent.java @@ -0,0 +1,6 @@ +package code._3_in_class.factory; + +public interface IStudent { + public String getNumeUniversitate(); + public String hello(); +} diff --git a/_3_design_patterns/src/main/java/code/_3_in_class/factory/StudentBabyBoomer.java b/_3_design_patterns/src/main/java/code/_3_in_class/factory/StudentBabyBoomer.java new file mode 100644 index 000000000..cb7542079 --- /dev/null +++ b/_3_design_patterns/src/main/java/code/_3_in_class/factory/StudentBabyBoomer.java @@ -0,0 +1,13 @@ +package code._3_in_class.factory; + +public class StudentBabyBoomer implements IStudent{ + String universitate; + int anulNasterii; + public String getNumeUniversitate() { + return this.universitate; + } + + public String hello() { + return "ALO! Salut, tataie!"; + } +} diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Company.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Company.java new file mode 100644 index 000000000..f95d5f4ee --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Company.java @@ -0,0 +1,31 @@ +package clean.code.design_patterns.requirements; + +public class Company { + + private String name; + private String abreviation; + private float stockPrice; + public Trend trend; + public Company(String name, String abreviation, float stockPrice) { + this.name = name; + this.abreviation = abreviation; + this.stockPrice = stockPrice; + } + + public String getName() { return this.name; } + public float getStockPrice() { return this.stockPrice; } + public String getAbreviation() { return this.abreviation; } + public void setPrice(float stockPrice) { this.stockPrice = stockPrice; } + public void displayCompany() { + System.out.println(this.abreviation + " " + this.stockPrice); + } + + public void setTrend(Trend newTrend) { + trend = newTrend; + } + + public float priceUpdate() { + return stockPrice + trend.loss_function(); + } + +} diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Growing.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Growing.java new file mode 100644 index 000000000..0e005110d --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Growing.java @@ -0,0 +1,9 @@ +package clean.code.design_patterns.requirements; + +public class Growing implements Trend { + + String name = "growing"; + public float loss_function() { + return 0.2F; + } +} diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/GrowingCompany.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/GrowingCompany.java new file mode 100644 index 000000000..861990644 --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/GrowingCompany.java @@ -0,0 +1,13 @@ +package clean.code.design_patterns.requirements; + +public class GrowingCompany extends Company { + public Trend trend; + public GrowingCompany(String name, String abreviation, float stockPrice) { + super(name, abreviation, stockPrice); + trend = new Growing(); + } + + public float priceUpdate() { + return this.getStockPrice() + trend.loss_function(); + } +} 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..9e3409915 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 @@ -1,8 +1,25 @@ package clean.code.design_patterns.requirements; -public class Main { +import java.util.ArrayList; +public class Main { public static void main(String[] args) { - //TODO implement your design patterns in this package + + ArrayList companies = new ArrayList<>(); + Company IBM = new GrowingCompany("IBM", "IBMP", 197.0F); + Company Apple = new GrowingCompany("Apple", "AAPL", 677.60F); + Company Google = new ShrinkingCompany("Google", "Goog", 676.40F); + companies.add(IBM); + companies.add(Apple); + companies.add(Google); + + StocksManager publisher = new StocksManager(companies); + StockOwner subscriber = new StockOwner(publisher); + StockOwner subscriber2 = new StockOwner(publisher); + StockOwner subscriber3 = new StockOwner(publisher); + publisher.setPrice("Goog"); + publisher.setPrice("AAPL"); +// publisher.setPrice("AAPL", 678.80F); +// publisher.setPrice("IBMP", 197.3F); } } diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Observer.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Observer.java new file mode 100644 index 000000000..625521765 --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Observer.java @@ -0,0 +1,8 @@ +package clean.code.design_patterns.requirements; +import java.util.ArrayList; + +public interface Observer { + + public void update(ArrayList companies); + +} diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Shrinking.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Shrinking.java new file mode 100644 index 000000000..e332cb00d --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Shrinking.java @@ -0,0 +1,8 @@ +package clean.code.design_patterns.requirements; + +public class Shrinking implements Trend { + String name = "shrinking"; + public float loss_function() { + return -0.2F; + } +} diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/ShrinkingCompany.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/ShrinkingCompany.java new file mode 100644 index 000000000..4228e0518 --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/ShrinkingCompany.java @@ -0,0 +1,13 @@ +package clean.code.design_patterns.requirements; + +public class ShrinkingCompany extends Company{ + public Trend trend; + public ShrinkingCompany(String name, String abreviation, float stockPrice) { + super(name, abreviation, stockPrice); + trend = new Shrinking(); + } + + public float priceUpdate() { + return this.getStockPrice() + trend.loss_function(); + } +} diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/StockOwner.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/StockOwner.java new file mode 100644 index 000000000..4bba1cee2 --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/StockOwner.java @@ -0,0 +1,32 @@ +package clean.code.design_patterns.requirements; + +import java.util.ArrayList; + +public class StockOwner implements Observer{ + + private ArrayList companies = new ArrayList<>(); + + private static int observerIDTotal = 0; + + private int observerID; + + private Subject stockManager; + + public StockOwner(Subject stockManager) { + + this.stockManager = stockManager; + this.observerID = ++observerIDTotal; +// System.out.println("New Observer " + this.observerID); + + stockManager.register(this); + } + + public void update(ArrayList companies) { + this.companies = companies; + System.out.println("Stock owner: " + observerID); + for(Company company : companies) { + company.displayCompany(); + } + System.out.println(); + } +} diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/StocksManager.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/StocksManager.java new file mode 100644 index 000000000..e36641b03 --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/StocksManager.java @@ -0,0 +1,45 @@ +package clean.code.design_patterns.requirements; + +import java.util.ArrayList; + +public class StocksManager implements Subject { + + private ArrayList stockOwners; + private ArrayList companies = new ArrayList<>(); + + + public StocksManager(ArrayList companies) { + this.stockOwners = new ArrayList<>(); + this.companies = companies; + } + + @Override + public void register(Observer newStockOwner) { + stockOwners.add(newStockOwner); + } + + @Override + public void unregister(Observer removedStockOwner) { + int stockOwnerIndex = stockOwners.indexOf(removedStockOwner) + 1; + System.out.println("Observer " + stockOwnerIndex + " was removed"); + stockOwners.remove(stockOwnerIndex); + } + + @Override + public void notifyObserver() { + + for(Observer observer : stockOwners) { + observer.update(companies); + } + } + + public void setPrice(String abreviation) { + for(Company company : companies) { + if(company.getAbreviation().equals(abreviation)) { + company.setPrice(company.priceUpdate()); + } + } + notifyObserver(); + } + +} diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Subject.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Subject.java new file mode 100644 index 000000000..95d3e58b9 --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Subject.java @@ -0,0 +1,9 @@ +package clean.code.design_patterns.requirements; + +public interface Subject { + + public void register(Observer observer); + public void unregister(Observer observer); + public void notifyObserver(); + +} diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Trend.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Trend.java new file mode 100644 index 000000000..951729d5d --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Trend.java @@ -0,0 +1,6 @@ +package clean.code.design_patterns.requirements; + +public interface Trend { + + public float loss_function(); +}