Você está na página 1de 25

Introdução a diagrama de classes e UML

Docente: Francisco A. Niposso


O que é UML ?
 A UML (Unified Modeling Language) é uma linguagem
para especificação, documentação, visualização e
desenvolvimento de sistemas orientados a objectos.

 Considerada uma das linguagens mais expressivas para


modelagem de sistemas orientados a objectos.

 É possível representar sistemas de softwares sob


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.
Principais Diagramas da UML 2.0
 Diagramas Comportamentais
 Estudo de Caso
 Transição de Estados
 Actividades
 Diagramas Estruturais
 Objectos
 Classes
 Componentes, entre outros...
Principais Diagramas da UML 2.0 (

 Diagramas de Interacção
 Seqüência
 Colaboração
 Tempo
Diagrama de Classes
 Diagramas de classe são os diagramas mais comuns
encontrados em modelagem de sistemas orientados a objectos.

 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


objectos 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 Nome
name : String
address : String
phone : String Atributo
student : Vector
department : Vector

addStudent(object : Student) : void Operação


removeStudent() : void
addDepartment(dep : Department) : void
removeDepartment() : void
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
+ move (offset : Point) : void
+ resize (ratio : Real) : void
+ display () : void

Rectangle Circle Polygon

- width : float - radius : float - vertexOffest : Point [ ]


- height : float
+ resize(ratio : Real) : void + resize(ratio : Real) : void
+ resize(ratio : Real) : void + display() : void + display() : 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 Objectos, 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() Channel
stop()
reset()
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
move (offset : Point) : void
resize (ratio : Real) : void
display () : void

Rectangle Circle Polygon

width : float radius : float vertexOffest : Point [ ]


height : float
resize(ratio : Real) : void resize(ratio : Real) : void
resize(ratio : Real) : void display() : void display() : 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.
trabalha para
Person Company

associação
Relacionamento: Associação (função)
associação

Person Company
employee employer

função/cargo
Relacionamento: Associação (multiplicidade)
multiplicidade

1..* *
Person Company
employee employer

associação

*  significa 0..*
Relacionamento: Agregação
 Agregação é um tipo especial
de associação.
Room
 Quando utilizar AGREGAÇÃO ? todo 1

 Deseja-se modelar um
relacionamento “todo/parte”, em *
que uma classe representa uma parte
entidade completa (todo), Wall
composta de outras entidades
(partes).
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 (2/2)

Window
todo 1

*
parte
Frame
Relacionamento: Associação com propriedades

 Em uma associação entre classes, a própria


associação pode ter propriedades.

* 1..*
Company Person
employer employee

associação

Job

description
dateHired
salary
Expressando interfaces em UML 2.0
<<interface>>
Relogio

<<interface>>
Radio + setHorario(horario)
+ getHorario()
+ setHorarioAlarme(horario)
+ setEmissora(emissora,tipoEmi) + getHorarioAlarme(horario)
+ getEmissora() + ligarAlarme()
+ getTipoEmissora() + desligarAlarme()
+ setVolumeRadio(vol) + setVolumeRelogio(vol)
+ getVolumeRadio() + getVolumeRelogio()

RadioRelogio
- horario
- despertar
- horarioAlarme
- emissora
- tipoEmissora
- volumeRadio
- volumeRelogio
Demais Notações em UML 2.0 (1/2)

 Como expressar classes abstratas:


 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
+ move (offset : Point) : void
+ resize (ratio : Real) : void
+ display () : void

Rectangle Circle Polygon

- width : float - radius : float - vertexOffest : Point [ ]


- height : float
+ resize(ratio : Real) : void + resize(ratio : Real) : void
+ resize(ratio : Real) : void + display() : void + display() : 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>>
# origin : Point Radio + setHorario(horario)
+ getHorario()
generalização + setHorarioAlarme(horario)
+ move (offset : Point) : void
+ setEmissora(emissora,tipoEmi) + getHorarioAlarme(horario)
+ resize (ratio : Real) : void + getEmissora() + ligarAlarme()
+ display () : void + getTipoEmissora() + desligarAlarme()
+ setVolumeRadio(vol) + setVolumeRelogio(vol)
+ getVolumeRadio() + getVolumeRelogio()

Rectangle Circle Polygon


RadioRelogio
- width : float - radius : float - vertexOffest : Point [ ]
- height : float - horario
+ resize(ratio : Real) : void + resize(ratio : Real) : void - despertar
- horarioAlarme
+ resize(ratio : Real) : void + display() : void + display() : void - emissora
+ display() : void - 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

Você também pode gostar