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 |