@startuml
skinparam monochrome true
skinparam packageStyle rectangle
skinparam shadowing false

left to right direction

skinparam classAttributeIconSize 0

hide circle
hide methods

title Domain Model

class Information {
    file
}

class Agency {
    id
    designation
    location
    emailAddress
    phoneNumber
}

class Owner {
    name
    email
    ccNumber
    taxNumber
    emailAddress
    phoneNumber
}

class Property  {
       type
       area
       location
       distanceFromCityCentre
       requestedPrice
       price
       photos
}

class Apartment{
    numberOfBedrooms
    numberOfBathrooms
    numberOfParkingSpaces
    centralHeating
    airConditioning
}

class House{
    numberOfBedrooms
    numberOfBathrooms
    numberOfParkingSpaces
    centralHeating
    airConditioning
    inhabitableLoft
    sunExposure
}

class SystemAdministrator {
    name
    email
    ccNumber
    taxNumber
    address
    phoneNumber
}

SystemAdministrator "1" -- "1" Information: imports >
Information "1" -- "*" Agency: contains >
Information "1" -- "*" Property: contains >
Information "1" -- "*" Owner: contains >
Owner "1" -- "*" Property: owns >
Property "1"-D-> "1..*" House :  can be a
Property "1    "-U-> "1..* " Apartment :  can be an
Property "1  "-U-> "1..* " Land :  can be an
@enduml