Engenharia de Software
Engenharia de Software
Alinne Corrêa
Aula 03 – Parte II
• Projeto de Sistemas
• Projeto de Sistemas
▫ Projeto de Arquitetura
▫ Projeto Orientado a Objetos
▫ Introdução à UML: Diagrama de classes, seqüência e colaboração
Diagrama de Classes
• Metodologia usada para descrever:
▫ Os tipos de objetos no sistema ▫ Os tipos de objetos no sistema
▫ Os vários tipos de relacionamento estático existente entre eles ▫ Os atributos de uma classe
▫ Operações de uma classe ▫ Operações de uma classe ▫ As restrições.
Diagrama de Classes
• Conceitos:
▫ Classe: ▫ Classe:
Uma descrição de um conjunto de objectos que têm os mesmos atributos, operações, relacionamentos e semântica.
▫ Atributos:
Descrevem as características dos objetos daquela classe.
Somente os atributos que interessam ao sistema devem ser representados. Somente os atributos que interessam ao sistema devem ser representados. Todos os objetos de uma classe são caracterizados pelos mesmos atributos. Um atributo tem um tipo e pode ser primitivo (inteiro, real, boolean etc.) ou
construído (arrays, registros). Ex:
Diagrama de Classes
Employee name: string name: string address: string dateOfBirth: Date employeeNo: integer socialSecurityNo: string department: Dept ma nager: Employee salary: integerstatus: {current, left, retired} taxCode: integer . . . taxCode: integer . . . join () leave () retire () changeDetails ()
Diagrama de Classes
• Relações entre Classes
▫ Generalização e Herança ▫ Generalização e Herança ▫ Dependência
▫ Associação ▫ Agregação
Diagrama de Classes
• Relações entre Classes: Generalização e Herança
▫ Classes podem ser organizadas em uma hierarquia onde uma ▫ Classes podem ser organizadas em uma hierarquia onde uma classe (superclasse) é uma generalização de uma ou mais classes (subclasses)
▫ Uma subclasse herda os atributos e operações da superclasse e pode adicionar novos métodos
Diagrama de Classes
• Relações entre Classes: Generalização e Herança
▫ Vantagens da Herança: ▫ Vantagens da Herança:
É um mecanismo de abstração p/ classificar entidades É um mecanismo de reutilização
▫ Problemas com a Herança: ▫ Problemas com a Herança:
Classes só são compreendidas completamente com as superclasses
Engenheiros tem a tendência de reutilizar o grafo de herança criado na análise. Isto pode levar à ineficiência
Diagrama de Classes
• Relações entre Classes: Generalização e Herança
▫ Herança Múltipla: ▫ Herança Múltipla:
Uma classe pode herdar atributos e operações de várias superclasses
Pode levar a conflitos quando atributos e operações de superclasses diferentes tem o mesmo nome e semânticas diferentes
Author Edition Publication date ISBN Book Speaker Duration Recording date Voice recording # Tapes Talking book ISBN
Diagrama de Classes
• Relações entre Classes: Dependência
▫ É um relacionamento que determina que uma mudança na ▫ É um relacionamento que determina que uma mudança na especificação de uma classe pode afetar uma outra classe, mas não necessariamente o contrário
Tem peratureSensor Tem perature
+defineAlarm (in t : Tem perature)
Diagrama de Classes
• Relações entre Classes: Associação
▫ Em UML uma associação é definida como relacionamento que ▫ Em UML uma associação é definida como relacionamento que descreve um conjunto de ligações, sendo uma conexão definida como uma conexão semântica entre uma tupla de objetos.
▫ Uma associação normalmente é bidirecional, ou seja, se um objeto está associado a outro objeto, ambos sabem que isto está acontecendo.
Diagrama de Classes
• Relações entre Classes: Associação
▫ A Associação é desenhada através de uma linha sólida entre duas ▫ A Associação é desenhada através de uma linha sólida entre duas
classes.
▫ Deve possuir um nome (geralmente um verbo) pertencente ao domínio do problema.
▫ Uma seta no final da linha indica que a associação somente pode ▫ Uma seta no final da linha indica que a associação somente pode
ser utilizada em uma única direção.
Diagrama de Classes
• Relações entre Classes: Associação
▫ A Associação é desenhada através de uma linha sólida entre duas ▫ A Associação é desenhada através de uma linha sólida entre duas
classes.
▫ Deve possuir um nome (geralmente um verbo) pertencente ao domínio do problema.
▫ Uma seta no final da linha indica que a associação somente pode ▫ Uma seta no final da linha indica que a associação somente pode
ser utilizada em uma única direção.
▫ Associações podem ter dois nomes (um para cada direção). Um triângulo sólido junto ao nome indica a direção que se deve ler a associação.
Diagrama de Classes
• Relações entre Classes: Associação
▫ Objectos de uma classe estão conectados a objectos de outras ▫ Objectos de uma classe estão conectados a objectos de outras
classes
▫ Pode ter um nome que tem uma direcção
▫ Multiplicidade: especificação do nº de elementos que que um conjunto pode assumir.
Ex.: 1..*, *, 0..1, 3..9, 3..*, etc.
▫ Navegação: mostra como a partir de uma instância de uma classe se pode aceder a uma ou mais instâncias de outra classe
Diagrama de Classes
Diagrama de Classes
• Relações entre Classes: Associação
▫ Multiplicidade: ▫ Multiplicidade:
Especifica quantos objetos participam da ligação.
Desenhada no final da associação, perto da classe onde ela se aplica Se não especificada, assume-se exatamente um (1)
Outros exemplos de multiplicidade podem ser: Outros exemplos de multiplicidade podem ser:
zero a um (0..1)
zero a muitos (0..*) ou (*) um a muitos (1..*)
Diagrama de Classes
• Relações entre Classes: Associação
▫ Multiplicidade: ▫ Multiplicidade:
Diagrama de Classes
Diagrama de Classes
Diagrama de Classes
• Relações entre Classes: Classes associativas
▫ Estão ligadas a associações ao invés de estarem ligadas a outras ▫ Estão ligadas a associações ao invés de estarem ligadas a outras
classes.
▫ Normalmente aparece quando duas ou mais classes estão associadas, e é necessário manter informações sobre a associação.
▫ Uma classe associativa é representada pela notação de uma classe. A diferença é que essa classe é ligada por uma linha tracejada a uma associação.
Diagrama de Classes
• Relações entre Classes: Classes associativas
Person 1..* Com pany
+em ployer * +em ployee salary dateHired Job
Diagrama de Classes
• Relações entre Classes: Agregação
▫ Uma agregação é um tipo especial de associação ▫ Uma agregação é um tipo especial de associação
▫ Indica um relacionamento “parte-todo” entre as classes
▫ Sua presença pode ser percebida a partir da existência de relacionamentos cujas denominações incluam expressões como “consiste de”, “contém” ou “é parte de”.
Diagrama de Classes
Diagrama de Classes
• Relações entre Classes: Composição
▫ É uma forma de agregação onde há: ▫ É uma forma de agregação onde há:
Forte pertença do todo com relação a parte As partes não podem existir sem o todo
Com pany Departm ent