Verifying Card and PIN at ATM
Go through the code, and try to make sequence diagram from it.
import java.util.*;
class Card{
int cardno;
int pin;
public Card(int cardno,int pin){this.cardno=cardno;this.pin=pin;}
public int getCard(){return cardno;}
public int getPIN(){return pin;}
}
class Customer{
int id;
Scanner sc = new Scanner(System.in);
String name;
Card card;
public Customer(int id,String name, Card c){
this.id = id;
this.name = name;
card = c;
}
public int getID(){return id;}
public int getCard(){int id = sc.nextInt();return id;}
public int getPIN(){int id = sc.nextInt();return id;}
}
class ATM{
ArrayList<Card> cards = new ArrayList<Card>();
int i;
public ATM(){
cards.add(new Card(1,1234));
cards.add(new Card(2,1235));
cards.add(new Card(3,1236));
cards.add(new Card(4,1237));
}
public boolean verifyCard(int id){
for(i=0;i<cards.size();i++){
if(cards.get(i).getCard() == id){
return true;
}
}
return false;
}
public boolean verifyPIN(int pin ){
for(i=0;i<cards.size();i++){
if(cards.get(i).getPIN() == pin){
return true;
}
}
return false;
}
}
class ATMController{
ATMUI ui = new ATMUI();
Customer cus = null;
boolean flag = false;
ATM atm = new ATM();
public void request_for_card(Customer c){
cus = c;
ui.request_for_card();
}
public boolean validateCard(){
int id = cus.getCard();
flag = atm.verifyCard(id);
return flag;
}
public boolean validatePIN(){
ui.request_for_pin();
int pin = cus.getPIN();
flag = atm.verifyPIN(pin);
return flag;
}
public void show_error_msg(){
ui.show_error_msg();
}
public void show_menu(){
ui.show_menu();
}
}
class ATMUI{
public void request_for_card(){
System.out.println("Enter Card: ");
}
public void request_for_pin(){
System.out.println("Enter PIN: ");
}
public void show_error_msg(){
System.out.println("Wrong Card!!!");
}
public void show_menu(){
System.out.println("1.Statement\n2.Withdraw");
}
}
class check_card_pin{
public static void main(String[] arrr){
Card cd1 = new Card(11,1234);
Card cd2 = new Card(21,1235);
Customer c1 = new Customer(1, "Ramesh",cd1);
Customer c2 = new Customer(2, "Mahesh",cd2);
ATMController controller = new ATMController();
controller.request_for_card(c1);
boolean flag = controller.validateCard();
if(flag == true){
flag = controller.validatePIN();
if(flag == true){
controller.show_menu();
}else controller.show_error_msg();
}else controller.show_error_msg();
}
}