© Ricardo Pereira e Silva

Slides:



Advertisements
Apresentações semelhantes
Princípios da Orientação a Objetos e a Linguagem UML
Advertisements

Modelagem de Classes do Domínio
Desenvolvimento de Sistemas Baseado na Transformação de Modelos
CIÊNCIA DA COMPUTAÇÃO DESENVOLVIMENTO DE SISTEMAS Aula 11
Diagrama de Classes.
Diagrama de Classes continuação.
UML – MODELAÇÃO DA ESTRUTURA Professor Sandro Carvalho.
UML: Diagrama de Classes
Modelagem Orientada a Objetos
UML Diagrama de Classes elementos básicos. Contexto Os diagramas de classes fazem parte do da visão estática da UML. Os elemento desta visão são conceitos.
Refatorações Experiência é aquela coisa maravilhosa que permite que você reconheça um erro tão logo o cometa novamente F.P. Jones.
Introdução ao paradigma de programação: Orientado a Objetos
Introdução a diagrama de classes e UML
Alexandre Parra Site: Os Pilares da OO em Java Alexandre Parra Site:
Diagrama de Classes.
Linguagem de Programação II
Herança e Polimorfismo
Análise e Projetos de Sistemas UML-Linguagem de Modelagem Unificada Modelo de Dados com UML Diagrama de Classes Professor: Armando Hage.
TÉCNICAS DE PROGRAMAÇÃO II
Diagrama de Classes.
Curso de extensão em Desenvolvimento Web
Programação Orientada a Objetos com Java
Diagrama de Classes e Colaboração
Introdução UML, Diagrama de Classes e Comunicação/Colabaração
DIAGRAMA DE CLASSE Modelagem de Software
Profa Simone Sawasaki Tanaka
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
Capítulo 5: diagrama de classes: conceitos avançados Responsabilidade Agregação e composição Interfaces e classes abstratas Objeto de referencia e objeto.
Diagrama de Classes George Gomes Cabral.
Paradigmas da Programação – Semestre 1 – Aula 2 Professores: Eduardo Mantovani Fábio de Paula.
Estudo dos Conceitos e Paradigmas de Programação
Orientação a Objetos Parte I
Marcio de Carvalho Victorino
Programação Orientada à Objetos
Análise e Projeto de Sistemas
Princípios de Análise e Projeto Orientados a Objetos com UML
UML Diagrama de classes.
Ceça Moraes Diagrama de Classes.
Aula prática 14 Orientação a Objetos – C++ Parte 2
Projeto Orientado aos Objetos Prof. Wolley W. Silva
Análise Orientado aos Objetos Prof. Wolley W. Silva
Programação Orientada à Objetos
Modelagem de Entidade/Objetos de Domínio com Diagrama de Classes
Interfaces e classes abstratas. Conceitos de Orientação a Objeto.
Prof. Gilberto Irajá Müller
POO Aula 03 Projeto OO com UML Eduardo Figueiredo 11 de Março de 2010.
Classes Abstratas e Interface
Generalização e herança Agregação e composição
Análise e Projeto de Sistemas
Paradigmas da Programação – Semestre 2 – Aula 1 Professores: Fábio de Paula Santos Eduardo Mantovani
Classes Abstratas e Interfaces GX – Aula05 1.
Paradigmas da Programação – Semestre 1 – Aula 8 Professor: Eduardo Mantovani )
Orientação a Objetos com UML
Bruno Inojosa MCP .NET Framework
Conceitos de Orientação a Objetos zConceito de tipo zTipos Abstratos de Dados zMódulos/Pacotes zEncapsulamento.
Copyright © 2006 Qualiti. Todos os direitos reservados. Projetar Classes.
Orientação a Objetos com UML. Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes Análise e Projeto OO com UML e Padrões|
20/04/2017 Orientação a Objetos 1 1.
Relacionamentos UML e Polimorfismo
Análise e Projeto de Sistemas
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Continuação Modelagem Orientada a Objetos Técnico Subsequente.
Paradigmas da Programação – Semestre 1 – Aula 7 Professor: Eduardo Mantovani )
Diagrama de Classes Herança Dependências.
Análise e Design de Software Site:
Visão Geral de Orientação a Objetos com UML Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.
Diagrama de Classes Modelagem e Programação Orientada a Objetos Curso Superior de Tecnologia em Sistemas para Internet Prof. Cristiano Stüpp Nunes
Engenharia de Software Orientada a Objetos Professor: Guilherme Timóteo Aula 3: – Modelagem de Classes (parte 2)
1. 2 Programação Orientada a Objetos Prof. Maurício Rodrigues de Morais
Análise e Projeto de Sistemas Análise & modelagem conceitual Prof. Edjandir Corrêa Costa
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

© Ricardo Pereira e Silva www.inf.ufsc.br/ricardo Diagrama de classes Aula baseada no capítulo 3 do livro SILVA, Ricardo P. e. UML 2 em modelagem orientada a objetos. Florianópolis, SC: Visual Books, 2007. 232p. © Ricardo Pereira e Silva www.inf.ufsc.br/ricardo

Objetivo Apresentar o diagrama de classes de UML Seus elementos sintáticos Sua finalidade em um processo de modelagem © Ricardo Pereira e Silva

Diagrama de classes Resultado do esforço mais primitivo de geração de modelos gráficos que descrevessem um programa orientado a objetos Reflete a estrutura do código Classes Cada classe com seus atributos e métodos Relacionamentos envolvendo classes © Ricardo Pereira e Silva

Aparência do diagrama de classes © Ricardo Pereira e Silva

Finalidade do diagrama de classes Modelar os elementos de um programa orientado a objetos em tempo de desenvolvimento Classes com seus atributos e métodos Modelar os relacionamentos entre classes, de forma mais explícita que aquela do código Herança Agregação (e composição) Associação © Ricardo Pereira e Silva

Representação de classe Ver capítulo 3, seção 3.1 A divisão superior do retângulo é reservada ao identificador da classe, isto é, seu nome; a parte central, aos atributos e a inferior, aos métodos. O conjunto de atributos e métodos pode ser omitido da representação. Quando são omitidos, as linhas que dividem o retângulo também podem ser omitidas. © Ricardo Pereira e Silva

Representação de atributo Exemplos ocupante # ocupante: Jogador # jogadores: Jogador [2..5] {ordenado, único} Sintaxe de UML para representação de atributo [<visibilidade >] [‘/’] <nome> [‘:’ < tipo >] [‘[‘ <multiplicidade> ‘]’] [‘=’ <valor_inicial>] [‘{‘ <propriedade> [‘,’ < propriedade >]* ’}’] <visibilidade > pode ser público (+), privado (-), protegido (#) ou pacote(~); ‘/’ significa que se trata de um atributo derivado – seu valor é computado a partir de outras informações; <nome> é o identificador do atributo (jamais iniciado com letra maiúscula); ‘:’ < tipo > é o identificador do tipo do atributo; <multiplicidade> ::= <faixa> [‘{’ <ordem> [ ‘,’ <unicidade> ] ‘}’ ]; <faixa> ::= [ <valor_inferior> ‘..’ ] <valor_superior>; <ordem> pode ser ordenado ou não ordenado; <unicidade> pode ser único ou não único; < propriedade > pode ser usado para indicar outras características não expressas em outros campos, como que o atributo não permite alteração de valor (readOnly). © Ricardo Pereira e Silva

Representação de atributo Pode ser representado dentro da figura de classe ou por meio de uma seta (associação unidirecional) © Ricardo Pereira e Silva

Representação de método Exemplos + iniciar() + alocarPeao (onde : Posicao, quem: Jogador): boolean Sintaxe de UML para representação de método [<visibilidade>] <nome> ‘(‘ [<lista_parametros>] ‘)’ [‘:’ [<tipo_retorno>] ‘{‘ <propriedade> [‘,’ < propriedade >]* ‘}’] © Ricardo Pereira e Silva

Recomendação para estabelecimento de visibilidade Atributos → protegidos Princípio da ocultação de informação do paradigma de orientação a objetos Possibilita que atributos herdados ou definidos na classe sejam tratados de maneira uniforme Necessidades específicas podem justificar atributos privados Atributos públicos → JAMAIS © Ricardo Pereira e Silva

Recomendação para estabelecimento de visibilidade Métodos → públicos O meio externo acessa uma classe através de seus métodos Necessidades específicas podem justificar o aumento de restrição de visibilidade © Ricardo Pereira e Silva

Métodos concretos e abstratos Método concreto → composto por assinatura e corpo Pode ser invocado em tempo de execução para cumprir a responsabilidade atribuída a ele © Ricardo Pereira e Silva

Métodos concretos e abstratos Método abstrato → composto apenas por assinatura Uma declaração de responsabilidade, mas sem a capacidade de cumpri-la, em função da ausência de algoritmo Grafado em itálico © Ricardo Pereira e Silva

Classes concretas e abstratas Classe concreta → possui exclusivamente métodos concretos © Ricardo Pereira e Silva

Classes concretas e abstratas Classe abstrata → possui pelo menos um método abstrato Identificador da classe grafado em itálico Nem todas as responsabilidades da classe materializadas em capacidades Nem todos os métodos possuem algoritmo definido Não pode originar instâncias em tempo de execução © Ricardo Pereira e Silva

Relacionamentos – herança Ver capítulo 3, seção 3.2 © Ricardo Pereira e Silva

Herança Relação de especialização entre DUAS classes Uma delas corresponde a um conceito mais genérico A outra, a um conceito mais específico Ver capítulo 3, seção 3.2 © Ricardo Pereira e Silva

Frase característica da herança <subclasse> é uma espécie de <superclasse> No exemplo, estudante de graduação é uma espécie de estudante Estudante de pós-graduação também é uma espécie de estudante Se frase não faz sentido, o relacionamento de herança é inadequado Cachorro é uma espécie de gato Ver capítulo 3, seção 3.2 © Ricardo Pereira e Silva

Herança é unidirecional Estudante de graduação é uma espécie de estudante MAS estudante NÃO é uma espécie de estudante de graduação © Ricardo Pereira e Silva

Semântica da herança Os atributos e métodos da superclasse são herdados pela subclasse Os atributos e métodos da superclasse também fazem parte da subclasse Como se tivessem sido definidos nela © Ricardo Pereira e Silva

Níveis hierárquicos de herança Atributos e métodos de ClasseN herdados por todas as classes da hierarquia de herança © Ricardo Pereira e Silva

Herança de atributos É inócuo definir em uma subclasse um atributo com mesmo nome de um atributo de uma superclasse Em qualquer nível da hierarquia de herança Equivaleria à presença de mais de um atributo com o mesmo nome em uma mesma classe Inconsistente © Ricardo Pereira e Silva

Herança de métodos Método em subclasse tem a mesma assinatura de método definido em superclasse → sobrescrição de método Método definido na subclasse substitui o método herdado © Ricardo Pereira e Silva

Herança e classe abstrata Classe abstrata → possui pelo menos um método abstrato, que pode ter sido definido na própria classe ou herdado e não sobrescrito O relacionamento de herança precisa ser considerado na definição de classe abstrata © Ricardo Pereira e Silva

Relacionamentos – agregação e composição © Ricardo Pereira e Silva

Agregação e composição Agregação → relacionamento entre DUAS classes que estabelece que uma instância de uma agrupa uma ou mais instâncias da outra Relacionamento todo / parte © Ricardo Pereira e Silva

Agregação e composição Composição → um tipo de relação de agregação com restrições na ligação entre parte e agregado Uma instância da parte é agregada por uma única instância do agregado não há compartilhamento da parte A existência da parte depende da existência do agregado Instanciação do agregado precede a instanciação da parte Destruição do agregado implica na destruição da parte © Ricardo Pereira e Silva

Agregação e composição – exemplo Isso significa que um empregado pode trabalhar para apenas uma empresa e se a empresa for destruída, o empregado também o será. Empresa e EquipeDeProjeto também mantêm uma relação de composição em que valem as mesmas restrições. Considerando que um empregado pode fazer parte de mais de uma equipe de projeto e que a extinção de uma equipe de projeto não implica necessariamente na destruição do objeto empregado, a relação entre EquipeDeProjeto e Empregado não pode ser considerada composição. © Ricardo Pereira e Silva

Relacionamentos – associação © Ricardo Pereira e Silva

Associação Quando há o reconhecimento de um relacionamento entre classes, que não pode ser caracterizado como herança e nem como agregação ou composição Pode ser unidirecional ou bidirecional Pode envolver mais de duas classes A associação entre duas classes é chamada associação binária © Ricardo Pereira e Silva

Associação com rótulo e papéis Relacionamento de hierarquia entre empregados, em que um assume o papel de chefe o outro(s) de subordinado © Ricardo Pereira e Silva

Associação com indicação de ordem de leitura Lê-se: Empregado trabalha para Empresa (e não o oposto) © Ricardo Pereira e Silva

Associação com navegabilidade explícita Tabuleiro referencia Jogador; Jogador não referencia Tabuleiro © Ricardo Pereira e Silva

Outros relacionamentos – associações especializadas Realização → associação entre dois elementos em que um deles especifica uma responsabilidade a ser implementada e o outro incorpora a obrigação de implementá-la Usado para associar uma classe a uma interface Ver capítulo 3, seção 3.3 © Ricardo Pereira e Silva

Outros relacionamentos – associações especializadas Dependência → associação entre dois elementos em que um deles é declarado como dependente daquilo que deve estar implementado em outro Um é cliente dos serviços oferecidos pelo outro Usado para relacionar outros elementos além de classes (como interface e classe) Usado também em outros diagramas © Ricardo Pereira e Silva

Interfaces (semântica de Java) Ver capítulo 3, seção 3.4 Classe 1 implementa os métodos declarados em publicador Classe 2 invoca os métodos declarados em publicador (de alguma classe que os implemente) © Ricardo Pereira e Silva

Vinculação de classes a uma interface previamente definida realização dependência © Ricardo Pereira e Silva

Estereótipo Ver capítulo 3, seção 3.5 © Ricardo Pereira e Silva

Estereótipo Estender o significado do elemento de modelagem a que ele é associado Pode ser usado em classes para dividi-las em categorias em uma especificação Pode ser associado a classes ou a qualquer elemento de qualquer diagrama de UML © Ricardo Pereira e Silva

Conclusão Diagrama de classes → modelagem gráfica mais primitiva de um programa orientado a objetos Reflete a estrutura do código Elementos sintáticos do diagrama Classes Relacionamentos Conhecer os elementos do diagrama é requisito para usá-lo em modelagem © Ricardo Pereira e Silva

Atividade extra-classe Ler o texto de referência da presente aula Capítulo 3, O diagrama de classes de UML, do livro UML 2 em modelagem orientada a objetos* Exercitar a edição de diagrama em alguma ferramenta Como os diagramas apresentados nos exemplos SILVA, Ricardo P. e. UML 2 em modelagem orientada a objetos. Florianópolis, SC: Visual Books, 2007. 232p. © Ricardo Pereira e Silva