Orientação a Objetos - ISMTdocentes.ismt.pt/~jcfreire/aulas/DiagramasClasse.pdf · Diagrama de...

21
JCFJ 4.1 SEL 3113 – Engenharia de Software Programa do Módulo 2 Orientação a Objetos – Conceitos Básicos – Análise Orientada a Objetos (UML) Diagrama de Classes – Processo Unificado (RUP) JCFJ 4.2 SEL 3113 – Engenharia de Software Diagrama de Classes – Dados Objetos, Classes, Atributos, Operações, Associações, Agregação, Composição, Herança Métodos Orientados a Objetos - UML

Transcript of Orientação a Objetos - ISMTdocentes.ismt.pt/~jcfreire/aulas/DiagramasClasse.pdf · Diagrama de...

Page 1: Orientação a Objetos - ISMTdocentes.ismt.pt/~jcfreire/aulas/DiagramasClasse.pdf · Diagrama de Classes – Processo Unificado (RUP) JCFJ 4.2 SEL 3113 –Engenharia de Software Diagramade

JCFJ

4.1SEL 3113 –Engenharia de Software

Programa do Módulo 2

Orientação a Objetos

– Conceitos Básicos

– Análise Orientada a Objetos (UML)

� Diagrama de Classes

– Processo Unificado (RUP)

JCFJ

4.2

SEL 3113 –Engenharia de Software

Diagrama de Classes – Dados� Objetos, Classes, Atributos, Operações,

Associações, Agregação, Composição,

Herança

Métodos Orientados a Objetos - UML

Page 2: Orientação a Objetos - ISMTdocentes.ismt.pt/~jcfreire/aulas/DiagramasClasse.pdf · Diagrama de Classes – Processo Unificado (RUP) JCFJ 4.2 SEL 3113 –Engenharia de Software Diagramade

JCFJ

4.3SEL 3113 –Engenharia de Software

Objetos

� É a representação de uma entidade que pode ser real ou conceitual � Ele pode

representar alguma coisa concreta (um computador) ou um conceito (transação

bancária).

� Cada objeto tem definidas as seguintes características:

– Estado: define uma das possíveis condições nas quais um objeto pode existir.

O estado de um objeto, que é definido por um conjunto de propriedades (Atributos) mais

as relações que o objeto tem com outros objetos� Estado normalmente vai mudando com

o passar do tempo (execução do sistema do qual ele faz parte).

– Comportamento: determina a maneira pela qual um objeto responde aos questionamentos

dos outros objetos, determinando cada ação que um objeto pode realizar �

O comportamento de um objeto é implementado através de Operações.

– Identidade: indica a unicidade de cada objeto em um sistema, mesmo se seu estado for

idêntico ao de outro objeto.

Métodos Orientados a Objetos – UML – Diagrama de Classes

JCFJ

4.4

SEL 3113 –Engenharia de Software

Representando Objetos em UML

� Um objeto é representado como um retângulo com o nome sublinhado.

J Clark :

Professor

: Professor

Objeto com Nome

Objeto Anônimo

Professor J Clark

Métodos Orientados a Objetos – UML – Diagrama de Classes

Page 3: Orientação a Objetos - ISMTdocentes.ismt.pt/~jcfreire/aulas/DiagramasClasse.pdf · Diagrama de Classes – Processo Unificado (RUP) JCFJ 4.2 SEL 3113 –Engenharia de Software Diagramade

JCFJ

4.5SEL 3113 –Engenharia de Software

Classes

� Classe: é a descrição de um grupo de objetos com propriedades comuns (Atributos),

comportamento comum (Operações), relações comuns com outros objetos além de

uma semântica comum.

� Uma Classe é um padrão para a criação de objetos, e cada objeto é uma instância de

uma única classe.

� Uma Classe bem definida deve capturar uma e somente uma abstração, e seu nome

deve vir do domínio da aplicação sendo definido por um substantivosendo definido por um substantivo.

eeee JP mP

Métodos Orientados a Objetos – UML – Diagrama de Classes

JCFJ

4.6

SEL 3113 –Engenharia de Software

Representando Classes em UML

� Uma classe é representada utilizando um retângulo com três compartimentos:

– O nome da classe

– A estrutura (Atributos)

– O comportamento (Operações)

Professor

- name

- employeeID : UniqueId

- hireDate

- status

- discipline

- maxLoad

+ submitFinalGrade()

+ acceptCourseOffering()

+ setMaxLoad()

+ takeSabbatical()

+ teachClass()

Métodos Orientados a Objetos – UML – Diagrama de Classes

Page 4: Orientação a Objetos - ISMTdocentes.ismt.pt/~jcfreire/aulas/DiagramasClasse.pdf · Diagrama de Classes – Processo Unificado (RUP) JCFJ 4.2 SEL 3113 –Engenharia de Software Diagramade

JCFJ

4.7SEL 3113 –Engenharia de Software

Relação entre Classes e Objetos

� Uma classe é uma definição abstrata de um objeto.

– Ela define a estrutura e o comportamento de cada objeto da classe.

– Ela serve como um modelo para a criação dos objetos.

� Classes não são coleções de objetos.

Professor

Professor Meijer

Professor Torpie

Professor Allen

Métodos Orientados a Objetos – UML – Diagrama de Classes

JCFJ

4.8

SEL 3113 –Engenharia de Software

O que é um Atributo?

� Um atributo é uma propriedade de uma classe com um nome e que descreve a faixa de valores que instâncias da classe podem manter para esta propriedade.

� Uma classe pode ter qualquer número de atributos ou pode não ter nenhum atributo.

Atributos

Student

- name

- address

- studentID

- dateOfBirth

Métodos Orientados a Objetos – UML – Diagrama de Classes

Page 5: Orientação a Objetos - ISMTdocentes.ismt.pt/~jcfreire/aulas/DiagramasClasse.pdf · Diagrama de Classes – Processo Unificado (RUP) JCFJ 4.2 SEL 3113 –Engenharia de Software Diagramade

JCFJ

4.9SEL 3113 –Engenharia de Software

Atributos: Propriedades Estáticas

� Atributos estão ligados às estruturas de dados

� Sintaxe– [visibilidade] nome [multiplicidade] [ : tipo ][= valor-inicial]

� Três valores para a visibilidade :

– +, public (visível por todas as classes).

– #, protected (visível na classe e nas sub-classes).

– -, private (visível unicamente na classe).

eeee JP mP

Métodos Orientados a Objetos – UML – Diagrama de Classes

JCFJ

4.10

SEL 3113 –Engenharia de Software

Atributos em Classes e Objetos

Classe

Objetos

Student

- name

- address

- studentID

- dateOfBirth

:Student

- name = “M. Modano”

- address = “123 Main St.”

- studentID = 9

- dateOfBirth = “03/10/1967”

:Student

- name = “D. Hatcher”

- address = “456 Oak Ln.”

- studentID = 2

- dateOfBirth = “12/11/1969”

Métodos Orientados a Objetos – UML – Diagrama de Classes

Page 6: Orientação a Objetos - ISMTdocentes.ismt.pt/~jcfreire/aulas/DiagramasClasse.pdf · Diagrama de Classes – Processo Unificado (RUP) JCFJ 4.2 SEL 3113 –Engenharia de Software Diagramade

JCFJ

4.11SEL 3113 –Engenharia de Software

O que é uma Operação?

� Um serviço que pode ser requisitado a um objeto para que ele implemente um comportamento.

� Uma operação tem uma assinatura, que define seus parâmetros e seu tipo de retorno.

� Uma classe pode ter qualquer número de operações ou nenhuma.

Operações

Student

+ get tuition()+ add schedule()+ get schedule()+ delete schedule()+ has prerequisites()

Métodos Orientados a Objetos – UML – Diagrama de Classes

JCFJ

4.12

SEL 3113 –Engenharia de Software

Operações: Propriedades Dinâmicas

� Sintaxe– [visibilidade] nome [ (lista-parâmetros) ] [ : tipo-retorno ]

� Três valores para a visibilidade :

– +, public (visível por todas as classes).

– #, protected (visível na classe e nas sub-classes).

– -, private (visível unicamente na classe).

eeee JP mP

Métodos Orientados a Objetos – UML – Diagrama de Classes

Page 7: Orientação a Objetos - ISMTdocentes.ismt.pt/~jcfreire/aulas/DiagramasClasse.pdf · Diagrama de Classes – Processo Unificado (RUP) JCFJ 4.2 SEL 3113 –Engenharia de Software Diagramade

JCFJ

4.13SEL 3113 –Engenharia de Software

Exemplos

As operações de criação de objetos são implícitas pois são “padrão”.

Formação

nome : String

adicionar(nom : String) : void

validar(nom : String) : void

Inscrição

data : Date

Esporte

nome

adicionar()

invalidar()

Estudante

nome : String

número : Integer = 0

idade : Integer

ano

adicionar(nome : String) : void

s-inscrever() : BooleanFormação: ciclo de estudos ao

qual os estudantes podem se

inscrever na instituição na qual

estão matriculados.

Criada ou invalidade pela

administração após a habilitação.

Arquivada para o histórico da

vida do estabelecimento.

Nota

Na criação da classe

ela deve ser

documentada com uma

Nota ou na própria

Documentação da

classe.

eeee JP mP

Métodos Orientados a Objetos – UML – Diagrama de Classes

JCFJ

4.14

SEL 3113 –Engenharia de Software

O que é um Diagrama de Classes?

� Uma visão estática do sistema.

CloseRegistrationForm

+ open()

+ close registration()

Student

+ get tuition()

+ add schedule()

+ get schedule()

+ delete schedule()

+ has pre-requisites()

Schedule

- semester

+ commit()

+ select alternate()

+ remove offering()

+ level()

+ cancel()

+ get cost()

+ delete()

+ submit()

+ save()

+ any conflicts?()

+ create with offerings()

+ update with new selections()

Professor

- name

- employeeID : UniqueId

- hireDate

- status

- discipline

- maxLoad

+ submitFinalGrade()

+ acceptCourseOffering()

+ setMaxLoad()

+ takeSabbatical()

+ teachClass()

CloseRegistrationController

+ is registration open?()

+ close registration()

Métodos Orientados a Objetos – UML – Diagrama de Classes

Page 8: Orientação a Objetos - ISMTdocentes.ismt.pt/~jcfreire/aulas/DiagramasClasse.pdf · Diagrama de Classes – Processo Unificado (RUP) JCFJ 4.2 SEL 3113 –Engenharia de Software Diagramade

JCFJ

4.15SEL 3113 –Engenharia de Software

Utilização dos Diagramas de Classes

� Quando modelando a visão estática do sistema, diagramas de classes são tipicamente utilizados com três finalidades, na modelagem:– Do vocabulário do sistema: definição das abstrações que estarão dentro ou fora

dos sistema � Os diagramas de classes especificam estas abstrações e suas responsabilidades.

– De Colaborações: grupos de classes e outros elementos que trabalham juntos parafornecer uma solução que é maior que a soma dos elementos colaborando �Classes não trabalham sozinhas na implementação de uma solução e diagramas de classe são a maneira utilizada para apresentar a colaboração entre as classes.

– De um esquema lógico de um banco de dados: diagramas de classe podem ser utilizados para modelar os esquemas dos bancos de dados que serão utilizados para tornar persistentes os objetos do sistema � Diagramas de classe são um tipo de Diagramas Entidade Relacionamento (ER) que apresentam além dos dados, o comportamento dinâmico dos elementos através das operações � Operações são normalmente transformadas em triggers ou stored procedures do banco de dados.

Métodos Orientados a Objetos – UML – Diagrama de Classes

JCFJ

4.16

SEL 3113 –Engenharia de Software

Diagrama de Classes: Exemplo

� Existe uma maneira de organizar melhor estas classes?

� Que problema se pode observar neste diagrama?

CloseRegistrationForm

LoginForm

Professor

BillingSystem

CloseRegistrationController

RegisterForCoursesForm

Course

CourseCatalogSystem

Student

RegistrationController

CourseOffering

Schedule

Métodos Orientados a Objetos – UML – Diagrama de Classes

Page 9: Orientação a Objetos - ISMTdocentes.ismt.pt/~jcfreire/aulas/DiagramasClasse.pdf · Diagrama de Classes – Processo Unificado (RUP) JCFJ 4.2 SEL 3113 –Engenharia de Software Diagramade

JCFJ

4.17SEL 3113 –Engenharia de Software

� Um mecanismo de propósito geral para organizar elementos em grupos.

� Um elemento de modelagem que contém outros elementos de modelagem.

� Um pacote pode ser usado para:– Organizar o modelo sendo desenvolvido.

– Criar uma unidade de gerenciamento da configuração.

Revisão: O que é um Pacote?

University

Artifacts

Métodos Orientados a Objetos – UML – Diagrama de Classes

JCFJ

4.18

SEL 3113 –Engenharia de Software

Exemplo: Pacote Registration

Registration

CloseRegistrationForm CloseRegistrationController

RegisterForCoursesForm RegistrationControler

Métodos Orientados a Objetos – UML – Diagrama de Classes

&

Page 10: Orientação a Objetos - ISMTdocentes.ismt.pt/~jcfreire/aulas/DiagramasClasse.pdf · Diagrama de Classes – Processo Unificado (RUP) JCFJ 4.2 SEL 3113 –Engenharia de Software Diagramade

JCFJ

4.19SEL 3113 –Engenharia de Software

Tipos Particulares de Classes - I

- <<entity>> - Classe Entidade: modelam informação e comportamento

associado com uma classe que tem um “longo tempo de vida” � Este

tipo de classe representa uma entidade do mundo real ou pode ser

necessária para implementar tarefas internas do sistema.

– <<boundary>> - Classe de Fronteira: tratam com a comunicação entre

as entidades externas e o interior do sistema � Elas podem implementar

a interface para um usuário ou para outro sistema � Cada par

ator/cenário deve ser examinado na procura destas classes.

– <<control>> - Classe de Controle: modelam o comportamento

seqüencial específico para um ou mais casos de uso � Elas coordenam

os eventos necessários para realizar o comportamento especificado no

caso de uso.

Classe Entidade

Classe de Fronteira

Classe de Controle

Pode-se diferenciar três tipos primários de classes através da utilização de «estereótipos»:

Métodos Orientados a Objetos - UML - Diagramas de Classes

JCFJ

4.20

SEL 3113 –Engenharia de Software

Tipos Particulares de Classes - II

– «interface» : associada a uma classe, ele descreve um comportamento visível � Contém somente operações.

POSterminal

I-Store

Store

storeId : Integer

POSlist : list

create()

login()

find()

getPOStotals()

updateStoreTotals()

get()

<<uses>>

POSterminal

I-Store

getPOStotals()

updateStoreTotals()get()

Store

storeId : IntegerPOSlist : list

create()login()find()getPOStotals()updateStoreTotals()get()

<<uses>>

Uma classe «interface» é umaClasse abstrata.

Outra representação

Métodos Orientados a Objetos - UML - Diagramas de Classes

eeee JP mP

Page 11: Orientação a Objetos - ISMTdocentes.ismt.pt/~jcfreire/aulas/DiagramasClasse.pdf · Diagrama de Classes – Processo Unificado (RUP) JCFJ 4.2 SEL 3113 –Engenharia de Software Diagramade

JCFJ

4.21SEL 3113 –Engenharia de Software

Relações entre Classes

� Ligação entre objetos ou classes que cria uma dependência forte entre as classes do diagrama � Três tipos básicos de relações (estruturação):

– Associação

– Agregação, Composição

– Herança

� Relações de dependência, mais fracas voltadas ao projeto/realização do modelo de base (dependências) � :– « realize » entre classe e uma interface

– « realize » entre os componentes de software de uma classe

– « trace » entre uma classe “usuário” proveniente da análise e uma classe “componente” que é o resultado do projeto do software.

Métodos Orientados a Objetos - UML - Diagramas de Classes

eeee JP mP

JCFJ

4.22

SEL 3113 –Engenharia de Software

� Um relacionamento semântico entre duas ou mais classes que

especifica conexões entre suas instâncias entre suas instâncias � Relação estrutural que

especifica que objetos de uma classe estão conectados a objetos de

outra classe.

� Associações são representadas em UML por linhas entre as classes �

Dados “podem fluir” através das associações de uma classe para outra.

� Uma associação representa uma informação cujo tempo de vida não é

negligenciável em relação à dinâmica geral dos objetos associados.

Métodos Orientados a Objetos - UML - Diagramas de Classes

O que é uma Associação

Student Schedule

Page 12: Orientação a Objetos - ISMTdocentes.ismt.pt/~jcfreire/aulas/DiagramasClasse.pdf · Diagrama de Classes – Processo Unificado (RUP) JCFJ 4.2 SEL 3113 –Engenharia de Software Diagramade

JCFJ

4.23SEL 3113 –Engenharia de Software

� Nome das Associações: como regra geral, pode-se dizer que as associações devem ser nomeadas com formas verbais ativas ou passivas � Elas devem ser representadas em itálico e pode-se colocar os sinais de < > para indicar o sentido de leitura do nome das associações.

� Papel: é o nome dado as extremidades de uma associação representando um pseudo-atributo da classe fonte � Um papel deve ter um nome único no conjunto de atributos da classe fonte � O papel descreve como uma classe vê a outra classe através da associação.

Cada associação binária pode possuir dois papeis, um em cada extremidade � Os papeis são nomeados com uma forma nominal.

Métodos Orientados a Objetos - UML - Diagramas de Classes

O que é uma Associação

JCFJ

4.24

SEL 3113 –Engenharia de Software

O que é Multiplicidade?

� Multiplicidade indica o número de instâncias de uma classe que se relaciona a UMAinstância de outra classe.

� Para cada associação, existem duas decisões que devem ser tomadas a respeito das multiplicidades para cada final de associação:– Para cada instância de Professor, diversos cursos podem ser oferecidos.

– Para cada instância de CourseOffering, pode-se ter um ou nenhum Professorcomo instrutor.

� Indicadores de multiplicidade:

Professor CourseOffering

0..1 0..*0..1 0..*

instructor

� 1 � exatamente um.

� 0..*, ou *� zero ou mais.

� 1..* � um ou mais.

� 0..1 � zero ou um (elemento opcional).

� 5..8 � faixa específica (5, 6, 7, ou 8 ).

� 4..7, 9 � combinação (4, 5, 6, 7, ou 9).

&

Métodos Orientados a Objetos - UML - Diagramas de Classes - Associações

Page 13: Orientação a Objetos - ISMTdocentes.ismt.pt/~jcfreire/aulas/DiagramasClasse.pdf · Diagrama de Classes – Processo Unificado (RUP) JCFJ 4.2 SEL 3113 –Engenharia de Software Diagramade

JCFJ

4.25SEL 3113 –Engenharia de Software

� Relações que têm como origem e destino uma única classe.

� Normalmente isto não indica que um objeto da classe tem uma associação com ele mesmo � Geralmente indicam relações existentes entre diferentes objetos da mesma classe.

� Com associações reflexivas para se nomear a associação são utilizados papeis e não nomes de associação.

Métodos Orientados a Objetos - UML - Diagramas de Classes - Associações

Associação Reflexiva

Pessoa

2+pais

+crianças

2

0, n

JCFJ

4.26

SEL 3113 –Engenharia de Software

Multiplicidade: Exemplo

RegisterForCoursesForm

CourseOfferingSchedule

0..4

0..*Student

0..*

1

RegistrationController1

1

1

1

0..1

0..1

1. Descreva os relacionamentos entre: RegisterForCoursesForm e

RegistrationController; Schedule para Student; e CourseOffering paraSchedule. Quais são os limites superiores e inferiores destes relacionamentos?

2. Qual relacionamento é obrigatório? O que isto significa?

3. Quantos CourseOffering podem aparecer em um Schedule?

4. Quantos Student estão ligados a cada Schedule?

5. Pode um Schedule existir sem um Student?

6. Quantos Schedule podem ser abertos em um RegisterForCoursesForm?

Métodos Orientados a Objetos - UML - Diagramas de Classes - Associações

Page 14: Orientação a Objetos - ISMTdocentes.ismt.pt/~jcfreire/aulas/DiagramasClasse.pdf · Diagrama de Classes – Processo Unificado (RUP) JCFJ 4.2 SEL 3113 –Engenharia de Software Diagramade

JCFJ

4.27SEL 3113 –Engenharia de Software

Estudante

nome : String

número : Integer = 0

idade : Integer

ano

adicionar(Nom : String) : void

s-inscrever() : Boolean

Curso

nome : String

adicionar()

validar()

1..41..n 1..41..n

Inscrito >+inscrição

Associações: Exemplo

O Curso no qual o estudante se inscreve não faz parte dos atributos de Estudante � É a associaassociaassociaassociaççççãoãoãoão que traduz esta característica.

Papel (não é necessário que esteja dos dois lados)Nome da associação (em itálico)

> Como ler a associação

Cardinalidades (invertidas)

Métodos Orientados a Objetos - UML - Diagramas de Classes - Associações

eeee JP mP

JCFJ

4.28

SEL 3113 –Engenharia de Software

Classe Associativa

Inscrição

data : Date Inscrição de um estudanteem um curso do estabelecimento, criada edatada pela escolaridadeno ato da inscrição.Arquivada para o históricoda vida do estudante.

Classe associativa: um objeto da classe é identificado

pelo “casal” de objetos ligados à associação

– Uma associação pode intrinsecamente ter uma estrutura e um comportamento quedeva ser representado � Associação representada como uma classe.

– Situação verdadeira quando existe uma informação a ser representada e esta informação é ligada simultaneamente aos dois objetos ligados pela associação e não somente a um deles.

Métodos Orientados a Objetos - UML - Diagramas de Classes - Associações

Estudante

nome : String

número : Integer = 0

idade : Integer

ano

adicionar(Nom : String) : void

s-inscrever() : Boolean

Curso

nome : String

adicionar()

validar()

1..41..n

Inscrição >+inscritos

eeee JP mP

Page 15: Orientação a Objetos - ISMTdocentes.ismt.pt/~jcfreire/aulas/DiagramasClasse.pdf · Diagrama de Classes – Processo Unificado (RUP) JCFJ 4.2 SEL 3113 –Engenharia de Software Diagramade

JCFJ

4.29SEL 3113 –Engenharia de Software

� Define uma associação entre classes onde uma classe compartilha a estrutura e/ou comportamento com uma ou mais classes.

– Uma hierarquia de abstrações, na qual uma sub-classe herda de uma ou mais classes, écriada � Uma sub-classe herdará todos os atributos, operações (públicas ou protegidas) e associações definidos em qualquer uma de suas super-classes.

– Uma sub-classe pode ser aumentada com atributos, operações e associações adicionais que se aplicam somente no nível hierárquico ao qual a sub-classe pertence.

– Uma sub-classe pode fornecer sua própria implementação para uma operação definida em uma super-classe � Polimorfismo.

– Generalização: mecanismo utilizado para criar super-classes que encapsulam estrutura e comportamento comuns a diversas classes � Relacionamento que permite que objetos de um elemento especializado (filho) sejam substituídos por objetos de um elemento geral (o pai).

– O conceito de generalização é utilizado em UML não só com classes mas também com pacotes e casos de uso.

– Especialização: mecanismo utilizado para criar sub-classes que representam refinamentos de super-classes � Tipicamente estrutura e comportamento são adicionados às novas sub-classes.

Métodos Orientados a Objetos - UML - Diagramas de Classes

Herança

JCFJ

4.30

SEL 3113 –Engenharia de Software

Herança: Generalização-Especialização

Instância-Vôo

associarAvião()

Instância-Pass

res1res2

reservar1()

reservar2()associarAvião()

Instância-Carga

carga

reservar-carga()associarAvião()

Herança

Polimorfismo

� Generalização: mais geral…

– super-classe

– sub-classe (herda de)

� Especialização: mais específico

� Generalizar :

– Fatorar atributos, operações,

restrições.

� Especializar :

– Extensão Coerente no sentido da

teoria de conjuntos...

Métodos Orientados a Objetos - UML - Diagramas de Classes - Herança

eeee JP mP

Page 16: Orientação a Objetos - ISMTdocentes.ismt.pt/~jcfreire/aulas/DiagramasClasse.pdf · Diagrama de Classes – Processo Unificado (RUP) JCFJ 4.2 SEL 3113 –Engenharia de Software Diagramade

JCFJ

4.31SEL 3113 –Engenharia de Software

Herança Múltipla

Métodos Orientados a Objetos - UML - Diagramas de Classes - Herança

Animal

Felino

eeee JP mP

MamíferoPeixe Carnívoro Herbívoro

JCFJ

4.32

SEL 3113 –Engenharia de Software

Classe Abstrata

� Classe reagrupando propriedades comuns de suas sub-classes;

� Não tem instâncias próprias � Serve somente como “fatoração”, “abstração”.

Pessoa

nome : Stringsobrenome : Stringcpf : Integerendereço : String

identificar()

Empregado

salário : Doubleíndice : Double

identificar()

Estudante

n-inscrição : Integer

identificar()

Nome em itálico

Métodos Orientados a Objetos - UML - Diagramas de Classes - Herança

eeee JP mP

Page 17: Orientação a Objetos - ISMTdocentes.ismt.pt/~jcfreire/aulas/DiagramasClasse.pdf · Diagrama de Classes – Processo Unificado (RUP) JCFJ 4.2 SEL 3113 –Engenharia de Software Diagramade

JCFJ

4.33SEL 3113 –Engenharia de Software

Considerações sobre Herança

� Sentido: “é um”, “é um tipo de”, “é da família dos”.

� Propriedades:– Não reflexiva: A não herda dele mesmo; ele é ele próprio;

– Não simétrica: B sub-classe de A, proíbe A sub-classe de B (não cíclico)

– Transitiva: C sub-classe de B, B sub-classe de A� C sub-classe de A

A

B

C

Métodos Orientados a Objetos - UML - Diagramas de Classes - Herança

eeee JP mP

A

B

A

JCFJ

4.34

SEL 3113 –Engenharia de Software

Curso Módulo1..n1 1..n1

Curso Módulo

1..n1..n 1..n1..n

� Forma especializada de associação, na qual um “todo” é relacionado com suas partes (Whole-Parts) � Como determinar se uma associação é uma agregação:– A frase “uma parte de” pode ser utilizada para descrever a associação?

– Algumas operações do “todo” são aplicadas automaticamente às partes?

– Existe uma assimetria intrínseca ligada à associação, com uma classe subordinada a outra?

ForteForteForteForte : Composição

FracaFracaFracaFraca : Agregação

Agregação

Um módulo pertence a um só curso (e desaparece com ele).

Os módulos são compartilhados por diferentes cursos.

composição = agregação forte

não existe compartilhamento ea morte é simultânea

Todo Parte

Métodos Orientados a Objetos - UML - Diagramas de Classes

eeee JP mP

Page 18: Orientação a Objetos - ISMTdocentes.ismt.pt/~jcfreire/aulas/DiagramasClasse.pdf · Diagrama de Classes – Processo Unificado (RUP) JCFJ 4.2 SEL 3113 –Engenharia de Software Diagramade

JCFJ

4.35SEL 3113 –Engenharia de Software

Métodos Orientados a Objetos - UML - Diagramas de Classes

Diagrama de Classe - ExemploDiagrama de Classe - Exemplo

Modelagem de Objetos através da UMLJ. D. Furlani – Makron Books

Restrição

JCFJ

4.36

SEL 3113 –Engenharia de Software

� O que representa um diagrama de classes?

� Que benefícios os pacotes oferecem ao

processo de modelagem?

� Defina associação, generalização e

agregação.

� Como se pode encontrar associações?

� O que é multiplicidade? Que informações a

multiplicidade fornece a pessoa que constrói o

modelo?

Revisão

Métodos Orientados a Objetos - UML - Diagramas de Classes

Page 19: Orientação a Objetos - ISMTdocentes.ismt.pt/~jcfreire/aulas/DiagramasClasse.pdf · Diagrama de Classes – Processo Unificado (RUP) JCFJ 4.2 SEL 3113 –Engenharia de Software Diagramade

JCFJ

4.37SEL 3113 –Engenharia de Software

Exercício 1

� Sabendo que:– Um Diagrama de Classes contém as seguintes classes: Perfil Pessoal

do Planejador (PPP), Perfil Pessoal do Controlador (PPC), Perfil do Consumidor (PC), e Registro do Comprador (RC).

– As Associações apresentam as seguintes informações:1. Cada objeto Perfil Pessoal do Planejador (PPP) pode estar associado com um objeto Perfil Pessoal do Controlador (PPC).

2. Cada objeto Perfil Pessoal do Controlador (PPC) deve estar relacionado com um Perfil Pessoal do Planejador (PPP).

3. Um objeto Perfil Pessoal do Controlador (PPC) pode estar associado com um objeto de Registro do Comprador (RC) e um Perfil do Consumidor (PC).

4. Cada instância da classe Registro do Comprador (RC) pode estar relacionada com zero ou uma instância de Perfil Pessoal do Controlador (PPC).

5. Cada instância da classe Perfil do Consumidor (PC) está associado com zero ou um objeto de Perfil Pessoal do Planejador (PPP).

� Desenhe o Diagrama de Classes.

Métodos Orientados a Objetos - UML - Diagramas de Classes

JCFJ

4.38

SEL 3113 –Engenharia de Software

Solução do Exercício

Métodos Orientados a Objetos - UML - Diagramas de Classes

PPP

PC

PPC11

1

0..1

RC

1

0..1

11

0..1

1

0..1

1

Page 20: Orientação a Objetos - ISMTdocentes.ismt.pt/~jcfreire/aulas/DiagramasClasse.pdf · Diagrama de Classes – Processo Unificado (RUP) JCFJ 4.2 SEL 3113 –Engenharia de Software Diagramade

JCFJ

4.39SEL 3113 –Engenharia de Software

Exercício 2: Sistema de Controle de Pedidos

Uma empresa pretende desenvolver um Sistema de Informação para a gerênciados pedidos recebidos pela empresa. Este sistema de informação deve ser capaz decontrolar o cadastro dos clientes, dos pedidos e dos produtos com todas as

funcionalidades características (inclusão, alteração, supressão). Para realizar qualquer operação com o sistema o funcionário deve ter realizado o login no sistema. No sistema um login écaracterizado por um username e uma password. Os Clientes que serão gerenciados pelo SI podem ser do tipo Cliente Corporativo ou Cliente Pessoal. Cada Cliente pode estar associado a diversos Pedidos, mas um Pedido está associado unicamente a um Cliente. Um Pedido écomposto por diversas Linhas de Pedido e cada Linha de Pedido logicamente só pode fazer parte de um único Pedido. As linhas de Pedido nascem e morrem com os Pedidos. Cada Linha de Pedido está associada a unicamente um Produto, mas um Produto pode estar associado a diversas Linhas de Pedido. Clientes Corporativos são definidos por um código, um nome, um endereço, um nome de contato, uma classe de crédito e um limite de crédito. Clientes Pessoais são definidos por um código, um nome, um endereço, e um número de cartão de crédito. Um Pedido é definido por uma data, um preço e um número. Cada Linha do Pedido é definida por uma quantidade e um preço e cada Produto é definido por um código, uma descrição e um preço.

Métodos Orientados a Objetos - UML – Diagramas de Casos de Uso

JCFJ

4.40

SEL 3113 –Engenharia de Software

Exercício 2: Sistema de Controle de Pedidos

Page 21: Orientação a Objetos - ISMTdocentes.ismt.pt/~jcfreire/aulas/DiagramasClasse.pdf · Diagrama de Classes – Processo Unificado (RUP) JCFJ 4.2 SEL 3113 –Engenharia de Software Diagramade

JCFJ

4.41SEL 3113 –Engenharia de Software

Bibliografia

� [FOO04] Martin Fowler, UML Essencial – 3 ª Edição, Bookman, 2004.

� [IBM04] IBM Corporation, Essentials of Visual Modeling with UML 2.0, Material

disponibilizado através do programa University da IBM.

Métodos Orientados a Objetos – UML