Prof. Me. Marcos Echevarria

Documentos relacionados
Padrões de projeto 1

Programação Orientada a Objetos C++

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

USANDO O DESIGN THINKING PARA TRANSFORMAR SEU TIME E SUA EMPRESA: A EXPERIÊNCIA DA TOTVS. Fábio Miranda e Glauber Gallego

Prof. Me. Marcos Echevarria

Prototype, um Design Patterns de Criação

Prof. Me. Marcos Echevarria

Separação de Interesses Programação Estruturada e Programação Orientada a Objetos Entrelaçamento de Código Espalhamento de Código

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

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

Introdução à Engenharia de Computação

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

Computação II Orientação a Objetos

Implementando uma Classe e Criando Objetos a partir dela

Desenvolvimento estruturado versus orientado a objetos.

Aula 4 Estatística Conceitos básicos

Prof. Me. Marcos Echevarria

Especificação do Trabalho

Orientação a Objetos e a Linguagem Java

Programação Orientada a Objeto

Aula 2 Revisão 1. Ciclo de Vida. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW

Aula 4 Conceitos Básicos de Estatística. Aula 4 Conceitos básicos de estatística

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

Programação Orientada a Objeto

PROGRAMAÇÃO SERVIDOR PADRÕES MVC E DAO EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

Web Services. Autor: Rômulo Rosa Furtado

2 Engenharia de Software

Reaproveitando algoritmos

CAIXA MÁGICA. Sala 6 Língua Portuguesa EF I. E.E. Heidi Alves Lazzarini. Professora Apresentadora: Renata Lujan dos Santos Mufalo.

UML e a Ferramenta Astah. Profa. Reane Franco Goulart

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

APÊNDICE. Planejando a mudança. O kit correto

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)

Java Básico. Aula 1 por Thalles Cezar

Sistemas Distribuídos Processos I. Prof. MSc. Hugo Souza

Figure 2 - Nós folhas de uma árvore binária representando caracteres ASCII

Sistemas Lineares. Módulo 3 Unidade 10. Para início de conversa... Matemática e suas Tecnologias Matemática

Figura 1 Busca Linear

UNIP - UNIVERSIDADE PAULISTA. Arquitetura de computadores

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES SISTEMAS DE NUMERAÇÃO: REPRESENTAÇÃO EM PONTO FLUTUANTE. Prof. Dr. Daniel Caetano

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

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Algoritmos Estruturas Seqüenciais. José Gustavo de Souza Paiva

JavaScript (ou JScript)

Objetivo principal: aprender como definir e chamar funções.

COMO CRIAR UM SITE DE NEGÓCIOS

MVC e Camadas - Fragmental Bliki

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

Índice. 1. Blocos Lógicos e Material Dourado - Continuação Séries e Sequências Espaço e Forma Material Dourado...

Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional


Prof. Jhonatan Fernando

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

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

Simulador Virtual para Treinamento em Visão de Máquina com LabVIEW

Padrões de Interação com o Usuário

Estruturas de Repetição

Sistemas Operacionais

5 DICAS DE GESTÃO EM TEMPOS DE CRISE. Um guia prático com 5 dicas primordiais de como ser um bom gestor durante um período de crise.

Exercícios Teóricos Resolvidos

Unidade 5: Sistemas de Representação

4.1. UML Diagramas de casos de uso

Análise de Sistemas. Contextualização. O Sucesso. Aula 4. Instrumentalização. Aula 4. Prof. Emerson Klisiewicz. Clientes satisfeitos

Construção de Compiladores. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2014.

- Aulas 57, 58, 59 e 60 - Técnicas de programação. Funções

Prof. Rodrigo de Aquino Gomes

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Engenharia de Software

Teste de Software Parte 1. Prof. Jonas Potros

Programação Orientada a Objetos

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

Análise e Projeto Orientados por Objetos

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

DAS5102 Fundamentos da Estrutura da Informação

Dadas a base e a altura de um triangulo, determinar sua área.

Catálogo de Padrões de Dados

QUALIDADE DE SOFTWARE

O sucesso de hoje não garante o sucesso de amanhã

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Autor: Marcelo Maia

Tipo Abstrato de Dados

COMO VENDER MAIS USANDO FUNIL DE VENDAS. Capítulo II: Metas de atividade

Aula 9 EXCEL. Patrícia Soares de Lima. META Discutir a importância da utilização do Excel no preenchimento de planilhas.

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

Título do Case: Diversidades que renovam, transformando novas realidades

MODELAGEM VISUAL DE OBJETOS COM UML DIAGRAMA DE CLASSES.

Computador E/S, Memória, Barramento do sistema e CPU Onde a CPU Registradores, ULA, Interconexão interna da CPU e Unidade de controle.

TESTES AUTOMATIZADOS COM JUNITE MOCKITO

APOSTILAS DO QUARTO BIMESTRE 8 ANO. TURMA 801 4º Bimestre. Aula 13

Transcrição:

Prof. Me. Marcos Echevarria

Grandes sistemas de software nunca são concluídos, eles simplesmente continuam evoluindo. Engenharia de Software 2

--------------------------------------------------- Engenharia de Software 3

Cada padrão descreve um problema que ocorre repetidas vezes em nosso ambiente, e então descreve o núcleo da solução para aquele problema, de tal maneira que pode-se usar essa solução milhões de vezes sem nunca fazê-la da mesma forma duas vezes Christopher Alexander, sobre padrões em Arquitetura Engenharia de Software 4

--------------------------------------------------- Engenharia de Software 5

Aprender com a experiência dos outros: Não é necessário reinventar a roda; Aprender boas práticas de programação: Padrões usam de forma eficiente herança, composição, agregação, modularidade, polimorfismo e abstrações para construir software reutilizável e eficiente; Melhora a comunicação/compreensão: Ajuda a entender o papel de classes do sistema; Melhora a documentação: Vocabulário comum Engenharia de Software 6

--------------------------------------------------- Engenharia de Software 7

Livro escrito por 4 autores, em 1994, conhecidos como: The Gang Of For O livro descreve 23 padrões, mostrando soluções genéricas para os problemas mais comuns de desenvolvimento; O sucesso veio da experiência dos autores, o que fez com que o livro se tornasse um clássico da literatura OO; Engenharia de Software 8

--------------------------------------------------- Engenharia de Software 9

Existem vários catálogos de padrões pra desenvolvimento de software, alguns são bem específicos: Padrões de implementação Java ou C# Padrões J2EE Padrões para concorrência Padrões para ambientes distribuídos Padrões JavaScript Etc; E também existem padrões mais gerais que se resolver qualquer problema em uma linguagem orientada a objetos; Engenharia de Software 10

--------------------------------------------------- Engenharia de Software 11

Engenharia de Software 12

--------------------------------------------------- Engenharia de Software 13

Imaginem que um cliente contratou vocês para implementarem um aplicativo que simule vários tipos de patos nadando em um lago; Engenharia de Software 14

Basicamente, podemos começar nosso sistema criando uma classe Pato; Após isso, podemos pensar em utilizar herança para começar a criar os vários tipos de patos que termos no sistema; O que vocês acham? Engenharia de Software 15

Pato +quack() +nadar() PatoBranco PatoCabecaVermelha Engenharia de Software 16

Pato +quack() +nadar() PatoBranco PatoCabecaVermelha E se nossos patos voarem? Engenharia de Software 17

Pato +quack() +nadar() PatoBranco PatoCabecaVermelha Engenharia de Software 18

Pato +quack() +nadar() Existe algum problema nisso? PatoBranco PatoCabecaVermelha Engenharia de Software 19

Pato +quack() +nadar() PatoBranco PatoCabecaVermelha Engenharia de Software 20

Pato Qual o problema? +quack() +nadar() PatoBranco PatoCabecaVermelha Engenharia de Software 21

Pato +quack() +nadar() Patos de borracha voam? PatoBranco PatoCabecaVermelha PatoBorracha Engenharia de Software 22

--------------------------------------------------- Engenharia de Software 23

Pato Voador +quack() +nadar() PatoBranco PatoCabecaVermelha PatoBorracha Engenharia de Software 24

Pato Voador +quack() +nadar() Qual o problema dessa solução? PatoBranco PatoCabecaVermelha PatoBorracha Engenharia de Software 25

--------------------------------------------------- Engenharia de Software 26

Identifique os aspectos da sua aplicação que variam e separe-os dos aspectos que permanecem iguais Engenharia de Software 27

Uma solução para esse problema seria programar para um interface, ou melhor, programar para um supertipo; A ideia é explorar o polimorfismo programando um supertipo de modo que o objeto de tempo de execução real não fique preso no código; Engenharia de Software 28

Pato +quack() +nadar() PatoBranco PatoCabecaVermelha PatoBorracha Engenharia de Software 29

Voadores VoaComAsas NaoVoa Engenharia de Software 30

Voadores Ok, mas como integramos isso? VoaComAsas NaoVoa Engenharia de Software 31

public class Pato { Voadores voadores; public void disparavoo() { voadores.voar(); } Pato +nadar() +disparavoo() } Engenharia de Software 32

public class PatoBranco extends Pato { } public void PatoBranco() { voadores = new VoaComAsas(); } Voadores VoaComAsas NaoVoa Engenharia de Software 33

public class PatoBorracha extends Pato { Voadores public void PatoBorracha () { voadores = new NaoVoa(); } VoaComAsas NaoVoa } Engenharia de Software 34

--------------------------------------------------- Engenharia de Software 35

Esse foi o padrão strategy; O padrão strategy define uma família de algoritmos, encapsula cada um deles e os torna intercambiáveis; O strategy deixa o algoritmo variar independentemente do cliente que o utiliza; Engenharia de Software 36

No nosso caso o cliente (Pato) utiliza uma família encapsulada de algoritmos para voar e granar (quack); Engenharia de Software 37

--------------------------------------------------- Engenharia de Software 38

Se em algum momento precisássemos criar patos que não fazem quack? Tipo um pato de madeira; Engenharia de Software 39

Crie uma nova classe para patos de madeira; Além desses patos não voarem, eles também não emitem som (não fazem quack ); Os patos de borracha também não fazem quack, porém eles emitem um som (tipo um apito); Os demais patos fazem o som de quack; Engenharia de Software 40

http://192.168.200.8/marcos/simulador-de-patos Engenharia de Software 41

--------------------------------------------------- Engenharia de Software 42