0% found this document useful (0 votes)
107 views34 pages

Exercise-1 Aim: Use Case Diagram For Librarian Scenario: Sheet No: Date

The document describes using the builder design pattern to create different types and sizes of pizzas and drinks. Abstract classes like VegPizza and NonVegPizza define common behaviors that concrete subclasses like SmallCheezePizza and MediumOnionPizza implement to represent specific products. The builder pattern allows constructing complex objects step-by-step through an interface.

Uploaded by

Rama Priya
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
107 views34 pages

Exercise-1 Aim: Use Case Diagram For Librarian Scenario: Sheet No: Date

The document describes using the builder design pattern to create different types and sizes of pizzas and drinks. Abstract classes like VegPizza and NonVegPizza define common behaviors that concrete subclasses like SmallCheezePizza and MediumOnionPizza implement to represent specific products. The builder pattern allows constructing complex objects step-by-step through an interface.

Uploaded by

Rama Priya
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 34

Sheet No:

Date:

Exercise-1
Aim: Use case Diagram for Librarian Scenario
Sheet No:

Date:

Exercise-
Aim: Using UML design Abstract Factory Design Pattern
Source Code:
import java.io.*;
interface Bank{
String getBankName();
}
class HDFC implements Bank{
private final String BNAME;
public HDFC(){
BNAME="HDFC BANK";
}
public String getBankName() {
return BNAME;
}
}
class ICICI implements Bank{
private final String BNAME;
ICICI(){
BNAME="ICICI BANK";
}
public String getBankName() {
return BNAME;
}
}
class SBI implements Bank{
private final String BNAME;
public SBI(){
BNAME="SBI BANK";
}
public String getBankName(){
return BNAME;
}
}
abstract class Loan{
protected double rate;
abstract void getInterestRate(double rate);
public void calculateLoanPayment(double loanamount, int years)
{
/*
to calculate the monthly loan payment i.e. EMI

rate=annual interest rate/12*100;


n=number of monthly installments;
1year=12 months.
so, n=years*12;

*/

double EMI;
int n;

n=years*12;
rate=rate/1200;
EMI=((rate*Math.pow((1+rate),n))/((Math.pow((1+rate),n))-1))*loanamount;

System.out.println("your monthly EMI is "+ EMI +" for the amount"+loanamount+" you have
borrowed");
}
}// end of the Loan abstract class.
class HomeLoan extends Loan{
public void getInterestRate(double r){
rate=r;
}
}//End of the HomeLoan class.
class BussinessLoan extends Loan{
public void getInterestRate(double r){
rate=r;
}

}//End of the BusssinessLoan class.


class EducationLoan extends Loan{
public void getInterestRate(double r){
rate=r;
}
}//End of the EducationLoan class.
abstract class AbstractFactory{
public abstract Bank getBank(String bank);
public abstract Loan getLoan(String loan);
}
class BankFactory extends AbstractFactory{
public Bank getBank(String bank){
if(bank == null){
return null;
}
if(bank.equalsIgnoreCase("HDFC")){
return new HDFC();
} else if(bank.equalsIgnoreCase("ICICI")){
return new ICICI();
} else if(bank.equalsIgnoreCase("SBI")){
return new SBI();
}
return null;
}
public Loan getLoan(String loan) {
return null;
}
}//End of the BankFactory class.
class LoanFactory extends AbstractFactory{
public Bank getBank(String bank){
return null;
}

public Loan getLoan(String loan){


if(loan == null){
return null;
}
if(loan.equalsIgnoreCase("Home")){
return new HomeLoan();
} else if(loan.equalsIgnoreCase("Business")){
return new BussinessLoan();
} else if(loan.equalsIgnoreCase("Education")){
return new EducationLoan();
}
return null;
}

}
class FactoryCreator {
public static AbstractFactory getFactory(String choice){
if(choice.equalsIgnoreCase("Bank")){
return new BankFactory();
} else if(choice.equalsIgnoreCase("Loan")){
return new LoanFactory();
}
return null;
}
}//End of the FactoryCreator.

public class AbstractFactoryPatternExample {


public static void main(String args[])throws IOException {

BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

System.out.print("Enter the name of Bank from where you want to take loan amount: ");
String bankName=br.readLine();

System.out.print("\n");
System.out.print("Enter the type of loan e.g. home loan or business loan or education loan :
");

String loanName=br.readLine();
AbstractFactory bankFactory = FactoryCreator.getFactory("Bank");
Bank b=bankFactory.getBank(bankName);

System.out.print("\n");
System.out.print("Enter the interest rate for "+b.getBankName()+ ": ");

double rate=Double.parseDouble(br.readLine());
System.out.print("\n");
System.out.print("Enter the loan amount you want to take: ");

double loanAmount=Double.parseDouble(br.readLine());
System.out.print("\n");
System.out.print("Enter the number of years to pay your entire loan amount: ");
int years=Integer.parseInt(br.readLine());
System.out.print("\n");
System.out.println("you are taking the loan from "+ b.getBankName());

AbstractFactory loanFactory = FactoryCreator.getFactory("Loan");


Loan l=loanFactory.getLoan(loanName);
l.getInterestRate(rate);
l.calculateLoanPayment(loanAmount,years);
}
}//End of the AbstractFactoryPatternExample

Output:
Sheet No:

Date:

Exercise-
Aim: Using UML design Builder Design Pattern

Source Code:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
interface Item
{
public String name();
public String size();
public float price();
}// End of the interface Item.
abstract class Pizza implements Item
{
public abstract float price();
}
abstract class ColdDrink implements Item
{
public abstract float price();
}
abstract class VegPizza extends Pizza
{
public abstract float price();

public abstract String name();

public abstract String size();


}// End of the abstract class VegPizza.
abstract class NonVegPizza extends Pizza
{
public abstract float price();
public abstract String name();
public abstract String size();
}// End of the abstract class NonVegPizza.
class SmallCheezePizza extends VegPizza
{
public float price()
{
return 170.f;
}
public String name()
{
return "Cheeze Pizza";
}
public String size()
{
return "Small size";
}
}// End of the SmallCheezePizza class.
class MediumCheezePizza extends VegPizza{
public float price()
{
return 220.f;
}
public String name()
{
return "Cheeze Pizza";
}
public String size()
{
return "Medium Size";
}
}// End of the MediumCheezePizza class.

class LargeCheezePizza extends VegPizza{


public float price()
{
return 260.0f;
}
public String name()
{
return "Cheeze Pizza";
}
public String size()
{
return "Large Size";
}
}// End of the LargeCheezePizza class.
class ExtraLargeCheezePizza extends VegPizza{
public float price()
{
return 300.f;
}
public String name()
{
return "Cheeze Pizza";
}
public String size()
{
return "Extra-Large Size";
}
}// End of the ExtraLargeCheezePizza class.
class SmallOnionPizza extends VegPizza
{
public float price()
{
return 120.0f;
}
public String name()
{
return "Onion Pizza";
}
public String size()
{
return "Small Size";
}
}// End of the SmallOnionPizza class
class MediumOnionPizza extends VegPizza
{
public float price()
{
return 150.0f;
}
public String name()
{
return "Onion Pizza";
}
public String size()
{
return "Medium Size";
}
}// End of the MediumOnionPizza class.
class LargeOnionPizza extends VegPizza
{
public float price()
{
return 180.0f;
}
public String name()
{
return "Onion Pizza";
}
public String size()
{
return "Large size";
}
}// End of the LargeOnionPizza class.
class ExtraLargeOnionPizza extends VegPizza
{
public float price()
{
return 200.0f;
}
public String name()
{
return "Onion Pizza";
}
public String size()
{
return "Extra-Large Size";
}
}// End of the ExtraLargeOnionPizza class
class SmallMasalaPizza extends VegPizza
{
public float price()
{
return 100.0f;
}
public String name()
{
return "Masala Pizza";
}
public String size()
{
return "Samll Size";
}
}// End of the SmallMasalaPizza class
class MediumMasalaPizza extends VegPizza
{
public float price()
{
return 120.0f;
}
public String name()
{
return "Masala Pizza";
}
public String size()
{
return "Medium Size";
}
}
class LargeMasalaPizza extends VegPizza
{
public float price()
{
return 150.0f;
}
public String name()
{
return "Masala Pizza";
}
public String size()
{
return "Large Size";
}
} //End of the LargeMasalaPizza class
class ExtraLargeMasalaPizza extends VegPizza
{
public float price()
{
return 180.0f;
}
public String name()
{
return "Masala Pizza";
}
public String size()
{
return "Extra-Large Size";
}
}// End of the ExtraLargeMasalaPizza class
class SmallNonVegPizza extends NonVegPizza
{
public float price()
{
return 180.0f;
}
public String name()
{
return "Non-Veg Pizza";
}
public String size()
{
return "Samll Size";
}
}
class MediumNonVegPizza extends NonVegPizza
{
public float price()
{
return 200.0f;
}
public String name()
{
return "Non-Veg Pizza";
}
public String size()
{
return "Medium Size";
}
}
class LargeNonVegPizza extends NonVegPizza
{
public float price()
{
return 220.0f;
}
public String name()
{
return "Non-Veg Pizza";
}
public String size()
{
return "Large Size";
}
}// End of the LargeNonVegPizza class
class ExtraLargeNonVegPizza extends NonVegPizza
{
public float price()
{
return 250.0f;
}
public String name()
{
return "Non-Veg Pizza";
}
public String size()
{
return "Extra-Large Size";
}
}
abstract class Pepsi extends ColdDrink
{
public abstract String name();
public abstract String size();
public abstract float price();
}// End of the Pepsi class
abstract class Coke extends ColdDrink
{
public abstract String name();
public abstract String size();
public abstract float price();
}// End of the Coke class
class SmallPepsi extends Pepsi
{
public String name()
{
return "300 ml Pepsi";
}
public float price()
{
return 25.0f;
}
public String size()
{
return "Small Size";
}
}// End of the SmallPepsi class

class MediumPepsi extends Pepsi


{
public String name()
{
return "500 ml Pepsi";
}
public String size()
{
return "Medium Size";
}
public float price()
{
return 35.0f;
}
}// End of the MediumPepsi class
class LargePepsi extends Pepsi
{
public String name()
{
return "750 ml Pepsi";
}
public String size()
{
return "Large Size";
}
public float price()
{
return 50.0f;
}
}// End of the LargePepsi class
class SmallCoke extends Coke
{
public String name()
{
return "300 ml Coke";
}
public String size() {
return "Small Size";
}
public float price()
{

return 25.0f;
}
}// End of the SmallCoke class
class MediumCoke extends Coke
{
public String name()
{
return "500 ml Coke";
}
public String size()
{
return "Medium Size";
}
public float price()
{
return 35.0f;
}
}// End of the MediumCoke class

class LargeCoke extends Coke


{
public String name()
{
return "750 ml Coke";
}
public String size()
{
return "Large Size";
}
public float price()
{
return 50.0f;
}
}// End of the LargeCoke class
class OrderedItems
{
List<Item> items=new ArrayList<Item>();
public void addItems(Item item)
{
items.add(item);
}
public float getCost()
{
float cost=0.0f;
for (Item item : items)
{
cost+=item.price();
}
return cost;
}
public void showItems()
{
for (Item item : items)
{
System.out.println("Item is:" +item.name());
System.out.println("Size is:" +item.size());
System.out.println("Price is: " +item.price());
}
}
}// End of the OrderedItems class
class OrderBuilder
{
public OrderedItems preparePizza() throws IOException
{
OrderedItems itemsOrder=new OrderedItems();
BufferedReader br =new BufferedReader(new InputStreamReader(System.in));
System.out.println(" Enter the choice of Pizza ");
System.out.println("============================");
System.out.println(" 1. Veg-Pizza ");
System.out.println(" 2. Non-Veg Pizza ");
System.out.println(" 3. Exit ");
System.out.println("============================");
int pizzaandcolddrinkchoice=Integer.parseInt(br.readLine());
switch(pizzaandcolddrinkchoice)
{
case 1:
{
System.out.println("You ordered Veg Pizza");
System.out.println("\n\n");
System.out.println(" Enter the types of Veg-Pizza ");
System.out.println("------------------------------");
System.out.println(" 1.Cheeze Pizza ");
System.out.println(" 2.Onion Pizza ");
System.out.println(" 3.Masala Pizza ");
System.out.println(" 4.Exit ");
System.out.println("------------------------------");
int vegpizzachoice=Integer.parseInt(br.readLine());
switch(vegpizzachoice)
{
case 1:
{
System.out.println("You ordered Cheeze Pizza");
System.out.println("------------------------------------");
System.out.println(" 1. Small Cheeze Pizza ");
System.out.println(" 2. Medium Cheeze Pizza ");
System.out.println(" 3. Large Cheeze Pizza ");
System.out.println(" 4. Extra-Large Cheeze Pizza ");
System.out.println("------------------------------------");
int cheezepizzasize=Integer.parseInt(br.readLine());
switch(cheezepizzasize)
{
case 1:
itemsOrder.addItems(new SmallCheezePizza());
break;
case 2:
itemsOrder.addItems(new MediumCheezePizza());
break;
case 3:
itemsOrder.addItems(new LargeCheezePizza());
break;
case 4:
itemsOrder.addItems(new ExtraLargeCheezePizza());
break;
}
}
case 2:
{
System.out.println("You ordered Onion Pizza");
System.out.println("Enter the Onion pizza size");
System.out.println("----------------------------------");
System.out.println(" 1. Small Onion Pizza ");
System.out.println(" 2. Medium Onion Pizza ");
System.out.println(" 3. Large Onion Pizza ");
System.out.println(" 4. Extra-Large Onion Pizza ");
System.out.println("----------------------------------");
int onionpizzasize=Integer.parseInt(br.readLine());
switch(onionpizzasize)
{
case 1:
itemsOrder.addItems(new SmallOnionPizza());
break;
case 2:
itemsOrder.addItems(new MediumOnionPizza());
break;
case 3:
itemsOrder.addItems(new LargeOnionPizza());
break;
case 4:
itemsOrder.addItems(new ExtraLargeOnionPizza());
break;
}
}
break;
case 3:
{
System.out.println("You ordered Masala Pizza");
System.out.println("Enter the Masala pizza size");
System.out.println("------------------------------------");
System.out.println(" 1. Small Masala Pizza ");
System.out.println(" 2. Medium Masala Pizza ");
System.out.println(" 3. Large Masala Pizza ");
System.out.println(" 4. Extra-Large Masala Pizza ");
System.out.println("------------------------------------");
int masalapizzasize=Integer.parseInt(br.readLine());
switch(masalapizzasize)
{
case 1:
itemsOrder.addItems(new SmallMasalaPizza());
break;
case 2:
itemsOrder.addItems(new MediumMasalaPizza());
break;
case 3:
itemsOrder.addItems(new LargeMasalaPizza());
break;
case 4:
itemsOrder.addItems(new ExtraLargeMasalaPizza());
break;
}
}
break;
}
}
break;// Veg- pizza choice completed.
case 2:
{
System.out.println("You ordered Non-Veg Pizza");
System.out.println("\n\n");
System.out.println("Enter the Non-Veg pizza size");
System.out.println("------------------------------------");
System.out.println(" 1. Small Non-Veg Pizza ");
System.out.println(" 2. Medium Non-Veg Pizza ");
System.out.println(" 3. Large Non-Veg Pizza ");
System.out.println(" 4. Extra-Large Non-Veg Pizza ");
System.out.println("------------------------------------");
int nonvegpizzasize=Integer.parseInt(br.readLine());
switch(nonvegpizzasize)
{
case 1:
itemsOrder.addItems(new SmallNonVegPizza());
break;
case 2:
itemsOrder.addItems(new MediumNonVegPizza());
break;
case 3:
itemsOrder.addItems(new LargeNonVegPizza());
break;
case 4:
itemsOrder.addItems(new ExtraLargeNonVegPizza());
break;
}
}
break;
default:
{
break;
}
}
System.out.println(" Enter the choice of ColdDrink ");
System.out.println("============================");
System.out.println(" 1. Pepsi ");
System.out.println(" 2. Coke ");
System.out.println(" 3. Exit ");
System.out.println("============================");
int coldDrink=Integer.parseInt(br.readLine());
switch (coldDrink)
{
case 1:
{
System.out.println("You ordered Pepsi ");
System.out.println("Enter the Pepsi Size ");
System.out.println("------------------------");
System.out.println(" 1. Small Pepsi ");
System.out.println(" 2. Medium Pepsi ");
System.out.println(" 3. Large Pepsi ");
System.out.println("------------------------");
Int pepsisize=Integer.parseInt(br.readLine());
switch(pepsisize)
{
case 1:
itemsOrder.addItems(new SmallPepsi());
break;
case 2:
itemsOrder.addItems(newMediumPepsi());
break;
case 3:
itemsOrder.addItems(new LargePepsi());
break;
}
}
break;
case 2:
{
System.out.println("You ordered Coke");
System.out.println("Enter the Coke Size");
System.out.println("------------------------");
System.out.println(" 1. Small Coke ");
System.out.println(" 2. Medium Coke ");
System.out.println(" 3. Large Coke ");
System.out.println(" 4. Extra-Large Coke ");
System.out.println("------------------------");
int cokesize=Integer.parseInt(br.readLine());
switch(cokesize)
{
case 1:
itemsOrder.addItems(new SmallCoke());
break;
case 2:
itemsOrder.addItems(new MediumCoke());
break;
case 3:
itemsOrder.addItems(new LargeCoke());
break;
}
}
break;
default:
{
break;
}

}//End of the Cold-Drink switch


return itemsOrder;
} //End of the preparePizza() method
}
public class BuilderDemo
{
public static void main(String[] args) throws IOException
{
OrderBuilder builder=new OrderBuilder();
OrderedItems orderedItems=builder.preparePizza();
orderedItems.showItems();
System.out.println("\n");
System.out.println("Total Cost : "+ orderedItems.getCost());
}
}

Output:

You might also like