Vous êtes sur la page 1sur 17

UML Diagramas de Classes

(verso reduzida)

Joo Pascoal Faria

UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

ndice
n

Objectivo dos diagramas de classes Objectos, classes, atributos e operaes Relaes entre classes: associao, agregao e composio Relaes entre classes: generalizao

UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

Objectivo dos diagramas de classes


n

Um diagrama de classes serve para modelar o vocabulrio de um sistema, do ponto de vista do utilizador/problema ou do implementador/soluo
Ponto de vista do utilizador/problema na fase de captura e anlise de requisitos, em paralelo com a identificao dos casos de utilizao Vocabulrio do implementador/soluo na fase de projecto (design)

Construdo e refinado ao longo das vrias fases do desenvolvimento do software, por analistas, projectistas (designers ) e implementadores Tambm serve para:
Especificar colaboraes (no mbito de um caso de utilizao ou mecanismo) Especificar esquemas lgicos de bases de dados Especificar vistas (estrutura de dados de formulrios, relatrios, etc.)

Modelos de objectos de domnio, negcio, anlise e design

UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

Objectos, classes, atributos e operaes

UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

Objectos
n n n

Um objecto algo com fronteiras bem definidas, relevante para o problema em causa, com estado,
modelado por valores de atributos (tamanho, forma, peso, etc.) e por ligaes que num dado momento tem com outros objectos

comportamento
um objecto exibe comportamentos invocveis (por resposta a chamadas de operaes ) ou reactivos (por resposta a eventos)

e identidade
no espao: possvel distinguir dois objectos mesmo que tenham o mesmo estado
- exemplo: podemos distinguir duas folhas de papel A4, mesmo que tenham os mesmos valores dos atributos

no tempo: possvel saber que se trata do mesmo objecto mesmo que o seu estado mude
- exemplo: se pintarmos um folha de papel A4 de amarelo, continua a ser a mesma folha de papel
UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

Objectos do mundo real e objectos computacionais


n

No desenvolvimento de software orientado por objectos, procurase imitar no computador o mundo real visto como um conjunto de objectos que interagem entre si Muitos objectos computacionais so imagens de objectos do mundo real Dependendo do contexto (anlise ou projecto) podemos estar a falar em objectos do mundo real, em objectos computacionais ou nas duas coisas em simultneo Exemplos de objectos do mundo real:
o Sr. Joo a aula de ES no dia 11/10/2000 s 11 horas

Exemplos de objectos computacionais:


o registo que descreve o Sr. Joo (imagem de objecto do mundo real) uma rvore de pesquisa binria (objecto puramente computacional)
UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

Classes (1)
n

No desenvolvimento de software OO, no nos interessam tanto os objectos individuais mas sim as classes de objectos Uma classe um descritor de um conjunto de objectos que partilham as mesmas propriedades (semntica, atributos, operaes e relaes)
Trata-se de uma noo de classe em compreenso , no sentido de tipo de objecto , por oposio a uma noo de classe em extenso , como conjunto de objectos do mesmo tipo

n n n

Um objecto de uma classe uma instncia da classe A extenso de uma classe o conjunto de instncias da classe Em Matemtica, uma classe um conjunto de objectos com uma propriedade em comum, podendo ser definida indiferentemente em compreenso ou em extenso
C = {x | N : x mod 3 = 2} = {2, 5, 8, 11, 14, ...}

UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

Classes (2)
n

O conjunto de todos os objectos num determinado contexto forma um universo (UoD - Universe of Discourse) As extenses das classes so subconjuntos desse universo

classe UoD
x Joo x Maria x Rui Aluno Curso x Informtica x Electrotecnia Funcionrio

objecto

x D Rita x Sr. Silva

ligao

UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

Classes (3)
n

Classes podem representar:


Coisas concretas: Pessoa, Turma, Carro, Imvel, Factura, Livro Papis que coisas concretas assumem: Aluno, Professor, Piloto Eventos: Curso, Aula, Acidente Tipos de dados: Data, Intervalo de Tempo, Nmero Complexo, Vector

Decomposio orientada por objectos : comea por identificar os tipos de objectos (classes) presentes num sistema
contrapor com decomposio funcional ou algortmica tipos de objectos so mais estveis do que as funes, logo a decomposio orientada por objectos leva a arquitecturas mais estveis

UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

Classes (4)
n

Em UML, uma classe representada por um rectngulo com o nome da classe


Aluno Curso

Habitualmente escreve-se o nome da classe no singular (nome de uma instncia), com a 1 letra em maiscula Para se precisar o significado pretendido para uma classe, devese explicar o que (e no ...) uma instncia da classe
Exemplo: Um aluno uma pessoa que est inscrita num curso ministrado numa escola. Uma pessoa que esteve no passado inscrita num curso, mas no est presentemente inscrita em nenhum curso, no um aluno. Em geral, o nome da classe no suficiente para se compreender o significado da classe

UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

10

Atributos de instncia
n

O estado de um objecto dados por valores de atributos (e por ligaes que tem com outros objectos) Todos os objectos de uma classe so caracterizados pelos mesmos atributos (ou variveis de instncia)
o mesmo atributo pode ter valores diferentes de objecto para objecto

Atributos so definidos ao nvel da classe, enquanto que os valores dos atributos so definidos ao nvel do objecto Exemplos:
uma pessoa (classe) tem os atributos nome, data de nascimento e peso Joo (objecto) uma pessoa com nome Joo Silva, data de nascimento 18/3/1973 e peso 68 Kg

UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

11

Atributos de instncia
n

Atributos so listados num compartimento de atributos (opcional) a seguir ao compartimento com o nome da classe Uma classe no deve ter dois atributos com o mesmo nome Os nomes dos tipos no esto pr-definidos em UML, podendo-se usar os da linguagem de implementao alvo
classe Pessoa compartimento de atributos nome: string data de nascimento: date peso: real = 75 kg valor inicial por omisso
UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

nome do atributo

tipo de dados

12

Operaes de instncia
n

Comportamento invocvel de objectos modelado por operaes


uma operao algo que se pode pedir para fazer a um objecto de uma classe

Objectos da mesma classe tm as mesmas operaes Operaes so definidos ao nvel da classe, enquanto que a invocao de uma operao definida ao nvel do objecto Princpio do encapsulamento: acesso e alterao do estado interno do objecto (valores de atributos e ligaes) controlado por operaes Nas classes que representam objectos do mundo real mais comum definir responsabilidades em vez de operaes Pessoa compartimento de operaes nome: string morada: string setMorada(novaMorada:string): bool

UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

13

*Multiplicidade de classes e atributos


n

Multiplicidade de classe: nmero de instncias que podem existir


por omisso, 0..*

NetworkController consolePort [2..*]: Port

Multiplicidade de atributo: nmero de valores que o atributo pode tomar do tipo especificado
por omisso 1 qual a diferena em relao a especificar a multiplicidade no prprio tipo de dados do atributo?

UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

14

Relaes entre classes: associao, agregao e composio

UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

15

Associaes binrias
Participante-1
n

Nome da associao papel-1 papel-2

Participante-2

Uma associao uma relao entre objectos das classes participantes (um objecto de cada classe em cada ligao) No gera novos objectos Matematicamente,uma associao binria uma relao binria, i.e., um subconjunto do produto cartesiano das extenses das classes participantes Assim como um objecto uma instncia duma classe, uma ligao uma instncia duma associao Pode haver mais do que uma associao (com nomes diferentes) entre o mesmo par de classes Papis nos extremos da associao podem ter indicao de visibilidade (pblica, privada, etc.)
UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

n n

16

Multiplicidade de associaes binrias


Muitos-para-Muitos Professor * * Curso Muitos-para-1 Aluno * 1 Curso 1-para-1 Curso 1 1 Plano de Curso

(sem restries )

UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

17

Notao para a multiplicidade


1 0..1 * 0..* 1..* 1, 3..5 - exactamente um - zero ou um (zero a 1) - zero ou mais - zero ou mais - um ou mais - um ou trs a 5

UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

18

Associao reflexiva
n

Pode-se associar uma classe com ela prpria (em papis diferentes)

pai 0..1

Pessoa filho filho * *

me 0..1

UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

19

Nome de associao
n

A indicao do nome opcional O nome indicado no meio da linha que une as classes participantes Pode-se indicar o sentido em que se l o nome da associao
Empresa Trabalha-para empregado Emprega Pessoa

empregador

UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

20

Classe-Associao
Association Name Class-1 Association Name link attribute ... link operation ... Class-2

n n

rene as propriedades de associao e classe o nome pode ser colocado num stio ou noutro, conforme interessa realar a natureza de associao ou de classe, mas a semntica a mesma o nome tambm pode ser colocado nos dois stios no possvel repetir combinaes de objectos das classes participantes na associao
UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

n n

21

Associaes n-rias
n

Notao
Association Name Class-1 role-1 role-3 Class-3 role-2 Class-2

Multiplicidade
Class-1 0..1 Class-3
a cada par de objectos das restantes classes (1 e 2), correspondem 0 ou 1 objectos da classe 3

Class-2

UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

22

*Associaes qualificadas
Classe A qualificador Associao Classe B

Qualificador: lista de um ou mais atributos de uma associao utilizados para navegar de A para B "Chave de acesso" a B (acesso a um objecto ou conjunto de objectos) a partir de um objecto de A
para cada par Clube + n de scio 0..1

uma Pessoa pode ser scia de vrios clubes n de scio *

Clube

Pessoa nome morada

UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

23

Agregao
n

Associao com o significado contm ( constitudo por) / faz parte de ( part of) Relao de incluso nas instncias das classes Hierarquias de objectos Exemplo:
Equipa Uma equipa contm 0 ou mais jogadores 0..1 * Jogador Um jogador faz parte de uma equipa (num dado momento), mas tambm pode estar desempregado

UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

24

Composio
n

Forma mais forte de agregao aplicvel quando:


existe um forte grau de pertena das partes ao todo cada parte s pode fazer parte de um todo (i.e., a multiplicidade do lado do todo no excede 1) o topo e as partes tm tempo de vida coincidente, ou, pelo menos, as partes nascem e morrem dentro de um todo a eliminao do todo propaga-se para as partes, em cascata

Notao: losango cheio (? ) ou notao encaixada Membros-objecto em C++

UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

25

Composio: notaes alternativas


Window 1 scrollbar 2 Slider 1 title 1 Header 1 body 1 Panel

Window Window scrollbar: Slider title: Header body: Panel 2 1 1 scrollbar[2]: Slider title: Header body: Panel

(sub-objectos no compartimento dos atributos)


UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

26

Relaes entre classes: generalizao

UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

27

Generalizao
Pessoa generalizao Aluno super-classe especializao sub-classe

Relao semntica is a ( um / uma) : um aluno uma pessoa Relao de incluso nas extenses das classes:
UoD super-classe sub-classe x x x x x objecto

extenso (sub-classe) extenso (super-classe)

Relao de herana nas propriedades: A sub-classe herda as propriedades


(atributos, operaes e relaes) da super-classe, podendo acrescentar outras
UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

28

As trs facetas da generalizao


n

Substitutabilidade
onde se espera um objecto da super-classe pode-se passar um objecto duma subclasse

Herana de interface
a subclasse herda as assinaturas (e significados) das operaes da super-classe

Herana ou overriding de implementao


a subclasse pode herdar as implementaes das operaes da superclasse, mas tambm pode ter novas implementaes de algumas dessas operaes quando em UML se repete numa subclasse a assinatura de uma operao da super-classe, quer dizer que tem uma nova implementao na subclasse

UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

29

Polimorfismo
n

Substitutabilidade + Overriding Polimorfismo + Late Binding


Quando se tem uma varivel do tipo referncia ou apontador para super-classe (que pode guardar uma referncia para objecto da super-classe ou de uma subclasse), e se invoca uma operao, usada a implementao da classe do objecto referenciado (determinada em tempo de execuo late binding), e no a implementao de acordo com o tipo de referncia (determinada em tempo de compilao early binding) Em C++ e C# s acontece com funes ou mtodos virtuais

Mecanismo muito poderoso, que permite estender software atravs da criao de novas subclasses que so usadas a partir de classes pr-existentes (que dependem apenas da interface e no da implementao das operaes), sem que estas tenham conhecimento dessas extenses
UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

30

Hierarquias de classes
n

Em geral, pode-se ter uma hierarquia de classes relacionadas por herana / generalizao
em cada classe da hierarquia colocam-se as propriedades que so comuns a todas as suas subclasses evita-se redundncia, promove-se reutilizao!
Aluno curso : string

Pessoa nome : string dataNascimento : Data Pessoa(string, Data) getNome() : string getDataNascimento() : Data getIdade() : int setNome(string) : void setDataNascimento(Data) : void imprime() : void

Professor categoria : string Professor(string nm, Data, string ctg) getCategoria() : string setCategoria(string) : void imprime() : void

Aluno(string nm, Data, string crs) getCurso() : string setCurso(string) : void imprime() : void

AlunoDoutoramento

(...)
31

UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

Notaes alternativas para hierarquias de classes


Pessoa

Aluno

Professor

Pessoa

Aluno

Professor

UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

32

Subclasses sobrepostas ( disjuntas)


n

caso em que um objecto da superclasse pode pertencer simultaneamente a mais do que uma subclasse indicado por restrio {overlapping} o contrrio {disjoint} (situao por omisso?)
Superclass {overlapping} ou Superclass {overlapping} Subclass-1 Subclass-2

Subclass-1

Subclass-2

UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

33

Subclasses incompletas ( completas)


n

caso em que um objecto da superclasse pode no pertencer a nenhuma das subclasses indicado por restrio {incomplete} o contrrio {complete} (situao por omisso?)

Funcionrio {incomplete} Tcnico Comercial

UML Diagramas de Classes v.1.2, Joo Pascoal Faria, Outubro de 2002

34

Vous aimerez peut-être aussi