@startuml 

interface Identifiable {
    + Integer getId()
}

class Automobile{
    - model: String
    - brand: String
    + getModel(): String
    + getBrand(): String
    + abstract isWorkable(): boolean
}

class Train{
    - model: String
    - brand: String
    - wagonsCount: Integer
    + getModel(): String
    + getBrand(): String
    + getWagonsCount(): Integer
    + abstract isWorkable(): boolean
}

class Express{
    - route: String
    + getRoute(): String
    + abstract isWorkable(): boolean
}

abstract class Transport{
    - type: String
    - name: String
    # Transport
    # Transport(String, String)
    + getName(): String
    + getType(): String
    + setName(String): void
    + setType(String): void
    + abstract isWorkable(): boolean
}

Automobile "1" *-[#595959,plain]-> Transport                 
Train "1" *-[#595959,plain]-> Transport
Express "1" *-[#595959,plain]-> Train
Identifiable *-[#595959,plain]- Automobile

@enduml
