Académique Documents
Professionnel Documents
Culture Documents
(verso reduzida)
ndice
n
Objectivo dos diagramas de classes Objectos, classes, atributos e operaes Relaes entre classes: associao, agregao e composio Relaes entre classes: generalizao
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.)
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
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
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, ...}
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
ligao
Classes (3)
n
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
Classes (4)
n
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
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
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
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
13
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?
14
15
Associaes binrias
Participante-1
n
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
(sem restries )
17
18
Associao reflexiva
n
Pode-se associar uma classe com ela prpria (em papis diferentes)
pai 0..1
me 0..1
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
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
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
Clube
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
24
Composio
n
25
Window Window scrollbar: Slider title: Header body: Panel 2 1 1 scrollbar[2]: Slider title: Header body: Panel
26
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
28
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
29
Polimorfismo
n
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
Aluno
Professor
Pessoa
Aluno
Professor
32
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
33
caso em que um objecto da superclasse pode no pertencer a nenhuma das subclasses indicado por restrio {incomplete} o contrrio {complete} (situao por omisso?)
34