UML & Padrões Aula 2 1

Documentos relacionados
Capítulo 8. Introdução UML

Implementando uma Classe e Criando Objetos a partir dela

MODELAGEM VISUAL DE OBJETOS COM UML DIAGRAMA DE CLASSES.

Orientação a Objetos

Orientação a Objetos com Java

Programação Orientada a Objetos. Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br

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

Programação Orientada a Objeto

UML: Diagrama de Casos de Uso, Diagrama de Classes

RELACIONAMENTOS ENTRE CLASSES

Análise e Projeto Orientados por Objetos

Computação II Orientação a Objetos

UML & Padrões Aula 3. UML e Padrões - Profª Kelly Christine C. Silva

O que é um algoritmo? O que é um programa? Algoritmos. Programas. Aula 1 Tipo Abstrato de Dados

Introdução a Java. Hélder Nunes

9 Comandos condicionais

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

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

O modelo Entidade-Relacionamento. Agenda: -Modelagem de dados utilizando O Modelo Entidade-Relacionamento

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

UML Aspectos de projetos em Diagramas de classes

Tipo Abstrato de Dados

Algoritmos e Programação II. Sobrecarga

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)

Encapsulamento de Dados

Programação Orientada a Objetos (DPADF 0063)

ESTENDENDO A UML PARA REPRESENTAR RESTRIÇÕES DE INTEGRIDADE

Programação Orientada a Objetos Herança Técnico em Informática. Prof. Marcos André Pisching, M.Sc.

Prof. Jhonatan Fernando

Exercícios de Revisão Java Básico

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

Orientação a Objetos e a Linguagem Java

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

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

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

Disciplina Técnicas de Modelagem

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

LÓGICA DE PROGRAMAÇÃO. Vitor Valerio de Souza Campos

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

DIAGRAMA DE ATIVIDADES

Especificação do Trabalho

Especificação do 3º Trabalho

Prototype, um Design Patterns de Criação

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

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

Técnicas de Programação II

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

PROVA DISCURSIVA - PROFISSIONAL BÁSICO (FORMAÇÃO DE ANÁLISE DE SISTEMAS - DESENVOLVIMENTO) 2 a FASE

Programação Orientada a Objetos: Lista de exercícios #1. Bruno Góis Mateus

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

Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos

Aula 1 Tipo Abstrato de Dados

PROGRAMANDO EM C# ORIENTADO A OBJETOS

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

Programação Orientada a Objetos (DPADF 0063)

4.1. UML Diagramas de casos de uso

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

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

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

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

Banco de Dados. Aula 5 - Prof. Bruno Moreno 06/09/2011

LINGUAGEM ORIENTADA A OBJETOS

Autor: Tiago Lone Nível: Básico Criação: 19/12/2005 Última versão: 18/12/2006. PdP. Pesquisa e Desenvolvimento de Produtos

Aula 3 Objeto atual com referencia THIS e Classes com Herança

Uma visão mais clara da UML Sumário

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

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

Classes Abstratas e Interfaces

Métodos de Construção de Software: Orientação a Objetos. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes

Programação por Objectos. Java

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

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

Programação por Objectos. Java

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

Banco de Dados Modelo Conceitual, Lógico, Físico, Entidade- Relacionamento (ER) Hélder Nunes

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

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

Tópicos em Engenharia de Computação

Roteiro. Modelagem de Dados: Usando o Modelo Entidade-Relacionamento. BCC321 - Banco de Dados I. Processo de Projeto de Banco de Dados.

Modelo Entidade-Relacionamento

Persistência e Banco de Dados em Jogos Digitais

Fração como porcentagem. Sexto Ano do Ensino Fundamental. Autor: Prof. Francisco Bruno Holanda Revisor: Prof. Antonio Caminha M.

Exemplo: Campeonato de futebol

1) Ao ser executado o código abaixo, em PHP, qual será o resultado impresso em tela?

Modelo Entidade-Relacionamento

DESENVOLVENDO O SISTEMA

O comando switch. c Professores de ALPRO I 04/2012. Faculdade de Informática PUCRS. ALPRO I (FACIN) O comando switch 04/ / 31

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

QUESTÕES PARA ESTUDO DIAGRAMA DE CLASSE

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

2 Diagrama de Caso de Uso

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

Modelagem de Dados com UML. Modelagem de Dados com UML. Modelagem de Dados com UML. Modelagem de Dados com UML. ! Generalização/Especialização

Orientação a Objetos

Transcrição:

UML & Padrões Aula 2 1

(continuação...) Ainda a tratar: Multiplicidade de Associações Binárias Navegabilidade de Associações Restrições Classes Concretas e Abstratas Atributos e Métodos Estáticos Classes Parametrizadas Interfaces 2

Multiplicidade de Associações Binárias muitos-para-muitos muitos-para-um um-para-um * Partic. 1 * Partic. 2 x x x x x x * 1 Partic. 1 Partic. 2 Notação: * - zero ou mais 1 - exatamente um 0..1 - zero ou um 1..* - um ou mais 1, 3..5 - um ou três a 5 x x x x x x x x x 1 1 Partic. 1 Partic. 2 x x x 3

Navegabilidade de Associações As associações são classificadas quanto à navegabilidade em: - bidirecionais (normal) Class-1 Class-2 - unidirecionais Class-1 Class-2 Pode-se indicar o sentido em que se lê o nome de uma associação Empresa empregador Trabalha-para Emprega empregado Pessoa papel da classe na associação 4

Restrições Uma restrição especifica uma condição que tem de se verificar. Uma restrição é indicada por uma expressão ou texto entre chaves ou por uma nota posicionada junto aos elementos a que diz respeito, ou a eles ligada por linhas tracejadas (sem setas, para não confundir com relação de dependência). OCL - "Object Constraint Language" - pode ser usada para especificar restrições mais formalmente. Pessoa nome datanascimento localnascimento datafalecimento datafalecimento > datanascimento {datafalecimento > datanascimento} 5

Restrições em Associações Fatura 1 {ordered} * LinhaFatura uma fatura é constituída por um conjunto ordenado de 0 ou mais linhas Pessoa * {subset} Membro-de * Comité 1 Diretor-de * 6

Restrições em Associações Conta {or} Pessoa Empresa associações mutuamente exclusivas 0..1 Pessoa * empregado empregador chefe 1 trabalhador * Empresa Chefe possui nenhum ou vários trabalhadores 7

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! 8

Hierarquias de classes MÉTODOS DE ACESSO CONSTRUTOR 9

Notações Alternativas para Hierarquias de classes Pessoa Pessoa Aluno Professor Aluno Professor 10

Classes e operações abstratas ( concretas) Classes concretas são as que estamos acostumados a construir e gerar objetos a partir delas. Uma classes abstrata ocorre quando a mesma possui no mínimo um método abstrato. Classe abstrata: classe que não pode ter instâncias diretas pode ter instâncias indirectas pelas subclasses concretas Método abstrato: método com implementação a definir nas subclasses uma classe com métodos abstratos tem de ser abstrata Notação : nome em itálico ou propriedade {abstract} 11

Classes e operações abstratas Figura x: int y: int display() Classe abstrata Método abstrato: sem implementação Circulo Retangulo display() display() Fonte: The UML User Guide, Booch et al 12

Atributos e operações de classe ( instância) Atributo de classe: tem um único valor para todas as instâncias (objetos) da classe, o qual está definido mesmo que não exista nenhuma instância. private static float taxa; Método de classe: não tem como argumento implícito um objeto da classe public static void atualizataxa(novataxa: float) Notação: nome sublinhado Correspondem a membros estáticos (static) em C++ e Java 13

Atributos e operações de classe ( instância) número: int saldo: double taxa: float dataaniv : Date Conta atualizataxa(novataxa: float) fazrender() A taxa se aplica a todas as instâncias de Conta geradas Altera o valor do atributo taxa da classe. Todos os objetos da classe podem enxergar essa mudança. Conta.atualizaTaxa(0.45); 14

Em uma empresa existem diversos funcionários, que são representados pelo seu nome, endereço, cpf, cargo e salário. Entretanto, existem funcionários pagos via CLT, funcionários que são PJ e funcionários que são comissionados. Esses tipos de funcionários têm características próprias como o desconto do FGTS do CLT, as horas e o valor das horas para os PJ e a comissão para os comissionados. Os funcionários têm maneiras diferentes de gerar seu salário, ou seja, apesar de todos poderem calcular o salário, eles o fazem de maneiras diferentes. Defina o diagrama de classe para essa situação. Imagine agora que cada funcionário tem seu salário ajustado através do comportamento ajustarsalario() que varia de acordo com a taxa de reajuste, que vale para todos os objetos da classe. Essa taxa entretanto varia para cada tipo de funcionário. Altere o diagrama de classe para essa situação. 15

Exercício Parte 1 Funcionario - nome : String - endereco: String - cpf : int - cargo : String - salário : double + calcularsalário() : double Classe em itálico: classe abstrata Método sem implementação: método abstrato. FuncionarioCLT - desconto : double + calcularsalário() : double FuncionarioPJ - numhoras: double - valorhora: double + calcularsalário() : double FuncionarioCom - comissao: double + calcularsalário() : double 16

Exercício Parte 2 Funcionario - nome : String - endereco: String - cpf : int - cargo : String - salário : double + calcularsalário() : double Classe em itálico: classe abstrata Método sem implementação: método abstrato. FuncionarioCLT FuncionarioPJ FuncionarioCom - desconto : double - taxa : double + calcularsalário() : double + ajustartaxa() : void - numhoras: double - valorhora: double - taxa : double + calcularsalário() : double + ajustartaxa() : void - comissao: double - taxa : double + calcularsalário() : double + ajustartaxa() : void Atributo de cla estático Método de classe: estático, para mexer no atributo estátic 17

Classes Parametrizadas Muitas linguagens especialmente as fortemente tipadas têm a noção de Classes Parametrizadas ou Templates. Também chamadas de classes Parametrizada, Genérica ou Gabarito. Desse jeito pode-se definir comportamentos para conjuntos em geral definindo uma classe gabarito Conjunto (Set). Conjunto <empregado> ConjuntodeEmpregados; 18

Classes Parametrizadas ClasseTemplate Este relacionamento indica que Conjunto de Empregados estará de acordo com a interface de Conjunto. em termos de especificação, Conjunto de Empregados é um subtipo de Conjunto (mas sem a possibilidades de acrescentar propriedades ao elemento de amarração). Conjunto + inserir(t) + remover(t) T Parâmetro Template (marcador) As classes parametrizadas são utilizadas, na maioria das vezes, para coleções. << bind >> < Empregado > <Empregado> Conjunto Amarração de Parâmetro Elemento de Amarração 19

Interfaces Def. Dicionário: dispositivo ou sistemas que entidades não relacionadas utilizam para se comunicar. Def. Desenvolvimento de Sistemas: quando estamos desenvolvendo uma comunidade de entidades (classes) que interagem entre si, uma interface representa a cara que uma dessas entidades pode mostrar a outra, ou seja, que serviços ela fornece. 20

Interfaces Um interface especifica um conjunto de operações externamente visíveis de uma classe (ou componente, subsistema, etc.) Todo atributo será público, estático e constante. «interface» InterfaceExemplo + static x : int + operaçao1(): int Um estereótipo UML é usado para indicar uma interface. 21

Interfaces Notações alternativas para interfaces ClientClass ClientClass InterfaceClass ou operações «interface» InterfaceClass ImplementationClass atributos operações ImplementationClass atributos operações 22

Interfaces Uma classe de implementação pode ter várias interfaces 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 «interface» SabeCantar «interface» SabeVoar Classe1 23

Interfaces Exemplo 1 Considere a classe abaixo: Pessoa A classe Pessoa é descrita em termos de características e comportamentos. Se a classe é pensada isoladamente e simplisticamente, provavelmente, pensaríamos na seguinte implementação: Pessoa - nome - sexo - idade + fazaniversario (): void + casar(pessoa p): boolean E se quiséssemos que ela se comportasse como um ser alado em um Mundo Alado?? 24

Interfaces 1. Poderíamos criar outra classe Pessoa com os comportamentos que o sistema requeresse. Sistema A Pessoa - nome - sexo - idade + fazaniversario (): void + casar(pessoa p): boolean Mundo Alado Pessoa + voar() + pousar() Passaros Aviao 25

Interfaces 2. Posso manter classe atual e acrescentar os itens faltantes: Sistema A Mundo Alado Pessoa - nome - sexo - idade Passaros Aviao + fazaniversario (): void + casar(pessoa p): boolean + voar() + pousar() 26

Interfaces 3. Posso fazer com que minha classe se comporte como o outro sistema espera: Sistema A Mundo Alado Pessoa - nome - sexo - idade <<interface>> seralado + voar() + pousar() Passaros Aviao + fazaniversario (): void + casar(pessoa p): boolean 27

Interfaces Esse sistema não precisa do comportamento de Pessoa como uma classe descrita no sistema A, apenas que objetos dessa classe se comportem como seres alados que possam voar e pousar no Mundo Alado. Objetos pessoa então deve estar em concordância com um protocolo de comportamento. Não há necessidade do Sistema Mundo Alado conhecer a verdadeira classe Pessoa com quem interage. Qualquer classe que forneça implementação para as operações definidas na interface que o sistema do Mundo Alado espera pode representar o papel de ser alado. Vegetal Mundo Alado Pessoa <<interface>> seralado Aviao Animal Passaros 28

Interfaces Exemplo 2: Agora imagine uma classe ContaBancaria, que possui o comportamento de criarconta, bloquear, desbloquear, creditar, debitar,... Existem, claramente, comportamentos que só podem ser executados pelo cliente (dono da conta) e comportamentos que são restritos do gerente da conta. ContaBancária <<interface>> ContaManipulável +creditar() +debitar() cliente O Cliente manipula apenas o que ele consegue ver através da interface ContaManipulável. Mas ele não pode criar uma conta no banco sozinho, ou bloqueá-la ou mesmo desbloqueá-la. Tais ações são somente executadas pelo gerente da conta. 29

Interfaces <<interface>> Administrável +criar() +bloquear() +desbloquear() Gerente ContaBancária -numero -saldo +criar() +bloquear() +desbloquear() +creditar() +debitar() <<interface>> Manipulável +creditar() +debitar() Cliente 30

s Exercícios: E uma empresa, um cliente é conhecido pelo seu nome, endereço, data da primeira e ultima compra e o total comprado. Há clientes específicos, que alem das características comuns possuem ainda, no caso do Cliente PJ o nome do contato, uma lista de até 10 telefones, seu CNPJ e uma lista de até 3 números de fax. Outro tipo de cliente é o Cliente PF que possui ainda o numero do CPF e o numero do cartão de credito. O cliente PJ interage com um ou vários empregados da empresa no momento de sua compra. Esses empregados são os representantes de vendas da empresa. Tanto os clientes PJ e PF quanto o empregado devem implementar uma Interface conhecida como IPessoa. 31

s Exercícios 1) Cliente -nome: String -endereco: String -dataprimeiracompra: Date -dataultimacompra: Date -totalcomprado: Currency #creditopermitido: Currency #nivelcredibilidade() Cliente pessoa-jurídica nomecontato: String telefones[1..10]: String CNPJ: String FAX[1..3]: String Cliente pessoa-física nome: String CPF: String numcartaocredito colocarlistanegra() Empresa representante de vendas * * Empregado IPessoa 32

s Exercícios Um avião possui um controlador de Vôo, que por si só, é uma classe bem complexa, tendo suas próprias características e comportamentos. Avião pode ser representado por uma reunião de passageiros. E também como uma composição de no mínimo 1 até muitos motores. Se o objeto avião deixar de existir, os objetos motores também não mais existirão. Já os passageiros, mesmo que o objeto avião seja destruído, continuarão a existir. Vamos ver o código?? 33

s Exercícios ControladorVoo 1 controla possui * Avião * Passageiro 1..* Motor 34

s Observe um código em Java: public class Aviao { ControladorVoo controller;... // isto é composição Motor motor = new Motor(); // isto é agregação public void add(passageiro p){ p.embarc(this); } public void remove(passageiro p){ p.desembarc(this) } Composição é responsabilidade do próprio objeto. Por isso Motor é inicializado dentro do Avião. E NUNCA poderá ser substituído por outro enquanto o Avião existir. O controlador Voo controla vários aviões ao mesmo tempo. Ele funciona como um observador do avião, e os dois se comunicam. Assim, apenas um controlador é setado para cada avião, mas vários aviões podem estar associados ao mesmo controlador. O passageiro está dentro do avião, mas depois ele sai. O passageiro não pertence ao avião e não pode estar em dois aviões ao mesmo tempo. Portanto é uma agregação. // isto é uma associação public void setcontroladorvoo (ControladorVoo controller); public ControladorVoo getcontroladorvoo (); } 35

UML Diagrama de Objetos 36

UML Diagrama de Objetos É uma variação do diagrama de classes e utiliza quase a mesma notação, com duas exceções: os objetos são escritos com seus nomes sublinhados e todas as instâncias num relacionamento são mostradas. A diferença é que o diagrama de objetos apresenta os atributos com valores e mostra os objetos que foram instanciados das classes. É como se fosse o perfil do sistema em um certo momento de sua execução. Considere o diagrama de classes abaixo: Professor Curso Aluno -matrícula: String -nome: String 1..3 ministra 1..5 -coddisciplina: String -descrição: String -codturma: String 0..10 * -matrícula: String -nome: String -período: Integer 37

UML Diagrama de Objetos objeto anónimo p1: Professor matricula: "205-6712-09" nome: "Jaelson Castro" p2: Professor c1: Curso c3: Curso : Curso : Curso c2: Curso codcurso: "IF291" descrição: "MPS" codturma: I7 codcurso: "IF185" descrição: "AER" codturma: I6 : Aluno : Aluno : Aluno :Aluno : Aluno matricula: "562746134" nome: "John Major" : Aluno : Aluno :Aluno matricula: "219846534" nome: "Nelson Mandella" Bill: Lewinsky: classe não especificada Nos diagramas de objetos, o objeto é representado por um retângulo com o nome sublinhado 38

UML Diagrama de Objetos Os diagramas de objetos não são tão importantes como os diagramas de classes, mas eles são muito úteis para exemplificar diagramas complexos de classes ajudando muito em sua compreensão. Também são usados como parte dos diagramas de colaboração, onde a colaboração dinâmica entre os objetos do sistema é mostrada. Podemos chamá-lo de Diagrama de Instância. 39

UML Diagrama de Objetos Exemplo: O professor Claudio que ministra a disciplina 0034 Lógica e Programação na turma M45 possui três alunos. Marta e Celina são irmãs e João entrou na faculdade recentemente sob matricula 201134, e frequentam o terceiro período. : Aluno prof1: Professor matricula: nome: Claudio c1 : Curso coddisciplina: 0034 descrição: Lógica e Programação codturma: M45 matricula: nome: Marta período: 3 : Aluno : Aluno matricula: 201134 nome: João período: 3 matricula: nome: Celina período: 3 objeto anónimo 40