From ee9924a9a44542251e3b4a331308e43caf80a701 Mon Sep 17 00:00:00 2001 From: aandrei404 Date: Sat, 15 Apr 2023 10:46:11 +0300 Subject: [PATCH 1/7] Am adaugat prima clasa Java --- .../src/main/java/code/_3_in_class/ClasaBunaZiua.java | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 _1_basics/src/main/java/code/_3_in_class/ClasaBunaZiua.java 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..5c499a8cc --- /dev/null +++ b/_1_basics/src/main/java/code/_3_in_class/ClasaBunaZiua.java @@ -0,0 +1,7 @@ +package code._3_in_class; + +public class ClasaBunaZiua { + public static void main(String[] args) { + System.out.println("Buna ziua!"); + } +} From f994fe7a4e913dde41934a060cadb744e8791ce1 Mon Sep 17 00:00:00 2001 From: aandrei404 Date: Sat, 22 Apr 2023 11:36:44 +0300 Subject: [PATCH 2/7] boxingMatch --- .../src/main/java/code/_3_in_class/Boxor.java | 28 +++++++++++++++++ .../src/main/java/code/_3_in_class/Main.java | 30 ++++++++++++++++++- 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 _2_oo/src/main/java/code/_3_in_class/Boxor.java diff --git a/_2_oo/src/main/java/code/_3_in_class/Boxor.java b/_2_oo/src/main/java/code/_3_in_class/Boxor.java new file mode 100644 index 000000000..d8571d70c --- /dev/null +++ b/_2_oo/src/main/java/code/_3_in_class/Boxor.java @@ -0,0 +1,28 @@ +package code._3_in_class; + +public class Boxor { + + String name; + int health; + int damagePerAttack; + + public Boxor(String name, int health, int damagePerAttack) + { + this.name = name; + this.health = health; + this.damagePerAttack = damagePerAttack; + } + + public Boxor(String nume) + { + this.name = nume; + } + void attack(Boxor opponent) + { + opponent.health = opponent.health - this.damagePerAttack; + } + void 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..e2a8b60d8 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,36 @@ 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 + + Boxor ion = new Boxor("ion", 100, 10); + Boxor vasile = new Boxor( "vasile", 100, 10); + + + startBoxingMatch(ion, vasile); + endingResults(ion); + } + + private static void endingResults(Boxor ion) { + if(ion.health <= 0) + System.out.println("Vasile won!"); + else + System.out.println("Ion won!"); + } + + private static void startBoxingMatch(Boxor ion, Boxor vasile) { + Random random = new Random(); + + while(ion.health > 0 && vasile.health > 0) + { + int randVar = random.nextInt(2); + if(randVar == 1) + ion.attack(vasile); + else + vasile.attack(ion); + } } } \ No newline at end of file From 5a1ae5b52d708c54d43c43bd55663588fc4edcfc Mon Sep 17 00:00:00 2001 From: aandrei404 Date: Sat, 22 Apr 2023 12:17:14 +0300 Subject: [PATCH 3/7] UpdatedBoxingInterface --- .../src/main/java/code/_3_in_class/Boxor.java | 27 +++++++++++-- .../main/java/code/_3_in_class/IBoxer.java | 9 +++++ .../src/main/java/code/_3_in_class/Main.java | 14 ++++--- .../java/code/_3_in_class/SuperBoxer.java | 39 +++++++++++++++++++ 4 files changed, 79 insertions(+), 10 deletions(-) create mode 100644 _2_oo/src/main/java/code/_3_in_class/IBoxer.java create mode 100644 _2_oo/src/main/java/code/_3_in_class/SuperBoxer.java diff --git a/_2_oo/src/main/java/code/_3_in_class/Boxor.java b/_2_oo/src/main/java/code/_3_in_class/Boxor.java index d8571d70c..c0e947024 100644 --- a/_2_oo/src/main/java/code/_3_in_class/Boxor.java +++ b/_2_oo/src/main/java/code/_3_in_class/Boxor.java @@ -1,6 +1,8 @@ package code._3_in_class; -public class Boxor { +import java.util.Random; + +public class Boxor implements IBoxer{ String name; int health; @@ -17,12 +19,29 @@ public Boxor(String nume) { this.name = nume; } - void attack(Boxor opponent) + public void attack(IBoxer opponent) { - opponent.health = opponent.health - this.damagePerAttack; + int defendValue = (this.damagePerAttack * this.defend()) / 100; + opponent.receiveAttack(this.damagePerAttack - defendValue); } - void defend() + public int defend() { + Random random = new Random(); + int defendPercentage = random.nextInt(101); + + return defendPercentage; + } + + public boolean isAlive() + { + return this.health > 0; + } + + @Override + public void receiveAttack(int damage) { + this.health = this.health - damage; + System.out.println("defendValue: " + damage); + System.out.println("newHealth: " + this.health); } } 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..d1735d03c --- /dev/null +++ b/_2_oo/src/main/java/code/_3_in_class/IBoxer.java @@ -0,0 +1,9 @@ +package code._3_in_class; + +public interface IBoxer { + + public void attack(IBoxer opponent); + public int defend(); + public boolean isAlive(); + public void receiveAttack(int damage); +} 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 e2a8b60d8..6f4bce108 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 @@ -6,25 +6,27 @@ public class Main { public static void main(String[] args) { - Boxor ion = new Boxor("ion", 100, 10); - Boxor vasile = new Boxor( "vasile", 100, 10); + IBoxer ion = new SuperBoxer("ion", 100, 10); + IBoxer vasile = new Boxor( "vasile", 100, 10); startBoxingMatch(ion, vasile); endingResults(ion); } - private static void endingResults(Boxor ion) { - if(ion.health <= 0) + private static void endingResults(IBoxer ion) { + if(!ion.isAlive()) System.out.println("Vasile won!"); else System.out.println("Ion won!"); } - private static void startBoxingMatch(Boxor ion, Boxor vasile) { + //startBoxingMatch_Boxor_Boxor + //startBoxingMatch_IBoxer_IBoxer + private static void startBoxingMatch(IBoxer ion, IBoxer vasile) { Random random = new Random(); - while(ion.health > 0 && vasile.health > 0) + while(ion.isAlive() && vasile.isAlive()) { int randVar = random.nextInt(2); if(randVar == 1) 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..d976e843b --- /dev/null +++ b/_2_oo/src/main/java/code/_3_in_class/SuperBoxer.java @@ -0,0 +1,39 @@ +package code._3_in_class; + +public class SuperBoxer implements IBoxer{ + + String name; + int health; + int damagePerAttack; + public SuperBoxer(String name, int health, int damagePerAttack) + { + this.name = name; + this.health = health; + this.damagePerAttack = damagePerAttack; + } + + public SuperBoxer(String nume) + { + this.name = nume; + } + + @Override + public void attack(IBoxer opponent) { + + } + + @Override + public int defend() { + return 0; + } + + @Override + public boolean isAlive() { + return this.health > 0; + } + + @Override + public void receiveAttack(int damage) { + + } +} From c83d59212e53d79c35d132c835698d2a1de6cee9 Mon Sep 17 00:00:00 2001 From: aandrei404 Date: Sat, 20 May 2023 05:08:13 +0300 Subject: [PATCH 4/7] Design_Patterns_Project_MARINACHE ANDREI-ALEXANDRU --- .../design_patterns/requirements/Main.java | 27 +++++- .../requirements/MusicPlaylist.java | 36 ++++++++ .../requirements/Settings.java | 87 +++++++++++++++++++ .../design_patterns/requirements/Song.java | 69 +++++++++++++++ .../design_patterns/requirements/User.java | 26 ++++++ 5 files changed, 244 insertions(+), 1 deletion(-) create mode 100644 clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/MusicPlaylist.java create mode 100644 clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Settings.java create mode 100644 clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Song.java create mode 100644 clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/User.java 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..5c2565c79 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 @@ -3,6 +3,31 @@ public class Main { public static void main(String[] args) { - //TODO implement your design patterns in this package + + //Singleton pattern + Builder pattern + + User Damian = new User("damiano992"); + User Angela = new User("ur_angel"); + User Robin = new User("epicSidekick_12"); + + Damian.addSong(new Song.Builder("Torna a casa") + .setArtist("Maneskin") + .setDuration("3:51") + .setGenre("ROCK") + .setUser(Damian.getUserName()) + .build()); + + Damian.showPlaylist(); + + Angela.showPlaylist(); + + Robin.addSong(new Song.Builder("Summertime Sadness") + .setArtist("Lana Del Rey") + .setUser(Robin.getUserName()) + .setGenre("POP") + .setDuration("4:25") + .build()); + + Angela.showPlaylist(); } } diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/MusicPlaylist.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/MusicPlaylist.java new file mode 100644 index 000000000..3e3676970 --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/MusicPlaylist.java @@ -0,0 +1,36 @@ +package clean.code.design_patterns.requirements; + +import java.util.ArrayList; +import java.util.*; + +public class MusicPlaylist { + private static volatile MusicPlaylist instance; + private static String name; + private static List songs = new ArrayList(); + + private MusicPlaylist(String name) { + instance.name = name; + } + + public static MusicPlaylist getInstance(String name) { + if (instance == null) { + synchronized (MusicPlaylist.class) { + if (instance == null) { + instance = new MusicPlaylist(name); + } + } + } + return instance; + } + + public static void addSong(Song newSong) + { + instance.songs.add((newSong)); + } + + public static void showPlaylist() + { + for(Song listSong:songs) + listSong.listDetails(); + } +} \ 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/Settings.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Settings.java new file mode 100644 index 000000000..9a0b6e6b0 --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Settings.java @@ -0,0 +1,87 @@ +package clean.code.design_patterns.requirements; + +public class Settings { + + private static volatile Settings instance; + private Short volumeLevel; + private Short musicLevel; + private boolean enhancedGraphicsMode; + private boolean stereoSound; + + private Settings() { + this.volumeLevel = 255; + this.musicLevel = 255; + this.enhancedGraphicsMode = true; + this.stereoSound = false; + } + + public static Settings getInstance() + { + if(instance == null) + { + synchronized (Settings.class) + { + if(instance == null) + { + instance = new Settings(); + } + } + } + return instance; + } + + public static void changeVolume(int newValue) + { + if(newValue <= 0) + instance.volumeLevel = 0; + else if(newValue >=255) + instance.volumeLevel = 255; + else + instance.volumeLevel = (short)newValue; + } + + public static void changeMusic(int newValue) + { + if(newValue <= 0) + instance.musicLevel = 0; + else if(newValue >=255) + instance.musicLevel = 255; + else + instance.musicLevel = (short)newValue; + } + + public static void toggleEG() + { + if(instance.enhancedGraphicsMode) + instance.enhancedGraphicsMode = false; + else + instance.enhancedGraphicsMode = true; + } + + public static void toggleEG(boolean val) + { + instance.enhancedGraphicsMode = val; + } + + public static void toggleSS() + { + if(instance.stereoSound) + instance.stereoSound = false; + else + instance.stereoSound = true; + } + + public static void toggleSS(boolean val) + { + instance.stereoSound = val; + } + + public static void showSettings() + { + System.out.println("Volume: " + instance.volumeLevel); + System.out.println("Music: " + instance.musicLevel); + System.out.println("Enhanced Graphics: " + instance.enhancedGraphicsMode); + System.out.println("Stereo sound: " + instance.stereoSound); + System.out.println(); + } +} diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Song.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Song.java new file mode 100644 index 000000000..7c33bcba7 --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Song.java @@ -0,0 +1,69 @@ +package clean.code.design_patterns.requirements; + +public class Song { + private String name; + private String artistName; + private String duration; + private String genre; + private String userName; + + public void listDetails() + { + System.out.println("Name: " + name); + System.out.println("Artist: " + artistName); + System.out.println("Duration: " + duration); + System.out.println("Genre: " + genre); + System.out.println("Added by: " + userName); + System.out.println("---"); + } + + private Song(Builder builder) + { + this.userName = builder.userName; + this.artistName = builder.artistName; + this.duration = builder.duration; + this.genre = builder.genre; + this.name = builder.name; + } + + public static class Builder { + private String name; + private String artistName; + private String duration; + private String genre; + private String userName; + public Builder(String nameVal) + { + this.name = nameVal; + } + + public Builder setArtist(String artist) + { + this.artistName = artist; + return this; + } + + public Builder setDuration(String dur) + { + this.duration = dur; + return this; + } + + public Builder setGenre(String gen) + { + this.genre = gen; + return this; + } + + public Builder setUser(String user) + { + this.userName = user; + return this; + } + + public Song build() + { + return new Song(this); + } + } +} diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/User.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/User.java new file mode 100644 index 000000000..3442295d3 --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/User.java @@ -0,0 +1,26 @@ +package clean.code.design_patterns.requirements; + +public class User { + private String userName; + + public User(String name) { + this.userName = name; + } + + public String getUserName() { + return this.userName; + } + + public void addSong(Song newSong) + { + MusicPlaylist playlist = MusicPlaylist.getInstance("Party Mix 2023"); + playlist.addSong(newSong); + } + + public void showPlaylist() + { + MusicPlaylist playlist = MusicPlaylist.getInstance("Party Mix 2023"); + playlist.showPlaylist(); + } + +} From c6bd390097fe83f32632e50a4fba059d51ec7d64 Mon Sep 17 00:00:00 2001 From: aandrei404 Date: Sat, 20 May 2023 05:20:02 +0300 Subject: [PATCH 5/7] Revert "Design_Patterns_Project_MARINACHE ANDREI-ALEXANDRU" This reverts commit c83d59212e53d79c35d132c835698d2a1de6cee9. --- .../design_patterns/requirements/Main.java | 27 +----- .../requirements/MusicPlaylist.java | 36 -------- .../requirements/Settings.java | 87 ------------------- .../design_patterns/requirements/Song.java | 69 --------------- .../design_patterns/requirements/User.java | 26 ------ 5 files changed, 1 insertion(+), 244 deletions(-) delete mode 100644 clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/MusicPlaylist.java delete mode 100644 clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Settings.java delete mode 100644 clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Song.java delete mode 100644 clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/User.java 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 5c2565c79..8a9fccb7b 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 @@ -3,31 +3,6 @@ public class Main { public static void main(String[] args) { - - //Singleton pattern + Builder pattern - - User Damian = new User("damiano992"); - User Angela = new User("ur_angel"); - User Robin = new User("epicSidekick_12"); - - Damian.addSong(new Song.Builder("Torna a casa") - .setArtist("Maneskin") - .setDuration("3:51") - .setGenre("ROCK") - .setUser(Damian.getUserName()) - .build()); - - Damian.showPlaylist(); - - Angela.showPlaylist(); - - Robin.addSong(new Song.Builder("Summertime Sadness") - .setArtist("Lana Del Rey") - .setUser(Robin.getUserName()) - .setGenre("POP") - .setDuration("4:25") - .build()); - - Angela.showPlaylist(); + //TODO implement your design patterns in this package } } diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/MusicPlaylist.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/MusicPlaylist.java deleted file mode 100644 index 3e3676970..000000000 --- a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/MusicPlaylist.java +++ /dev/null @@ -1,36 +0,0 @@ -package clean.code.design_patterns.requirements; - -import java.util.ArrayList; -import java.util.*; - -public class MusicPlaylist { - private static volatile MusicPlaylist instance; - private static String name; - private static List songs = new ArrayList(); - - private MusicPlaylist(String name) { - instance.name = name; - } - - public static MusicPlaylist getInstance(String name) { - if (instance == null) { - synchronized (MusicPlaylist.class) { - if (instance == null) { - instance = new MusicPlaylist(name); - } - } - } - return instance; - } - - public static void addSong(Song newSong) - { - instance.songs.add((newSong)); - } - - public static void showPlaylist() - { - for(Song listSong:songs) - listSong.listDetails(); - } -} \ 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/Settings.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Settings.java deleted file mode 100644 index 9a0b6e6b0..000000000 --- a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Settings.java +++ /dev/null @@ -1,87 +0,0 @@ -package clean.code.design_patterns.requirements; - -public class Settings { - - private static volatile Settings instance; - private Short volumeLevel; - private Short musicLevel; - private boolean enhancedGraphicsMode; - private boolean stereoSound; - - private Settings() { - this.volumeLevel = 255; - this.musicLevel = 255; - this.enhancedGraphicsMode = true; - this.stereoSound = false; - } - - public static Settings getInstance() - { - if(instance == null) - { - synchronized (Settings.class) - { - if(instance == null) - { - instance = new Settings(); - } - } - } - return instance; - } - - public static void changeVolume(int newValue) - { - if(newValue <= 0) - instance.volumeLevel = 0; - else if(newValue >=255) - instance.volumeLevel = 255; - else - instance.volumeLevel = (short)newValue; - } - - public static void changeMusic(int newValue) - { - if(newValue <= 0) - instance.musicLevel = 0; - else if(newValue >=255) - instance.musicLevel = 255; - else - instance.musicLevel = (short)newValue; - } - - public static void toggleEG() - { - if(instance.enhancedGraphicsMode) - instance.enhancedGraphicsMode = false; - else - instance.enhancedGraphicsMode = true; - } - - public static void toggleEG(boolean val) - { - instance.enhancedGraphicsMode = val; - } - - public static void toggleSS() - { - if(instance.stereoSound) - instance.stereoSound = false; - else - instance.stereoSound = true; - } - - public static void toggleSS(boolean val) - { - instance.stereoSound = val; - } - - public static void showSettings() - { - System.out.println("Volume: " + instance.volumeLevel); - System.out.println("Music: " + instance.musicLevel); - System.out.println("Enhanced Graphics: " + instance.enhancedGraphicsMode); - System.out.println("Stereo sound: " + instance.stereoSound); - System.out.println(); - } -} diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Song.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Song.java deleted file mode 100644 index 7c33bcba7..000000000 --- a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Song.java +++ /dev/null @@ -1,69 +0,0 @@ -package clean.code.design_patterns.requirements; - -public class Song { - private String name; - private String artistName; - private String duration; - private String genre; - private String userName; - - public void listDetails() - { - System.out.println("Name: " + name); - System.out.println("Artist: " + artistName); - System.out.println("Duration: " + duration); - System.out.println("Genre: " + genre); - System.out.println("Added by: " + userName); - System.out.println("---"); - } - - private Song(Builder builder) - { - this.userName = builder.userName; - this.artistName = builder.artistName; - this.duration = builder.duration; - this.genre = builder.genre; - this.name = builder.name; - } - - public static class Builder { - private String name; - private String artistName; - private String duration; - private String genre; - private String userName; - public Builder(String nameVal) - { - this.name = nameVal; - } - - public Builder setArtist(String artist) - { - this.artistName = artist; - return this; - } - - public Builder setDuration(String dur) - { - this.duration = dur; - return this; - } - - public Builder setGenre(String gen) - { - this.genre = gen; - return this; - } - - public Builder setUser(String user) - { - this.userName = user; - return this; - } - - public Song build() - { - return new Song(this); - } - } -} diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/User.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/User.java deleted file mode 100644 index 3442295d3..000000000 --- a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/User.java +++ /dev/null @@ -1,26 +0,0 @@ -package clean.code.design_patterns.requirements; - -public class User { - private String userName; - - public User(String name) { - this.userName = name; - } - - public String getUserName() { - return this.userName; - } - - public void addSong(Song newSong) - { - MusicPlaylist playlist = MusicPlaylist.getInstance("Party Mix 2023"); - playlist.addSong(newSong); - } - - public void showPlaylist() - { - MusicPlaylist playlist = MusicPlaylist.getInstance("Party Mix 2023"); - playlist.showPlaylist(); - } - -} From d607caeee679c9c6c545dc8a9f91866bcd40972e Mon Sep 17 00:00:00 2001 From: aandrei404 Date: Sat, 20 May 2023 05:21:35 +0300 Subject: [PATCH 6/7] Revert "Revert "Design_Patterns_Project_MARINACHE ANDREI-ALEXANDRU"" This reverts commit c6bd390097fe83f32632e50a4fba059d51ec7d64. --- .../design_patterns/requirements/Main.java | 27 +++++- .../requirements/MusicPlaylist.java | 36 ++++++++ .../requirements/Settings.java | 87 +++++++++++++++++++ .../design_patterns/requirements/Song.java | 69 +++++++++++++++ .../design_patterns/requirements/User.java | 26 ++++++ 5 files changed, 244 insertions(+), 1 deletion(-) create mode 100644 clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/MusicPlaylist.java create mode 100644 clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Settings.java create mode 100644 clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Song.java create mode 100644 clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/User.java 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..5c2565c79 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 @@ -3,6 +3,31 @@ public class Main { public static void main(String[] args) { - //TODO implement your design patterns in this package + + //Singleton pattern + Builder pattern + + User Damian = new User("damiano992"); + User Angela = new User("ur_angel"); + User Robin = new User("epicSidekick_12"); + + Damian.addSong(new Song.Builder("Torna a casa") + .setArtist("Maneskin") + .setDuration("3:51") + .setGenre("ROCK") + .setUser(Damian.getUserName()) + .build()); + + Damian.showPlaylist(); + + Angela.showPlaylist(); + + Robin.addSong(new Song.Builder("Summertime Sadness") + .setArtist("Lana Del Rey") + .setUser(Robin.getUserName()) + .setGenre("POP") + .setDuration("4:25") + .build()); + + Angela.showPlaylist(); } } diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/MusicPlaylist.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/MusicPlaylist.java new file mode 100644 index 000000000..3e3676970 --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/MusicPlaylist.java @@ -0,0 +1,36 @@ +package clean.code.design_patterns.requirements; + +import java.util.ArrayList; +import java.util.*; + +public class MusicPlaylist { + private static volatile MusicPlaylist instance; + private static String name; + private static List songs = new ArrayList(); + + private MusicPlaylist(String name) { + instance.name = name; + } + + public static MusicPlaylist getInstance(String name) { + if (instance == null) { + synchronized (MusicPlaylist.class) { + if (instance == null) { + instance = new MusicPlaylist(name); + } + } + } + return instance; + } + + public static void addSong(Song newSong) + { + instance.songs.add((newSong)); + } + + public static void showPlaylist() + { + for(Song listSong:songs) + listSong.listDetails(); + } +} \ 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/Settings.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Settings.java new file mode 100644 index 000000000..9a0b6e6b0 --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Settings.java @@ -0,0 +1,87 @@ +package clean.code.design_patterns.requirements; + +public class Settings { + + private static volatile Settings instance; + private Short volumeLevel; + private Short musicLevel; + private boolean enhancedGraphicsMode; + private boolean stereoSound; + + private Settings() { + this.volumeLevel = 255; + this.musicLevel = 255; + this.enhancedGraphicsMode = true; + this.stereoSound = false; + } + + public static Settings getInstance() + { + if(instance == null) + { + synchronized (Settings.class) + { + if(instance == null) + { + instance = new Settings(); + } + } + } + return instance; + } + + public static void changeVolume(int newValue) + { + if(newValue <= 0) + instance.volumeLevel = 0; + else if(newValue >=255) + instance.volumeLevel = 255; + else + instance.volumeLevel = (short)newValue; + } + + public static void changeMusic(int newValue) + { + if(newValue <= 0) + instance.musicLevel = 0; + else if(newValue >=255) + instance.musicLevel = 255; + else + instance.musicLevel = (short)newValue; + } + + public static void toggleEG() + { + if(instance.enhancedGraphicsMode) + instance.enhancedGraphicsMode = false; + else + instance.enhancedGraphicsMode = true; + } + + public static void toggleEG(boolean val) + { + instance.enhancedGraphicsMode = val; + } + + public static void toggleSS() + { + if(instance.stereoSound) + instance.stereoSound = false; + else + instance.stereoSound = true; + } + + public static void toggleSS(boolean val) + { + instance.stereoSound = val; + } + + public static void showSettings() + { + System.out.println("Volume: " + instance.volumeLevel); + System.out.println("Music: " + instance.musicLevel); + System.out.println("Enhanced Graphics: " + instance.enhancedGraphicsMode); + System.out.println("Stereo sound: " + instance.stereoSound); + System.out.println(); + } +} diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Song.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Song.java new file mode 100644 index 000000000..7c33bcba7 --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Song.java @@ -0,0 +1,69 @@ +package clean.code.design_patterns.requirements; + +public class Song { + private String name; + private String artistName; + private String duration; + private String genre; + private String userName; + + public void listDetails() + { + System.out.println("Name: " + name); + System.out.println("Artist: " + artistName); + System.out.println("Duration: " + duration); + System.out.println("Genre: " + genre); + System.out.println("Added by: " + userName); + System.out.println("---"); + } + + private Song(Builder builder) + { + this.userName = builder.userName; + this.artistName = builder.artistName; + this.duration = builder.duration; + this.genre = builder.genre; + this.name = builder.name; + } + + public static class Builder { + private String name; + private String artistName; + private String duration; + private String genre; + private String userName; + public Builder(String nameVal) + { + this.name = nameVal; + } + + public Builder setArtist(String artist) + { + this.artistName = artist; + return this; + } + + public Builder setDuration(String dur) + { + this.duration = dur; + return this; + } + + public Builder setGenre(String gen) + { + this.genre = gen; + return this; + } + + public Builder setUser(String user) + { + this.userName = user; + return this; + } + + public Song build() + { + return new Song(this); + } + } +} diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/User.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/User.java new file mode 100644 index 000000000..3442295d3 --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/User.java @@ -0,0 +1,26 @@ +package clean.code.design_patterns.requirements; + +public class User { + private String userName; + + public User(String name) { + this.userName = name; + } + + public String getUserName() { + return this.userName; + } + + public void addSong(Song newSong) + { + MusicPlaylist playlist = MusicPlaylist.getInstance("Party Mix 2023"); + playlist.addSong(newSong); + } + + public void showPlaylist() + { + MusicPlaylist playlist = MusicPlaylist.getInstance("Party Mix 2023"); + playlist.showPlaylist(); + } + +} From c66c56c62458ab1c090084da03d72de0fe9351d0 Mon Sep 17 00:00:00 2001 From: aandrei404 Date: Sat, 20 May 2023 05:31:31 +0300 Subject: [PATCH 7/7] MARINACHE ANDREI-ALEXANDRU - Design Patterns Project --- .../clean/code/design_patterns/requirements/Main.java | 2 ++ .../code/design_patterns/requirements/MusicPlaylist.java | 8 ++++++++ .../clean/code/design_patterns/requirements/Song.java | 6 ++++++ .../clean/code/design_patterns/requirements/User.java | 5 +++++ 4 files changed, 21 insertions(+) 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 5c2565c79..3385be7a0 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 @@ -10,6 +10,7 @@ public static void main(String[] args) { User Angela = new User("ur_angel"); User Robin = new User("epicSidekick_12"); + //the builder in action Damian.addSong(new Song.Builder("Torna a casa") .setArtist("Maneskin") .setDuration("3:51") @@ -21,6 +22,7 @@ public static void main(String[] args) { Angela.showPlaylist(); + //the builder in action Robin.addSong(new Song.Builder("Summertime Sadness") .setArtist("Lana Del Rey") .setUser(Robin.getUserName()) diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/MusicPlaylist.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/MusicPlaylist.java index 3e3676970..059fd1064 100644 --- a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/MusicPlaylist.java +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/MusicPlaylist.java @@ -3,15 +3,21 @@ import java.util.ArrayList; import java.util.*; +//Singleton design pattern public class MusicPlaylist { + //unique instance private static volatile MusicPlaylist instance; + //identify the playlist private static String name; + //the list of all the songs private static List songs = new ArrayList(); + //we set up the name of the playlist in the beginning private MusicPlaylist(String name) { instance.name = name; } + //builder pattern magic public static MusicPlaylist getInstance(String name) { if (instance == null) { synchronized (MusicPlaylist.class) { @@ -23,11 +29,13 @@ public static MusicPlaylist getInstance(String name) { return instance; } + //we want to add new songs public static void addSong(Song newSong) { instance.songs.add((newSong)); } + //we want to see the playlist public static void showPlaylist() { for(Song listSong:songs) diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Song.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Song.java index 7c33bcba7..1b7cf6ac8 100644 --- a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Song.java +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Song.java @@ -1,5 +1,6 @@ package clean.code.design_patterns.requirements; +//builder design pattern public class Song { private String name; private String artistName; @@ -17,6 +18,7 @@ public void listDetails() System.out.println("---"); } + //Song constructor private Song(Builder builder) { this.userName = builder.userName; @@ -26,12 +28,15 @@ private Song(Builder builder) this.name = builder.name; } + //builder class public static class Builder { private String name; private String artistName; private String duration; private String genre; private String userName; + //the song is required to have a name + //so we use it in the builder constructor public Builder(String nameVal) { this.name = nameVal; @@ -61,6 +66,7 @@ public Builder setUser(String user) return this; } + //build the Song public Song build() { return new Song(this); diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/User.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/User.java index 3442295d3..8f06c03a7 100644 --- a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/User.java +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/User.java @@ -1,5 +1,6 @@ package clean.code.design_patterns.requirements; +//music streaming user profile public class User { private String userName; @@ -11,14 +12,18 @@ public String getUserName() { return this.userName; } + //each user is able to add songs public void addSong(Song newSong) { + //the singleton in action MusicPlaylist playlist = MusicPlaylist.getInstance("Party Mix 2023"); playlist.addSong(newSong); } + //each user is able to see the playlist public void showPlaylist() { + //the singleton in action MusicPlaylist playlist = MusicPlaylist.getInstance("Party Mix 2023"); playlist.showPlaylist(); }