@startuml package com.iluwatar.interpreter { class App { - LOGGER : Logger {static} + App() + getOperatorInstance(s : String, left : Expression, right : Expression) : Expression {static} + isOperator(s : String) : boolean {static} + main(args : String[]) {static} } abstract class Expression { + Expression() + interpret() : int {abstract} + toString() : String {abstract} } class MinusExpression { - leftExpression : Expression - rightExpression : Expression + MinusExpression(leftExpression : Expression, rightExpression : Expression) + interpret() : int + toString() : String } class MultiplyExpression { - leftExpression : Expression - rightExpression : Expression + MultiplyExpression(leftExpression : Expression, rightExpression : Expression) + interpret() : int + toString() : String } class NumberExpression { - number : int + NumberExpression(number : int) + NumberExpression(s : String) + interpret() : int + toString() : String } class PlusExpression { - leftExpression : Expression - rightExpression : Expression + PlusExpression(leftExpression : Expression, rightExpression : Expression) + interpret() : int + toString() : String } } MultiplyExpression --> "-leftExpression" Expression MinusExpression --> "-leftExpression" Expression PlusExpression --> "-leftExpression" Expression MinusExpression --|> Expression MultiplyExpression --|> Expression NumberExpression --|> Expression PlusExpression --|> Expression @enduml