A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

1 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Parte II Modelos Estruturais.

Apresentações semelhantes


Apresentação em tema: "1 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Parte II Modelos Estruturais."— Transcrição da apresentação:

1 1 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Parte II Modelos Estruturais

2 2 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Introdução n Questões Como representar modelos estruturais em notação UML? Qual a finalidade dos diagramas de classes UML? O que são diagramas de classes? Que elementos constituem os diagramas de classes?

3 3 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Diagramas de Classes: Conceitos Básicos

4 4 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Sumário n Finalidade dos diagramas de classes n Objectos, classes, atributos e operações n Relações entre classes: Associação -Multiplicidade de associações binárias -Navegabilidade de associações -Classe-Associação -Associações n-árias Agregação -Multiplicidade da agregação -Hierarquias de objectos Generalização -Hierarquias de classes -Herança de propriedades -Polimorfismo

5 5 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Finalidade dos Diag. de Classes n Um diagrama de classes serve para modelar o vocabulário de um sistema, do ponto de vista do utilizador/problema ou do implementador/solução Ponto de vista do utilizador/problema – na fase de captura e análise de requisitos, em paralelo com a identificação dos casos de uso Vocabulário do implementador/solução – na fase de projecto (design) n Construído e refinado ao longo das várias fases do desenvolvimento do software, por analistas, projectistas (designers) e implementadores n Também serve para: Especificar colaborações Especificar esquemas lógicos de bases de dados

6 6 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Objectos do Mundo Real e Objectos Computacionais n No desenvolvimento de software orientado por objectos, procura- se imitar no computador o mundo real visto como um conjunto de objectos que interagem entre si n Alguns objectos computacionais são imagens de objectos do mundo real n Dependendo do contexto (análise ou projecto) podemos estar a falar em objectos do mundo real, em objectos computacionais ou nas duas coisas em simultâneo n Exemplos de objectos do mundo real: o Sr. João o carro com matrícula ES a aula de ES no dia 11/10/2000 às 11 horas n Exemplos de objectos computacionais: o registo que descreve o Sr. João (imagem de objecto do mundo real) uma árvore de pesquisa binária (objecto puramente computacional)

7 7 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Noção de Objecto n Um objecto é algo com fronteiras bem definidas relevante para o problema em causa com estado, comportamento e identidade -estado: valores de atributos (tamanho, forma, peso, etc.) e ligações com outros objectos -identidade no espaço: é possível distinguir dois objectos mesmo que o seu estado seja idêntico -exemplo: podemos distinguir duas folhas de papel A4, mesmo que tenham os mesmos valores dos atributos -identidade no tempo: é possível 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 -comportamento: um objecto exibe comportamentos invocáveis (por resposta a mensagens) ou reactivos (por resposta a eventos)

8 8 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Noção de Classe n Uma classe é um descritor de um conjunto de objectos que partilham as mesmas propriedades (atributos, operações, relações e semântica) Trata-se de uma noção de classe em compreensão, no sentido de tipo de objecto, por oposição a uma noção de classe em extensão, como conjunto de objectos do mesmo tipo n Um objecto de uma classe é uma instância da classe n A extensão de uma classe é o conjunto de instâncias da classe n Em Matemática, uma classe é um conjunto de objectos com uma propriedade em comum, podendo ser definida em compreensão ou em extensão C = {x | N : x mod 3 = 2} = {2, 5, 8, 11, 14,...}

9 9 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Noção de classe (cont.) n Em UML, é habitual escrever os nomes das classes no singular (nome de uma instância da classe), com a primeira letra em maiúscula n Exemplos de classes: Coisas concretas: Pessoa, Turma, Carro, Imóvel, Factura, Livro Papéis: Aluno, Professor, Piloto Eventos: Curso, Aula, Acidente Tipos de dados: Data, Intervalo de Tempo, Número Complexo, Vector n Para se precisar o significado pretendido para uma classe, deve-se explicar o que é (e não é...) uma instância 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 não está presentemente inscrita em nenhum curso, não é um aluno. Em geral, o nome da classe não é suficiente para se compreender o significado da classe

10 10 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Noção de classe (cont.) n O conjunto de todos os objectos num determinado contexto/domínio/aplicação forma um universo numa fase de análise, é habitual falar em universo de discurso (UoD - Universe of Discourse) n As classes (em extensão) são subconjuntos do UoD UoD x João x Rui x Maria Aluno Curso x Electrotecnia x Informática objecto x Dª Rita x Sr. Silva Funcionário classe

11 11 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 n Nos diagramas (de classes), uma classe é representada por um rectângulo com o nome da classe n Nos diagramas (de objectos), um objecto é representado por um rectângulo com o nome sublinhado Representação de classes e objectos AlunoFuncionárioCurso João: Aluno nome do objecto separador nome da classe ou : Aluno objecto anónimo ou João: classe não especificada

12 12 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Noção de atributo n Um atributo é uma propriedade com nome de uma classe que descreve uma gama de valores que as instâncias da propriedade podem tomar n Exemplos: atributos de Pessoa: nome, data de nascimento, peso, etc. atributos de Carro: matrícula, ano, peso, etc. n Um atributo de uma classe tem um valor (possivelmente diferente) em cada instância (objecto) da classe Exemplo: João é uma pessoa com nome João Silva, data de nascimento 18/3/1973 e peso 68 Kg n Todos os objectos de uma classe são caracterizados pelos mesmos atributos n Uma classe não pode ter dois atributos com o mesmo nome n Podem existir atributos com o mesmo nome em classes diferentes (ver atributo peso definido nas classes Pessoa e Carro) n O valor de um atributo de um objecto pode mudar ao longo do tempo n O estado de um objecto num dado momento é dado (em parte) pelos valores dos seus atributos (outra parte é dada pelas ligações que tem com outros objectos)

13 13 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Representação de atributos e valores n Atributos são listados num compartimento de atributos (opcional) a seguir ao compartimento com o nome da classe n A seguir ao nome de um atributo pode indicar-se o tipo de dados (ou classe) e o valor inicial por omissão n Os nomes dos tipos não estão pré-definidos em UML, podendo-se usar os da linguagem de implementação alvo compartimento de atributos Pessoa nome: string data de nascimento: date peso: real = 75 kg valor inicial por omissão João: Pessoa nome = João Silva data de nascimento = 18/3/1973 peso = 70 kg classeobjecto

14 14 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Noção de operação n Uma operação é a implementação de um serviço que pode ser solicitado a qualquer objecto da classe Uma operação é algo que se pode (mandar) fazer a um objecto de uma classe Uma operação é um serviço oferecido pelos objectos de uma classe n As operações são representadas num compartimento de operações, a seguir ao compartimento de atributos n Para cada operação pode-se indicar o nome, lista de argumentos e tipo de retorno Pessoa nome: string morada: string mudar-morada(nova-morada:string): bool

15 15 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Associações binárias Participante-1 Participante-2 Nome da associação papel-1 papel-2 n Uma associação é uma relação estrutural (física ou lógica) entre objectos das classes participantes (um objecto de cada classe em cada ligação) n Não gera novos objectos n Matematicamente,uma associação binária é uma relação binária, i.e., um subconjunto do produto cartesiano das extensões das classes participantes n Assim como um objecto é uma instância duma classe, uma ligação é uma instância duma associação n Pode haver mais do que uma associação (com nomes diferentes) entre o mesmo par de classes

16 16 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Auto-associação n Pode-se associar uma classe com ela própria (em papéis diferentes) Pessoa Paternidade pai filho 0..1 * filho mãe 0..1 * Maternidade

17 17 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Multiplicidade de associações binárias xxxxxx xxxxxx Partic. 1 Partic. 2 * * xxxxxx xxxxxx Partic. 1Partic. 2 * 1 xxxxxx xxxxxx Partic. 1 Partic n muitos-para-muitos n muitos-para-um n um-para-um n Notação: * - zero ou mais 1 - exactamente um zero ou um 1..* - um ou mais 1, um ou três a 5

18 18 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Navegabilidade de associações As associações são classificadas quanto à navegabilidade em: bidirecionais (normal) unidirecionais um objecto da classe 1 tem a responsabilidade de dar o(s) objecto(s) correspondente(s) da classe 2 (nível de especificação) ou um objecto da classe 1 tem apontador(es) para o(s) objecto(s) correspondente(s) da classe 2 (nível de implementação) Pode-se indicar o sentido em que se lê o nome duma associação Class-1 Class-2 Class-1 Class-2 Empresa Pessoa Trabalha-para Emprega empregadorempregado

19 19 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Classe-Associação n reúne as propriedades de associação e classe n o nome pode ser colocado num sítio ou noutro, conforme interessa realçar a natureza de associação ou de classe, mas a semântica é a mesma n o nome também pode ser colocado nos dois sítios n não é possível repetir combinações de objectos das classes participantes na associação Class-1 Class-2 Association Name link attribute... link operation... Association Name

20 20 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Associações n-árias n Notação n Multiplicidade a cada par de objectos das restantes classes (1 e 2), correspondem 0 ou 1 objectos da classe 3 Class-1 Class-2 Association Name role-1 role-2 Class-3 role-3 Class-1 Class-2 Class

21 21 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Atributos versus Associações n Uma propriedade que designa um objecto de uma classe presente no modelo, deve ser modelada como uma associação e não como um atributo n Exemplo: o país Canadá é um objecto cujo atributo nome tem o valor "Canadá" (cadeia de caracteres) a capital do Canadá é um objecto cidade e não deve ser modelada como um atributo, mas antes como uma associação entre um objecto país e um objecto cidade, cujo nome é a cadeia "Otawa"

22 22 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Agregação Relação semântica part of Traduz a criação de objectos mais complexos a partir de objectos mais simples Pode-se ver como uma associação com nomes pré-definidos (contém / faz parte de) Classe de agregados Classe de componentes Texto Parágrafo * 1 Palavra * 1 Um texto contém 0 ou mais parágrafos Um parágrafo faz parte de um texto Um parágrafo contém 0 ou mais palavras Uma palavra faz parte de um parágrafo

23 23 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Multiplicidade da agregação As partes (componentes) podem ser partilhadas ou exclusivas dependentes ou independentes repetidas ou únicas obrigatórias ou opcionais..* *

24 24 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Generalização Relação semântica is a (é um / é uma) : um aluno é uma pessoa Relação de inclusão nas extensões das classes: UoD super-classe sub-classe x x x x x objecto extensão (sub-classe) extensão (super-classe) Super-classe Sub-classe generalização especialização Pessoa Aluno Relação de herança nas propriedades: A sub-classe herda as propriedades (atributos, operações e relações) da super-classe, podendo acrescentar outras

25 25 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Exemplo em C++ class Pessoa { private: string nome; Data dataNascimento; public: Pessoa(string, Data); string getNome() const; Data getDataNascimento() const; int getIdade() const; void setNome(string); void setDataNascimento(Data); void imprime() const; }; class Aluno : public Pessoa { private: string curso; public: Aluno(string nm, Data, string crs); string getCurso() const; void setCurso(string); void imprime() const; };

26 26 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Hierarquias de classes n Em geral, pode-se ter uma hierarquia de classes relacionadas por herança / generalização em cada classe da hierarquia colocam-se as propriedades que são comuns a todas as suas subclasses evita-se redundância, promove-se reutilização!

27 27 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Notações Alternativas para Hierarquias de classes AlunoProfessor Pessoa AlunoProfessor Pessoa

28 28 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Polimorfismo n Numa sub-classe podem-se redefinir operações da super-classe n Polimorfismo: uma operação de uma classe comporta-se de forma diferente consoante a sub- classe do objecto a que a operação é aplicada n Caso da operação imprime() no exemplo anterior n Em UML, quando se repete (a assinatura) de uma operação numa sub-classe, quer-se dizer que a operação tem uma implementação diferente (a implementação não é herdada) chama-se método à implementação da operação

29 29 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Diagramas de Classes: Conceitos Avançados

30 30 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Sumário n Aspectos da generalização: Subclasses sobrepostas Subclasses incompletas Herança múltipla Classificação dinâmica n Classes e operações abstractas n Atributos e operações do âmbito da classe n Visibilidade de atributos e operações n Multiplicidade de classes e atributos n Restrições n Elementos derivados n Relações avançadas: associação qualificada composição dependência concretização ("realization") n Classes avançadas: classe parametrizada ("template") metaclasse utilitário tipo interface

31 31 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Subclasses sobrepostas ( disjuntas) n caso em que um objecto da superclasse pode pertencer simultaneamente a mais do que uma subclasse n indicado por restrição {overlapping} n o contrário é {disjoint} (situação por omissão?) {overlapping} Superclass Subclass-1Subclass-2 {overlapping} ou Superclass Subclass-1Subclass-2

32 32 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Subclasses incompletas ( completas) n caso em que um objecto da superclasse pode não pertencer a nenhuma das subclasses n indicado por restrição {incomplete} n o contrário é {complete} (situação por omissão?) TécnicoComercial Funcionário {incomplete}

33 33 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Herança múltipla ( simples) n ocorre numa subclasse com múltiplas superclasses n geralmente suportada por linguagens de programação OO EstudanteProfessor cursocategoria Académico nome Professor-Estudante redução de horário {overlapping} Só faz sentido assim! pelo menos conceptualmente, existe uma superclasse comum herda propriedades de Estudante e Professor e, indirectamente, de Académico (uma única vez!)

34 34 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 n caso em que um objecto pode pertencer num dado momento a várias classes, sem que exista uma subclasse que represente a intersecção dessas classes (com herança múltipla) Classificação múltipla ( simples) combinações legais: {Mulher, Paciente, Enfermeira}, {Homem, Fisioterapeuta},... Geralmente não suportado pelas LPOO P ode ser simulada por agregação de papéis Homem Mulher Pessoa sexo Paciente paciente função Médico Enfermeira Fisioterapeuta {complete}

35 35 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Classificação dinâmica (estática) n caso em que a(s) classe(s) a que um objecto pertence pode(m) variar ao longo da vida do objecto n indicado por estereótipo «dynamic» n geralmente não suportado por LPOO Pessoa tarefa Gestor Engenheiro Vendedor «dynamic» atributo discriminante (atributo de pessoa que indica a subclasse a que pertence) Uma pessoa que num dado momento tem a tarefa de gestor, pode noutro momento ter a tarefa de vendedor, etc.

36 36 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Classes e operações abstractas ( concretas) n Classe abstracta: classe que não pode ter instâncias directas pode ter instâncias indirectas pelas subclasses concretas n Operação abstracta: operação com implementação a definir nas subclasses uma classe com operações abstractas tem de ser abstracta função virtual pura em C++ n Notação : nome em itálico ou propriedade {abstract} Icon RectangularIconArbitraryIcon origin: Point display() getID(): Integer height: Integer width: Integer edge:LineCollection display() isInside(p:Point): Bool Button display() Fonte: The UML User Guide, Booch et al

37 37 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Atributos e operações do âmbito da classe ( instância) n Atributo do âmbito da classe: tem um único valor para todas as instâncias (objectos) da classe, o qual está definido mesmo que não exista nenhuma instância n Operação do âmbito da classe: não tem como argumento implícito um objecto da classe n Notação: nome sublinhado n Correspondem a membros estáticos (static) em C++ e Java Factura número: Long data: Date valor: Real últimoNumero: Long = 0 criar(data:Date,valor:Real) destruir() valorTotal(): Real retorna a soma dos valores de todas as facturas cria uma nova factura com a data e valor especificados, e um número sequencial atribuído automaticamente com base em ultimoNumero

38 38 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Visibilidade de atributos e operações n Visibilidade: + (public) : visível por todos - (private) : visível só por operações da própria classe # (protected): visível por operações da própria classe e descendentes (subclasses) n Devem-se esconder todos os detalhes de implementação que não interessam aos clientes (utilizadores) da classe n Também aplicável aos papéis nos extremos duma associação Toolbar # currentSelection: Tool # toolCount: Integer + getTool(i: Integer): Tool + addTool(t: Tool) + removeTool(i: Integer) - compact() usada internamente por outras operações

39 39 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Multiplicidade de classes e atributos n Multiplicidade de classe: número de instâncias que podem existir por omissão, é 0..* n Multiplicidade de atributo: número de valores que o atributo pode tomar do tipo especificado por omissão é 1 qual a diferença em relação a especificar a multiplicidade no próprio tipo de dados do atributo? NetworkController consolePort [2..*]: Port 1

40 40 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Restrições n Uma restrição especifica uma condição que tem de se verificar n Uma restrição é indicada por uma expressão ou texto entre chavetas ou por uma nota posicionada junto aos elementos a que diz respeito, ou a eles ligada por linhas a traço interrompido (sem setas, para não confundir com relação de dependência) n OCL - "Object Constraint Language" - pode ser usada para especificar restrições mais formalmente

41 41 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Restrições em classes Pessoa nome dataNascimento localNascimento dataFalecimento {chave candidata: (nome, dataNascimento, localNascimento)} {dataFalecimento > dataNascimento} Factura LinhaFactura *1 número data número artigo quantidade valor {chave candidata: (factura.número, número)} {chave candidata: (número)}

42 42 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Restrições em associações Pessoa Empresa chefe 1 * empregadoempregador trabalhador 0..1* Pessoa.empregador = Pessoa.chefe.empregador Pessoa Comité Membro-de Director-de * * * 1 {subset} Factura LinhaFactura * {ordered} 1 uma factura é constituída por um conjunto ordenado de 0 ou mais linhas Conta Pessoa {xor} Empresa associações mutuamente exclusivas

43 43 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Elementos derivados n Elemento derivado (atributo, associação ou classe): elemento calculado em função doutros elementos do modelo n Notação: barra / antes do nome do elemento derivado n Um elemento derivado tem normalmente associada uma restrição que o relaciona com os outros elementos

44 44 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Exemplo de elementos derivados Movimento data valor / TotalMensal mês valor {valor = (select sum(valor) from Movimento where month(data) = mês)} Empresa 1 Departamento * Pessoa TrabalhaEmDepartamento 1 /TrabalhaEmEmpresa empregador 1 * {Pessoa.empregador =Pessoa.departamento.empresa} * dataNascimento /idade {idade = dataActual() - dataNascimento}

45 45 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Associação qualificada n Qualificador: lista de um ou mais atributos de uma associação cujos valores partem o conjunto de objectos associados a um objecto do lado do qualificador no outro extremo da associação em sub-conjuntos disjuntos n Serve para navegar ("lookup") de A para B qualificador Classe A Classe B 0..1 nomeFicheiro Directório Ficheiro * para cada par Directório + nomeFicheiro Associação i-node identificador interno em UNIX um ficheiro pode aparecer em muitos directórios (mas só pode aparecer uma vez em cada directório, por definição de associação binária)

46 46 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Relação de composição n Forma mais forte de agregação aplicável quando: existe um forte grau de pertença das partes ao todo cada parte só pode fazer parte de um todo (i.e., a multiplicidade do lado do todo não excede 1) o topo e as partes têm tempo de vida coincidente, ou, pelo menos, as partes nascem e morrem dentro de um todo a eliminação do todo propaga-se para as partes, em cascata n O todo é chamado um compósito n Notação: losango cheio n Membros-objecto em C++

47 47 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Window Notações alternativas para a composição Window SliderHeaderPanel scrollbar 2 1 title body scrollbar: Slider 2 title: Header 1 body: Panel 1 (sub-objectos no compartimento dos atributos) Window scrollbar[2]: Slider title: Header body: Panel

48 48 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Relação de dependência n Relação de uso entre dois elementos (não necessariamente classes), em que uma mudança na especificação do elemento usado pode afectar o elemento utilizador n Exemplo típico: classe-1 que depende de outra classe-2 porque usa operações ou definições da classe-2 n Estereótipos comuns: «bind» - com "templates" «derive» - com elementos derivados (dependentes) etc. elemento de que se depende (usado) elemento que depende (usa)

49 49 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Relação de concretização ("realization") n Relação semântica entre classes, em que uma classe (A) especifica um contrato que outra classe (B) assegura n Aplicável em geral entre classificadores (classes, casos de uso, componentes, etc.) n Normalmente usada para relacionar um interface (A) com uma classe ou componente (B) que proporciona as operações ou serviços especificados no interface Classs A Classe B

50 50 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Classes parametrizadas (templates) FArray T k: Integer parâmetros formais data [k] : T ThreePoints «bind» (Point,3) classe parametrizada parâmetros actuais Farray ou template class FArray { public: T[k] data; }; typedef Farray ThreePoints; n C++: diferente da generalização, porque não se podem acrescentar propriedades! classe ligada ("bound")

51 51 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Metaclasses n Uma metaclasse é uma classe cujas instâncias são classes n Notação: classe com estereótipo «metaclass» n Usadas geralmente em meta-modelos n Relação de instanciação (entre classe e metaclasse, objecto e classe, etc,) pode ser indicada por dependência com estereótipo «instanceOf» «instanceOf» «metaclass» SYSCLASSES name Class-1 «instanceOf» object-1: Class-1

52 52 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Utilitários n Um utilitário é um agrupamento de variáveis globais e procedimentos como classe n Notação: classe com estereótipo «utility» «utility» MathPack pi: Real sin(ang: Real): Real cos(ang: Real): Real atributos e operações deviam estar sublinhados?

53 53 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Tipos ( classes de implementação) n Classes podem dividir-se em tipos e classes de implementação n Um tipo é usado para especificar um domínio de objectos em conjunto com as operações aplicáveis a esses objectos, sem especificar a implementação física desses objectos não pode incluir métodos (implementação de operações) pode incluir atributos e associações (abstractos?), mas apenas com o objectivo de especificar o comportamento das operações, sem compromisso de implementação notação: classe com estereótipo «type» n Uma classe de implementação define a estrutura física de dados (para atributos e associações) e métodos de um objecto tal como é implementado numa linguagem tradicional notação: classe normal ou classe com estereótipo «implementationClass» diz-se que uma classe de implementação concretiza ("realizes") um tipo se proporciona todas as operações definidos no tipo, com o mesmo comportamento especificado no tipo

54 54 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Exemplo com tipos e classes de implementação «type» FinitePriorityQueue isFull():Boolean maxSize:Integer «type» PriorityQueue insert(x:T, priority:Integer) deleteMax():T isEmpty():Boolean T «implementationClass» HeapFinitePriorityQueue + insert(x: T, priority: Integer) + deleteMax():T + isEmpty(): Boolean + isFull(): Boolean - HeapifyUp - HeapifyDown T maxSize:Integer - elems [0..maxSize]: T - size: Integer = 0 «implementationClass» HeapFilaPacientes «bind» (Paciente, 100)

55 55 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Interfaces n Um interface especifica um conjunto de operações externamente visíveis de uma classe (ou componente, subsistema, etc.) semelhante a um tipo sem atributos nem associações semelhante a uma classe abstracta só com operações abstractas e sem atributos nem associações n Uma classe de implementação pode ter vários interfaces n Vantagem em separar interface de implementação: os clientes de uma classe podem ficar a depender apenas da classe de interface em vez da classe de implementação n Notação: classe com estereótipo «interface» (ligada por relação de concretização à classe de implementação) ou círculo (ligado por linha simples à classe de implementação)

56 56 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Notações alternativas para interfaces «interface» InterfaceClass ImplementationClass InterfaceClass operations ClientClass attributes operations attributes operations ou Notação: classe com estereótipo «interface» (ligada por relação de concretização à classe de implementação) ou círculo (ligado por linha simples à classe de implementação) ClientClass


Carregar ppt "1 Curso de UML, 20 de Novembro a 19 de Dezembro de 2000 Parte II Modelos Estruturais."

Apresentações semelhantes


Anúncios Google