@startuml

title US004 - Domain Model

skinparam groupInheritance 2
skinparam monochrome true
skinparam packageStyle rectangle
skinparam shadowing false
skinparam classAttributeIconSize 0
hide circle
hide methods

class Property

class House

class Residence

class Address

class Contacts

class Owner

class Comission

class Agent

class Business

class AvailableEquipment

class Rent

class SunExposure

class Store

class AvailableEquipment {
Equipment
}

class Contacts {
Phone number
Email adress
}

class Owner {
Name
Citizens card number
Tax number
}

class Rent {
Duration of contract
Price per month
}


class Business {
Total Price
}

class Residence {
Number of Bedrooms
Number of Bathrooms
Number of Parking Spaces
 }

class Store {
Designation

}

class Property {
Area
Photos
Distance from the city center
}

class House {
Basement
Inhabitable loft
}

class SunExposure {
Direction
}

class Address {
Street
City
County
State
Zip Code
}

class Comission {
Type
Value
}

Residence <|-- House
Property <|-- Residence
SunExposure "1" -up-- "1" House: contains <
Address "1" -right-- "1" Property: has <
Address "1" -right-- "1" Owner: has <
Owner "1" -left-- "*" Property: has >
Owner "1" -- "1" Store: contacts >
Agent "*" -up-- "1" Store: has <
Comission "1" -down-- "1" Agent: defines <
Comission "1" -up-- "1" Property: contains <
Owner "1" -up-- "1" Business: defines >
AvailableEquipment "*" -left-- "1" Residence: contains <
Business <|-right- Rent
Owner "1" -right-- "1" Contacts: has >
Store "1" -right-- "1" Contacts: has >
Agent "1" -up-- "1" Contacts: has >


@enduml