Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions src/Curs9/Account.java
Original file line number Diff line number Diff line change
@@ -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();


}
21 changes: 21 additions & 0 deletions src/Curs9/Angajat.java
Original file line number Diff line number Diff line change
@@ -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");
}

}
92 changes: 92 additions & 0 deletions src/Curs9/Atm.java
Original file line number Diff line number Diff line change
@@ -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();

}

}
36 changes: 36 additions & 0 deletions src/Curs9/CurrentAccount.java
Original file line number Diff line number Diff line change
@@ -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);

}


}
41 changes: 41 additions & 0 deletions src/Curs9/Developer.java
Original file line number Diff line number Diff line change
@@ -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;
}

}
9 changes: 9 additions & 0 deletions src/Curs9/InsuficientFundsException.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package Curs9;

public class InsuficientFundsException extends Exception{


public InsuficientFundsException(String mesaj) {
super(mesaj);
}
}
9 changes: 9 additions & 0 deletions src/Curs9/InvalidAmountException.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package Curs9;

public class InvalidAmountException extends Exception{

public InvalidAmountException(String mesaj) {
super(mesaj);
}

}
48 changes: 48 additions & 0 deletions src/Curs9/Laptop.java
Original file line number Diff line number Diff line change
@@ -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;
}



}
18 changes: 18 additions & 0 deletions src/Curs9/MobilePhone.java
Original file line number Diff line number Diff line change
@@ -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;
}

}
10 changes: 10 additions & 0 deletions src/Curs9/Product.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package Curs9;

public abstract class Product {

public abstract int calculatePrice();

public void productRating() {
System.out.println("Best product ever!");
}
}
16 changes: 16 additions & 0 deletions src/Curs9/TestInterface.java
Original file line number Diff line number Diff line change
@@ -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();
}

}
19 changes: 19 additions & 0 deletions src/Curs9/TestProduct.java
Original file line number Diff line number Diff line change
@@ -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
}

}
39 changes: 39 additions & 0 deletions src/Curs9/Tester.java
Original file line number Diff line number Diff line change
@@ -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;
}
}