Introdução
Numa galáxia dominada pelo Império Planetário da Hegemonia, os reinos do império florescem sob os olhos vigilantes dos Guardiões do Território Imperial. Estes guardiões são responsáveis por manter a ordem e garantir que os protocolos decretados pelo império sejam cumpridos. Recentemente, os guardiões foram encarregados de implantar e gerenciar uma rede de drones furtivos para monitorar as fronteiras imperiais.
Como uma equipe de codificadores recrutados pela Divisão de Tecnologia Imperial, seu objetivo é projetar o software que governa a frota de drones. O foco principal deste laboratório é utilizar os métodos de classe e métodos estáticos do Python para criar um sistema de controle que seja eficiente e modular. Seu software garantirá que os guardiões possam manipular facilmente os comportamentos dos drones e analisar os dados coletados em vários setores sem duplicar código.
Você está pronto para cumprir seu dever para com o império e demonstrar sua lealdade através de linhas de código? Vamos começar.
Configurando a Classe Drone
Nesta etapa, você criará a classe Drone fundamental da qual todos os drones herdarão. Esta classe terá métodos de classe e métodos estáticos que lidarão com a inicialização e os aspectos de gerenciamento global da frota de drones.
Para começar, abra um novo arquivo Python chamado drone.py no diretório ~/project. Coloque o seguinte código dentro:
class Drone:
fleet_count = 0
def __init__(self, designation):
self.designation = designation
Drone.fleet_count += 1
@classmethod
def from_serial_number(cls, serial_number):
designation = f"Drone-{serial_number}"
return cls(designation)
@staticmethod
def is_valid_designation(designation):
return designation.startswith("Drone-")
if __name__ == "__main__":
## Example usage
standard_drone = Drone.from_serial_number("SN123")
print(f"Designation: {standard_drone.designation}")
print(f"Is valid designation: {Drone.is_valid_designation(standard_drone.designation)}")
print(f"Fleet count: {Drone.fleet_count}")
Este código configura uma classe Drone com um inicializador, um método de classe from_serial_number que cria uma nova instância de drone com uma designação adequada usando um número de série, e um método estático is_valid_designation que verifica se uma determinada designação é válida para um drone.
Use o seguinte comando para executar seu arquivo drone.py e ver o uso de exemplo em ação:
python ~/project/drone.py
Você deve ver uma saída que corresponde ao código de uso de exemplo dentro do bloco __main__ de drone.py:
Designation: Drone-SN123
Is valid designation: True
Fleet count: 1
Implementando Comportamento Específico da Missão
Agora, você adicionará um método estático relacionado à missão para organizar os drones com base em suas zonas designadas. Crie um novo método dentro da classe Drone chamado assign_zone que atribui um drone a uma das zonas de segurança do império com base no último dígito de seu número de série.
Modifique o arquivo drone.py existente para incluir o novo método assign_zone:
class Drone:
fleet_count = 0
def __init__(self, designation):
self.designation = designation
Drone.fleet_count += 1
@classmethod
def from_serial_number(cls, serial_number):
designation = f"Drone-{serial_number}"
return cls(designation)
@staticmethod
def is_valid_designation(designation):
return designation.startswith("Drone-")
@staticmethod
def assign_zone(serial_number):
zone_mapping = {
"1": "Residential",
"2": "Commercial",
"3": "Industrial",
"4": "Agricultural"
}
return zone_mapping.get(serial_number[-1], "Undefined")
if __name__ == "__main__":
standard_drone = Drone.from_serial_number("SN123")
print(f"Assigned Zone: {Drone.assign_zone(standard_drone.designation)}")
Execute o drone.py atualizado como antes para ver o novo comportamento:
python ~/project/drone.py
A informação abaixo deve ser exibida no seu terminal:
Assigned Zone: Industrial
Resumo
Neste laboratório, você explorou como métodos de classe e métodos estáticos podem ser empregados dentro de uma classe Python para criar um sistema de controle modular e eficiente. Ao projetar uma classe Drone e praticar o uso da funcionalidade em nível de classe, você aprendeu como encapsular tanto a lógica de instanciação quanto as funções utilitárias que são independentes das instâncias da classe.
Através desta experiência prática, suas habilidades em programação orientada a objetos foram aprimoradas, e você agora está mais equipado para escrever código limpo e reutilizável. Esperamos que você se sinta preparado para defender os territórios do Império Planetário da Hegemonia com sua proeza em Python. Lembre-se, o poder do império é tão forte quanto o código criado por seus desenvolvedores leais!



