Download - Introdução a diagrama de classes e UML Prof. Alexandre Parra Carneiro da Silva [email protected].

Transcript
Page 1: Introdução a diagrama de classes e UML Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Introdução a diagrama de classes e UML

Prof. Alexandre Parra Carneiro da [email protected]

Page 2: Introdução a diagrama de classes e UML Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

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 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.

Page 3: Introdução a diagrama de classes e UML Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Principais Diagramas da UML 2.0 (1/2)

Diagramas Comportamentais Estudo de Caso Transição de Estados Atividades

Diagramas Estruturais Objetos Classes Componentes, entre outros...

Page 4: Introdução a diagrama de classes e UML Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Principais Diagramas da UML 2.0 (2/2)

Diagramas de Interação Seqüência Colaboração Tempo

Page 5: Introdução a diagrama de classes e UML Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

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.

Page 6: Introdução a diagrama de classes e UML Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

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

Page 7: Introdução a diagrama de classes e UML Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

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.

Page 8: Introdução a diagrama de classes e UML Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Exemplos de Classe em UML 2.0

School

name : Stringaddress : Stringphone : String student : Vectordepartment : Vector

addStudent(object : Student) : voidremoveStudent() : voidaddDepartment(dep : Department) : voidremoveDepartment() : void

Nome

Atributo

Operação

Page 9: Introdução a diagrama de classes e UML Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

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.

Page 10: Introdução a diagrama de classes e UML Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Exemplo de Visibilidade

Shape

# origin : Point

+ move (offset : Point) : void+ resize (ratio : Real) : void+ display () : void

Rectangle

- width : float- height : float

+ resize(ratio : Real) : void+ display() : void

Circle

- radius : float

+ resize(ratio : Real) : void+ display() : void

Polygon

- vertexOffest : Point [ ]

+ resize(ratio : Real) : void+ display() : void

superclasse

generalização

sub-classes

Page 11: Introdução a diagrama de classes e UML Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

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

Page 12: Introdução a diagrama de classes e UML Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

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

name

playOn(c : Channel)start()stop()reset()

Channel

dependência

Page 13: Introdução a diagrama de classes e UML Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Relacionamento: Generalização

É um relacionamento entre um tipo geral de uma entidade (superclasse) e um tipo mais específico desta entidade (subclasse).

Shape

origin : Point

move (offset : Point) : voidresize (ratio : Real) : voiddisplay () : void

Rectangle

width : floatheight : float

resize(ratio : Real) : voiddisplay() : void

Circle

radius : float

resize(ratio : Real) : voiddisplay() : void

Polygon

vertexOffest : Point [ ]

resize(ratio : Real) : voiddisplay() : void

superclasse

generalização

sub-classes

Page 14: Introdução a diagrama de classes e UML Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

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 Companytrabalha para

associação

Page 15: Introdução a diagrama de classes e UML Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

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

Person Company

associação

employee employer

função/cargo

Page 16: Introdução a diagrama de classes e UML Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Relacionamento: Associação (multiplicidade)

* significa 0..*

Person Companyemployee employer

*1..*

associação

multiplicidade

Page 17: Introdução a diagrama de classes e UML Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Relacionamento: Agregação

Agregação é um tipo especial de associação.

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).

Room

Wall

1

*

todo

parte

Page 18: Introdução a diagrama de classes e UML Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

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.

Page 19: Introdução a diagrama de classes e UML Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Relacionamento: Composição (2/2)

Window

Frame

1

*

todo

parte

Page 20: Introdução a diagrama de classes e UML Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Relacionamento: Associação com propriedades

Em uma associação entre classes, a própria associação pode ter propriedades.

Company Personemployeeemployer

* 1..*

Job

descriptiondateHiredsalary

associação

Page 21: Introdução a diagrama de classes e UML Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Expressando interfaces em UML 2.0

<<interface>>Radio

+ setEmissora(emissora,tipoEmi)+ getEmissora()+ getTipoEmissora()+ setVolumeRadio(vol)+ getVolumeRadio()

<<interface>>Relogio

+ setHorario(horario)+ getHorario()+ setHorarioAlarme(horario)+ getHorarioAlarme(horario)+ ligarAlarme()+ desligarAlarme()+ setVolumeRelogio(vol)+ getVolumeRelogio()

RadioRelogio

- horario- despertar- horarioAlarme- emissora- tipoEmissora- volumeRadio- volumeRelogio

Page 22: Introdução a diagrama de classes e UML Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

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.

Page 23: Introdução a diagrama de classes e UML Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Exemplo de classe e método abstrato

Shape

# origin : Point

+ move (offset : Point) : void+ resize (ratio : Real) : void+ display () : void

Rectangle

- width : float- height : float

+ resize(ratio : Real) : void+ display() : void

Circle

- radius : float

+ resize(ratio : Real) : void+ display() : void

Polygon

- vertexOffest : Point [ ]

+ resize(ratio : Real) : void+ display() : void

superclasse

generalização

sub-classes

Page 24: Introdução a diagrama de classes e UML Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Demais Notações em UML 2.0 (2/2)

Expressar herança simples e múltipla

Shape

# origin : Point

+ move (offset : Point) : void+ resize (ratio : Real) : void+ display () : void

Rectangle

- width : float- height : float

+ resize(ratio : Real) : void+ display() : void

Circle

- radius : float

+ resize(ratio : Real) : void+ display() : void

Polygon

- vertexOffest : Point [ ]

+ resize(ratio : Real) : void+ display() : void

superclasse

generalização

sub-classes

RadioRelogio

- horario- despertar- horarioAlarme- emissora- tipoEmissora- volumeRadio- volumeRelogio

<<interface>>Radio

+ setEmissora(emissora,tipoEmi)+ getEmissora()+ getTipoEmissora()+ setVolumeRadio(vol)+ getVolumeRadio()

<<interface>>Relogio

+ setHorario(horario)+ getHorario()+ setHorarioAlarme(horario)+ getHorarioAlarme(horario)+ ligarAlarme()+ desligarAlarme()+ setVolumeRelogio(vol)+ getVolumeRelogio()

Herança Simples

Herança Múltipla

Page 25: Introdução a diagrama de classes e UML Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Ferramenta para modelagem UML

JUDE http://jude.change-vision.com/jude-web/index.

html