SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
 JCFJ
4.1SEL3113–EngenhariadeSoftware
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
SEL3113–EngenhariadeSoftware
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.3SEL3113–EngenhariadeSoftware
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
SEL3113–EngenhariadeSoftware
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.5SEL3113–EngenhariadeSoftware
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
SEL3113–EngenhariadeSoftware
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.7SEL3113–EngenhariadeSoftware
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
SEL3113–EngenhariadeSoftware
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.9SEL3113–EngenhariadeSoftware
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
SEL3113–EngenhariadeSoftware
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.11SEL3113–EngenhariadeSoftware
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
SEL3113–EngenhariadeSoftware
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.13SEL3113–EngenhariadeSoftware
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
SEL3113–EngenhariadeSoftware
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.15SEL3113–EngenhariadeSoftware
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
SEL3113–EngenhariadeSoftware
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.17SEL3113–EngenhariadeSoftware
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
SEL3113–EngenhariadeSoftware
Exemplo: Pacote Registration
Registration
CloseRegistrationForm CloseRegistrationController
RegisterForCoursesForm RegistrationControler
Métodos Orientados a Objetos – UML – Diagrama de Classes
&
 JCFJ
4.19SEL3113–EngenhariadeSoftware
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
SEL3113–EngenhariadeSoftware
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.21SEL3113–EngenhariadeSoftware
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
SEL3113–EngenhariadeSoftware
Um relacionamento semântico entre duas ou mais classes que
especifica conexões entre suas instânciasentre 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.23SEL3113–EngenhariadeSoftware
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
SEL3113–EngenhariadeSoftware
O que é Multiplicidade?
Multiplicidade indica o número de instâncias de uma classe que se relaciona a UMA
instâ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 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.25SEL3113–EngenhariadeSoftware
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
SEL3113–EngenhariadeSoftware
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.27SEL3113–EngenhariadeSoftware
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
SEL3113–EngenhariadeSoftware
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.29SEL3113–EngenhariadeSoftware
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
SEL3113–EngenhariadeSoftware
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.31SEL3113–EngenhariadeSoftware
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
SEL3113–EngenhariadeSoftware
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.33SEL3113–EngenhariadeSoftware
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
SEL3113–EngenhariadeSoftware
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” é 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 e
a morte é simultânea
Todo Parte
Métodos Orientados a Objetos - UML - Diagramas de Classes
eeee JP mP
 JCFJ
4.35SEL3113–EngenhariadeSoftware 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
SEL3113–EngenhariadeSoftware
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.37SEL3113–EngenhariadeSoftware
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
SEL3113–EngenhariadeSoftware
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.39SEL3113–EngenhariadeSoftware
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
SEL3113–EngenhariadeSoftware
Exercício 2: Sistema de Controle de Pedidos
ClienteCorporativo
contato : String
classeCredito : String
limiteCredito : String
setCodido(codigo : String) : Boolean
ClientePessoal
nCartao : String
Cliente
codigo : String
nome : String
endereco : String
Pedido
numero : String
data : Date
preco : Float0..n1 0..n1
Produto
codigo : String
descricao : String
preco : Float
LinhaPedido
quantidade : Integer
preco : Float1..n
1
0..n
1
0..n
 JCFJ
4.41SEL3113–EngenhariadeSoftware
Exercício 2: Sistema de Controle de Pedidos
 JCFJ
4.42
SEL3113–EngenhariadeSoftware
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

Mais conteúdo relacionado

Mais procurados

11 deployment diagrams
11 deployment diagrams11 deployment diagrams
11 deployment diagramsBaskarkncet
 
Giải pháp nâng cao hiệu quả sử dụng tài sản ngắn hạn tại công ty tnhh phát tr...
Giải pháp nâng cao hiệu quả sử dụng tài sản ngắn hạn tại công ty tnhh phát tr...Giải pháp nâng cao hiệu quả sử dụng tài sản ngắn hạn tại công ty tnhh phát tr...
Giải pháp nâng cao hiệu quả sử dụng tài sản ngắn hạn tại công ty tnhh phát tr...https://www.facebook.com/garmentspace
 
1 2 5 Modelando Clases
1 2 5 Modelando Clases1 2 5 Modelando Clases
1 2 5 Modelando ClasesUVM
 
กิจกรรมบำเพ็ญประโยชน์
กิจกรรมบำเพ็ญประโยชน์กิจกรรมบำเพ็ญประโยชน์
กิจกรรมบำเพ็ญประโยชน์Justarn Pd
 
El lenguaje de modelado unificado
El lenguaje de modelado unificadoEl lenguaje de modelado unificado
El lenguaje de modelado unificadoaioria2525
 
Database Systems - Relational Data Model (Chapter 2)
Database Systems - Relational Data Model (Chapter 2)Database Systems - Relational Data Model (Chapter 2)
Database Systems - Relational Data Model (Chapter 2)Vidyasagar Mundroy
 
Báo cáo dự toán ngân sách hoạt động
Báo cáo dự toán ngân sách hoạt động             Báo cáo dự toán ngân sách hoạt động
Báo cáo dự toán ngân sách hoạt động Viet Len Xanh
 
Nâng cao hiệu quả sử dụng tài sản lưu động tại công ty tnhh xây dựng thương m...
Nâng cao hiệu quả sử dụng tài sản lưu động tại công ty tnhh xây dựng thương m...Nâng cao hiệu quả sử dụng tài sản lưu động tại công ty tnhh xây dựng thương m...
Nâng cao hiệu quả sử dụng tài sản lưu động tại công ty tnhh xây dựng thương m...https://www.facebook.com/garmentspace
 
Desarrollo de un sistema con rup uml
Desarrollo de un sistema con rup umlDesarrollo de un sistema con rup uml
Desarrollo de un sistema con rup umlRudy Junior
 

Mais procurados (20)

Lập báo cáo kết quả hoạt động kinh doanh tại Công ty Hải Phòng, HAY
Lập báo cáo kết quả hoạt động kinh doanh tại Công ty Hải Phòng, HAYLập báo cáo kết quả hoạt động kinh doanh tại Công ty Hải Phòng, HAY
Lập báo cáo kết quả hoạt động kinh doanh tại Công ty Hải Phòng, HAY
 
11 deployment diagrams
11 deployment diagrams11 deployment diagrams
11 deployment diagrams
 
Unified Modeling Language
Unified Modeling LanguageUnified Modeling Language
Unified Modeling Language
 
Giải pháp nâng cao hiệu quả sử dụng tài sản ngắn hạn tại công ty tnhh phát tr...
Giải pháp nâng cao hiệu quả sử dụng tài sản ngắn hạn tại công ty tnhh phát tr...Giải pháp nâng cao hiệu quả sử dụng tài sản ngắn hạn tại công ty tnhh phát tr...
Giải pháp nâng cao hiệu quả sử dụng tài sản ngắn hạn tại công ty tnhh phát tr...
 
1 2 5 Modelando Clases
1 2 5 Modelando Clases1 2 5 Modelando Clases
1 2 5 Modelando Clases
 
8 02
8 028 02
8 02
 
กิจกรรมบำเพ็ญประโยชน์
กิจกรรมบำเพ็ญประโยชน์กิจกรรมบำเพ็ญประโยชน์
กิจกรรมบำเพ็ญประโยชน์
 
Introduccion a Uml
Introduccion a Uml Introduccion a Uml
Introduccion a Uml
 
1 introduction of OOAD
1 introduction of OOAD1 introduction of OOAD
1 introduction of OOAD
 
Plantilla+DAS
Plantilla+DASPlantilla+DAS
Plantilla+DAS
 
El lenguaje de modelado unificado
El lenguaje de modelado unificadoEl lenguaje de modelado unificado
El lenguaje de modelado unificado
 
Diagramas de casos de uso - aula 2
Diagramas de casos de uso - aula 2Diagramas de casos de uso - aula 2
Diagramas de casos de uso - aula 2
 
Database Systems - Relational Data Model (Chapter 2)
Database Systems - Relational Data Model (Chapter 2)Database Systems - Relational Data Model (Chapter 2)
Database Systems - Relational Data Model (Chapter 2)
 
Uml
UmlUml
Uml
 
Báo cáo dự toán ngân sách hoạt động
Báo cáo dự toán ngân sách hoạt động             Báo cáo dự toán ngân sách hoạt động
Báo cáo dự toán ngân sách hoạt động
 
Apresentação da UML
Apresentação da UMLApresentação da UML
Apresentação da UML
 
Đề tài: Kế toán doanh thu chi phí tại Công ty cơ khí Hoàng Minh, 9đ
Đề tài: Kế toán doanh thu chi phí tại Công ty cơ khí Hoàng Minh, 9đĐề tài: Kế toán doanh thu chi phí tại Công ty cơ khí Hoàng Minh, 9đ
Đề tài: Kế toán doanh thu chi phí tại Công ty cơ khí Hoàng Minh, 9đ
 
Luận án: Nâng cao năng lực quản trị rủi ro tín dụng tại Ngân hàng thương mại ...
Luận án: Nâng cao năng lực quản trị rủi ro tín dụng tại Ngân hàng thương mại ...Luận án: Nâng cao năng lực quản trị rủi ro tín dụng tại Ngân hàng thương mại ...
Luận án: Nâng cao năng lực quản trị rủi ro tín dụng tại Ngân hàng thương mại ...
 
Nâng cao hiệu quả sử dụng tài sản lưu động tại công ty tnhh xây dựng thương m...
Nâng cao hiệu quả sử dụng tài sản lưu động tại công ty tnhh xây dựng thương m...Nâng cao hiệu quả sử dụng tài sản lưu động tại công ty tnhh xây dựng thương m...
Nâng cao hiệu quả sử dụng tài sản lưu động tại công ty tnhh xây dựng thương m...
 
Desarrollo de un sistema con rup uml
Desarrollo de un sistema con rup umlDesarrollo de un sistema con rup uml
Desarrollo de un sistema con rup uml
 

Semelhante a Diagrama de Classe

Umlv4 090813182632-phpapp02
Umlv4 090813182632-phpapp02Umlv4 090813182632-phpapp02
Umlv4 090813182632-phpapp02Jhonefj
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem IIIJuliano Weber
 
Uml
UmlUml
Umllcbj
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e ExercíciosArthur Emanuel
 
Análise Orientada a Objetos - Objetos E Classes
Análise Orientada a Objetos  -   Objetos E ClassesAnálise Orientada a Objetos  -   Objetos E Classes
Análise Orientada a Objetos - Objetos E ClassesCursoSENAC
 
01 Orientacao A Objetos Programacao
01   Orientacao A Objetos   Programacao01   Orientacao A Objetos   Programacao
01 Orientacao A Objetos Programacaotaniamaciel
 
Análise Orientada a Objetos com UML
Análise Orientada a Objetos com UMLAnálise Orientada a Objetos com UML
Análise Orientada a Objetos com UMLEliseu Castelo
 
Artigo Padrões J2EE: Um exemplo de uso
Artigo Padrões J2EE: Um exemplo de usoArtigo Padrões J2EE: Um exemplo de uso
Artigo Padrões J2EE: Um exemplo de usoErivan de Sena Ramos
 
Metodologia orientado a objetos
Metodologia orientado a objetosMetodologia orientado a objetos
Metodologia orientado a objetosGabriel Faustino
 
Integração de Tecnologias
Integração de TecnologiasIntegração de Tecnologias
Integração de Tecnologiaselliando dias
 
Apostila de uml
Apostila de umlApostila de uml
Apostila de umlaudiclerio
 
UML - Criando Diagramas Eficientes
UML - Criando Diagramas EficientesUML - Criando Diagramas Eficientes
UML - Criando Diagramas EficientesRodrigo Cascarrolho
 

Semelhante a Diagrama de Classe (20)

Aula 3 -_fundamentos_sobre_aoo
Aula 3 -_fundamentos_sobre_aooAula 3 -_fundamentos_sobre_aoo
Aula 3 -_fundamentos_sobre_aoo
 
Umlv4 090813182632-phpapp02
Umlv4 090813182632-phpapp02Umlv4 090813182632-phpapp02
Umlv4 090813182632-phpapp02
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem III
 
Diagrama classes
Diagrama classesDiagrama classes
Diagrama classes
 
Uml
UmlUml
Uml
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e Exercícios
 
Análise Orientada a Objetos - Objetos E Classes
Análise Orientada a Objetos  -   Objetos E ClassesAnálise Orientada a Objetos  -   Objetos E Classes
Análise Orientada a Objetos - Objetos E Classes
 
01 Orientacao A Objetos Programacao
01   Orientacao A Objetos   Programacao01   Orientacao A Objetos   Programacao
01 Orientacao A Objetos Programacao
 
Análise Orientada a Objetos com UML
Análise Orientada a Objetos com UMLAnálise Orientada a Objetos com UML
Análise Orientada a Objetos com UML
 
Artigo Padrões J2EE: Um exemplo de uso
Artigo Padrões J2EE: Um exemplo de usoArtigo Padrões J2EE: Um exemplo de uso
Artigo Padrões J2EE: Um exemplo de uso
 
Diagramadeclassesal
DiagramadeclassesalDiagramadeclassesal
Diagramadeclassesal
 
Metodologia orientado a objetos
Metodologia orientado a objetosMetodologia orientado a objetos
Metodologia orientado a objetos
 
Integração de Tecnologias
Integração de TecnologiasIntegração de Tecnologias
Integração de Tecnologias
 
Aula-04-UML.pptx
Aula-04-UML.pptxAula-04-UML.pptx
Aula-04-UML.pptx
 
Programação Orientada por Objectos - Aula 1
Programação Orientada por Objectos - Aula 1Programação Orientada por Objectos - Aula 1
Programação Orientada por Objectos - Aula 1
 
Java7
Java7Java7
Java7
 
POO.pdf
POO.pdfPOO.pdf
POO.pdf
 
Apostila de uml
Apostila de umlApostila de uml
Apostila de uml
 
Pro model
Pro modelPro model
Pro model
 
UML - Criando Diagramas Eficientes
UML - Criando Diagramas EficientesUML - Criando Diagramas Eficientes
UML - Criando Diagramas Eficientes
 

Diagrama de Classe

  • 1.  JCFJ 4.1SEL3113–EngenhariadeSoftware 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 SEL3113–EngenhariadeSoftware Diagrama de Classes – Dados Objetos, Classes, Atributos, Operações, Associações, Agregação, Composição, Herança  Métodos Orientados a Objetos - UML
  • 2.  JCFJ 4.3SEL3113–EngenhariadeSoftware 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 SEL3113–EngenhariadeSoftware 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
  • 3.  JCFJ 4.5SEL3113–EngenhariadeSoftware 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 SEL3113–EngenhariadeSoftware 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
  • 4.  JCFJ 4.7SEL3113–EngenhariadeSoftware 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 SEL3113–EngenhariadeSoftware 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
  • 5.  JCFJ 4.9SEL3113–EngenhariadeSoftware 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 SEL3113–EngenhariadeSoftware 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
  • 6.  JCFJ 4.11SEL3113–EngenhariadeSoftware 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 SEL3113–EngenhariadeSoftware 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
  • 7.  JCFJ 4.13SEL3113–EngenhariadeSoftware 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 SEL3113–EngenhariadeSoftware 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
  • 8.  JCFJ 4.15SEL3113–EngenhariadeSoftware 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 SEL3113–EngenhariadeSoftware 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
  • 9.  JCFJ 4.17SEL3113–EngenhariadeSoftware 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 SEL3113–EngenhariadeSoftware Exemplo: Pacote Registration Registration CloseRegistrationForm CloseRegistrationController RegisterForCoursesForm RegistrationControler Métodos Orientados a Objetos – UML – Diagrama de Classes &
  • 10.  JCFJ 4.19SEL3113–EngenhariadeSoftware 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 SEL3113–EngenhariadeSoftware 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
  • 11.  JCFJ 4.21SEL3113–EngenhariadeSoftware 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 SEL3113–EngenhariadeSoftware Um relacionamento semântico entre duas ou mais classes que especifica conexões entre suas instânciasentre 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
  • 12.  JCFJ 4.23SEL3113–EngenhariadeSoftware 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 SEL3113–EngenhariadeSoftware O que é Multiplicidade? Multiplicidade indica o número de instâncias de uma classe que se relaciona a UMA instâ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 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
  • 13.  JCFJ 4.25SEL3113–EngenhariadeSoftware 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 SEL3113–EngenhariadeSoftware 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
  • 14.  JCFJ 4.27SEL3113–EngenhariadeSoftware 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 SEL3113–EngenhariadeSoftware 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
  • 15.  JCFJ 4.29SEL3113–EngenhariadeSoftware 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 SEL3113–EngenhariadeSoftware 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
  • 16.  JCFJ 4.31SEL3113–EngenhariadeSoftware 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 SEL3113–EngenhariadeSoftware 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
  • 17.  JCFJ 4.33SEL3113–EngenhariadeSoftware 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 SEL3113–EngenhariadeSoftware 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” é 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 e a morte é simultânea Todo Parte Métodos Orientados a Objetos - UML - Diagramas de Classes eeee JP mP
  • 18.  JCFJ 4.35SEL3113–EngenhariadeSoftware 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 SEL3113–EngenhariadeSoftware 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
  • 19.  JCFJ 4.37SEL3113–EngenhariadeSoftware 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 SEL3113–EngenhariadeSoftware 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
  • 20.  JCFJ 4.39SEL3113–EngenhariadeSoftware 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 SEL3113–EngenhariadeSoftware Exercício 2: Sistema de Controle de Pedidos ClienteCorporativo contato : String classeCredito : String limiteCredito : String setCodido(codigo : String) : Boolean ClientePessoal nCartao : String Cliente codigo : String nome : String endereco : String Pedido numero : String data : Date preco : Float0..n1 0..n1 Produto codigo : String descricao : String preco : Float LinhaPedido quantidade : Integer preco : Float1..n 1 0..n 1 0..n
  • 21.  JCFJ 4.41SEL3113–EngenhariadeSoftware Exercício 2: Sistema de Controle de Pedidos  JCFJ 4.42 SEL3113–EngenhariadeSoftware 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