Padrões de Projeto Aula 10 – Padrão Façade.

Slides:



Advertisements
Apresentações semelhantes
Soluções elegantes para problemas recorrentes
Advertisements

... para pessoas que não sabem c++
Sistema Operacional Introdução
Marco Antonio Montebello Júnior
Diagrama de Classes.
Projeto de Sistemas de Software Fernando de Freitas Silva
Padrões GoF - Façade.
SISTEMA DE INFORMAÇÕES DESENVOLVIMENTO DE SISTEMAS
Padrões para Atribuições de Responsabilidades
Observer Mantendo seus objetos atualizados
Referência Rápida: Erros Comuns do Usuário. ERROS COMUNS DO USUÁRIO Erros comuns do usuário Solução Imagem congelada Verifique o cartão SD. Se estiver.
Algoritmos Prof. Kelly E. Medeiros.
O Portal do Estudante de Computação
TÉCNICAS DE PROGRAMAÇÃO II
Programação I Caderno de Exercícios Nome.
CALL REC PLUS- Sistema de Gravação Telefônica
Introdução a Programação
Inclusão Digital Aula 1 – O computador.
Discos SCSI Fonte de alimentação Controlador SCSI Disco SAS
Software de Rede Willamys Araújo.
JAVA: Conceitos Iniciais
Aula prática 13 Orientação a Objetos – C++ Parte 1
Sistemas Operacionais
O Fluxo de Implementação
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
Sistemas Operacionais
Bios –Basic Input Output System
CALL REC - Sistema de Gravação Telefônica
Concorrência e Java RMI
Capítulo 5 Garbage Collector.
Programação Orientada à Objetos
Bios –Basic Input Output System
SISTEMAS OPERACIONAIS I
Apresentação SISRCA Módulo de Captação do Atendimento.
Java RMI João Gabriel (jggxm).
Sistemas Operacionais
Introdução a Banco de Dados
Sistemas Operacionais
Análise e Projeto de Sistemas
 O que são ‘drivers do computador’ ? (no sentido de arquivos que permitem que o sistema operacional acesse os recursos de hardware)  Drivers são arquivos.
DSC/CEEI/UFCG Introdução à Computação. DSC/CEEI/UFCG 2 Hardware – Memória  Componente de um sistema de computação cuja função é armazenar informações.
Processador 2014/2015 Comunicação de Dados Ricardo Bento 12ºL.
Padrões de Projeto.
Aula Prática 13 Orientação a Objeto Monitoria
Design Patterns A adoção dos padrões terá um efeito profundo e duradouro sobre a forma de escrevermos programas Ward Cunningham e Ralph Johnson.
Expansão dos Casos de Uso
Jobson Ronan Padrões GoF Jobson Ronan
Projeto Operador de Computador
Elementos de Informática
Algoritmos e Programação I
Projeto QuickList 51GoodIdea. Missão Fornecer aos clientes soluções inteligentes, intuitivas e práticas. Sempre priorizando funcionalidade e fornecimento.
UNIESP – Sistemas de Informação Práticas de Formação I Aula 10 Prof. Carlos Alberto Seixas.
Apresentação Objetivo: –Apresentação e revisão de conceitos básicos –Discussão da noção de algoritmo –Escopo da linguagem de programação –Exercício com.
Padrão de Projeto Façade Tiago Andrade Ronaldo Ribeiro Edvaldo Melo
MEMÓRIAS.
Padrões de Projeto Aula 4 – Padrão Observer. PADRÃO OBSERVER Como manter objetos atualizados quando algo importante ocorre? Padrões de Projeto - Observer.
Aula 5 – Padrão Decorator
Padrões de Projeto. O que são?  Soluções provenientes de diversos projetos e utilizados por diversos programadores;  Documentados em catálogos como.
Padrões de Projeto Aula 9 – Padrão Adapter.
Aula: Arquiteturas de redes: modelo de referência OSI 04/12/2010.
Padrões de Projeto Aula 3 – Padrão Strategy.
COMPILADORES 02 Prof. Marcos. COMPILADORES Do Programa à Execução Computadores das mais variadas arquiteturas têm funcionamento:
SOCKET - É um canal de comunicação entre processos que estabelece uma conexão entre eles na forma de cliente-servidor. Por meio de sockets, os computadores.
Herança em Java Curso: Informática Disciplina: Programação Orientada a Objetos Prof. Abrahão Lopes
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Padrões de Projeto Aula 5 – Padrão Decorator 1. QuickReview: Observer Definição: Quando usar? Tipo de padrão? Como? 2.
Padrões de Projeto Aula 12 – Padrão Adapter. PADRÃO ADAPTER Soluções simples para problemas reais! 2.
Padrões de Projeto Aula 10 – Padrão Façade. Façade, em francês, significa fachada ◦ Fachada de prédio 2.
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
"Você acha que conhece a pessoa, aí você percebe que era tudo fachada
Transcrição da apresentação:

Padrões de Projeto Aula 10 – Padrão Façade

Padrão Façade Por que não tornar as coisas mais simples? Padrões de Projeto - Façade Alteração de uma interface com a intenção de simplificá-la. Oculta a complexidade de um conjunto de Classes.

Imagine um Home Theater Padrões de Projeto - Façade

Imagine um Home Theater Padrões de Projeto - Façade Muitas classes Muitas interações Você precisa saber o funcionamento de tudo para saber usar corretamente Quais métodos chamar para assistir um filme?

Para assistir um filme Ligar a máquina de pipoca Colocar a máquina de pipoca em funcionamento Reduzir as luzes Baixar a tela Ligar o projetor Configurar a entrada do projeto para DVD Colocar o projetor em modo wide-screen Ligar o amplificador de áudio Configurar a entrada do amplificador para DVD Configurar o amplificador para surround Ajustar o amplificador para o volume médio (5) Ligar o DVD Player Acionar o play no DVD Player Padrões de Projeto - Façade

Para assistir um filme (em Java) Ligar a máquina de pipoca Colocar a máquina de pipoca em funcionamento Reduzir as luzes Baixar a tela Ligar o projetor Configurar a entrada do projeto para DVD Colocar o projetor em modo wide-screen Ligar o amplificador de áudio Configurar a entrada do amplificador para DVD Configurar o amplificador para surround Ajustar o amplificador para o volume médio (5) Ligar o DVD Player Acionar o play no DVD Player pipoqueira.ligar(); pipoqueira.cozinhar(); luz.dim(10); tela.descer(); projetor.ligar(); projetor.setInput(dvdPlayer); projetor.modoWideSreen(); amplificador.ligar(); amplificador.setDVD(dvdPlayer); amplificador.setSurroundAudio(); amplificador.setVolume(5); dvdPlayer.ligar(); dvdPlayer.play(filme); Padrões de Projeto - Façade

Ainda tem mais... Neste tipo de situação ainda há uma ordem para fazer tudo Ao final pode-se precisar fazer as ações em ordem inversa E para ouvir um CD ou rádio? Se precisar atualizar o sistema terá que aprender um novo algoritmo Padrões de Projeto - Façade

Solução para a complexidade A FACHADA + Padrões de Projeto - Façade

A Fachada Uma classe que exponha somente alguns métodos simples: assistirFilme() pararFilme() Trata os componentes do Home Theater como um subsistema Aciona as diversas partes necessárias para implementar o método assistirFilme() O cliente assim pode usar os métodos da Fachada e não do subsistema Para assistir um filme basta acionar um método que se comunica com todo o subsistema Padrões de Projeto - Façade

Solução: a Fachada Padrões de Projeto - Façade

A Fachada Preserva o acesso direto ao subsistema, mas... Você ainda pode usar os métodos de cada aparelho Padrões de Projeto - Façade

Implementando a Fachada Padrões de Projeto - Façade

Implementando a Fachada Padrões de Projeto - Façade

Como a vovó assistiria o filme Padrões de Projeto - Façade

Questões sobre a Fachada Encapsula as classes do subsistema? Não. Apenas fornecem uma interface simplificada para acessar suas funcionalidades. Mas, o cliente ainda pode acessar as funcionalidades do subsistema diretamente (por isso dizemos que o subsistema não é encapsulado); Acrescenta funcionalidade? Nada impede que uma fachada incorpore sua “própria inteligência” além de utilizar o subsistema; Cada subsistema possui somente um fachada? Não necessariamente. Ele pode ter quantas julgar necessário; Qual o benefício da fachada além de fornecer uma interface simples? Baixo acoplamento. Suponha que você trocou o seu Home Theater todo, comprando novos componentes com interfaces diferentes... Se o cliente estiver codificado acessando a fachada, ele não precisará ser alterado, apenas a fachada; Qual a diferença da Fachada para o Adapter? O objetivo da fachada é simplificar o acesso, e o do adapter é alterar as interfaces para tornar possível o acesso. Padrões de Projeto - Façade

Resumindo As Fachadas, além de simplificar uma interface Desconecta o cliente de um subsistema de componentes Uma Fachada simplifica e um Adapter converte uma interface para algo diferente Padrões de Projeto - Façade

Definição O padrão Façade fornece uma interface unificada e simplificada para um conjunto de interfaces em um subsistema. O Façade define uma interface de nível mais alto que facilita a utilização do subsistema. Padrões de Projeto - Façade Hoje começaremos pela definição.

Terminologia e Estrutura Padrões de Projeto - Façade

Participantes Fachada Classes de Subsistema Conhece quais as classes do subsistema são responsáveis pelo atendimento de uma solicitação Classes de Subsistema Implementam a funcionalidade do subsistema Encarregam-se do trabalho atribuído a elas pelo objeto Fachada Não têm conhecimento da Fachada, ou seja, não possuem referência para a mesma Padrões de Projeto - Façade

Colaborações Os clientes se comunicam com um subsistema através do envio de solicitações para a Fachada, a qual repassa para os objetos apropriados do subsistema. Embora os objetos do subsistema executem o trabalho real, a fachada pode ter que efetuar trabalho próprio dela para traduzir a sua interface para as interfaces do subsistema; Os clientes que usam a fachada não têm que acessar os objetos do subsistema diretamente. Padrões de Projeto - Façade

Exercício Considere as seguintes entidades/classes que compõem um computador: CPU, Memory, HardDrive. public class Cpu{ public void start(){ System.out.println("inicialização inicial"); } public void execute(){ System.out.println("executa algo no processador"); public void load() { System.out.println("carrega registrador"); public void free() { System.out.println("libera registradores"); Padrões de Projeto - Façade public class Memory { public void load() { System.out.println("carregando dados na memória"); } public void free() { System.out.println("liberando dados da memória");

Exercício Crie uma fachada que facilite ligar o computador. public class HardDrive { public void read() { System.out.println("lendo dados do HD"); } public void write() { System.out.println("escrevendo dados no HD"); Crie uma fachada que facilite ligar o computador. Para ligar o computador, você deve seguir a seguinte ordem: Inicializar a CPU Ler do disco rígido Carregar uma informação da memória Executar a CPU Liberar memória Padrões de Projeto - Façade

Referências [1] Capítulo 7 do livro “Padrões de Projeto – Use a Cabeça!” Padrões de Projeto - Façade