From 5955f04e800ed739b4fdce809148e0f54a299d63 Mon Sep 17 00:00:00 2001 From: Filispanu Date: Sat, 15 Apr 2023 02:09:46 -0700 Subject: [PATCH 1/2] am adaugat o clasa --- _1_basics/src/main/java/code/_3_in_class/Salut.java | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 _1_basics/src/main/java/code/_3_in_class/Salut.java 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..be950a352 --- /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("Hello world" + + ""); + } +} From 2ea0771a81a2d29bab935522882427a54a98e01e Mon Sep 17 00:00:00 2001 From: Filispanu Date: Fri, 19 May 2023 12:22:29 -0700 Subject: [PATCH 2/2] initial commit --- .../design_patterns/requirements/Main.java | 8 ----- .../requirements/observer/Main.java | 29 ++++++++++++++++ .../requirements/observer/Observer.java | 5 +++ .../requirements/observer/StockClient.java | 14 ++++++++ .../requirements/observer/StockMarket.java | 34 +++++++++++++++++++ .../requirements/observer/Subject.java | 7 ++++ .../strategy/CreditCardStrategy.java | 20 +++++++++++ .../requirements/strategy/Main.java | 20 +++++++++++ .../requirements/strategy/PayPalStrategy.java | 16 +++++++++ .../strategy/PaymentProcessor.java | 13 +++++++ .../strategy/PaymentStrategy.java | 5 +++ 11 files changed, 163 insertions(+), 8 deletions(-) delete mode 100644 clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Main.java create mode 100644 clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/observer/Main.java create mode 100644 clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/observer/Observer.java create mode 100644 clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/observer/StockClient.java create mode 100644 clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/observer/StockMarket.java create mode 100644 clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/observer/Subject.java create mode 100644 clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/strategy/CreditCardStrategy.java create mode 100644 clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/strategy/Main.java create mode 100644 clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/strategy/PayPalStrategy.java create mode 100644 clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/strategy/PaymentProcessor.java create mode 100644 clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/strategy/PaymentStrategy.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 deleted file mode 100644 index 8a9fccb7b..000000000 --- a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/Main.java +++ /dev/null @@ -1,8 +0,0 @@ -package clean.code.design_patterns.requirements; - -public class Main { - - public static void main(String[] args) { - //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/observer/Main.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/observer/Main.java new file mode 100644 index 000000000..4e0931a8c --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/observer/Main.java @@ -0,0 +1,29 @@ +package clean.code.design_patterns.requirements.observer; + +// Usage example + public class Main { + public static void main(String[] args) { + // Create subject + StockMarket stockMarket = new StockMarket(); + + // Create observers + Observer client1 = new StockClient("Client 1"); + Observer client2 = new StockClient("Client 2"); + Observer client3 = new StockClient("Client 3"); + + // Register observers + stockMarket.registerObserver(client1); + stockMarket.registerObserver(client2); + stockMarket.registerObserver(client3); + + // Set stock data, which will notify the observers + stockMarket.setStockData("ABC", 100.0); + stockMarket.setStockData("XYZ", 150.0); + + // Unregister observer + stockMarket.unregisterObserver(client2); + + // Set stock data again, only client1 and client3 will be notified + stockMarket.setStockData("DEF", 200.0); + } +} diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/observer/Observer.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/observer/Observer.java new file mode 100644 index 000000000..316c07b9a --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/observer/Observer.java @@ -0,0 +1,5 @@ +package clean.code.design_patterns.requirements.observer; +// Observer interface +interface Observer { + void update(String stockName, double price); +} diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/observer/StockClient.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/observer/StockClient.java new file mode 100644 index 000000000..e5f3ea0a6 --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/observer/StockClient.java @@ -0,0 +1,14 @@ +package clean.code.design_patterns.requirements.observer; +// Concrete observer class +class StockClient implements Observer { + private String name; + + public StockClient(String name) { + this.name = name; + } + + @Override + public void update(String stockName, double price) { + System.out.println(name + " received an update for " + stockName + ": $" + price); + } +} \ 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/observer/StockMarket.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/observer/StockMarket.java new file mode 100644 index 000000000..25639dacb --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/observer/StockMarket.java @@ -0,0 +1,34 @@ +package clean.code.design_patterns.requirements.observer; + +import java.util.ArrayList; +import java.util.List; + +// Concrete subject class +class StockMarket implements Subject { + private List observers = new ArrayList<>(); + private String stockName; + private double price; + + public void setStockData(String stockName, double price) { + this.stockName = stockName; + this.price = price; + notifyObservers(); + } + + @Override + public void registerObserver(Observer observer) { + observers.add(observer); + } + + @Override + public void unregisterObserver(Observer observer) { + observers.remove(observer); + } + + @Override + public void notifyObservers() { + for (Observer observer : observers) { + observer.update(stockName, price); + } + } +} diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/observer/Subject.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/observer/Subject.java new file mode 100644 index 000000000..0c7698fa9 --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/observer/Subject.java @@ -0,0 +1,7 @@ +package clean.code.design_patterns.requirements.observer; +// Subject interface +interface Subject { + void registerObserver(Observer observer); + void unregisterObserver(Observer observer); + void notifyObservers(); +} diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/strategy/CreditCardStrategy.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/strategy/CreditCardStrategy.java new file mode 100644 index 000000000..6fec33eda --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/strategy/CreditCardStrategy.java @@ -0,0 +1,20 @@ +package clean.code.design_patterns.requirements.strategy; + +// Concrete strategy classes +class CreditCardStrategy implements PaymentStrategy { + private String cardNumber; + private String expiryDate; + private String cvv; + + public CreditCardStrategy(String cardNumber, String expiryDate, String cvv) { + this.cardNumber = cardNumber; + this.expiryDate = expiryDate; + this.cvv = cvv; + } + + @Override + public void pay(double amount) { + System.out.println("Paying $" + amount + " using credit card: " + cardNumber); + // Add logic for credit card payment processing + } +} \ 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/strategy/Main.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/strategy/Main.java new file mode 100644 index 000000000..2a58473ac --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/strategy/Main.java @@ -0,0 +1,20 @@ +package clean.code.design_patterns.requirements.strategy; +// Usage example +public class Main { + public static void main(String[] args) { + // Create payment processor + PaymentProcessor paymentProcessor = new PaymentProcessor(); + + // Set credit card payment strategy + paymentProcessor.setPaymentStrategy(new CreditCardStrategy("1234567890", "12/25", "123")); + + // Process payment + paymentProcessor.processPayment(100.0); + + // Set PayPal payment strategy + paymentProcessor.setPaymentStrategy(new PayPalStrategy("example@gmail.com", "password")); + + // Process payment + paymentProcessor.processPayment(50.0); + } +} \ 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/strategy/PayPalStrategy.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/strategy/PayPalStrategy.java new file mode 100644 index 000000000..9619518fa --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/strategy/PayPalStrategy.java @@ -0,0 +1,16 @@ +package clean.code.design_patterns.requirements.strategy; +class PayPalStrategy implements PaymentStrategy { + private String email; + private String password; + + public PayPalStrategy(String email, String password) { + this.email = email; + this.password = password; + } + + @Override + public void pay(double amount) { + System.out.println("Paying $" + amount + " using PayPal account: " + email); + // Add logic for PayPal payment processing + } +} \ 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/strategy/PaymentProcessor.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/strategy/PaymentProcessor.java new file mode 100644 index 000000000..a93946d66 --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/strategy/PaymentProcessor.java @@ -0,0 +1,13 @@ +package clean.code.design_patterns.requirements.strategy; + // Context class + class PaymentProcessor { + private PaymentStrategy paymentStrategy; + + public void setPaymentStrategy(PaymentStrategy paymentStrategy) { + this.paymentStrategy = paymentStrategy; + } + + public void processPayment(double amount) { + paymentStrategy.pay(amount); + } + } diff --git a/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/strategy/PaymentStrategy.java b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/strategy/PaymentStrategy.java new file mode 100644 index 000000000..f9d834ec8 --- /dev/null +++ b/clean_code_projects/_2_project_requirements_design_patterns/src/main/java/clean/code/design_patterns/requirements/strategy/PaymentStrategy.java @@ -0,0 +1,5 @@ +package clean.code.design_patterns.requirements.strategy; +// Strategy interface +interface PaymentStrategy { + void pay(double amount); +}