finallywe'll need an agent object that holds list of all propertiesdisplays those propertiesand allows us to create new ones creating properties will entail prompting the user for the relevant details for each property type this could be done in the agent objectbut then agent would need to know lot of information about the types of properties this is not taking advantage of polymorphism another alternative would be to put the prompts in the initializer or even constructor for each classbut this would not allow the classes to be applied in gui or web application in the future better idea is to create static method that does the prompting and returns dictionary of the prompted parameters thenall the agent has to do is prompt the user for the type of property and payment methodand ask the correct class to instantiate itself that' lot of designingthe following class diagram may communicate our design decisions little more clearlyagent +property_list +list_properties(show_all=false+add_property(property_type,purchase_typehouse apartment +balcony +laundry +display(+prompt_init(+num_stories +garage +fenced_yardboolean property +square_feet +num_bedrooms +num_bathrooms +display(+prompt_init(+display(+prompt_init(houserental purchase housepurchase +price +taxes apartmentpurchase +display(+prompt_init(apartmentrental rental +furnished +utilities +rent +display(+prompt_init(