@startuml package com.iluwatar.strangler { class App { + App() + main(args : String[]) {static} } class HalfArithmetic { - LOGGER : Logger {static} - VERSION : String {static} - newSource : HalfSource - oldSource : OldSource + HalfArithmetic(newSource : HalfSource, oldSource : OldSource) + ifHasZero(nums : int[]) : boolean + mul(nums : int[]) : int + sum(nums : int[]) : int } class HalfSource { - LOGGER : Logger {static} - VERSION : String {static} + HalfSource() + accumulateSum(nums : int[]) : int + ifNonZero(nums : int[]) : boolean } class NewArithmetic { - LOGGER : Logger {static} - VERSION : String {static} - source : NewSource + NewArithmetic(source : NewSource) + ifHasZero(nums : int[]) : boolean + mul(nums : int[]) : int + sum(nums : int[]) : int } class NewSource { - LOGGER : Logger {static} - VERSION : String {static} + NewSource() + accumulateMul(nums : int[]) : int + accumulateSum(nums : int[]) : int + ifNonZero(nums : int[]) : boolean } class OldArithmetic { - LOGGER : Logger {static} - VERSION : String {static} - source : OldSource + OldArithmetic(source : OldSource) + mul(nums : int[]) : int + sum(nums : int[]) : int } class OldSource { - LOGGER : Logger {static} - VERSION : String {static} + OldSource() + accumulateMul(nums : int[]) : int + accumulateSum(nums : int[]) : int } } OldArithmetic --> "-source" OldSource NewArithmetic --> "-source" NewSource HalfArithmetic --> "-newSource" HalfSource HalfArithmetic --> "-oldSource" OldSource @enduml