@startuml skinparam classAttributeIconSize 0 abstract class Property { -id: String -address: String -price: String +<> Property(id: String, address: String, price: String) +toString(): String +setId(newId: String) +getId(): String +setAddress(newAddress: String) +getAddress(): String +setPrice(price: String) +getPrice(): String } skinparam classAttributeIconSize 0 class CommercialProperty { -id: String -address: String -price: String -zone: String -units: Integer -parkingSpots: Integer +<> CommercialProperty(id: String, address: String, price: String, zone: String, units: Integer, parkingSpots: Integer) +setZone(newZone: String) +getZone(): String +setUnits(newUnits: Integer) +getUnits(): Integer +setParkingSpots(newParkingSpots: Integer) +getParkingSpots(): Integer } skinparam classAttributeIconSize 0 class ResidentialProperty { -id: String -address: String -price: String -hoaFees: Double -bedrooms: Double -bathrooms: Double +<> ResidentialProperty(id: String, address: String, price: String, hoaFees: Double, bedrooms: Double, bathrooms: Double) +getHoaFees(): Double +setHoaFees(newHoaFees: Double) +getBedrooms(): Double +setBedrooms(newBedrooms: Double) +getBedrooms(): Double +getBathrooms(): Double +setBathrooms(newBathrooms: Double) } skinparam classAttributeIconSize 0 class Listing { -properties: ArrayList +setProperties(newProperties: ArrayList) +getProperties(): ArrayList +loadProperties(): Listing +getProperty(address: String): Property } skinparam classAttributeIconSize 0 class MainActivity { #onCreate(savedInstanceState: Bundle) } CommercialProperty -u-|> Property ResidentialProperty -u-|> Property Listing *-d- Property MainActivity .d.|> Listing @enduml