Capítulo 8. Introdução UML



Documentos relacionados
Programação por Objectos UML UML 1/87

Programação por Objectos UML UML 1/83

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

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

Programação Orientada a Objetos (DPADF 0063)

Programação por Objectos. Java

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

Programação por Objectos. Java

UML: Diagrama de Casos de Uso, Diagrama de Classes

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

Programação Orientada a Objeto

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

Análise e Projeto Orientados por Objetos

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

CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

Encapsulamento de Dados

Implementando uma Classe e Criando Objetos a partir dela

UML & Padrões Aula 2 1

Construção de novas Classes em Java. Classes Atributos Métodos Herança...

A Introdução à Programação Orientada a Objetos. Programação e Sistemas de Informação

Prof. Jhonatan Fernando

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Programação de Computadores - I. Profª Beatriz Profº Israel

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

UML (Unified Modeling Language) Linguagem de Modelagem Unificada

UML Aspectos de projetos em Diagramas de classes

Disciplina Técnicas de Modelagem

Itens estruturais/caso de uso. Itens estruturais/classe ativa. Itens estruturais/componente. Itens estruturais/artefatos. Itens comportamentais

modelagem do negócio (processos e objetos do negócio) modelagem de requisitos alocados ao software modelagem da solução de software

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

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding

3 Classes e instanciação de objectos (em Java)

Gestão de projectos na Web

UML Itens Estruturais - Interface

Algoritmos e Programação II. Sobrecarga

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

Capítulo 3. Programação por objectos em Java

Orientação a Objetos com Java

Linguagem de Programação I. Orientação a Objetos em Java

Ferramenta para Geração de Código a partir da Especialização do Diagrama de Classes

UML Unified Modeling Language

RELACIONAMENTOS ENTRE CLASSES

POO Programação Orientada a Objetos. Classes em Java

Java. Marcio de Carvalho Victorino

Capítulo 4. Packages e interfaces

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Cartão de fidelização de clientes das distribuidoras de combustível.

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

Capítulo 14. Herança a e Polimorfismo. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Análise de Programação

Micro Mídia Informática Fevereiro/2009

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Material de Apoio 5. int getres() { return res; O que estas classes possuem em comum? 1) 2) 3)

ANÁLISE E PROJETO ORIENTADO A OBJETOS. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

4.4. UML Diagramas de interacção

Análise e Projeto Orientados a Objeto

Tópicos em Engenharia de Computação

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

Modelando com UML Unified Modeling Language

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

Exercícios de Revisão Java Básico

4.1. UML Diagramas de casos de uso

Autoria:Aristófanes Corrêa Silva Adaptação: Alexandre César M de Oliveira

Mapa Mental de Engenharia de Software - Diagramas UML

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Influenciam nossa percepção; ajudam-nos a organizar e a coordenar a Classes estimulam projeto centrado em dados:

Aula 5 UML: Casos de Uso

Prova de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos)

Fundamentos de Banco de Dados e Modelagem de Dados

Técnicas de Programação II

04/07/2015 UML. Prof. Esp. Fabiano Taguchi DEFINIÇÃO DE REQUSIITOS

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo;

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

Utilizando os Diagramas da UML (Linguagem Unificada de Modelagem) para desenvolver aplicação em JSF

Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Herança, Polimorfismo e Construtores

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

Herança. Alberto Costa Neto DComp - UFS

Computação II Orientação a Objetos

BSI UFRPE Prof. Gustavo Callou

Classes Abstratas e Interfaces

Linguagem de Programação III Herança

UML (Unified Modelling Language) Diagrama de Classes

Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33

Desenvolvimento OO com Java Orientação a objetos básica

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

CASO DE USO. Isac Aguiar isacaguiar.com.br

8 Classes Internas. Desenvolvimento OO com Java. Vítor E. Silva Souza

PROGRAMAÇÃO ORIENTADA A OBJETO EM PHP

Programação de Computadores - I. Profª Beatriz Profº Israel

UML Unified Modeling Language. Professor: André Gustavo Bastos Lima

Programação Orientada a Objetos. Encapsulamento

Java Threads. Introdução

Ciência da Computação ENGENHARIA DE SOFTWARE. UML-Unified Modeling Language Linguagem de Modelagem Unificada

1.2 Uma linguagem de programação muito simples

UML: Casos de Uso. Projeto de Sistemas de Software

Programação Orientada a Objetos (DPADF 0063)

Transcrição:

Capítulo 8. Introdução UML 1/42

Índice Indice 8.1 - Introdução UML 8.2 - Modelação estrutural 8.2.1 - Representação de classes e objectos 8.2.2 - Relações entre objectos 8.2-3 - Relações de associação 8.2.4 - Relações de agregação e composição 8.2.5 - Relações de generalização 8.3 - Modelação de comportamento 8.3.1 - Use cases 8.3.2 - Actividade 8.3.3 - Sequência de mensagens 2/42

Índice 8.1 Introdução UML 8.1 - Introdução UML 8.2 -- Modelação estrutural 8.2.1 -- Representação de classes e objectos 8.2.2 -- Relações entre objectos 8.2--3 -- Relações de associação 8.2.4 -- Relações de agregação e composição 8.2.5 -- Relações de generalização 8.3 -- Modelação de comportamento 8.3.1 -- Use cases 8.3.2 -- Actividade 8.3.3 -- Sequência de mensagens 3/42

8.1 Introdução UML UML Unified Modeling Language Resulta da fusão de vários sistemas de análise -Booch (G. Booch) -OOSE (I. Jacobson) -OMT (J.Rumbaugh) 1º proposta divulgada em 1997. -1999 -> V1.1 ; 2000 -> V1.3 ; 2001 -> V1.4 ; 2003 -> V1.5 ; Abril 2004 -> V2.0 Ferramentas -Rational Rose -Plug-in do eclipse (http://www.soyatec.com/euml2) -ArgoUML (http://argouml.tigris.org) 4/42

8.1 Introdução UML UML Unified Modeling Language UML V2 disponibiliza 13 diagramas agrupados em: -Modelação estrutural : Pacotes, Classes, Objectos, estrutura composicional, componentes, aplicação física -Modelação de comportamento -: Use Case, actividade, máquina de estados, comunicação, sequência de mensagens, temporização, enquadramento das interacções Em POO são abordados apenas os diagramas centrais do UML, na sequência: - Conceito => representação em UML => Implementação em Java 5/42

Índice 8.2 Modelação estrutural 8.1 -- Introdução UML 8.2 - Modelação estrutural 8.2.1 -- Representação de classes e objectos 8.2.2 -- Relações entre objectos 8.2--3 -- Relações de associação 8.2.4 -- Relações de agregação e composição 8.2.5 -- Relações de generalização 8.3 -- Modelação de comportamento 8.3.1 -- Use cases 8.3.2 -- Actividade 8.3.3 -- Sequência de mensagens 6/42

Índice 8.2.1 Representação de classes e objectos 8.1 -- Introdução UML 8.2 - Modelação estrutural 8.2.1 - Representação de classes e objectos 8.2.2 -- Relações entre objectos 8.2--3 -- Relações de associação 8.2.4 -- Relações de agregação e composição 8.2.5 -- Relações de generalização 8.3 -- Modelação de comportamento 8.3.1 -- Use cases 8.3.2 -- Actividade 8.3.3 -- Sequência de mensagens 7/42

8.2.1 Representação de classes e objectos Representação de classes As classes são representadas por um rectângulo dividido em 3 zonas Identificador da classe Atributos Métodos Conta # dono: Pessoa # quantia: float = 0 + Conta() + deposito (valor:float) + levantamento (valor: float) : void + saldo () : float Tipo do atributo Inicialização do atributo Construtor Visibilidade: Visibilidade Tipo do parâmetro Tipo de retorno - + public (visível e acessível por todas as classes) - # protected (visível e acessível pelas classes filhas noutro package ou pelas classes que compõem o package) - - private (visível e acessível apenas pela própria classe) - ~ package (visível e acessível apenas pelas classes dentro do package) 8/42

8.2.1 Representação de classes e objectos Representação de objectos Os objectos são representados por um rectângulo dividido em 2 zonas -Nome do objecto instanciado e inicialização dos atributos Id do Objecto : Id da Classe ou apenas Id da Classe Inicialização dos atributos (1 por linha): Id = init. Conta1: Conta Dono = Rui Silva quantia = 100000 9/42

8.2.1 Representação de classes e objectos Métodos e atributos de classe e de objecto Atributos e métodos podem ser: -De classe : Um para todas as instancias (objectos) da classe (STATIC) -De objecto: Um para cada instância da classe Conta Os atributos e métodos de classe (static) são representados com sublinhado no diagrama. - numproximaconta: int # dono: Pessoa # quantia: float = 0 # incnumproxconta() : void + deposito (valor:float) + levantamento (valor: float) : void + saldo () : float 10/42

8.2.1 Representação de classes e objectos Herança A sub-classe constitui uma especialização da super-classe É representada por uma seta não preenchida da sub-classe para a super-classe Super-classe Animal Especialização Mamífero Ovíparo Nota: Quando não é necessário definir os atributos e métodos estes podem ser omitidos e fica apenas o diagrama de relação de classes 11/42

8.2.1 Representação de classes e objectos Métodos e classes abstractas Um método abstracto não tem implementação (é apenas um protótipo) Uma classe abstracta é uma classe que não pode ser instanciada. Os métodos e classes abstractas são representados com o nome em itálico Classe abstracta Conta + levantamento (valor: float) Especialização ContaOrdem ContaPrazo + levantamento (valor: float) + levantamento (valor: float) 12/42

8.2.1 Representação de classes e objectos Notas, comentários e restrições Notas e comentários : Ilustram comentários e não têm impacto semântico Istoéumanota. Conta Classe que representa a conta bancária Restrições: Permitem adicionar ou alterar a semântica assumida por omissão no elemento UML -Especificação da condição delimitada pelos caracteres {} {Isto é uma condição} Conta - numproximaconta: int # dono: Pessoa # sexo: String # quantia: float = 0 { (sexo = F or sexo = M ) and quantia 0 } 13/42

8.2.1 Representação de classes e objectos Estereótipos Permitem adicionar semântica ao símbolo -Os estereótipos são texto entre << >> Para organizar listas longas de atributos e métodos, estes podem ser agrupados em categorias discriminadas por estereótipos << conta à ordem >> Conta <<contador>> -numproximaconta: int <<atributos de Conta>> # dono: Pessoa # quantia: float = 0 <<número próxima conta>> # incnumproxconta() : void <<operações sobre conta>> + deposito (valor:float) + levantamento (valor: float) : void + saldo () : float 14/42

Estereótipos Definição de interfaces em UML 8.2.1 Representação de classes e objectos -A interface é uma classe que tem somente operações publicas sem métodos nem atributos. -isto é, um tipo especial de classe representada pelo estereótipo <<interface>> -Uma interface, para além das operações oferecidas só pode conter atributos constantes, representados com a propriedade {readonly} << interface >> Teste + valor1: int = 0 {readonly} + valor1: int = 1 {readonly} + setatributo (float valor) + getatributo():float constantes 15/42

Índice 8.2.2 Relações entre objectos 8.1 -- Introdução UML 8.2 - Modelação estrutural 8.2.1 -- Representação de classes e objectos 8.2.2 - Relações entre objectos 8.2--3 -- Relações de associação 8.2.4 -- Relações de agregação e composição 8.2.5 -- Relações de generalização 8.3 -- Modelação de comportamento 8.3.1 -- Use cases 8.3.2 -- Actividade 8.3.3 -- Sequência de mensagens 16/42

8.2.2 Relações entre objectos Os objectos não vivem isolados e nos programas são estabelecidas relações de cooperação Uma relação é uma conexão entre elementos. Existem diferentes tipos de relações por exemplo: -Associação: relaciona objectos entre si. -Composição/Agregação: relação que denota o todo constituído por partes. -Herança: mecanismo de generalização-especialização de classes 17/42

Índice 8.2.3 Relações de associação 8.1 -- Introdução UML 8.2 - Modelação estrutural 8.2.1 -- Representação de classes e objectos 8.2.2 -- Relações entre objectos 8.2-3 - Relações de associação 8.2.4 -- Relações de agregação e composição 8.2.5 -- Relações de generalização 8.3 -- Modelação de comportamento 8.3.1 -- Use cases 8.3.2 -- Actividade 8.3.3 -- Sequência de mensagens 18/42

8.2.3 Relações de associação Associação Numa associação são definidos identificador, papeis e multiplicidade -Os dois últimos são opcionais -Não há o conceito de posse. Os tempos de vida dos objectos ligados entre si são independentes Empregado Chefe Empregado Multiplicidade: -(1) exactamente 1 -(0..1) Zero ou 1 -(0..* ou *) Zero ou mais -(1..*) 1 ou mais empregados Papeis chefe * Chefia 0..1 Identificador multiplicidade Chefe 1 Chefe pode chefiar entre 0 e muitos empregados 1 empregado pode ter apenas um ou nenhum chefe 19/42

8.2.3 Relações de associação Associação A associação é estabelecida quando os atributos forem inicializados Nas associações dirigidas, apenas a classe de partida da seta contêm o atributo para a classe de chegada. Empregado - chefe ÉChefiadoPor 0..1 Chefe public abstract class Empregado { // public abstract class Chefe { // String nome; } } private Chefe nome; public Empregado(Chefe nomechefe){ this.nome = nomechefe; } Associação. Classe de partida contêm atributo com referência para a classe de chegada Associação é definitivamente estabelecida quando os atributos forem inicializados 20/42

8.2.3 Relações de associação Multiplicidade das associações No JAVA, a multiplicidade (que não seja 0..1 e 1) é implementada por atributos do tipo array, vector, etc. nas classes associadas. Pessoa dono 1 contas 0..10 Conta public abstract class Pessoa { } int numproxconta=0; static final int nummaxconta=10; Conta[] conta; // Pessoa(){ } conta = new Conta[numMaxConta] void associarconta(conta conta) { } this.conta[nummaxconta++] = conta; Multiplicidade: Pessoa tem até 10 contas public abstract class Conta { } Pessoa dono; Conta (Pessoa dono){ this.dono=dono; 21/42 } Associação é definitivamente estabelecida quando ambos os atributos forem inicializados

Índice 8.2.4 Relações de agregação e composição 8.1 -- Introdução UML 8.2 - Modelação estrutural 8.2.1 -- Representação de classes e objectos 8.2.2 -- Relações entre objectos 8.2--3 -- Relações de associação 8.2.4 - Relações de agregação e composição 8.2.5 -- Relações de generalização 8.3 -- Modelação de comportamento 8.3.1 -- Use cases 8.3.2 -- Actividade 8.3.3 -- Sequência de mensagens 22/42

8.2.3 Relações de agregação e composição Agregação A agregação denota uma relação do todo ser formado por partes -É tida como uma relação has-a ou tem um ou mais Especificada por um losango vazio no extremo relativo ao todo Empresa 0..1 frota * Veículo Composição Na composição, o desaparecimento do todo conduz ao desaparecimento das partes Especificada por um losango preenchido no extremo relativo ao todo. Livro 0..1 Páginas Na composição é ainda necessário garantir que o desaparecimento do todo implica o desapareceimento das partes. * 23/42

8.2.3 Relações de agregação e composição Composição Exemplo: -Uma pessoa é composta por uma cabeça e dois braços Pessoa 1 1 Cabeça 1 2 Braço -Implementação JAVA public class Pessoa { // private Cabeça cabeça; private Braço braço_esquerdo; private Braço braço_direito; } Implementação da composição (ou associação) através da definição de atributos do tipo referência Multiplicidade: Pessoa tem 2 braços 24/42

Composição Exemplo 2 8.2.3 Relações de agregação e composição Empresa 1 1..10 Departamento public class Empresa { int numproxdepartamento = 0; static final int nummaxdepartamentos = 10; Departamento departamentos[]; // 1 para n Empresa() { //Construtor departamentos = new Departamento[numMaxDepartamentos]; } void novodepartamento() { if (numproxdepartamento < nummaxdepartamentos ) departamentos[] = new Departamento(this); }} Implementação da composição (ou associação) através da definição de atributos do tipo referência public class Departamento { } // Empresa empresa; // 1 para 1 Departamento(Empresa e) { } empresa = e; 1 departamento é parte de 1 empresa 1 empresa é composta por n dptos. 25/42

8.2.3 Relações de agregação e composição Composição Alternativa recorrendo a classes aninhadas 1 Empresa 1..10 Departamento -A classe Departamento é em alternativa definida como classe aninhada da classe Empresa -Deixa de ser necessário guardar um atributo com referência da classe Departamento para a classe Empresa, pois esta é disponibilizada implicitamente pelo Java através do this qualificado 26/42

8.2.3 Relações de agregação e composição Composição Alternativa recorrendo a classes aninhadas 1 Empresa 1..10 Departamento public class Empresa { int numproxdepartamento = 0; static final int nummaxdepartamentos = 10; Departamento departamentos[]; // 1 para n public class Departamento { } Empresa() { Classe aninhada //Construtor departamentos = new Departamento[numMaxDepartamentos]; } void novodepartamento() { if (numproxdepartamento < nummaxdepartamentos ) departamentos[] = new Departamento(this); }} 27/42

Índice 8.2.5 Relações generalização 8.1 -- Introdução UML 8.2 - Modelação estrutural 8.2.1 -- Representação de classes e objectos 8.2.2 -- Relações entre objectos 8.2--3 -- Relações de associação 8.2.4 -- Relações de agregação e composição 8.2.5 - Relações de generalização 8.3 -- Modelação de comportamento 8.3.1 -- Use cases 8.3.2 -- Actividade 8.3.3 -- Sequência de mensagens 28/42

8.2.5 Relações de generalização Generalização Um humano é um mamífero ou qualquer humano é um mamífero Mamífero Humano Exemplo em Java public class Humano extends Mamífero { // } 29/42

8.2.5 Relações de generalização Generalização (simulando herança múltipla) Um hidroavião é uma avião e também um veículo naval ou: Qualquer hidroavião é um avião e um veículo naval Avião << interface >> VeículoNaval Hidroavião Exemplo em Java public class Hidroavião extends Avião implements VeículoNaval { // } Herança multipla é simulada recorrendo a interfaces 30/42

Índice 8.3 Modelação de comportamento 8.1 -- Introdução UML 8.2 -- Modelação estrutural 8.2.1 -- Representação de classes e objectos 8.2.2 -- Relações entre objectos 8.2--3 -- Relações de associação 8.2.4 -- Relações de agregação e composição 8.2.5 -- Relações de generalização 8.3 - Modelação de comportamento 8.3.1 -- Use cases 8.3.2 -- Actividade 8.3.3 -- Sequência de mensagens 31/42

Índice 8.3.1 Use cases 8.1 -- Introdução UML 8.2 -- Modelação estrutural 8.2.1 -- Representação de classes e objectos 8.2.2 -- Relações entre objectos 8.2--3 -- Relações de associação 8.2.4 -- Relações de agregação e composição 8.2.5 -- Relações de generalização 8.3 - Modelação de comportamento 8.3.1 - Use cases 8.3.2 -- Actividade 8.3.3 -- Sequência de mensagens 32/42

8.3.1 Modelação de comportamento Diagrama de casos de utilização (Use cases) O elemento básico de representação de casos de utilização é o actor Exemplo diagrama de generelalização de casos de utilização para perfis de acesso a um sistema 33/42

8.3.1 Modelação de comportamento Diagrama de casos de utilização (Use cases) Exemplo II 34/42

Índice 8.3.2 Actividade 8.1 -- Introdução UML 8.2 -- Modelação estrutural 8.2.1 -- Representação de classes e objectos 8.2.2 -- Relações entre objectos 8.2--3 -- Relações de associação 8.2.4 -- Relações de agregação e composição 8.2.5 -- Relações de generalização 8.3 - Modelação de comportamento 8.3.1 -- Use cases 8.3.2 - Actividade 8.3.3 -- Sequência de mensagens 35/42

8.3.2 Modelação de comportamento Diagrama de actividade São Equivalentes ao fluxograma em linguagem procedimental: Fluxograma em Linguagem procedimental 36/42

8.3.2 Modelação de comportamento Diagrama de actividade Utilizado para modelar: -A dinâmica da sociedade de objectos -O controlo de fluxo de um método São o equivalente ao fluxograma para a POO -O fluxo simples é representado por setas -O estado inicial é representado por um circulo preenchido -O estado final é representado por um circulo preenchido dentro de outro circulo 37/42

8.3.2 Modelação de comportamento Diagrama de actividade O fluxo alternativo é representado por um diamante não preenchido de onde parte a ramificação: -A ramificação pode resultar em 2 ou mais fluxos simples -Cada fluxo tem uma expressão booleana 38/42

Índice 8.3.3 Sequência de mensagens 8.1 -- Introdução UML 8.2 -- Modelação estrutural 8.2.1 -- Representação de classes e objectos 8.2.2 -- Relações entre objectos 8.2--3 -- Relações de associação 8.2.4 -- Relações de agregação e composição 8.2.5 -- Relações de generalização 8.3 - Modelação de comportamento 8.3.1 -- Use cases 8.3.2 -- Actividade 8.3.3 - Sequência de mensagens 39/42

8.3.3 Modelação de comportamento Diagrama de sequência de mensagens Contêm objectos, ligações entre eles e as mensagens (métodos chamados) que deram origem a estas ligações Representa os objectos no eixo das abcossas e os métodos chamados entre os respectivos objectos ordenados temporalmente no eixo das ordenadas 40/42

8.3.3 Modelação de comportamento Diagrama de sequência de mensagens Nos diagramas de sequência de mensagens os objectos são criados e destruidos -A sua existência começa com uma seta com o estereótipo <<create>> ligando os objectos envolvidos -A sua existência termina com uma seta com o estereótipo <<destroy>> ligando os objectos envolvidos 41/42

FIM 42/42