Conception polymorphique de l'architecte de la Cité spatiale

PythonPythonBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Bienvenue en l'an 2100, où l'humanité est parvenue aux étoiles et a établi des villes spatiales prospères dans le cosmos. Dans ce scénario futuriste, vous êtes un architecte de villes spatiales pionnier chargé de créer des solutions innovantes pour répondre aux besoins en évolution perpétuelle de ces métropoles célestes.

En tant qu'architecte responsable de la conception de blocs de construction robustes d'une ville spatiale, vous devrez employer le concept avancé de polymorphisme. Ce principe de programmation vous permettra à vos créations d'interagir et de communiquer de manière transparente avec divers systèmes de villes spatiales en utilisant une interface commune, malgré leurs différences sous-jacentes.

Votre objectif dans ce laboratoire est de mettre à profit la puissance du polymorphisme Python pour créer un code flexible et maintenable pour les composants d'infrastructure de la ville. Ainsi, vous assurerez la croissance et l'adaptabilité de la ville pour les siècles à venir. Préparez-vous à être au cœur du développement urbain spatial, architecte!


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ObjectOrientedProgrammingGroup(["Object-Oriented Programming"]) python/ObjectOrientedProgrammingGroup -.-> python/polymorphism("Polymorphism") subgraph Lab Skills python/polymorphism -.-> lab-271580{{"Conception polymorphique de l'architecte de la Cité spatiale"}} end

Comprendre le polymorphisme en Python

Dans cette étape, vous allez explorer les bases du polymorphisme en Python. Le polymorphisme nous permet de définir des méthodes dans la classe enfant avec le même nom que celles définies dans leur classe parent. En conséquence, la classe enfant hérite de ses propriétés et de ses comportements. Cependant, si vous avez besoin d'apporter certaines modifications ou d'ajouter des fonctionnalités, le polymorphisme permet de faire des changements sans modifier la structure de la classe parent.

Commencez par créer une classe de base qui représente l'interface pour interagir avec différents modules de systèmes de ville.

Ensuite, ajoutez le contenu suivant à votre ~/project/infrastructure.py :

## infrastructure.py
class CitySystem:
    def power_on(self):
        raise NotImplementedError("La sous-classe doit implémenter cette méthode abstraite")

class TransportationSystem(CitySystem):
    def power_on(self):
        print("Le système de transport est maintenant activé.")

class WasteManagementSystem(CitySystem):
    def power_on(self):
        print("Le système de gestion des déchets est maintenant activé.")

## Cette fonction représente la séquence d'initialisation de la ville
def initiate_city_systems(systems):
    for system in systems:
        system.power_on()

## Voyons le polymorphisme en action
if __name__ == "__main__":
    city_systems = [TransportationSystem(), WasteManagementSystem()]
    initiate_city_systems(city_systems)

Pour tester que les systèmes se lancent correctement avec le polymorphisme, exécutez la commande suivante :

python3 ~/project/infrastructure.py

Vous devriez voir une sortie indiquant que les systèmes de transport et de gestion des déchets ont été activés :

Le système de transport est maintenant activé.
Le système de gestion des déchets est maintenant activé.

Ajout de nouveaux systèmes

Maintenant que vous comprenez comment le polymorphisme fonctionne, il est temps d'étendre la fonctionnalité de notre ville spatiale. Votre tâche est d'ajouter un nouveau système d'Allocation de Ressources sans perturber la base de code existante.

Dans le même fichier infrastructure.py, ajoutez une nouvelle classe appelée ResourceAllocationSystem avec sa propre méthode power_on qui affiche un message unique lorsqu'elle est activée.

class ResourceAllocationSystem(CitySystem):
    def power_on(self):
        print("Le système d'allocation de ressources est maintenant activé.")

N'oubliez pas de mettre à jour le tableau city_systems et d'inclure une instance du nouvellement créé ResourceAllocationSystem, puis testez la séquence d'initialisation. La dernière étape est d'exécuter le script :

python3 ~/project/infrastructure.py

L'information ci-dessous devrait être affichée sur votre terminal :

Le système de transport est maintenant activé.
Le système de gestion des déchets est maintenant activé.
Le système d'allocation de ressources est maintenant activé.

Sommaire

Dans ce laboratoire, nous sommes entrés dans le domaine du polymorphisme en Python, découvrant son rôle crucial dans la création de structures de code polyvalentes et maintenables pour des applications complexes telles que l'infrastructure d'une ville spatiale futuriste. Nous avons commencé par les concepts de base, en pratiquant la conception d'une séquence d'allumage universelle pour différents systèmes, et sommes ensuite passés à l'expansion des capacités de notre ville en intégrant sans effort de nouveaux systèmes - grâce au polymorphisme.

En adoptant les fonctionnalités orientées objet de Python, nous avons amélioré nos compétences en tant que développeurs et architectes de villes spatiales, jetant les bases pour un logiciel modulaire et adaptable qui résistera au test du temps interstellaire.