스페이스 시티 아키텍트 다형성 설계

PythonBeginner
지금 연습하기

소개

2100 년에 오신 것을 환영합니다. 인류가 별에 도달하여 우주에 번성하는 우주 도시를 건설한 시대입니다. 이 미래 시나리오에서 여러분은 끊임없이 진화하는 이 천상의 대도시의 요구에 적응하기 위한 혁신적인 솔루션을 창출하는 임무를 맡은 선구적인 우주 도시 건축가입니다.

우주 도시의 견고한 빌딩 블록을 설계하는 건축가로서, 여러분은 다형성 (polymorphism) 이라는 고급 개념을 활용해야 합니다. 이 프로그래밍 원칙을 통해 여러분의 창작물은 근본적인 차이점에도 불구하고 공통 인터페이스를 사용하여 다양한 우주 도시 시스템과 원활하게 상호 작용하고 통신할 수 있습니다.

이 랩의 목표는 Python 다형성을 활용하여 도시의 인프라 구성 요소에 대한 유연하고 유지 관리 가능한 코드를 만드는 것입니다. 이를 통해 수 세기 동안 도시의 성장과 적응성을 보장할 수 있습니다. 우주 도시 개발의 최전선에 서십시오, 건축가님!

Python 에서의 다형성 이해

이 단계에서는 Python 다형성의 기본 사항을 살펴보겠습니다. 다형성 (polymorphism) 을 사용하면 자식 클래스에서 부모 클래스에 정의된 것과 동일한 이름의 메서드를 정의할 수 있습니다. 결과적으로 자식 클래스는 해당 속성과 동작을 상속받습니다. 그러나 특정 조정이나 추가가 필요한 경우, 다형성을 통해 부모 클래스 구조를 변경하지 않고 변경할 수 있습니다.

다양한 도시 시스템 모듈과 상호 작용하기 위한 인터페이스를 나타내는 기본 클래스를 생성하는 것으로 시작합니다.

다음으로, 다음 내용을 ~/project/infrastructure.py에 추가합니다.

## infrastructure.py
class CitySystem:
    def power_on(self):
        raise NotImplementedError("Subclass must implement this abstract method")

class TransportationSystem(CitySystem):
    def power_on(self):
        print("Transportation System is now activated.")

class WasteManagementSystem(CitySystem):
    def power_on(self):
        print("Waste Management System is now activated.")

## This function represents the city initialization sequence
def initiate_city_systems(systems):
    for system in systems:
        system.power_on()

## Let’s see polymorphism in action
if __name__ == "__main__":
    city_systems = [TransportationSystem(), WasteManagementSystem()]
    initiate_city_systems(city_systems)

시스템이 다형성을 사용하여 올바르게 초기화되는지 테스트하려면 다음 명령을 실행하십시오.

python3 ~/project/infrastructure.py

다음과 같이 교통 시스템과 폐기물 관리 시스템이 모두 활성화되었음을 나타내는 출력이 표시되어야 합니다.

Transportation System is now activated.
Waste Management System is now activated.

새로운 시스템 추가

이제 다형성 (polymorphism) 이 어떻게 작동하는지 이해했으므로, 우주 도시의 기능을 확장할 차례입니다. 여러분의 임무는 기존 코드베이스를 방해하지 않고 ResourceAllocation 을 위한 새로운 시스템을 추가하는 것입니다.

동일한 infrastructure.py 파일에, 활성화될 때 고유한 메시지를 출력하는 자체 power_on 메서드를 가진 ResourceAllocationSystem이라는 새 클래스를 추가합니다.

class ResourceAllocationSystem(CitySystem):
    def power_on(self):
        print("Resource Allocation System is now activated.")

city_systems 배열을 업데이트하고 새로 생성된 ResourceAllocationSystem의 인스턴스를 포함하는 것을 잊지 말고, 초기화 시퀀스를 테스트하십시오. 마지막 단계는 스크립트를 실행하는 것입니다.

python3 ~/project/infrastructure.py

다음 정보가 터미널에 표시되어야 합니다.

Transportation System is now activated.
Waste Management System is now activated.
Resource Allocation System is now activated.

요약

이 랩에서는 Python 다형성 (Polymorphism) 의 영역으로 들어가, 미래 지향적인 우주 도시의 인프라와 같은 복잡한 애플리케이션을 위한 다재다능하고 유지 관리 가능한 코드 구조를 만드는 데 있어 다형성의 중요한 역할을 발견했습니다. 우리는 기본적인 개념으로 시작하여, 다양한 시스템에 대한 보편적인 power-on 시퀀스를 설계함으로써 실습했고, 다형성 덕분에 새로운 시스템을 원활하게 통합하여 도시의 기능을 확장하는 단계로 나아갔습니다.

Python 의 객체 지향 기능을 활용함으로써, 우리는 개발자이자 Space City Architect 로서의 기술을 향상시켰으며, 성간 시대를 견딜 수 있는 모듈식의 적응 가능한 소프트웨어의 기반을 마련했습니다.