The before code mixes address details inside Person, making it hard to manage. The after code separates Address as its own class, showing a clear one-to-one relationship. This matches the UML class diagram structure and improves clarity and reusability.
### Before: No clear class structure or relationships
class Person:
def __init__(self, name, age, street, city):
self.name = name
self.age = age
self.street = street
self.city = city
### After: Clear classes with attributes and relationships
class Address:
def __init__(self, street: str, city: str):
self.street = street
self.city = city
def get_city(self) -> str:
return self.city
class Person:
def __init__(self, name: str, age: int, address: Address):
self.name = name
self.age = age
self.address = address
def get_name(self) -> str:
return self.name
def get_age(self) -> int:
return self.age
def get_address_city(self) -> str:
return self.address.get_city()