@startuml package com.iluwatar.nullobject { class NullNode { - instance : NullNode {static} - NullNode() + getInstance() : NullNode {static} + getLeft() : Node + getName() : String + getRight() : Node + getTreeSize() : int + walk() } interface Node { + getLeft() : Node {abstract} + getName() : String {abstract} + getRight() : Node {abstract} + getTreeSize() : int {abstract} + walk() {abstract} } class App { + App() + main(args : String[]) {static} } class NodeImpl { - left : Node - name : String - right : Node + NodeImpl(name : String, left : Node, right : Node) + getLeft() : Node + getName() : String + getRight() : Node + getTreeSize() : int + walk() } } NullNode --> "-instance" NullNode NodeImpl --> "-left" Node NullNode ..|> Node NodeImpl ..|> Node @enduml