10Space for diagram notesUMLClass88047013070Item -- -id: String -name: String -unitPrice: BigDecimalUMLClass880340130100LineItem -- itemId: String itemName: String quantity: int unitPrice: BigDecimal Relation94025040110lt=<<<<<- m2=*10;10;10;90UMLClass860140180120Bill -- id: int total: BigDecimal tax: BigDecimal cashByCustomer: BigDecimal balance: BigDecimal -- addLineItem(lineItem: LineItem)UMLClass900010060Cashier -- name: String id: StringRelation9405030110lt=<-10;10;10;90UMLClass2702010060TextUI -- -- -printBill() +start()UMLClass48020250140<<interface>> PointOfSale -- -- createNewBill(): Bill addLineItem(itemId: String, quantity: int) cashByCustomer(amount: String) searchItems(q: String): ListsavBill() saveBill() finishBillSession()Relation3603014030lt=<-120;10;10;10UMLClass490420240120<<interface>> BillManager -- -- createNewBill():Bill addLineItem(itemId: String, quantity: int) cashByCustomer(amount: String) saveBill() finishBillSession()Relation60032030120lt=<-10;100;10;10UMLClass89064010030TaxCalculatorUMLClass0370370100<<interface>> ItemManager -- -- createItem(id: String, name: String, unitPrice: BigDecimal): Item findById(id: String): Item searchItems(q: String): ListRelation180250320140lt=<-10;120;10;10;300;10UMLClass480210250120PointOfSaleImpl -- -- createNewBill(): Bill addLineItem(itemId: String, quantity: int) cashByCustomer(amount: String) searchItems(q: String): List saveBill() finishBillSession()Relation6001503080lt=<<.10;10;10;60UMLClass490600240120BillManagerImpl -- - currentBill:Bill -- createNewBill():Bill addLineItem(itemId: String, quantity: int) cashByCustomer(amount: String) saveBill() finishBillSession()Relation6005303090lt=<<.10;10;10;70UMLClass050037080ItemManagerImpl -- -- createItem(id: String, name: String, unitPrice: BigDecimal) findById(id: String): Item searchItems(q: String): ListRelation1804603060lt=<<.10;10;10;40Relation36438019060lt=<-10;10;170;10;170;40