Buscar

DiagramasClasse

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 21 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 21 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 21 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

    JCFJ
4.1
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
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
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
Diagrama de Classes – Dados
� Objetos, Classes, Atributos, Operações, 
Associações, Agregação, Composição, 
Herança 
Métodos Orientados a Objetos - UML
    JCFJ
4.3
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
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
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
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
    JCFJ
4.5
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
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
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
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
    JCFJ
4.7
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
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
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
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
    JCFJ
4.9
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
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
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
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
    JCFJ
4.11
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
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
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
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
    JCFJ
4.13
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
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() : Boolean
Formaçã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
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
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
    JCFJ
4.15
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
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 para
fornecer 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
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
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
    JCFJ
4.17
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
� 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
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
Exemplo: Pacote Registration
Registration
CloseRegistrationForm CloseRegistrationController
RegisterForCoursesForm RegistrationControler
Métodos Orientados a Objetos – UML – Diagrama de Classes
&
    JCFJ
4.19
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
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
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
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 : Integer
POSlist : list
create()
login()
find()
getPOStotals()
updateStoreTotals()
get()
<<uses>>
Uma classe «interface» é uma
Classe abstrata.
Outra representação
Métodos Orientados a Objetos - UML - Diagramas de Classes
eeee JP mP
    JCFJ
4.21
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
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
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
� 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
    JCFJ
4.23
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
� 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
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
O que é Multiplicidade?
� Multiplicidade indica o número de instâncias de uma classe que se relaciona a UMA
instância de outraclasse.
� 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 Professor
como 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
    JCFJ
4.25
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
� 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
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
Multiplicidade: Exemplo
RegisterForCoursesForm
CourseOfferingSchedule
0..4
0..*
Student
0..*
1
RegistrationController
1
1
1
1
0..1
0..1
1. Descreva os relacionamentos entre: RegisterForCoursesForm e 
RegistrationController; Schedule para Student; e CourseOffering para
Schedule. 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
    JCFJ
4.27
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
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
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
Classe Associativa
Inscrição
data : Date Inscrição de um estudante
em um curso do 
estabelecimento, criada e
datada pela escolaridade
no ato da inscrição.
Arquivada para o histórico
da 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 que
deva 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
    JCFJ
4.29
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
� 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
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
Herança: Generalização-Especialização
Instância-Vôo
associarAvião()
Instância-Pass
res1
res2
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
    JCFJ
4.31
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
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
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
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 : String
sobrenome : String
cpf : Integer
endereç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
    JCFJ
4.33
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
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
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
Curso Módulo
1..n1 1..n1
Curso Módulo
1..n1..n 1..n1..n
� Forma especializada de associação, na qual um “todo” é relacionadocom 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 e
a morte é simultânea
Todo Parte
Métodos Orientados a Objetos - UML - Diagramas de Classes
eeee JP mP
    JCFJ
4.35
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
Métodos Orientados a Objetos - UML - Diagramas de Classes
Diagrama de Classe - ExemploDiagrama de Classe - Exemplo
 Modelagem de Objetos através da UML
J. D. Furlani – Makron Books
Restrição
    JCFJ
4.36
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
� 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
    JCFJ
4.37
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
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
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
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
    JCFJ
4.39
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
Exercício 2: Sistema de Controle de Pedidos
Uma empresa pretende desenvolver um Sistema de Informação para a gerência
dos pedidos recebidos pela empresa. Este sistema de informação deve ser capaz de
controlar 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
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
Exercício 2: Sistema de Controle de Pedidos
    JCFJ
4.41
S
E
L
 3
1
1
3
 –
E
n
g
en
h
a
ri
a
 d
e 
S
o
ft
w
a
re
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

Outros materiais