136 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			136 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								@startuml
							 | 
						||
| 
								 | 
							
								package com.iluwatar.layers.dto {
							 | 
						||
| 
								 | 
							
								  class CakeInfo {
							 | 
						||
| 
								 | 
							
								    + cakeLayerInfos : List<CakeLayerInfo>
							 | 
						||
| 
								 | 
							
								    + cakeToppingInfo : CakeToppingInfo
							 | 
						||
| 
								 | 
							
								    + id : Optional<Long>
							 | 
						||
| 
								 | 
							
								    + CakeInfo(cakeToppingInfo : CakeToppingInfo, cakeLayerInfos : List<CakeLayerInfo>)
							 | 
						||
| 
								 | 
							
								    + CakeInfo(id : Long, cakeToppingInfo : CakeToppingInfo, cakeLayerInfos : List<CakeLayerInfo>)
							 | 
						||
| 
								 | 
							
								    + calculateTotalCalories() : int
							 | 
						||
| 
								 | 
							
								    + toString() : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class CakeLayerInfo {
							 | 
						||
| 
								 | 
							
								    + calories : int
							 | 
						||
| 
								 | 
							
								    + id : Optional<Long>
							 | 
						||
| 
								 | 
							
								    + name : String
							 | 
						||
| 
								 | 
							
								    + CakeLayerInfo(id : Long, name : String, calories : int)
							 | 
						||
| 
								 | 
							
								    + CakeLayerInfo(name : String, calories : int)
							 | 
						||
| 
								 | 
							
								    + toString() : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class CakeToppingInfo {
							 | 
						||
| 
								 | 
							
								    + calories : int
							 | 
						||
| 
								 | 
							
								    + id : Optional<Long>
							 | 
						||
| 
								 | 
							
								    + name : String
							 | 
						||
| 
								 | 
							
								    + CakeToppingInfo(id : Long, name : String, calories : int)
							 | 
						||
| 
								 | 
							
								    + CakeToppingInfo(name : String, calories : int)
							 | 
						||
| 
								 | 
							
								    + toString() : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								package com.iluwatar.layers.entity {
							 | 
						||
| 
								 | 
							
								  class Cake {
							 | 
						||
| 
								 | 
							
								    - id : Long
							 | 
						||
| 
								 | 
							
								    - layers : Set<CakeLayer>
							 | 
						||
| 
								 | 
							
								    - topping : CakeTopping
							 | 
						||
| 
								 | 
							
								    + Cake()
							 | 
						||
| 
								 | 
							
								    + addLayer(layer : CakeLayer)
							 | 
						||
| 
								 | 
							
								    + getId() : Long
							 | 
						||
| 
								 | 
							
								    + getLayers() : Set<CakeLayer>
							 | 
						||
| 
								 | 
							
								    + getTopping() : CakeTopping
							 | 
						||
| 
								 | 
							
								    + setId(id : Long)
							 | 
						||
| 
								 | 
							
								    + setLayers(layers : Set<CakeLayer>)
							 | 
						||
| 
								 | 
							
								    + setTopping(topping : CakeTopping)
							 | 
						||
| 
								 | 
							
								    + toString() : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class CakeLayer {
							 | 
						||
| 
								 | 
							
								    - cake : Cake
							 | 
						||
| 
								 | 
							
								    - calories : int
							 | 
						||
| 
								 | 
							
								    - id : Long
							 | 
						||
| 
								 | 
							
								    - name : String
							 | 
						||
| 
								 | 
							
								    + CakeLayer()
							 | 
						||
| 
								 | 
							
								    + CakeLayer(name : String, calories : int)
							 | 
						||
| 
								 | 
							
								    + getCake() : Cake
							 | 
						||
| 
								 | 
							
								    + getCalories() : int
							 | 
						||
| 
								 | 
							
								    + getId() : Long
							 | 
						||
| 
								 | 
							
								    + getName() : String
							 | 
						||
| 
								 | 
							
								    + setCake(cake : Cake)
							 | 
						||
| 
								 | 
							
								    + setCalories(calories : int)
							 | 
						||
| 
								 | 
							
								    + setId(id : Long)
							 | 
						||
| 
								 | 
							
								    + setName(name : String)
							 | 
						||
| 
								 | 
							
								    + toString() : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class CakeTopping {
							 | 
						||
| 
								 | 
							
								    - cake : Cake
							 | 
						||
| 
								 | 
							
								    - calories : int
							 | 
						||
| 
								 | 
							
								    - id : Long
							 | 
						||
| 
								 | 
							
								    - name : String
							 | 
						||
| 
								 | 
							
								    + CakeTopping()
							 | 
						||
| 
								 | 
							
								    + CakeTopping(name : String, calories : int)
							 | 
						||
| 
								 | 
							
								    + getCake() : Cake
							 | 
						||
| 
								 | 
							
								    + getCalories() : int
							 | 
						||
| 
								 | 
							
								    + getId() : Long
							 | 
						||
| 
								 | 
							
								    + getName() : String
							 | 
						||
| 
								 | 
							
								    + setCake(cake : Cake)
							 | 
						||
| 
								 | 
							
								    + setCalories(calories : int)
							 | 
						||
| 
								 | 
							
								    + setId(id : Long)
							 | 
						||
| 
								 | 
							
								    + setName(name : String)
							 | 
						||
| 
								 | 
							
								    + toString() : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								package com.iluwatar.layers.view {
							 | 
						||
| 
								 | 
							
								  class CakeViewImpl {
							 | 
						||
| 
								 | 
							
								    - LOGGER : Logger {static}
							 | 
						||
| 
								 | 
							
								    - cakeBakingService : CakeBakingService
							 | 
						||
| 
								 | 
							
								    + CakeViewImpl(cakeBakingService : CakeBakingService)
							 | 
						||
| 
								 | 
							
								    + render()
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  interface View {
							 | 
						||
| 
								 | 
							
								    + render() {abstract}
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								package com.iluwatar.layers.app {
							 | 
						||
| 
								 | 
							
								  class App {
							 | 
						||
| 
								 | 
							
								    - cakeBakingService : CakeBakingService {static}
							 | 
						||
| 
								 | 
							
								    + App()
							 | 
						||
| 
								 | 
							
								    - initializeData(cakeBakingService : CakeBakingService) {static}
							 | 
						||
| 
								 | 
							
								    + main(args : String[]) {static}
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								package com.iluwatar.layers.dao {
							 | 
						||
| 
								 | 
							
								  interface CakeDao {
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  interface CakeLayerDao {
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  interface CakeToppingDao {
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								package com.iluwatar.layers.service {
							 | 
						||
| 
								 | 
							
								  interface CakeBakingService {
							 | 
						||
| 
								 | 
							
								    + bakeNewCake(CakeInfo) {abstract}
							 | 
						||
| 
								 | 
							
								    + getAllCakes() : List<CakeInfo> {abstract}
							 | 
						||
| 
								 | 
							
								    + getAvailableLayers() : List<CakeLayerInfo> {abstract}
							 | 
						||
| 
								 | 
							
								    + getAvailableToppings() : List<CakeToppingInfo> {abstract}
							 | 
						||
| 
								 | 
							
								    + saveNewLayer(CakeLayerInfo) {abstract}
							 | 
						||
| 
								 | 
							
								    + saveNewTopping(CakeToppingInfo) {abstract}
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class CakeBakingServiceImpl {
							 | 
						||
| 
								 | 
							
								    - context : AbstractApplicationContext
							 | 
						||
| 
								 | 
							
								    + CakeBakingServiceImpl()
							 | 
						||
| 
								 | 
							
								    + bakeNewCake(cakeInfo : CakeInfo)
							 | 
						||
| 
								 | 
							
								    + getAllCakes() : List<CakeInfo>
							 | 
						||
| 
								 | 
							
								    - getAvailableLayerEntities() : List<CakeLayer>
							 | 
						||
| 
								 | 
							
								    + getAvailableLayers() : List<CakeLayerInfo>
							 | 
						||
| 
								 | 
							
								    - getAvailableToppingEntities() : List<CakeTopping>
							 | 
						||
| 
								 | 
							
								    + getAvailableToppings() : List<CakeToppingInfo>
							 | 
						||
| 
								 | 
							
								    + saveNewLayer(layerInfo : CakeLayerInfo)
							 | 
						||
| 
								 | 
							
								    + saveNewTopping(toppingInfo : CakeToppingInfo)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								CakeInfo -->  "-cakeLayerInfos" CakeLayerInfo
							 | 
						||
| 
								 | 
							
								CakeInfo -->  "-cakeToppingInfo" CakeToppingInfo
							 | 
						||
| 
								 | 
							
								CakeViewImpl -->  "-cakeBakingService" CakeBakingService
							 | 
						||
| 
								 | 
							
								App -->  "-cakeBakingService" CakeBakingService
							 | 
						||
| 
								 | 
							
								Cake -->  "-topping" CakeTopping
							 | 
						||
| 
								 | 
							
								CakeLayer -->  "-cake" Cake
							 | 
						||
| 
								 | 
							
								CakeBakingServiceImpl ..|> CakeBakingService 
							 | 
						||
| 
								 | 
							
								CakeViewImpl ..|> View 
							 | 
						||
| 
								 | 
							
								@enduml
							 |