@startuml
skinparam backgroundColor #ffffff
skinparam classAttributeIconSize 0
hide circle

abstract class "{abstract}\nCommand" {
    + {abstract} execute(model : Model) : CommandResult
}

interface Model <<interface>> {
    + addPerson(Person person) : void
    + hasPerson(Person person) : boolean
}

class ModelManager implements Model{
    -addressBook : AddressBook
}

class Person {
    /' Fields '/
     -name : Name
     -address : Address
     -classcode : ClassCode
     -phone : Phone
     -email : Email
     -status : Status
     -Activity : HashSet<Activity>

    /' Methods '/
    + equals(other : Object) : boolean
    + hashCode() : int
    + toString() : String
}

class AddCommand {
    /' Fields '/
    - toAdd : Person

    /' Methods '/
    - batchUpdateNegativeToPositive(addedPerson: Person,
     studentList: ObservableList<Person>, model: Model) : void
    + execute(model : Model) : CommandResult
    + equals(other : Object) : boolean
}

ModelManager <-- AddCommand
"{abstract}\nCommand" <|-- AddCommand
AddCommand --> Person

@enduml