65 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| @startuml
 | |
| package com.iluwatar.abstractdocument.domain.enums {
 | |
|   enum Property {
 | |
|     + MODEL {static}
 | |
|     + PARTS {static}
 | |
|     + PRICE {static}
 | |
|     + TYPE {static}
 | |
|     + valueOf(name : String) : Property {static}
 | |
|     + values() : Property[] {static}
 | |
|   }
 | |
| }
 | |
| package com.iluwatar.abstractdocument.domain {
 | |
|   class Car {
 | |
|     + Car(properties : Map<String, Object>)
 | |
|   }
 | |
|   interface HasModel {
 | |
|     + getModel() : Optional<String>
 | |
|   }
 | |
|   interface HasParts {
 | |
|     + getParts() : Stream<Part>
 | |
|   }
 | |
|   interface HasPrice {
 | |
|     + getPrice() : Optional<Number>
 | |
|   }
 | |
|   interface HasType {
 | |
|     + getType() : Optional<String>
 | |
|   }
 | |
|   class Part {
 | |
|     + Part(properties : Map<String, Object>)
 | |
|   }
 | |
| }
 | |
| package com.iluwatar.abstractdocument {
 | |
|   abstract class AbstractDocument {
 | |
|     - properties : Map<String, Object>
 | |
|     # AbstractDocument(properties : Map<String, Object>)
 | |
|     + children(key : String, constructor : Function<Map<String, Object>, T>) : Stream<T>
 | |
|     + get(key : String) : Object
 | |
|     + put(key : String, value : Object)
 | |
|     + toString() : String
 | |
|   }
 | |
|   class App {
 | |
|     - LOGGER : Logger {static}
 | |
|     + App()
 | |
|     + main(args : String[]) {static}
 | |
|   }
 | |
|   interface Document {
 | |
|     + children(String, Function<Map<String, Object>, T>) : Stream<T> {abstract}
 | |
|     + get(String) : Object {abstract}
 | |
|     + put(String, Object) {abstract}
 | |
|   }
 | |
| }
 | |
| AbstractDocument ..|> Document 
 | |
| Car ..|> HasModel 
 | |
| Car ..|> HasPrice 
 | |
| Car ..|> HasParts 
 | |
| Car --|> AbstractDocument 
 | |
| HasModel --|> Document 
 | |
| HasParts --|> Document 
 | |
| HasPrice --|> Document 
 | |
| HasType --|> Document 
 | |
| Part ..|> HasType 
 | |
| Part ..|> HasModel 
 | |
| Part ..|> HasPrice 
 | |
| Part --|> AbstractDocument 
 | |
| @enduml |