Tópicos em Engenharia de Computação

Documentos relacionados
UML Aspectos de projetos em Diagramas de classes

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

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

Orientação a Objetos com Java

CONVENÇÃO DE CÓDIGO JAVA

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

2 Diagrama de Caso de Uso

Questões de Concursos Públicos sobre Orientação a Objetos e UML

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

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

Programação Orientada a Objetos. Encapsulamento

Programação Orientada a Objetos em Java

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

Programação Orientada a Objeto

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

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

Guia de Fatores de Qualidade de OO e Java

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

Orientação a Objetos

Herança. Alberto Costa Neto DComp - UFS

Uma Abordagem usando PU

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

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

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

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Capítulo 8. Introdução UML

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

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

Profº. Enrique Pimentel Leite de Oliveira

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

Programação Orientada a Objetos

PROGRAMAÇÃO ORIENTADA A OBJETOS

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

UML: Diagrama de Casos de Uso, Diagrama de Classes

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

7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br)

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

Felipe Denis M. de Oliveira. Fonte: Alice e Carlos Rodrigo (Internet)

Análise e Projeto Orientados por Objetos

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

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

Polimorfismo. Prof. Leonardo Barreto Campos 1

Padrões de projeto 1

Java 2 Standard Edition Como criar classes e objetos

Objetivos: Sun recomenda que utilize o nome de domínio da Internet da empresa, para garantir um nome de pacote único

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

Orientação a Objetos com Java

Técnicas de Programação II

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

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

A linguagem UML. UML e Diagramas de Casos de Uso e Classes. Por que usar UML? O que é modelagem?

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

Prof. Jhonatan Fernando

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

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

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

PHP: Programando com Orientação a Objetos

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

Capítulo 4. Packages e interfaces

Padrões de Projeto. Singleton

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

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

Programação Orientada por Objetos

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

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

Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.

( JUDE Community /2007 ) Por Denize Terra Pimenta Outubro/2007

4.2. UML Diagramas de classes

Programação com Acesso a BD. Programação com OO Acesso em Java

Wilson Moraes Góes. Novatec

Implementação de Classe e Auto-Relacionamento em Java

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

Engenharia de Software I

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

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

Uma visão mais clara da UML Sumário

Análise e Projeto de Sistemas de Informação. Andrêza Leite andreza.lba@gmail.com

2 Desenvolvimento de Software Orientado a Aspectos

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

Sumário. Capítulo 1 Introdução à UML Capítulo 2 Orientação a Objetos Agradecimentos... 6 Sobre o Autor... 6 Prefácio...

Engenharia de Software na Prática Hélio Engholm Jr.

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

Visibilidade e Diagrama de Classe de Projeto Estudo de Caso Sistema TPV

Engenharia Informática

Módulo 02 Programação Orientada a Objetos. Última atualização: 07/06/2010

Unified Modeling Language UML

BCC221 Programação Orientada a Objetos. Prof. Marco Antonio M. Carvalho 2014/2

Padrão Arquitetura em Camadas

EMENTA DO CURSO. Tópicos:

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

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

Feature-Driven Development

Tarciane Andrade.

Persistência e Banco de Dados em Jogos Digitais

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

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Transcrição:

Tópicos em Engenharia de Computação Introdução / Revisão UML e POO (JAVA) Prof. Ivan Prof. Zagari UML Linguagem Unificada. Não é metodologia, processo ou método. Versão atual 2.0 3 categorias de Diagramas Estruturais (Estáticos) De Classes; de Objetos; de Componentes; de Distribuição (Deployment) Comportamentais (Dinâmicos) Use Case; Seqüência; Colaboração (comunicação UML 2.0); Atividades; Estados; Gestão de Modelos De Pacotes; de Sub-Sistemas; 1

UML vs. Fases Eng. Software (Estáticos) Análise 1. Classes representam o do Domínio do Problema (entity) 2. Pacotes para facilitar compreensão do todo (dividir complexidade) Projeto 1. Classes representam ambos Domínios - Problema e Solução (entity, boundary, control) 2. Uso de Design Patterns e Frameworks 3. Pacotes como critérios para sub-divisão e compreensão de frameworks, sub-sistemas físicos e componentes 4. Sub-Sistemas Componentes Pacotes UML vs. Fases Eng. Software Diagramas Estruturais Diagramas Estruturais (Estáticos) Análise 5. Classes, herança de funcionalidade, associações simples 6. Diagrama de Classes de Visão Essencial 7. Coordenados e Modelados pelo Analista de Sistemas Projeto 5. Classes, Herança de funcionalidades, associações mais complexas, tipos, hierarquia de tipos, classes abstratas, interfaces (não é GUI) 6. Diagrama de Classes de Visão de Implementação 7. Coordenados e Modelados pelo arquiteto de aplicações (projetista). Incorporam-se informações de design. 2

UML vs. Fases Eng. Software (Dinâmicos) Análise 1. Casos de Uso Comportamento desejado (sem tecnologia) 2. Diagrama de seqüências expressam seqüência de mensagens (eventos entre objetos de análise) que modelam qual o comportamento desejado. Projeto 1. Realização de Casos de Uso (Use case realization). Casos de uso com todos os detalhes de design 2. Diagrama de seqüências expressam seqüência de mensagens (métodos) entre objetos e interfaces (não é GUI) que realizam (dão percepção de como é a solução) o caso de uso UML vs. Fases Eng. Software Diagramas Comportamentais Diagramas Comportamentais (Dinâmicos) Análise 3. Diagramas de Atividades modelam o workflow dos processos de negócios 4. Diagramas de Estados focados no comportamento geral (estados) dos objetos no contexto do problema Projeto 3. Diagramas de atividades modelam a solução algorítmica dos métodos das classes 4. Diagramas de atividades podem detalhar os estados associados ao comportamento da solução 5. Diagrama de Estados para objetos típicos da aplicação/solução (Forms, ODBC, etc..) 3

Classe Classe Interna Inner Class Especificadores de Acesso + Público - Privado # Protegido Atributos Operações Pacotes (Packages) Agrupamento de Classes Relacionadas Classes do Pacote Classes de outro Pacote Sub-Classes do Pacote Sub-Classes de outro Pacote Publico Pode Pode Pode Pode Protegido Pode Não Pode Pode Pode Privado Não Pode Não Pode Não Pode Não Pode 4

Construtor Construtor é método especial executado apenas uma vez, na hora da construção da instância. Usado quando o objeto que aciona a construção do objeto possui os dados da instância que se deseja criar e/ou para inicializar elementos internos ao objeto Construtores JAVA suportam sobrecarga (várias implementações), desde que cada um tenha assinaturas diferentes. Métodos também podem ter sobrecarga... Acessor Methods getters & setters Todo atributo é um característica da classe que se particulariza nas instâncias Em uma classe deve ter um método que permite recuperar o valor do atributo em uma dada instância (getter) e outro para estabelecer um valor de atributo em uma dada instância (setter) Outros métodos (não acessors) operam sobre o objeto 5

public class Conta { Exemplo: Acessors, Construtor e demais métodos private int numero; float saldo; Atributos public Conta(int numero) { this.numero = numero; this.saldo = 0; } public void depositar(float valordeposito) { this.saldo = this.saldo + valordeposito; } public boolean sacar(float valorsaque) { if (this.saldo>=valorsaque) { this.saldo = this.saldo - valorsaque; return true; } else return false; } public float getsaldo() { return saldo; } public void setnumero(int numero) { this.numero = numero; } public void setsaldo(float saldo) { this.saldo = saldo; }... } Construtor Demais Métodos Acessors (getter e setters) Comentário (Nota) Âncora (linha pontilhada, ligando um elemento UML com sua nota Exemplo: Método save() lança exceções usando objetos do pacote documentado na nota 6

Métodos Abstratos Métodos sem corpo e implementação Estereótipo <<abstract>> e/ou nome em itálico Classes Abstratas Aqueles que tem, pelo menos, um método abstrato; Estereótipo <<abstract>> e/ou nome em itálico Não podem ser Instanciadas Permitem herança dos métodos implementados e/ou métodos abstratos Herança (Generalização / Especialização) Permite que características (atributos e operações) de uma classe mais geral sejam herdadas por classe mais específicas. Herança de Métodos Permite que seja herdada a implementação de um método, que pode ser modificada na classe especializada; Herança de Métodos Abstratos Permite que seja herdada apenas a assinatura do método. A implementação fica localizada Assinatura Métodos: Nome + Parâmetros + Tipo de Retorno 7

Herança (Generalização / Especialização) E S P E C I A L I Z A Ç Ã O G E N E R A L I Z A Ç Ã O Dependência Relação entre dois elementos UML (origem destino). Se houver mudança no alvo (destino), há potencialmente um impacto na fonte (origem). Vice Versa aplicável se dependência for bidirecional (EVITE! Péssima Prática!!!!) Pode ser usado em diversos elementos UML: classes, pacotes, subsistemas, etc... 8

Dependência Classe6 oferece serviços à classe 5 Acoplamento entre componentes implementados Algum(ns) elemento(s) do pacote1 provocam dependência no pacote 0 Associações entre classes Denota uma relação estrutural entre classes Multiplicidade Denota o numero de instâncias de uma classe envolvida na associação com outra classe Navegabilidade (de A para B) Denota que uma classe A contém a informação necessária para que a classe B seja alcançada 9

Exemplo Herança / Associação Associação: Com navegabilidade Multiplicidade: Uma instância de acionador permite acesso a 0..N Instâncias de Conta Herança Corrente é um sub-tipo de conta acionador Acionador (from acionador) Exemplo Classe Abstrata folha main() 1 0..* Funcionario (from folha) nome : Logical View::java::lang::String pis : Logical View::java::lang::String Funcionario() getnome() setnome() getpis() setpis() tostring() calcularsalario() Horista (from folha) salariohora : double horastrabalhadas : double salariobruto : double Horista() gethorastrabalhadas() sethorastrabalhadas() getsalariohora() setsalariohora() calcularsalario() tostring() Mensalista (from folha) salariomensal : double descontofaltas : double Comissionado (from folha) totalvendasbruto : double percentile : double Mensalista() getdescontofaltas() setdescontofaltas() getsalariomensal() setsalariomensal() calcularsalario() tostring() Comissionado() getpercentile() setpercentile() gettotalvendasbruto() settotalvendasbruto() calcularsalario() tostring() 10

Classe que requisita o serviço é cliente Classe que provê o serviço é provedora (servidora) Existe uma dependência direta (explícita) entre cliente e provedor Funciona, se serviço provido apenas por 1 classe E se o mesmo serviço for implementado (provido) por duas classes diferentes??? Controle de qual classe deve ser instanciada caberá ao cliente Cliente deverá ter o controle de qual instância deve ser chamada. Aumenta complexidade da classe cliente. Diminui a reusabilidade das classes 11

Interface Descrevem um conjunto de operações visíveis (apenas a declaração/assinatura) que podem ser implementados por diversos objetos. Oferecem apenas parte do comportamento da operação (contrato), sem particularizar o método que será aplicado para sua implementação Interfaces descrevem serviços (contrato) que podem ser implementados de diferentes maneiras, por objetos de contextos completamente diferentes Não é herança. Trata-se de uma realização Representações da Interfaces Estereótipo <<interface>> Icônica 12

Realização Relação entre um elemento UML que define um contrato a ser seguido e outro elemento realizador, que aceita o contrato estabelecido e define os detalhes e particularidades Representado na UML com uma seta de herança, porém pontilhada. Por linha e circulo (pirulito - lollypop) quando o contratado é uma interface e o realizador (contratante) é uma classe UseCase UseCase-Realization 13

Classe cliente solicita serviços à interface Provê reusabilidade e Polimorfismo Cada classe provedora, implementa os serviços do contrato (interface) à sua maneira Classes provedoras podem ser de domínios e mesmo de pacotes diferentes Exemplo Interface (Visão Canônica - Lollypop) 14

Exemplo Interface (Visão Estereotipada) Exemplo Interface + Classe Abstrata 15

Associações Avançadas Composição: Classe A (agregadora, todo) contém a classeb (parte de). Vinculo indissociável. Agregação: Classe A (agregadora, todo) contém a classeb (parte de), porém a vinculação pode se desfazer. Composição Agregação 16