Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Resolução de Atividades - 10 Corrigindo posições na lista de uma corrida de atletismo (PARTE 1)

PARTE 1


Exercicio-N7\models\componentes.py


class Componente:

    """ Classe que representa um componente de uma equipe """

    def __init__ (self, nome = ""):

        """
        Contrutor da Classe
        
        Parâmetros:
        - Nome: String
        """

        self.nome = nome

Exercicio-N7\models\equipe.py


from models.repositorio_equipes import Repositorio_Equipes
from models.componentes import Componente

class Equipe:

    """ Classe que representa uma equipe em uma competição """

    def __init__ (self, nome = ""):

        """
        Contrutor da Classe
        
        Parâmetros:
        - Nome: String
        - Componentes: List[Componente]
        """

        self.nome = nome
        self.componentes = []

Exercicio-N7\models\repositorio_equipes.py


class Repositorio_Equipes:

    """ Classe que contém a lista de equipes e métodos para a sua edição """

    lista_equipes = []

    @classmethod

    def adicionar_equipe (cls, equipe):

        """ 
        Adiciona uma equipe à lista. 
        
        Parâmetros:
        
        Equipe: objeto da classe Equipe a ser adicionado.
        """

        cls.lista_equipes.append (equipe)

    @classmethod

    def remover_equipe (cls, equipe):

        """
        Remove uma equipe da lista de equipes. 
        
        Parâmetro:
        
        Equipe: objeto da classe Equipe a ser removido.
        """

        cls.lista_equipes.remove (equipe)

    @classmethod 

    def buscar_equipe_por_nome (cls, nome_equipe):

        """
        Busca uma equipe na lista com base no seu nome.
        
        Parâmetro:
        
        Nome: str.
        """

        for equipe in cls.lista_equipes:

            if equipe.nome == nome_equipe:

                return equipe

        return None
    
    @classmethod

    def exibir_lista_equipes (cls):

        """ Exibe a lista de equipes com cada componente """

        if len(cls.lista_equipes) == 0:

            print ("\nNão há equipes na lista.")

        else:

            print ("\nLista de equipes")

        for index, equipe_iterador in enumerate(cls.lista_equipes, 1):
            
            print (f"Equipe Nº{index}: {equipe_iterador.nome}")

            if len (equipe_iterador.componentes) == 0:

                print ("  Esta equipe não possui integrantes cadastrados.")

            else: 
                
                for index_componente, componente_iterador in enumerate(equipe_iterador.componentes, 1):

                    print (f"  Componente Nº{index_componente}: {componente_iterador.nome}")
1 resposta

Oi, Victor. Tudo bem com você?

Obrigado por compartilhar sua solução. É interessante observar que você expandiu a proposta da atividade e optou por desenvolver uma estrutura orientada a objetos, criando classes para representar componentes, equipes e um repositório responsável pelo gerenciamento dos dados. Essa abordagem demonstra iniciativa para praticar conceitos além do objetivo inicial do exercício, explorando organização de código, encapsulamento de responsabilidades e reutilização de classes.

A separação entre Componente, Equipe e Repositorio_Equipes facilita a manutenção do projeto e torna o código mais escalável. Como exemplo, caso futuramente seja necessário incluir informações como categoria da equipe ou número de inscrição dos participantes, essa estrutura permitirá adicionar novos atributos e métodos sem grandes alterações nas demais classes. Uma sugestão para evolução é considerar armazenar a lista de equipes como atributo de instância em vez de atributo de classe, dependendo da necessidade do projeto, principalmente se houver mais de um repositório independente.

Fiquei curioso para ver a continuação da implementação. Como você pretende realizar a busca pelo nome incorreto e efetuar a substituição pelo nome correto utilizando essa estrutura orientada a objetos?

Parabéns pelo trabalho e por explorar uma solução mais elaborada. Continue compartilhando suas implementações. O fórum está à disposição para acompanhar sua evolução.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!