Diagramas de classes. Classes



Documentos relacionados
UML Diagramas de Classes

4.2. UML Diagramas de classes

Exemplo: Campeonato de futebol

UML Aspectos de projetos em Diagramas de classes

UML & Padrões Aula 2 1

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

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

Orientação a Objetos com Java

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

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

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

Modelo de Domínio vs Modelo da Aplicação

MC536 Bancos de Dados: Teoria e Prática

Tópicos em Engenharia de Computação

Modelo conceitual Aula 08

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Capítulo 8. Introdução UML

Uma visão mais clara da UML Sumário

Diagrama de Classes. Viviane Torres da Silva

A Linguagem de Modelagem Unificada (UML)

Programação Orientada a Objetos em Java

Unisant Anna Gestão Empresarial com ERP 2014 Modelagem de Sistemas - UML e MER

UML: Diagrama de Classes

UML: Diagrama de Casos de Uso, Diagrama de Classes

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

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

UML Diagramas de Classes

Modelos de Sistema by Pearson Education. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 8 Slide 1.

Modelo Entidade-Relacionamento

Programação Orientada por Objetos

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

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Módulo 07 Características Avançadas de Classes

Programação com Objectos. Processamento de Dados I. 3. UML (Unified Modeling Language)

O que é a UML? Introdução a UML. Objetivos da Modelagem. Modelos. A UML não é. Princípios da Modelagem. O que é um modelo?

Modelagem de Dados Usando o Modelo Entidade-Relacionamento

Banco de Dados. Modelagem de Dados com MER. Prof. Walteno Martins Parreira Jr

Java. Marcio de Carvalho Victorino

Herança. Alberto Costa Neto DComp - UFS

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

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

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

Engenharia Informática

Engenharia de Software I

Unified Modeling Language UML - Notações

Reuso com Herança a e Composiçã

Persistência e Banco de Dados em Jogos Digitais

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

Programa do Módulo 2. Fundações do Modelo Objeto

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Análise e Projeto Orientados por Objetos

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Técnicas de Programação Avançada TCC Profs.: Anselmo Montenegro Conteúdo: Introdução à Orientação a Objetos

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

Capítulo 11. Conceitos de Orientação a Objetos. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Relatório de Análise de Requisitos

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

Análise e Projeto Orientados por Objetos

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

Banco de Dados I. Projeto de Banco de Dados e o Modelo E-R. Fabricio Breve

Orientação a Objetos

Databases. Ferramentas gráficas na modelação lógica das BD. O Modelo Entidade-Relação (Associação) O Modelo de Classes no UML

Programação por Objectos. Java

Programa do Módulo 2

MODELAGEM DE DADOS MODELAGEM DE DADOS. rafaeldiasribeiro.com.br 04/08/2012. Aula 7. Prof. Rafael Dias Ribeiro.

Banco de Dados I. Projeto de Banco de Dados e o Modelo E-R Parte 2. Fabricio Breve

Análise e Projeto Orientado a Objetos. Modelagem de Domínio

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

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

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Orientação à Objetos. Aécio Costa

UNIVERSIDADE DO ESTADO DE SANTA CATARINA - UDESC DCC Departamento de Ciência da Computação Joinville-SC

Conceito de classe em C++

UML Aula III Diagramas de Estado, Atividades, Componentes e Instalação

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

UML. Unified Modeling Language

Análise e Projeto Orientado a Objetos

Especificação de Sistemas de Tempo-Real utilizando Orientação a Objetos

Implementando uma Classe e Criando Objetos a partir dela

Programação Orientada a Objetos em Java. Herança

Fundamentos de Banco de Dados e Modelagem de Dados

Curso Superior de Tecnologia em BD

Sistemas para internet e software livre

Java 2 Standard Edition Como criar classes e objetos

Banco de Dados Aula 02. Colégio Estadual Padre Carmelo Perrone Profº: Willian

BANCO DE DADOS. Ferramenta ERWin Parte 1. Introdução. Engenharia da Computação UNIVASF. Aula 9. Formas de trabalho. Formas de trabalho

Polimorfismo. Prof. Leonardo Barreto Campos 1

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

MODELAGEM VISUAL DE OBJETOS COM UML DIAGRAMA DE CLASSES.

O Modelo de Entidades e Relacionamentos (MER) é um modelo conceitual usado para projeto de aplicações de banco de dados.

Modelo de Entidade e Relacionamento (MER) - Parte 07

Guia de Fatores de Qualidade de OO e Java

1. Introdução 2. Desenvolvimento de Softwares orientado a objetos 3. UML A unificação dos métodos para a criação de um novo padrão 4. Uso da UML 5.

3. PARADIGMA ORIENTADO A OBJETOS

UML Unified Modeling Language

Análise Orientada a Objetos

Transcrição:

Diagramas de classes Um diagrama de classes serve para modelar o vocabulário de um sistema 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 projeto (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: Modelos lógicos de bases de dados Modelos interface de usuário (estrutura de dados de formulários, relatórios, etc.) Modelos de domínio, negócio, análise e design Classes Representam conceitos, i.e., abstrações de um conjunto de objetos Nome Atributos Distinguem e qualificam os objetos da classe Métodos Descrevem o comportamento de uma classe Não é utilizado em modelagem conceitual Atributo Atributo2 Atributo3 NomeDaClasse Atributos... Método( ) Método2( ) NomeDaClasse NomeDaClasse

Visibilidade de atributos e operações 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) Princípio do encapsulamento: esconder todos os detalhes de implementação que não interessam aos clientes (utilizadores) da classe Toolbar # currentselection: Tool # toolcount: Integer + gettool(i: Integer): Tool + addtool(t: Tool) + removetool(i: Integer) - compact() usada internamente por outras operações Modelo de domínio (Biblioteca) Autor nome nacionalidade Publicação isbn nº de património título ano editora data de aquisição custo contador de consultas / estado : (disponível,emprestada) Biblioteca nome morada telefone Sócio número nome morada telefone data de inscrição validade da inscrição estado : (activo,inactivo) Só se considera a existência dma instância Requisição número data de requisição prazo de devolução data de devolução

Classes Persistentes Classes em C++!"# $%& ' ( ) ) +,-)./ 0 2 354+. +6 2 (.789(, 69:)./ 0 2 2 (.4+.-+7+) ;0 89(., 69:4+.-+ < = >-? @BA@ = C DFEG H > I J KMLNO9J P-I KMQ R ST U9V WNRX I J KMYZK Z LZI [ R O9J S K-N PYZK-ZU9V WNRX \ ]_^ ` \ ]9a b c9d ef \ g hji k lm n k o p mrqp smo t l u hji k lm v p so t l uwlbxfyjz{s-{y p smo t l u n o p } ~ Bƒ - 9ˆ ƒ Š ~ - ƒ ƒ Š ~ 9ˆ Œ _Ž ƒ 9 9ˆ Œ Ferramenta: Microsoft Visual Modeler class { private: string nome; Data datanascimento; public: (string, Data); string getnome() const; Data getdatanascimento() const; int getidade() const; void setnome(string); void setdatanascimento(data); virtual void imprime() const; }; class Aluno : public { private: string curso; public: Aluno(string nm, Data, string crs); string getcurso() const; void setcurso(string); virtual void imprime() const; };

Objetos Um objeto é 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 objetos comportamento um objeto 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 objetos mesmo que tenham o mesmo estado no tempo: é possível saber que se trata do mesmo objeto mesmo que o seu estado mude Objetos do mundo real e objetos computacionais No desenvolvimento de software OO, procura-se imitar no computador o mundo real visto como um conjunto de objetos que interagem entre si Muitos objetos computacionais são imagens de objetos do mundo real Dependendo do contexto (análise ou projeto) podemos estar a falar em objetos do mundo real, em objetos computacionais ou nas duas coisas em simultâneo Exemplos de objetos do mundo real: o Sr. João a aula de ES no dia /0/2000 às horas Exemplos de objetos computacionais: o registo que descreve o Sr. João (imagem de objeto do mundo real) uma árvore de pesquisa binária (objeto puramente computacional)

Atributos de objetos O estado de um objeto é dados por valores de atributos (e por ligações que tem com outros objetos) Todos os objetos de uma classe são caracterizados pelos mesmos atributos (ou variáveis de instância) o mesmo atributo pode ter valores diferentes de objeto para objeto Atributos são definidos ao nível da classe, enquanto que os valores dos atributos são definidos ao nível do objeto Exemplos: uma pessoa (classe) tem os atributos nome, data de nascimento e peso João (objeto) é uma pessoa com nome João Silva, data de nascimento 8/3/973 e peso 68 Kg Atributos de objetos 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, podendose 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

Operações de objetos Comportamento invocável de objetos é modelado por operações uma operação é algo que se pode pedir para fazer a um objeto de uma classe objetos 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 objeto Princípio do encapsulamento: acesso e alteração do estado interno do objeto (valores de atributos e ligações) controlado por operações Nas classes que representam objetos do mundo real é mais comum definir responsabilidades em vez de operações compartimento de operações nome: string morada: string setmorada(novamorada:string): bool Atributos e operações estáticos ( de instância) Atributo estático: tem um único valor para todas as instâncias (objetos) da classe valor está definido ao nível da classe e não ao nível das instâncias Operação estática: não é invocada para um objeto específico da classe Notação: nome sublinhado Correspondem a membros estáticos (static) em C++, 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 nova factura com a data e valor especificados, e um nº sequencial atribuído automaticamente com base em ultimonumero

Relacionamentos Dependência Associação Generalização Agregação Associação Uma associação é uma relação entre objetos das classes participantes (um objeto de cada classe em cada ligação) Assim como um objeto é uma instância de uma classe, uma ligação é uma instância de uma associação Pode haver mais do que uma associação (com nomes diferentes) entre o mesmo par de classes Nome da associação multiplicidade.. Trabalha para empregado empregador Empresa papeis direção

Multiplicidade - exactamente um 0.. - zero ou um (zero a ) - zero ou mais 0.. - zero ou mais.. - um ou mais, 3..5 - um ou três a 5 Muitos-para-Muitos Muitos-para- -para- Professor Curso Aluno Curso Curso Plano de Curso (sem restrições) Associação Reflexiva: pode-se associar uma classe com ela própria (em papéis diferentes) pai 0.. filho filho mãe 0.. 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

Associações n-árias Notação Class- role- Association Name role-3 Class-3 role-2 Class-2 Multiplicidade Class- Class-2 0.. Class-3 a cada par de objetos das restantes classes ( e 2), correspondem 0 ou objetos da classe 3 Atributos versus Associações Uma propriedade que designa um objeto de uma classe presente no modelo, deve ser modelada como uma associação e não como um atributo Exemplo: País nome: string capital: string capital: Cidade 0.. Pertence a Cidade nome: string capital

Agregação Utilizado para representar classes que são parte (componentes) de uma outra Também conhecida como é-parte-de Relação parte-todo agregação Departamento Empresa parte todo Equipe 0.. Jogador Uma equipe contém 0 ou mais jogadores Um jogador faz parte de uma equipa (num dado momento), mas também pode estar desempregado 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 ) 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-objeto em C++

Composição: notações alternativas Window scrollbar 2 title body Slider Header Panel Window scrollbar: Slider 2 title: Header Window scrollbar[2]: Slider title: Header body: Panel body: Panel (sub-objetos no compartimento dos atributos) Generalização Utilizado para representar classes que são uma generalização de uma mais específica Também conhecida como é-um-tipo-de Aluno Professor super-classe especialização sub-classe curso Aluno nome e-mail Professor categoria {overlapping} Aluno Professor Notação alternativa Professor-Aluno redução de horário

Generalização e hierarquias de classes Aluno Professor super-classe especialização sub-classe curso Aluno nome e-mail Professor categoria {overlapping} Aluno Professor Notação alternativa Professor-Aluno redução de horário Hierarquias de classes!"# $ % & & ' () & +, -. /0( (2. % 3'45% ) 276 & +, -.. % 0( ( 3(& 8, 4%- ' ) 2960( ( : ; < = >?> ; @ A7BC D< E F G HIJF K E G L MN O P7Q RIMS E F G TUG UHUE V MJFN G I K TUG UWP9Q RWIMS XY9Z\[ XY5] ^ _7` abxc dfe g h i j g k l inm l o k p h q Œ Ž Ž Ž dfe g h i r l o k ph qsh t5uvwo w uxl o k p h q z { }~ ƒ7 z {\ }~ zxƒ ˆ Š9 \ Š5{ ƒ7 ˆ j k l y Œ Ž Ž š \œ7 ž x Ž š Ÿ \ Ž š Ÿ Ž œ9 \ œ5 š Ÿ Ž Ÿ f ŽžŽf Ž œ Ž (...)

Classes e operações abstratas ( concretas) Classe abstrata: classe que não pode ter instâncias directas pode ter instâncias indirectas pelas subclasses concretas Operação abstrata: 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++ Notação : nome em itálico ou propriedade {abstract} RectangularIcon height: Integer width: Integer display() Button Icon origin: Point display() getid(): Integer ArbitraryIcon edge:linecollection display() isinside(p:point):bool Fonte: The UML User Guide, Booch et al Relação de dependência Relação de uso entre dois elementos (classes, componentes, etc.), em que uma mudança na especificação do elemento usado pode afetar o elemento utilizador Exemplo típico: classe- que depende de outra classe-2 porque usa operações ou definições da classe-2 Úteis para gestão de dependências cliente servidor

Dependência e realização Aparecem frequentemente combinados Cliente usa o servidor sem dele depender directamente (depende apenas da interface ou contrato que o servidor implementa) cliente contrato ou interface dependência realização servidor Restrições Uma restrição especifica uma condição que tem de se verificar no estado do sistema (objetos e ligações) 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) Podem ser formalizadas em UML com a OCL - "Object Constraint Language" Também podem ser formalizadas (como invariantes) numa linguagem de especificação formal como VDM++

Restrições em classes nome datanascimento localnascimento datafalecimento {chave candidata: (nome, datanascimento, localnascimento)} {datafalecimento > datanascimento} Fatura número data {chave candidata: (número)} LinhaFatura número artigo quantidade valor {chave candidata: (fatura.número, número)} Restrições em associações Factura {ordered} Membro-de {subset} Director-de LinhaFactura Comité uma factura é constituída por um conjunto ordenado de 0 ou mais linhas Conta {xor} Empresa associações mutuamente exclusivas chefe 0.. empregado trabalhador empregador.empregador =.chefe.empregador Empresa

Interfaces Uma interface especifica um conjunto de operações (com sintaxe e semântica) externamente visíveis de uma classe de (ou componente, subsistema, etc.) semelhante a classe abstracta só com operações abstractas e sem atributos nem associações (em C++ é mesmo isso!) separação mais explícita entre interface e (classes de) implementação interfaces são mais importantes em linguagens como Java, C# e VB.NET que têm herança simples de implementação e herança múltipla de interface Vantagem em separar interface de implementação: os clientes de uma classe podem ficar a depender apenas da interface em vez da classe de implementação 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) Interfaces: notações alternativas! "#$ %'&( ) %') + #,-. ClientClass ClientClass InterfaceClass ImplementationClass attributes operations ou operations «interface» InterfaceClass ImplementationClass attributes operations / )( #,-.0") 2 34 56 7 8 9 :; 2

Utilitários Um utilitário é um agrupamento de variáveis globais e procedimentos como classe Pode ser implementado por classe em que todos os atributos e operações são estáticos Notação: classe com estereótipo «utility» pi: Real «utility» MathPack sin(ang: Real): Real cos(ang: Real): Real Estereótipos de classes em modelos de negócio prqq,st%uv st%uwuxyz{ s)t%u z} u~u{ q) v ü q,ü w ƒ st%s W } szu s Tt%u w uxyz{ s t%u) } s w u{ } % u ˆ% )ŠŒ Ž ŽŠ ŠWˆ% ) Ž šž œ ŠT Ž%š ŽŠWˆ%ŽŠ žÿ ŸžT ž business actor! " #%$ #%& ')(" (! +,$-'"!. $ /0& +&/20" &3 4 5 6 7 8 9:;7 : 9<8 business worker =>? @ A BC%>)D? EFE%B GE C%Ḧ?C%HI>JKLA H%MNA I D>?IHO IP H A I D >? EJ >)LḦ QRE L D Ḧ? >STC%HI>JKLA HUḦ VC%>@? Ḧ I D>A? E O A I D >? E J>LḦ QE L D Ḧ? >SWC%HI>JKLA HU X E L D Ḧ?A I D >?IH Y%Z [ \] Y^_ ``a byc_da ^ ef _ g%y^\hf Yì]j _Z%_%f k_ g%ÿ j \Ẁ\ _ l ] Ÿ j \`md_ Ẁ_ l ] a ba g%_ g%\ẁg%yẁ^ j Yl\``YẀg%\d\nola Y business entity

Estereótipos de classes em modelos de análise! " $# %& ' $# () (+, -.+'(/0 2-3+ 465/,87) (--, +9 :/3;5/,<3 + +=. +3>/ (!(+?(@3 + AB? ) () / (C4 -C3-7D (". + 5/9 -E /3 -FG + ("+=C3 +/ EH +/ (!. / ("(C+I?) =+ (>) < / (KJ -5L/3;+, 3+9 -FM/-/'(C) (+, -. +(/0 N- 3 +$O < /. +'(C+3 ) =+3=//?'+P+3C=/-/$=+IQ 5) /R actor S TU VWS'X V'YZ S[WV \ Z ]^ Y SZ_`a b Z \ S cu] [VBa ]c6vwd e f boundary m no pqm'r psmtqcu mv mlw smtqcu mv xyp zb{ ts} x r p ~ { ts} mtx ptqm BqCu x tycxs p yc 6pqs ƒ 6p yqxn pv p sp v } x mptqcu pm no pqm y!r p ~ u mtqp } u xpptq} r xr p yk control S TU VWSg ]hh\ is'jb`v'k`] Z X]V hw]x Sl_ ]\ h"s`l_ V[S h g VZ h\ hwv[wv entity