Question: Write an uml diagramm package decorator trait Pizza: def diameter: Int def price: BigDecimal class Margherita extends Pizza: override def diameter: Int = 2 8

Write an uml diagramm
package decorator
trait Pizza:
def diameter: Int
def price: BigDecimal
class Margherita extends Pizza:
override def diameter: Int =28
override def price: BigDecimal =9
class Funghi extends Margherita:
override def price: BigDecimal =10
class Verdura extends Margherita:
override def price: BigDecimal =11.5
@main def Pizzashop(): Unit =
// pizza Verdura with extra cheese
val p1: Pizza = new ExtraCheese(new Verdura)
// pizza Funghi family size with vegan cheese
val p2: Pizza = new VeganCheese(new FamilyPizza(new Funghi))
println(s"Price of a pizza verdura with extra cheese is ${p1.price}")
println(s"Price of a pizza funghi family size with vegan cheese is ${p2.price}")
trait PizzaDecorator extends Pizza {
protected val pizza: Pizza
}
class ExtraCheese(val pizza: Pizza) extends PizzaDecorator {
override def diameter: Int = pizza.diameter
override def price: BigDecimal = pizza.price +2
}
class VeganCheese(val pizza: Pizza) extends PizzaDecorator {
override def diameter: Int = pizza.diameter
override def price: BigDecimal = pizza.price +1.5
}
class ExtraOnions(val pizza: Pizza) extends PizzaDecorator {
override def diameter: Int = pizza.diameter
override def price: BigDecimal = pizza.price +1
}
class FamilyPizza(val pizza: Pizza) extends PizzaDecorator {
override def diameter: Int =42
override def price: BigDecimal = pizza.price *2
}

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!