From 89c57af2dc176a9bbeb71edf113405c085d7c915 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 12 Jun 2023 11:23:53 +0300 Subject: [PATCH] Curs9 --- src/Curs9/Account.java | 10 +++ src/Curs9/Angajat.java | 21 ++++++ src/Curs9/Atm.java | 92 ++++++++++++++++++++++++ src/Curs9/CurrentAccount.java | 36 ++++++++++ src/Curs9/Developer.java | 41 +++++++++++ src/Curs9/InsuficientFundsException.java | 9 +++ src/Curs9/InvalidAmountException.java | 9 +++ src/Curs9/Laptop.java | 48 +++++++++++++ src/Curs9/MobilePhone.java | 18 +++++ src/Curs9/Product.java | 10 +++ src/Curs9/TestInterface.java | 16 +++++ src/Curs9/TestProduct.java | 19 +++++ src/Curs9/Tester.java | 39 ++++++++++ 13 files changed, 368 insertions(+) create mode 100644 src/Curs9/Account.java create mode 100644 src/Curs9/Angajat.java create mode 100644 src/Curs9/Atm.java create mode 100644 src/Curs9/CurrentAccount.java create mode 100644 src/Curs9/Developer.java create mode 100644 src/Curs9/InsuficientFundsException.java create mode 100644 src/Curs9/InvalidAmountException.java create mode 100644 src/Curs9/Laptop.java create mode 100644 src/Curs9/MobilePhone.java create mode 100644 src/Curs9/Product.java create mode 100644 src/Curs9/TestInterface.java create mode 100644 src/Curs9/TestProduct.java create mode 100644 src/Curs9/Tester.java diff --git a/src/Curs9/Account.java b/src/Curs9/Account.java new file mode 100644 index 0000000..5ac3b2a --- /dev/null +++ b/src/Curs9/Account.java @@ -0,0 +1,10 @@ +package Curs9; + +public interface Account { + + public void deposit(double amount) throws InvalidAmountException; + public void withdraw(double amount) throws InsuficientFundsException; + public void checkBalance(); + + +} diff --git a/src/Curs9/Angajat.java b/src/Curs9/Angajat.java new file mode 100644 index 0000000..2cdfa8d --- /dev/null +++ b/src/Curs9/Angajat.java @@ -0,0 +1,21 @@ +package Curs9; + +public interface Angajat { + + void setName(String name); + public String getName(); + + public void setEmail(String email); + public String getEmail(); + + public void setDepartment(String departament); + public String getDepartament(); + + + // public void testCeva(); + + default void printDepartament() { + System.out.println("QA"); + } + +} diff --git a/src/Curs9/Atm.java b/src/Curs9/Atm.java new file mode 100644 index 0000000..a1f03b7 --- /dev/null +++ b/src/Curs9/Atm.java @@ -0,0 +1,92 @@ +package Curs9; + +import java.util.Scanner; + +/* +Simulam lucrul cu un ATM +avem 3 operatiuni: +1. withdraw; +2. deposit +3. checkBalance + +Intrebam userul ce operatiune vrea sa faca +Daca vrea withdraw (balance = balance - amount) si printam soldul +-> daca withdraw este mai mare decat balanta arunc InsuficientFuds +Daca vrea deposit (balance = balance+amount) si printam soldul +-> daca amount <=0 throw InvalidAmountException +Daca vrea checkBalance (printam soldul) + +Programul face parte dintr-u intreg sistem bancar, ceea ce implica multiple conturi (curent/de economii/credit/etc) +Toate conturile au aceleasi 3 operatiuni, dar implementari specifice +noi implementam ATM pe cont curent + +Dupa ce utilizatorul efectueaza o operatiune, il intrebam daca vrea sa continue + +*/ + +public class Atm { + + double amount; + static Scanner scan = new Scanner(System.in); + + public static void main(String[] args) { + CurrentAccount acc = new CurrentAccount(); + acc.balance=1000; + + Atm atm = new Atm(); + + boolean flag = true; + + while(flag) { + //Scanner scan = new Scanner(System.in); + + try { + atm.atmOperations(acc); + System.out.println("Do you wat to continue? "); + flag = scan.nextBoolean(); + + } catch (InvalidAmountException | InsuficientFundsException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + } + + public void atmOperations(CurrentAccount obj) throws InvalidAmountException, InsuficientFundsException { + //Scanner scan = new Scanner(System.in); + System.out.println("Hi, available operations are:"); + System.out.println("1. Deposit"); + System.out.println("2. Withdraw"); + System.out.println("3. Check balance"); + + int option = scan.nextInt(); + + switch(option) { + case 1: + System.out.println("Please enter the deposit amount: "); + double amount = scan.nextDouble(); + obj.deposit(amount); + break; + + case 2: + System.out.println("Please enter the withdraw amount: "); + double amount2 = scan.nextDouble(); + obj.withdraw(amount2); + break; + + case 3: + obj.checkBalance(); + break; + + default: + System.out.println("Invalid option!"); + + } + + //scan.close(); + + } + +} diff --git a/src/Curs9/CurrentAccount.java b/src/Curs9/CurrentAccount.java new file mode 100644 index 0000000..347a4de --- /dev/null +++ b/src/Curs9/CurrentAccount.java @@ -0,0 +1,36 @@ +package Curs9; + +public class CurrentAccount implements Account{ + + public double balance; + + @Override + public void deposit(double amount) throws InvalidAmountException { + + if(amount <=0) { + throw new InvalidAmountException(amount + " is not valid"); + } + balance = balance + amount; + // System.out.println("Current balance is: "+balance); + checkBalance(); + + } + + @Override + public void withdraw(double amount) throws InsuficientFundsException { + if (amount > balance) { + throw new InsuficientFundsException("You do not have enough funds!"); + } + balance = balance - amount; + // System.out.println("Current balance is: "+ balance); + checkBalance(); + } + + @Override + public void checkBalance() { + System.out.println("Current balance is: "+ balance); + + } + + +} diff --git a/src/Curs9/Developer.java b/src/Curs9/Developer.java new file mode 100644 index 0000000..11e9744 --- /dev/null +++ b/src/Curs9/Developer.java @@ -0,0 +1,41 @@ +package Curs9; + +public class Developer implements Angajat{ + + String name; + String email; + String departament; + + @Override + public void setName(String name) { + this.name=name; + } + + @Override + public String getName() { + return name; + } + + @Override + public void setEmail(String email) { + this.email = email; + } + + @Override + public String getEmail() { + return email; + } + + @Override + public void setDepartment(String departament) { + // TODO Auto-generated method stub + this.departament=departament; + } + + @Override + public String getDepartament() { + // TODO Auto-generated method stub + return departament; + } + +} diff --git a/src/Curs9/InsuficientFundsException.java b/src/Curs9/InsuficientFundsException.java new file mode 100644 index 0000000..032009a --- /dev/null +++ b/src/Curs9/InsuficientFundsException.java @@ -0,0 +1,9 @@ +package Curs9; + +public class InsuficientFundsException extends Exception{ + + + public InsuficientFundsException(String mesaj) { + super(mesaj); + } +} diff --git a/src/Curs9/InvalidAmountException.java b/src/Curs9/InvalidAmountException.java new file mode 100644 index 0000000..40a1c3b --- /dev/null +++ b/src/Curs9/InvalidAmountException.java @@ -0,0 +1,9 @@ +package Curs9; + +public class InvalidAmountException extends Exception{ + + public InvalidAmountException(String mesaj) { + super(mesaj); + } + +} diff --git a/src/Curs9/Laptop.java b/src/Curs9/Laptop.java new file mode 100644 index 0000000..4982e5a --- /dev/null +++ b/src/Curs9/Laptop.java @@ -0,0 +1,48 @@ +package Curs9; + +public class Laptop extends Product{ + + private int buyingPrice; + private int vat; + private int adaos; + + public Laptop(int buyingPrice, int vat, int adaos) { + setBuyingPrice(buyingPrice); /// este acelasi lucru cu this.buyigPrice=buyigPrice; + setVat(vat); + setAdaos(adaos); + }//oprim atribuirea directa + + public int getBuyingPrice() { + return buyingPrice; + } + + private void setBuyingPrice(int buyingPrice) { + this.buyingPrice = buyingPrice; + } + + public int getVat() { + return vat; + } + + private void setVat(int vat) { + this.vat = vat; + } + + public int getAdaos() { + return adaos; + } + + private void setAdaos(int adaos) { + this.adaos = adaos; + } + + + + @Override + public int calculatePrice() { + return buyingPrice + vat+adaos; + } + + + +} diff --git a/src/Curs9/MobilePhone.java b/src/Curs9/MobilePhone.java new file mode 100644 index 0000000..65867b2 --- /dev/null +++ b/src/Curs9/MobilePhone.java @@ -0,0 +1,18 @@ +package Curs9; + +public class MobilePhone extends Product { + + private int buyingPrice; + private int vat; + + public MobilePhone(int buyingPrice, int vat) { + this.buyingPrice=buyingPrice; + this.vat=vat; + } + + @Override + public int calculatePrice() { + return buyingPrice+vat; + } + +} diff --git a/src/Curs9/Product.java b/src/Curs9/Product.java new file mode 100644 index 0000000..fa2456b --- /dev/null +++ b/src/Curs9/Product.java @@ -0,0 +1,10 @@ +package Curs9; + +public abstract class Product { + + public abstract int calculatePrice(); + + public void productRating() { + System.out.println("Best product ever!"); + } +} diff --git a/src/Curs9/TestInterface.java b/src/Curs9/TestInterface.java new file mode 100644 index 0000000..5842c8b --- /dev/null +++ b/src/Curs9/TestInterface.java @@ -0,0 +1,16 @@ +package Curs9; + +public class TestInterface { + + public static void main(String[] args) { + // TODO Auto-generated method stub + + Tester t1 = new Tester(); + t1.setEmail("mada@mada.com"); + t1.setName("Mada"); + + Developer dev1 = new Developer(); + dev1.printDepartament(); +} + +} diff --git a/src/Curs9/TestProduct.java b/src/Curs9/TestProduct.java new file mode 100644 index 0000000..b5c3aa6 --- /dev/null +++ b/src/Curs9/TestProduct.java @@ -0,0 +1,19 @@ +package Curs9; + +public class TestProduct { + + public static void main(String[] args) { + // TODO Auto-generated method stub + + Laptop laptop = new Laptop(123,19,5); + System.out.println(laptop.calculatePrice()); + laptop.productRating(); + + System.out.println("------------------"); + + MobilePhone mobile = new MobilePhone(100, 19); + System.out.println(mobile.calculatePrice()); //nu are return type, trebuie printat cu sysout + mobile.productRating();//cum metoda nu este abstracta, o putem apela direct fara instanta + } + +} diff --git a/src/Curs9/Tester.java b/src/Curs9/Tester.java new file mode 100644 index 0000000..af1b68e --- /dev/null +++ b/src/Curs9/Tester.java @@ -0,0 +1,39 @@ +package Curs9; + +public class Tester implements Angajat { + + String name; + String email; + + @Override + public void setName(String name) { + this.name=name; + } + + @Override + public String getName() { + return name; + } + + @Override + public void setEmail(String email) { + this.email = email; + } + + @Override + public String getEmail() { + return email; + } + + @Override + public void setDepartment(String departament) { + // TODO Auto-generated method stub + + } + + @Override + public String getDepartament() { + // TODO Auto-generated method stub + return null; + } +}