@startuml package com.iluwatar.collectionpipeline { class App { - LOGGER : Logger {static} + App() + main(args : String[]) {static} } class Car { - category : Category - make : String - model : String - year : int + Car(make : String, model : String, yearOfMake : int, category : Category) + equals(obj : Object) : boolean + getCategory() : Category + getMake() : String + getModel() : String + getYear() : int + hashCode() : int } class CarFactory { - CarFactory() + createCars() : List {static} } enum Category { + CONVERTIBLE {static} + JEEP {static} + SEDAN {static} + valueOf(name : String) : Category {static} + values() : Category[] {static} } class FunctionalProgramming { - FunctionalProgramming() + getGroupingOfCarsByCategory(cars : List) : Map> {static} + getModelsAfter2000(cars : List) : List {static} + getSedanCarsOwnedSortedByDate(persons : List) : List {static} } class ImperativeProgramming { - ImperativeProgramming() + getGroupingOfCarsByCategory(cars : List) : Map> {static} + getModelsAfter2000(cars : List) : List {static} + getSedanCarsOwnedSortedByDate(persons : List) : List {static} } class Person { - cars : List + Person(cars : List) + getCars() : List } } Person --> "-cars" Car Car --> "-category" Category @enduml