Baixe o app para aproveitar ainda mais
Prévia do material em texto
Algoritmos e Estruturas de Dados Diagrama de Classes Universidade Autónoma de Lisboa UAL © 2021 AED: Diagrama de Classes 1 / 11 Unified Modeling Language (UML) Unified Modeling Language (UML) Diagrama de classes UAL © 2021 AED: Diagrama de Classes 2 / 11 Unified Modeling Language (UML) Unified Modeling Language (UML) A especificação UML é constituída por um conjunto de linguagens diagramáticas e padrões de documentos, com o objetivo de se constituir como o mecanismo de comunicação entre os vários interessados num projeto. Os artefactos produzidos pelo UML servem de especificação do sistema, e posterior documentação. As várias linguagens foram desenhadas para comunicar o problema e a solução a implementar, incluindo descrição de requisitos (e.g., diagrama de casos de uso), os processos envolvidos (e.g., diagrama de atividades), e propostas de solução (e.g., diagrama de classes). UAL © 2021 AED: Diagrama de Classes 3 / 11 Diagrama de classes Unified Modeling Language (UML) Diagrama de classes UAL © 2021 AED: Diagrama de Classes 4 / 11 Diagrama de classes Diagrama de classes O diagrama de classes é um dos instrumentos mais utilizados para modelar aplicações ou sistemas. A noção de classe, como descrição de um tipo de objeto constituído por um conjunto de atributos, operações, associações, e semântica é bastante reconhecida. O nível de detalhe do diagrama pode variar mas, no mínimo, inclui classes e relações hierárquicas (i.e., heranças) entre si. As relações podem ainda ser anotadas com a cardinalidade associada. O diagrama pode incluir declarações de atributos e métodos por classe, outros tipos de elemento além de classes, e outros tipos de relação entre elementos. UAL © 2021 AED: Diagrama de Classes 5 / 11 Diagrama de classes Tipos de elemento A formalização do diagrama prevê quatro tipos elemento: classe, classe abstrata, interface, e enumeração. Apenas as classes têm correspondência com estruturas nativas Python. As classes abstratas e enumerações estão disponíveis através de módulos distribuídos com a linguagem: • Classes abstratas, através do módulo abc (https://docs.python.org/3/library/abc.html) • Enumerações, através do módulo enum (https://docs.python.org/3/library/enum.html) Não existe representação de interface em Python. UAL © 2021 AED: Diagrama de Classes 6 / 11 https://docs.python.org/3/library/abc.html https://docs.python.org/3/library/enum.html Diagrama de classes Interfaces A interface representa um contrato que define o comportamento esperado de um tipo de informação. A interface determina a assinatura de métodos que uma classe terá que implementar, sem especificar detalhes de implementação. Ao construir interfaces estamos a determinar o que a classe tem que implementar, e não como implementa. É um instrumento particularmente útil na construção de estruturas de dados, porque permite definir o contrato da estrutura, permitindo implementações alternativas. UAL © 2021 AED: Diagrama de Classes 7 / 11 Diagrama de classes Classe abstrata A classe abstrata é uma classe que tem implementação parcial de um tipo de dados. Representa um protótipo de classe, no sentido em que a classe está incompleta, e eventualmente inclui métodos sem implementação (tal como acontece numa interface). Estando incompleta, a classe abstrata não serve para construir objetos diretamente. A classe abstrata serve para ser estendida. A extensão de uma classe abstrata obriga a implementar todos os métodos assinalados como incompletos. Indiretamente, classe abstrata pode funcionar como interface, se todos os métodos estiverem por implementar. UAL © 2021 AED: Diagrama de Classes 8 / 11 Diagrama de classes Notação Vamos considerar dois tipos de elemento no diagrama: classe, e classe abstrata. A classe abstrata vai servir para definir contratos de implementação de tipos de dados. Os métodos da classe abstrata assinalados com @abstractmethod não estão implementados na classe, e têm que ser implementados por classes que a estendam. UAL © 2021 AED: Diagrama de Classes 9 / 11 Diagrama de classes Relações UAL © 2021 AED: Diagrama de Classes 10 / 11 Diagrama de classes Exemplo A classe abstrata Person inclui dois métodos: get_name(), e get_email(). O primeiro retorna o nome da pessoa. O segundo, retorna o email de acordo com o tipo de pessoa, i.e., aluno (student_number@example.com), ou docente (name@example.com). A implementação de get_name() pode ser feita diretamente na classe Person, e fica disponível para qualquer extensão. A implementação de get_email() tem que ser feita nas extensões (i.e., Student e Professor). UAL © 2021 AED: Diagrama de Classes 11 / 11 Unified Modeling Language (UML) Diagrama de classes
Compartilhar