Introdução a diagrama de classes e UML
Prof. Alexandre Parra Carneiro da Silva
[email protected]
O que é UML ?

A UML (Unified Modeling Language) é uma linguagem
para especificação, documentação, visualização e
desenvolvimento de sistemas orientados a objetos.

Considerada uma das linguagens mais expressivas para
modelagem de sistemas orientados a objetos.

É possível representar sistemas de
diversas perspectivas de visualização.

Facilita a comunicação de todas as pessoas envolvidas no
processo de desenvolvimento de um sistema:




Gerentes;
Coordenadores;
Analistas e
Desenvolvedores.
softwares
sob
Principais Diagramas da UML 2.0

Diagramas Comportamentais




Estudo de Caso
Transição de Estados
Atividades
Diagramas Estruturais



Objetos
Classes
Componentes, entre outros...
(1/2)
Principais Diagramas da UML 2.0

Diagramas de Interação



Seqüência
Colaboração
Tempo
(2/2)
Diagrama de Classes

Diagramas de classe são os diagramas mais comuns
encontrados em modelagem de sistemas orientados a objetos.

Um diagrama de classe mostra um conjunto de: classes,
interfaces e seus relacionamentos.

Principal uso: modelar a visão do projeto de um sistema de
forma estática.

São
importantes
não
somente
para
visualização,
especificação e documentação dos modelos estruturais.
Termos e Conceitos de Diagramas de Classes (DC)



Uma classe é uma descrição de um conjunto de
objetos que compartilham: atributos, operações,
relacionamentos e semântica.
Graficamente, uma classe é desenhada como um
retângulo.
Uma classe em DC é composta de três partes:



Nome
Atributos
Métodos
O que são: Nome, Atributo e Método



Nome: Toda classe deve ter um nome que a
distingue de outras.
Atributo: é uma propriedade mencionada de uma
classe que descreve uma variação de valores que
instâncias da propriedade pode conter. A propriedade
é compartilhada por todos os objetos desta classe.
Método: é a implementação de um serviço que
pode ser requerido a partir de qualquer objeto da
classe para afetar seu estado.
Exemplos de Classe em UML 2.0
School
name : String
address : String
phone : String
student : Vector
department : Vector
addStudent(object : Student) : void
removeStudent() : void
addDepartment(dep : Department) : void
removeDepartment() : void
Nome
Atributo
Operação
Notações de Visibilidade em UML 2.0

Encapsulamento:
Público (+): Visível para qualquer elemento que possa ver a
classe.
Protected (#): Visível a outros elementos dentro da classe e
de subclasses.
Private (-): Visível a outros elementos dentro da classe.
Package (~): Visível a elementos do mesmo pacote.
Exemplo de Visibilidade
superclasse
Shape
# origin : Point
generalização
Rectangle
- width : float
- height : float
+ resize(ratio : Real) : void
+ display() : void
+ move (offset : Point) : void
+ resize (ratio : Real) : void
+ display () : void
Polygon
Circle
- radius : float
- vertexOffest : Point [ ]
+ resize(ratio : Real) : void
+ display() : void
+ resize(ratio : Real) : void
+ display() : void
sub-classes
Relações entre classes


Em UML 2.0, as formas que entidades podem
conectar a outras, lógica ou fisicamente, são
através de relacionamentos.
Em Orientação a Objetos, há três tipos de
relacionamentos:



Dependências
Generalizações
Associações
Relacionamento: Dependência


Dependência é um relacionamento que declara que uma
entidade (ex: classe Window) usa a informação e serviços de
outra entidade (ex: classe Event), mas não necessariamente o
inverso.
Geralmente se usa dependência para mostrar que uma classe
usa operações de outra classe ou usa variáveis ou
argumentos de tipo de outra classe.
FilmClip
dependência
name
playOn(c : Channel)
start()
stop()
reset()
Channel
Relacionamento: Generalização

É um relacionamento entre um tipo geral de uma
entidade (superclasse) e um tipo mais específico
desta entidade (subclasse).
superclasse
Shape
origin : Point
generalização
Rectangle
width : float
height : float
resize(ratio : Real) : void
display() : void
move (offset : Point) : void
resize (ratio : Real) : void
display () : void
Polygon
Circle
radius : float
vertexOffest : Point [ ]
resize(ratio : Real) : void
display() : void
resize(ratio : Real) : void
display() : void
sub-classes
Relacionamento: Associação


É um relacionamento estrutural que especifica que
objetos de uma entidade são ligados a objetos de
outra entidade.
Dada uma associação entre duas classes, você pode
relacionar objetos de uma classe a objetos de outra
classe.
Person
trabalha para
associação
Company
Relacionamento: Associação (função)
associação
Person
Company
employee
employer
função/cargo
Relacionamento: Associação (multiplicidade)
multiplicidade
Person
1..*
*
employee
employer
associação
*  significa 0..*
Company
Relacionamento: Agregação

Agregação é um tipo especial
de associação.
Room


Quando utilizar AGREGAÇÃO ?
Deseja-se
modelar
um
relacionamento “todo/parte”, em
que uma classe representa uma
entidade
completa
(todo),
composta de outras entidades
(partes).
todo
1
*
parte
Wall
Relacionamento: Composição



(1/2)
Composição é uma forma de agregação, contudo
dá o sentido de forte posse e tempo de vida entre
parte e o todo.
O todo é responsável pela disposição de suas
partes, ou seja, que o todo deve gerenciar a criação
e destruição de suas partes.
Ou seja, um objeto pode ser uma parte de somente
uma composição por vez.
Relacionamento: Composição
Window
todo
1
*
parte
Frame
(2/2)
Relacionamento: Associação com propriedades

Em uma associação entre classes, a própria
associação pode ter propriedades.
Company
1..*
*
employer
Person
employee
associação
Job
description
dateHired
salary
Expressando interfaces em UML 2.0
<<interface>>
Relogio
<<interface>>
Radio
+ setEmissora(emissora,tipoEmi)
+ getEmissora()
+ getTipoEmissora()
+ setVolumeRadio(vol)
+ getVolumeRadio()
+ setHorario(horario)
+ getHorario()
+ setHorarioAlarme(horario)
+ getHorarioAlarme(horario)
+ ligarAlarme()
+ desligarAlarme()
+ setVolumeRelogio(vol)
+ getVolumeRelogio()
RadioRelogio
- horario
- despertar
- horarioAlarme
- emissora
- tipoEmissora
- volumeRadio
- volumeRelogio
Demais Notações em UML 2.0

Como expressar classes abstratas:


(1/2)
O nome da classe deve ser escrito no estilo itálico.
Como expressar métodos abstratos:

O nome do método deve ser escrito no estilo itálico.
Exemplo de classe e método abstrato
superclasse
Shape
# origin : Point
generalização
Rectangle
- width : float
- height : float
+ resize(ratio : Real) : void
+ display() : void
+ move (offset : Point) : void
+ resize (ratio : Real) : void
+ display () : void
Polygon
Circle
- radius : float
- vertexOffest : Point [ ]
+ resize(ratio : Real) : void
+ display() : void
+ resize(ratio : Real) : void
+ display() : void
sub-classes
Demais Notações em UML 2.0

(2/2)
Expressar herança simples e múltipla
superclasse
<<interface>>
Relogio
Shape
<<interface>>
Radio
# origin : Point
generalização
+ move (offset : Point) : void
+ resize (ratio : Real) : void
+ display () : void
Rectangle
+ setEmissora(emissora,tipoEmi)
+ getEmissora()
+ getTipoEmissora()
+ setVolumeRadio(vol)
+ getVolumeRadio()
Polygon
Circle
- width : float
- height : float
+ resize(ratio : Real) : void
+ display() : void
+ setHorario(horario)
+ getHorario()
+ setHorarioAlarme(horario)
+ getHorarioAlarme(horario)
+ ligarAlarme()
+ desligarAlarme()
+ setVolumeRelogio(vol)
+ getVolumeRelogio()
- radius : float
- vertexOffest : Point [ ]
+ resize(ratio : Real) : void
+ display() : void
+ resize(ratio : Real) : void
+ display() : void
RadioRelogio
- horario
- despertar
- horarioAlarme
- emissora
- tipoEmissora
- volumeRadio
- volumeRelogio
sub-classes
Herança Simples
Herança Múltipla
Ferramenta para modelagem UML


JUDE
http://jude.change-vision.com/jude-web/index.html
Download

Introdução a diagrama de classes e UML