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.