AMS43 - UML Classes
Escola Superior de Tecnologia IPCA
Disciplina: Análise e Modelação de Software (AMS) 2024-25
Licenciatura em Engenharia de Sistemas Informáticos
Conteúdo
Tópicos incluídos:
Diagramas de classes e objetos
Associações entre classes
Generalização e herança
Concretização e dependência
Bibliografia base:
Fowler, M. (2004). UML Distilled, 3ª edição, Addison-Wesley.
Seidl, M. et al. (2015). UML @ Classroom. Springer.
Silveira, A. e Videira, C. (2005). UML – Metodologias e Ferramentas CASE. Centro Atlântico.
Unhelkar, B. (2020). Software Engineering with UML. CRC Press.
Diagramas de Classes e Objetos
Diagramas UML:
Estrutura do Diagrama
Diagrama de Classe
Diagrama de Componente
Diagrama de Atividade
Diagrama de Casos de Uso
Diagrama de Máquina de Estados
Definição de Objeto
Objeto: Entidade com fronteiras definidas, relevante para o problema.
Estado: Modelado por valores de atributos (tamanho, forma, peso).
Comportamento: Exibe comportamentos invocáveis ou reativos.
Identidade: A capacidade de distinguir objetos idênticos no tempo e no espaço (exemplo: folhas de papel).
Objetos do Mundo Real e Virtual
No desenvolvimento OO, o mundo real é composto por objetos que interagem:
Exemplos de objetos reais: Sr. João Oliveira, aula de AMS.
Exemplos de objetos computacionais: registo do Sr. João, árvore de pesquisa binária.
Classe
Classe: Conjunto de objetos com atributos e operações similares.
Instância de classe: Objeto específico dessa classe.
Representação de coisas concretas e papéis (ex: Aluno, Professor).
A abordagem orientada por objetos favorece arquiteturas estáveis.
Extensão e Universo de Discurso (UoD)
O conjunto de todos os objetos forma um universo no contexto.
Extensões de classes são subconjuntos deste universo.
Notação de Classe em UML
Classe representada por um retângulo com nome no singular (ex: Empregado).
Atributos e operações são definidos no nível da classe.
Atributos de Instância
Estado de um objeto é dado pelos valores dos atributos e pelas ligações com outros objetos.
Tipos de dados podem ser definidos conforme a linguagem de implementação.
Operações de Instância
Comportamento invocável modelado por operações ao nível da classe.
Encapsulamento: controle de acesso e alteração do estado interno do objeto.
Atributos e Operações Estáticos
Atributo estático: Valor único para todas as instâncias.
Operação estática: Não é invocada para um objeto específico, usando notação sublinhada.
Visibilidade
Indica como atributos e operações podem ser acessados:
(public): visível para todos.
(private): visível só para a própria classe.
(protected): visível para a classe e subclasses.
~ (package): visível dentro do pacote.
Multiplicidade
Refere-se ao número de instâncias permitidas para classes e atributos:
Ex: 0..1, 1..*, etc.
Associações entre Classes
Associação: Ligação entre objetos de classes diferentes.
Exemplos de associações: um empregado trabalha para uma empresa.
## Generalização e Herança
Classes podem ser organizadas em hierarquias onde subclasses herdam atributos e operações da superclasse.
Vantagens: Abstração e reutilização.
Problemas: Herança pode introduzir complexidade.
Exemplos de Diagrama de Classes
Classes e operações abstratas:
Uma classe abstrata não pode ser instanciada diretamente.
Operação abstrata deve ser definida nas subclasses.
Exercícios
Exercício Mesa: Modelar um diagrama de classes de uma mesa de café.
Exercício Biblioteca: Modelar um diagrama de classes para uma biblioteca que considera sócios e publicações.