UML Diagramas de Classes



Documentos relacionados
4.2. UML Diagramas de classes

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 16 PROFª BRUNO CALEGARO

3.1 Definições Uma classe é a descrição de um tipo de objeto.

Análise e Projeto Orientado a Objetos

Engenharia de Software Engenharia de Requisitos. Análise Orientada a Objetos Prof. Edison A M Morais prof@edison.eti.

4.1. UML Diagramas de casos de uso

UML & Padrões. Aula 1 Apresentação. Profª Kelly Christine C. Silva

QUESTÕES PARA ESTUDO DIAGRAMA DE CLASSE

UML: Diagrama de Casos de Uso, Diagrama de Classes

Casos de uso Objetivo:

Relacionamentos entre classes

MODELAGEM VISUAL DE OBJETOS COM UML DIAGRAMA DE CLASSES.

Programação por Objectos. Java

UML Aspectos de projetos em Diagramas de classes

Análise e Projeto Orientados por Objetos

Diagrama de classes. Ricardo Roberto de Lima UNIPÊ APS-I

Herança. Algoritmos e Programação II. Aula 5 Herança

Bases de Dados. Parte II: Os Modelos ER e EER

Implementando uma Classe e Criando Objetos a partir dela

Introdução ao Paradigma Orientado a Objetos. Principais conceitos

FUNDAMENTOS DA ORIENTAÇÃO A OBJETOS- REVISÃO

Banco de Dados. MER Estendido. Profa. Flávia Cristina Bernardini

Modelagem de dados usando o modelo BANCO DE DADOS 1º TRIMESTRE PROF. PATRÍCIA LUCAS

Modelagem com UML. Fabio Perez Marzullo. IEEE Body of Knowledge on Services Computing Committee on Services Computing, IEEE Computer Society

Fundamentos de Banco de Dados e Modelagem de Dados

Orientação a Objetos com Java

Diagramas de classes. Classes

GBC043 Sistemas de Banco de Dados Modelo de Entidade-Relacionamento (ER)

Capítulo 8. Introdução UML

UML (Unified Modelling Language) Diagrama de Classes

Guia para elaboração do Modelo de Domínio Metodologia Celepar

Programação Orientada a Objetos (DPADF 0063)

Engenharia de Software e Sistemas Distribuídos. Enunciado Geral do Projecto

Engenharia Informática Engenharia Electrotécnica e Computadores Programação Orientada por Objectos Projecto PlayCards

IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1

Eduardo Bezerra. Editora Campus/Elsevier

FASES CONTEÚDOS/MÉTODOS/MATERIAIS TEMPO Diálogo sobre a importância do requerimento como meio de Introdução comunicação.

COLÉGIO ESTADUAL ULYSSES GUIMARÃES CURSO TÉCNICO PROFISSIONALIZANTE EM INFORMÁTICA ERINALDO SANCHES NASCIMENTO

Gestão de projectos na Web

Modelagem de Dados Usando o Modelo Entidade-Relacionamento

UML (Unified Modeling Language) Linguagem de Modelagem Unificada

Curso Superior de Tecnologia em BD Curso Superior de Tecnologia em DAI

Diagramas de Casos de Uso

Uma visão mais clara da UML Sumário

Eduardo Bezerra. Editora Campus/Elsevier

Introdução à Programação Orientada a Objetos

2ª Lista de Exercícios Orientação a Objetos

4.4. UML Diagramas de interacção

Modelando com UML Unified Modeling Language

Micro Mídia Informática Fevereiro/2009

Orientação a Objeto e UML Questões 2014 Prof. Felipe Leite

Diagrama de Classes. Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes.

Computadores e Sistemas de Informação. Bases de Dados Relacionais (linguagem SQL)

Prof. Jhonatan Fernando

Modelagem de Processos. Prof.: Fernando Ascani

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Metadados. 1. Introdução. 2. O que são Metadados? 3. O Valor dos Metadados

Aula II Introdução ao Modelo de Entidade-Relacionamento

Programação Orientada a Objetos. Introdução à Análise Orientada a Objetos (AOO)

Persistência e Banco de Dados em Jogos Digitais

Mapa Mental de Engenharia de Software - Diagramas UML

Exemplo: Campeonato de futebol

ferramentas de produtividade

Resolução da lista de exercícios de casos de uso

Introdução às Bases de Dados

Exemplo de Modelagem Orientada a Objetos

Capítulo 22. Associações entre Classes. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Sumário. Uma visão mais clara da UML

ESTENDENDO A UML PARA REPRESENTAR RESTRIÇÕES DE INTEGRIDADE

Modelos, em escala reduzida, de pontes e barragens. Simuladores de voo (ou de condução), com os quais se treinam pilotos (ou condutores).

Simulado Banco de Dados I Bimestre 1 Capítulo 1 Projeto Lógico de Banco de Dados

Engenharia Informática

Análise de Sistemas Orientados a Objetos Prof. Tiago Eugenio de Melo tiago@comunidadesol.org.

MANUAL DE PROCEDIMENTOS PLATAFORMA DE INSCRIÇÕES ONLINE

A Linguagem de Modelagem Unificada

I Requisitos de um modelo conceitual: - clareza (facilidade de compreensão) - exatidão (formal)

Guia de utilização da notação BPMN

APRENDIZAGEM AO LONGO DA VIDA

CAPÍTULO 2. Grafos e Redes

Orientação a Objetos e a Linguagem Java

2 Ferramentas Utilizadas

Programação com Objectos. Processamento de Dados I. 4. Classes Abstractas

UML & Padrões Aula 2 1

Curriculum DeGóis Guia de preenchimento do Curriculum Vitae (Informação mínima necessária)

Modelagem OO com UML. Vítor E. Silva Souza ~ vitorsouza

Programação Orientada a Objetos (DPADF 0063)

Modelo conceitual Aula 08

Disciplina Técnicas de Modelagem

Diagramas de Componentes

Desenvolvimento estruturado versus orientado a objetos.

DIAGRAMA DE ATIVIDADES

Padrão Básico de Projeto: Interfaces e Polimorfismo

Programação Orientada a Objetos

Classificação da imagem (ou reconhecimento de padrões): objectivos Métodos de reconhecimento de padrões

Diagrama de contexto

Transcrição:

UML Diagramas de Classes (versão reduzida) João Pascoal Faria UML Diagramas de Classes v.1.2, João Pascoal Faria, Outubro de 2002 1 Índice Objectivo dos diagramas de classes Objectos, classes, atributos e operações Relações entre classes: associação, agregação e composição Relações entre classes: generalização 2

Objectivo dos diagramas de classes 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 utilização Vocabulário do implementador/solução na fase de projecto (design) Construído e refinado ao longo das várias fases do desenvolvimento do software, por analistas, projectistas (designers) e implementadores Também serve para: Especificar colaborações (no âmbito de um caso de utilização ou mecanismo) Especificar esquemas lógicos de bases de dados Especificar vistas (estrutura de dados de formulários, relatórios, etc.) Modelos de objectos de domínio, negócio, análise e design 3 Objectos, classes, atributos e operações UML Diagramas de Classes v.1.2, João Pascoal Faria, Outubro de 2002 4

Objectos 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 ligações que num dado momento tem com outros objectos comportamento um objecto exibe comportamentos invocáveis (por resposta a chamadas de operações ) ou reactivos (por resposta a eventos) e identidade no espaço: é possível 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: é 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 5 Objectos do mundo real e objectos computacionais 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 são imagens de objectos do mundo real 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 Exemplos de objectos do mundo real: o Sr. João a aula de ES no dia 11/10/2000 às 11 horas 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) 6

Classes (1) No desenvolvimento de software OO, não 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 (semântica, atributos, operações e relações) 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 Um objecto de uma classe é uma instância da classe A extensão de uma classe é o conjunto de instâncias da classe Em Matemática, uma classe é um conjunto de objectos com uma propriedade em comum, podendo ser definida indiferentemente em compreensão ou em extensão C = {x N : x mod 3 = 2} = {2, 5, 8, 11, 14,...} 7 Classes (2) O conjunto de todos os objectos num determinado contexto forma um universo (UoD - Universe of Discourse) As extensões das classes são subconjuntos desse universo UoD x João Aluno Curso classe x Maria x Informática objecto x Rui x Dª Rita x Sr. Silva Funcionário x Electrotecnia ligação 8

Classes (3) Classes podem representar: Coisas concretas:, Turma, Carro, Imóvel, Factura, Livro Papéis que coisas concretas assumem: Aluno, Professor, Piloto Eventos: Curso, Aula, Acidente Tipos de dados: Data, Intervalo de Tempo, Número Complexo, Vector Decomposição orientada por objectos : começa por identificar os tipos de objectos (classes) presentes num sistema contrapor com decomposição funcional ou algorítmica tipos de objectos são mais estáveis do que as funções, logo a decomposição orientada por objectos leva a arquitecturas mais estáveis 9 Classes (4) Em UML, uma classe é representada por um rectângulo com o nome da classe Aluno Curso Habitualmente escreve-se o nome da classe no singular (nome de uma instância), com a 1ª letra em maiúscula Para se precisar o significado pretendido para uma classe, devese 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

Atributos de instância O estado de um objecto é dados por valores de atributos (e por ligações que tem com outros objectos) Todos os objectos de uma classe são caracterizados pelos mesmos atributos (ou variáveis de instância) o mesmo atributo pode ter valores diferentes de objecto para objecto Atributos são definidos ao nível da classe, enquanto que os valores dos atributos são definidos ao nível do objecto Exemplos: uma pessoa (classe) tem os atributos nome, data de nascimento e peso João (objecto) é uma pessoa com nome João Silva, data de nascimento 18/3/1973 e peso 68 Kg 11 Atributos de instância Atributos são listados num compartimento de atributos (opcional) a seguir ao compartimento com o nome da classe Uma classe não deve ter dois atributos com o mesmo nome Os nomes dos tipos não estão pré-definidos em UML, podendo-se usar os da linguagem de implementação alvo classe compartimento de atributos nome do atributo tipo de dados nome: string data de nascimento: date peso: real = 75 kg valor inicial por omissão 12

Operações de instância Comportamento invocável de objectos é modelado por operações uma operação é algo que se pode pedir para fazer a um objecto de uma classe Objectos da mesma classe têm as mesmas operações Operações são definidos ao nível da classe, enquanto que a invocação de uma operação é definida ao nível do objecto Princípio do encapsulamento: acesso e alteração do estado interno do objecto (valores de atributos e ligações) controlado por operações Nas classes que representam objectos do mundo real é mais comum definir responsabilidades em vez de operações compartimento de operações nome: string morada: string setmorada(novamorada:string): bool 13 *Multiplicidade de classes e atributos Multiplicidade de classe: número de instâncias que podem existir por omissão, é 0..* 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 14

Relações entre classes: associação, agregação e composição UML Diagramas de Classes v.1.2, João Pascoal Faria, Outubro de 2002 15 Associações binárias Participante-1 papel-1 Nome da associação papel-2 Participante-2 Uma associação é uma relação entre objectos das classes participantes (um objecto de cada classe em cada ligação) Não gera novos objectos Matematicamente,uma associação binária é uma relação binária, i.e., um subconjunto do produto cartesiano das extensões das classes participantes Assim como um objecto é uma instância duma classe, uma ligação é uma instância duma associação Pode haver mais do que uma associação (com nomes diferentes) entre o mesmo par de classes Papéis nos extremos da associação podem ter indicação de visibilidade (pública, privada, etc.) 16

Multiplicidade de associações binárias Muitos-para-Muitos Muitos-para-1 1-para-1 Professor * * Curso Aluno * 1 Curso Curso 1 1 Plano de Curso (sem restrições ) 17 Notação para a multiplicidade 1 - exactamente um 0..1 - zero ou um (zero a 1) * - zero ou mais 0..* - zero ou mais 1..* - um ou mais 1, 3..5 - um ou três a 5 18

Associação reflexiva Pode-se associar uma classe com ela própria (em papéis diferentes) pai 0..1 * filho filho * mãe 0..1 19 Nome de associação A indicação 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 associação Empresa empregador Trabalha-para Emprega empregado 20

Classe-Associação Class-1 Association Name Class-2 Association Name link attribute... link operation... reúne as propriedades de associação e classe 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 o nome também pode ser colocado nos dois sítios não é possível repetir combinações de objectos das classes participantes na associação 21 Associações n-árias Notação Association Name Class-1 role-1 role-3 Class-3 role-2 Class-2 Multiplicidade Class-1 0..1 Class-3 Class-2 a cada par de objectos das restantes classes (1 e 2), correspondem 0 ou 1 objectos da classe 3 22

*Associações qualificadas Associação Classe A qualificador Classe B Qualificador: lista de um ou mais atributos de uma associação 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 uma pode ser sócia de vários clubes para cada par Clube + nº de sócio Clube nº de sócio * 0..1 nome morada 23 Agregação Associação com o significado contém (é constituído por) / faz parte de (part of) Relação de inclusão nas instâncias das classes Hierarquias de objectos Exemplo: Equipa 0..1 * Jogador Uma equipa contém 0 ou mais jogadores Um jogador faz parte de uma equipa (num dado momento), mas também pode estar desempregado 24

Composição 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 Notação: losango cheio (? ) ou notação encaixada Membros-objecto em C++ 25 Composição: notações alternativas Window 1 1 1 scrollbar 2 title 1 body 1 Slider Header Panel Window scrollbar: Slider 2 title: Header 1 Window scrollbar[2]: Slider title: Header body: Panel body: Panel 1 (sub-objectos no compartimento dos atributos) 26

Relações entre classes: generalização UML Diagramas de Classes v.1.2, João Pascoal Faria, Outubro de 2002 27 Generalização super-classe generalização Aluno especialização sub-classe 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 x x x sub-classe x x objecto extensão (sub-classe) extensão (super-classe) 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 28

As três facetas da generalização Substitutabilidade onde se espera um objecto da super-classe pode-se passar um objecto duma subclasse Herança de interface a subclasse herda as assinaturas (e significados) das operações da super-classe Herança ou overriding de implementação a subclasse pode herdar as implementações das operações da superclasse, mas também pode ter novas implementações de algumas dessas operações quando em UML se repete numa subclasse a assinatura de uma operação da super-classe, quer dizer que tem uma nova implementação na subclasse 29 Polimorfismo Substitutabilidade + Overriding Polimorfismo + Late Binding Quando se tem uma variável do tipo referência ou apontador para super-classe (que pode guardar uma referência para objecto da super-classe ou de uma subclasse), e se invoca uma operação, é usada a implementação da classe do objecto referenciado (determinada em tempo de execução late binding), e não a implementação de acordo com o tipo de referência (determinada em tempo de compilação early binding) Em C++ e C# só acontece com funções ou métodos virtuais Mecanismo muito poderoso, que permite estender software através da criação de novas subclasses que são usadas a partir de classes pré-existentes (que dependem apenas da interface e não da implementação das operações), sem que estas tenham conhecimento dessas extensões 30

Hierarquias de classes 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! curso : string Aluno nome : string datanascimento : Data Aluno(string nm, Data, string crs) getcurso() : string setcurso(string) : void imprime() : void AlunoDoutoramento (string, Data) getnome() : string getdatanascimento() : Data getidade() : int setnome(string) : void setdatanascimento(data) : void imprime() : void (...) categoria : string Professor Professor(string nm, Data, string ctg) getcategoria() : string setcategoria(string) : void imprime() : void 31 Notações alternativas para hierarquias de classes Aluno Professor Aluno Professor 32

Subclasses sobrepostas ( disjuntas) caso em que um objecto da superclasse pode pertencer simultaneamente a mais do que uma subclasse indicado por restrição {overlapping} o contrário é {disjoint} (situação por omissão?) Superclass ou Superclass {overlapping} {overlapping} Subclass-1 Subclass-2 Subclass-1 Subclass-2 33 Subclasses incompletas ( completas) caso em que um objecto da superclasse pode não pertencer a nenhuma das subclasses indicado por restrição {incomplete} o contrário é {complete} (situação por omissão?) Funcionário Técnico {incomplete} Comercial 34