O documento descreve o padrão Template Method, no qual uma classe abstrata define o esqueleto de um algoritmo através de um método gabarito. Algumas etapas do algoritmo podem ser implementadas por subclasses concretas, permitindo variações no processo sem alterar a estrutura geral.
Importância e origem da Engenharia de Software, dando uma visão geral de conteúdos que serão vistos na disciplinas.
Apresentação disponível em: http://prezi.com/laxsh8wsaiad/engenharia-de-software-introducao/
Bibliografia: Sommerville, 8.ª e 9.ª edição
Este documento contém:
1) Uma aula sobre HTML, XHTML e CSS, incluindo a criação de links e folhas de estilo.
2) Informações sobre como criar formulários HTML e os elementos que podem ser incluídos, como caixas de texto e botões.
3) Dicas sobre como adicionar estilo a elementos usando CSS, como bordas, fundos e padding.
O documento fornece um esquema de ligação para sistemas de segurança com câmeras e áudios. Ele mostra como conectar as fontes de alimentação, câmeras, microfones, cabos e conversores para o DVR e monitor.
G gpcwmlguth 02.009.030.004-video_dvr_-_internetMessias Castro
1) O documento fornece instruções detalhadas sobre a operação e configuração de um DVR de segurança stand alone de 4, 8 ou 16 canais.
2) Inclui detalhes sobre o login do usuário, navegação no menu, configuração de gravação, rede, alarmes, PTZ e outros parâmetros.
3) Também fornece informações sobre a instalação e operação do HD, solução de problemas e especificações técnicas.
Evolução de software 1 - Engenharia de SoftwareEduardo Mendes
A empresa de tecnologia anunciou um novo smartphone com câmera aprimorada, maior tela e bateria de longa duração. O dispositivo também possui processador mais rápido e armazenamento expansível. O novo modelo será lançado em outubro por um preço inicial de US$799.
The Template Method pattern defines the skeleton of an algorithm in an abstract class, leaving some steps to be implemented by subclasses. This allows subclasses to redefine certain steps of the algorithm without changing its structure. The algorithm is encapsulated in a single class, with subclasses only needing to provide specialized implementation details for certain steps. The abstract class declares primitive methods that subclasses must implement, as well as concrete methods and hooks to allow subclasses to optionally modify the algorithm's behavior.
O documento fornece uma introdução sobre sistemas de Circuito Fechado de TV (CFTV), definindo o que é CFTV e descrevendo suas principais partes e aplicações. Detalha os componentes básicos de um sistema CFTV, incluindo câmeras, monitores, cabos e fontes de energia. Também discute conceitos como sensibilidade da câmera, resolução, compensação de luz de fundo, dispositivos CCD e CMOS, tipos de lentes e suas funções.
Importância e origem da Engenharia de Software, dando uma visão geral de conteúdos que serão vistos na disciplinas.
Apresentação disponível em: http://prezi.com/laxsh8wsaiad/engenharia-de-software-introducao/
Bibliografia: Sommerville, 8.ª e 9.ª edição
Este documento contém:
1) Uma aula sobre HTML, XHTML e CSS, incluindo a criação de links e folhas de estilo.
2) Informações sobre como criar formulários HTML e os elementos que podem ser incluídos, como caixas de texto e botões.
3) Dicas sobre como adicionar estilo a elementos usando CSS, como bordas, fundos e padding.
O documento fornece um esquema de ligação para sistemas de segurança com câmeras e áudios. Ele mostra como conectar as fontes de alimentação, câmeras, microfones, cabos e conversores para o DVR e monitor.
G gpcwmlguth 02.009.030.004-video_dvr_-_internetMessias Castro
1) O documento fornece instruções detalhadas sobre a operação e configuração de um DVR de segurança stand alone de 4, 8 ou 16 canais.
2) Inclui detalhes sobre o login do usuário, navegação no menu, configuração de gravação, rede, alarmes, PTZ e outros parâmetros.
3) Também fornece informações sobre a instalação e operação do HD, solução de problemas e especificações técnicas.
Evolução de software 1 - Engenharia de SoftwareEduardo Mendes
A empresa de tecnologia anunciou um novo smartphone com câmera aprimorada, maior tela e bateria de longa duração. O dispositivo também possui processador mais rápido e armazenamento expansível. O novo modelo será lançado em outubro por um preço inicial de US$799.
The Template Method pattern defines the skeleton of an algorithm in an abstract class, leaving some steps to be implemented by subclasses. This allows subclasses to redefine certain steps of the algorithm without changing its structure. The algorithm is encapsulated in a single class, with subclasses only needing to provide specialized implementation details for certain steps. The abstract class declares primitive methods that subclasses must implement, as well as concrete methods and hooks to allow subclasses to optionally modify the algorithm's behavior.
O documento fornece uma introdução sobre sistemas de Circuito Fechado de TV (CFTV), definindo o que é CFTV e descrevendo suas principais partes e aplicações. Detalha os componentes básicos de um sistema CFTV, incluindo câmeras, monitores, cabos e fontes de energia. Também discute conceitos como sensibilidade da câmera, resolução, compensação de luz de fundo, dispositivos CCD e CMOS, tipos de lentes e suas funções.
O documento fornece informações básicas sobre sistemas de Circuito Fechado de Televisão (CFTV), descrevendo seus principais componentes como iluminação, lentes, câmeras, monitores, gravadores e processadores. Também aborda conceitos importantes como espectro eletromagnético, tipos de iluminação e fatores que influenciam a qualidade da imagem em CFTV.
A empresa de tecnologia anunciou um novo smartphone com câmera aprimorada, maior tela e melhor desempenho. O dispositivo também possui um preço mais acessível em comparação aos modelos anteriores para atrair mais consumidores. O lançamento ocorrerá no próximo mês e a empresa espera que o novo smartphone ajude a aumentar suas vendas e participação no mercado.
O documento discute padrões de projeto de software relacionados à criação de objetos, como Fábrica Simples, Método Fábrica e Fábrica Abstrata. Estes padrões permitem encapsular a lógica de criação de objetos e tornar o código mais flexível a alterações no futuro.
O documento discute técnicas de programação HTML, XHTML e CSS. Ele apresenta exemplos básicos de código HTML para criar uma página simples com título, imagem e texto. Também mostra como adicionar estilo à página usando CSS e como criar links internos entre páginas usando tags HTML.
Este documento apresenta exemplos de como dividir uma página em seções usando HTML e CSS, como adicionar estilos a elementos e como organizar o layout de uma página. Inclui exemplos de como posicionar elementos com float e position e ajustar paddings, margins e cores.
O documento descreve o Padrão Adapter, que permite que classes com interfaces incompatíveis trabalhem juntas. Um exemplo mostra um PeruAdapter que implementa a interface Pato para permitir que um objeto Peru seja usado onde um Pato é esperado. O Adapter faz a tradução entre as interfaces incompatíveis do Peru e do Pato.
O documento discute os desafios da inteligência artificial em fornecer resumos concisos de longos textos mantendo a precisão das informações. Ele argumenta que embora os sistemas de IA tenham melhorado na geração automática de resumos, ainda há trabalho a ser feito para entender completamente o contexto e o significado por trás das palavras.
A União Europeia está preocupada com o impacto ambiental do plástico descartável e planeja proibir itens como canudos, talheres e pratos de plástico até 2021 para reduzir os resíduos plásticos nos oceanos. A proibição afetará produtos de plástico de único uso que são comumente encontrados nas praias e águas da UE. Espera-se que a medida ajude a prevenir danos à vida marinha e à cadeia alimentar.
A empresa de tecnologia anunciou um novo smartphone com câmera aprimorada, tela maior e bateria de longa duração por um preço acessível. O dispositivo tem como objetivo atrair mais consumidores em mercados emergentes com suas especificações equilibradas e preço baixo. Analistas esperam que as melhorias e o preço baixo impulsionem as vendas do novo aparelho.
Introdução à Linguagem Ruby - Fundamentos - Parte 2Eduardo Mendes
A empresa anunciou um novo produto que combina hardware e software para fornecer uma solução completa para clientes. O produto oferece recursos avançados de inteligência artificial e aprendizado de máquina para automatizar tarefas complexas. Analistas esperam que o produto tenha um bom desempenho no mercado e gere receita significativa para a empresa no próximo ano fiscal.
O documento descreve um curso intensivo de Java com 4 módulos que totalizam 88 horas. Os módulos cobrem sintaxe de Java, programação orientada a objetos, acesso a banco de dados e desenvolvimento web. O curso tem como objetivo preparar os alunos para trabalhar com Java de forma produtiva e para a certificação SCJP.
La Unión Europea está considerando nuevas regulaciones para las empresas de tecnología. Estas regulaciones podrían requerir que las grandes compañías tecnológicas compartan datos con los competidores más pequeños. El objetivo es promover la competencia y dar a los usuarios más opciones y control sobre sus datos personales.
A empresa de tecnologia anunciou um novo smartphone com câmera aprimorada, tela maior e bateria de longa duração por um preço acessível. O dispositivo tem como objetivo atrair mais consumidores em mercados emergentes com suas especificações equilibradas e preço baixo. Analistas esperam que as melhorias e o preço baixo impulsionem as vendas do novo aparelho.
O documento discute o desenvolvimento baseado em testes (TDD) em 3 frases:
1) TDD envolve escrever testes unitários antes de escrever o código para guiar o desenvolvimento e garantir a qualidade do código.
2) O ciclo básico do TDD é escrever um teste que falha, escrever o código mínimo para fazer o teste passar, e refatorar o código.
3) Os benefícios do TDD incluem esclarecer os requisitos, desenvolver código de alta qualidade com
O documento descreve como recuperar parâmetros de formulários em Servlets utilizando o método getParameter() e como passar valores de Servlets para JSPs utilizando o método setAttribute(). É explicado como recuperar valores de campos do tipo checkbox como arrays e como utilizar RequestDispatcher para repassar o fluxo da requisição e resposta para uma JSP.
A empresa de tecnologia anunciou um novo smartphone com câmera avançada, bateria de longa duração e processador rápido para competir no mercado. O aparelho custará menos do que os principais concorrentes e estará disponível em várias cores. A empresa espera que o novo smartphone ajude a aumentar sua participação no mercado global de smartphones.
A empresa de tecnologia anunciou um novo smartphone com câmera aprimorada, maior tela e bateria de longa duração. O dispositivo também possui processador mais rápido e armazenamento expansível. O novo modelo será lançado em outubro por um preço inicial de US$799.
O documento discute o jQuery, uma biblioteca JavaScript que facilita a manipulação de documentos HTML, tratamento de eventos e animações. Em três frases:
(1) jQuery é uma biblioteca JavaScript rápida, pequena e rica em recursos que permite percorrer e manipular documentos HTML, tratar eventos e animações, facilitando também o uso de AJAX; (2) Algumas formas de usar jQuery incluem encontrar elementos no HTML, alterar conteúdo, ouvir eventos do usuário e comunicar-se pela rede; (3) jQuery utiliza seletores CSS para
JavaScript - Introdução com Orientação a ObjetosEduardo Mendes
Este documento introduz o JavaScript e fornece uma visão geral de sua história, uso e conceitos-chave. Em particular:
1) Apresenta uma breve história do JavaScript, desde sua criação pela Netscape em 1995 até seu uso atual em milhões de páginas da web.
2) Discutem conceitos importantes como funções, funções anônimas e o uso de funções como parâmetros.
3) Fornece exemplos de como incorporar JavaScript em páginas web usando blocos <script>, arquivos externos e eventos em elementos HTML
O documento descreve a estrutura de pastas e arquivos de um projeto de uma imobiliária desenvolvido com AngularJS. A estrutura inclui páginas para imóveis e usuários, além de arquivos CSS, JavaScript e templates. O texto discute a organização dos arquivos e a implementação de rotas e controllers para exibir dinamicamente o conteúdo correto de acordo com a rota atual.
O documento fornece informações básicas sobre sistemas de Circuito Fechado de Televisão (CFTV), descrevendo seus principais componentes como iluminação, lentes, câmeras, monitores, gravadores e processadores. Também aborda conceitos importantes como espectro eletromagnético, tipos de iluminação e fatores que influenciam a qualidade da imagem em CFTV.
A empresa de tecnologia anunciou um novo smartphone com câmera aprimorada, maior tela e melhor desempenho. O dispositivo também possui um preço mais acessível em comparação aos modelos anteriores para atrair mais consumidores. O lançamento ocorrerá no próximo mês e a empresa espera que o novo smartphone ajude a aumentar suas vendas e participação no mercado.
O documento discute padrões de projeto de software relacionados à criação de objetos, como Fábrica Simples, Método Fábrica e Fábrica Abstrata. Estes padrões permitem encapsular a lógica de criação de objetos e tornar o código mais flexível a alterações no futuro.
O documento discute técnicas de programação HTML, XHTML e CSS. Ele apresenta exemplos básicos de código HTML para criar uma página simples com título, imagem e texto. Também mostra como adicionar estilo à página usando CSS e como criar links internos entre páginas usando tags HTML.
Este documento apresenta exemplos de como dividir uma página em seções usando HTML e CSS, como adicionar estilos a elementos e como organizar o layout de uma página. Inclui exemplos de como posicionar elementos com float e position e ajustar paddings, margins e cores.
O documento descreve o Padrão Adapter, que permite que classes com interfaces incompatíveis trabalhem juntas. Um exemplo mostra um PeruAdapter que implementa a interface Pato para permitir que um objeto Peru seja usado onde um Pato é esperado. O Adapter faz a tradução entre as interfaces incompatíveis do Peru e do Pato.
O documento discute os desafios da inteligência artificial em fornecer resumos concisos de longos textos mantendo a precisão das informações. Ele argumenta que embora os sistemas de IA tenham melhorado na geração automática de resumos, ainda há trabalho a ser feito para entender completamente o contexto e o significado por trás das palavras.
A União Europeia está preocupada com o impacto ambiental do plástico descartável e planeja proibir itens como canudos, talheres e pratos de plástico até 2021 para reduzir os resíduos plásticos nos oceanos. A proibição afetará produtos de plástico de único uso que são comumente encontrados nas praias e águas da UE. Espera-se que a medida ajude a prevenir danos à vida marinha e à cadeia alimentar.
A empresa de tecnologia anunciou um novo smartphone com câmera aprimorada, tela maior e bateria de longa duração por um preço acessível. O dispositivo tem como objetivo atrair mais consumidores em mercados emergentes com suas especificações equilibradas e preço baixo. Analistas esperam que as melhorias e o preço baixo impulsionem as vendas do novo aparelho.
Introdução à Linguagem Ruby - Fundamentos - Parte 2Eduardo Mendes
A empresa anunciou um novo produto que combina hardware e software para fornecer uma solução completa para clientes. O produto oferece recursos avançados de inteligência artificial e aprendizado de máquina para automatizar tarefas complexas. Analistas esperam que o produto tenha um bom desempenho no mercado e gere receita significativa para a empresa no próximo ano fiscal.
O documento descreve um curso intensivo de Java com 4 módulos que totalizam 88 horas. Os módulos cobrem sintaxe de Java, programação orientada a objetos, acesso a banco de dados e desenvolvimento web. O curso tem como objetivo preparar os alunos para trabalhar com Java de forma produtiva e para a certificação SCJP.
La Unión Europea está considerando nuevas regulaciones para las empresas de tecnología. Estas regulaciones podrían requerir que las grandes compañías tecnológicas compartan datos con los competidores más pequeños. El objetivo es promover la competencia y dar a los usuarios más opciones y control sobre sus datos personales.
A empresa de tecnologia anunciou um novo smartphone com câmera aprimorada, tela maior e bateria de longa duração por um preço acessível. O dispositivo tem como objetivo atrair mais consumidores em mercados emergentes com suas especificações equilibradas e preço baixo. Analistas esperam que as melhorias e o preço baixo impulsionem as vendas do novo aparelho.
O documento discute o desenvolvimento baseado em testes (TDD) em 3 frases:
1) TDD envolve escrever testes unitários antes de escrever o código para guiar o desenvolvimento e garantir a qualidade do código.
2) O ciclo básico do TDD é escrever um teste que falha, escrever o código mínimo para fazer o teste passar, e refatorar o código.
3) Os benefícios do TDD incluem esclarecer os requisitos, desenvolver código de alta qualidade com
O documento descreve como recuperar parâmetros de formulários em Servlets utilizando o método getParameter() e como passar valores de Servlets para JSPs utilizando o método setAttribute(). É explicado como recuperar valores de campos do tipo checkbox como arrays e como utilizar RequestDispatcher para repassar o fluxo da requisição e resposta para uma JSP.
A empresa de tecnologia anunciou um novo smartphone com câmera avançada, bateria de longa duração e processador rápido para competir no mercado. O aparelho custará menos do que os principais concorrentes e estará disponível em várias cores. A empresa espera que o novo smartphone ajude a aumentar sua participação no mercado global de smartphones.
A empresa de tecnologia anunciou um novo smartphone com câmera aprimorada, maior tela e bateria de longa duração. O dispositivo também possui processador mais rápido e armazenamento expansível. O novo modelo será lançado em outubro por um preço inicial de US$799.
O documento discute o jQuery, uma biblioteca JavaScript que facilita a manipulação de documentos HTML, tratamento de eventos e animações. Em três frases:
(1) jQuery é uma biblioteca JavaScript rápida, pequena e rica em recursos que permite percorrer e manipular documentos HTML, tratar eventos e animações, facilitando também o uso de AJAX; (2) Algumas formas de usar jQuery incluem encontrar elementos no HTML, alterar conteúdo, ouvir eventos do usuário e comunicar-se pela rede; (3) jQuery utiliza seletores CSS para
JavaScript - Introdução com Orientação a ObjetosEduardo Mendes
Este documento introduz o JavaScript e fornece uma visão geral de sua história, uso e conceitos-chave. Em particular:
1) Apresenta uma breve história do JavaScript, desde sua criação pela Netscape em 1995 até seu uso atual em milhões de páginas da web.
2) Discutem conceitos importantes como funções, funções anônimas e o uso de funções como parâmetros.
3) Fornece exemplos de como incorporar JavaScript em páginas web usando blocos <script>, arquivos externos e eventos em elementos HTML
O documento descreve a estrutura de pastas e arquivos de um projeto de uma imobiliária desenvolvido com AngularJS. A estrutura inclui páginas para imóveis e usuários, além de arquivos CSS, JavaScript e templates. O texto discute a organização dos arquivos e a implementação de rotas e controllers para exibir dinamicamente o conteúdo correto de acordo com a rota atual.
O documento discute conceitos e funcionalidades do framework JavaScript AngularJS. Em particular, apresenta diretivas como ng-app, ng-controller e ng-repeat que permitem adicionar comportamentos dinâmicos ao HTML, além de explicar sobre módulos, controles e expressões no AngularJS.
O documento discute o padrão Singleton, que garante a criação de uma única instância de uma classe e fornece um ponto global de acesso a ela. Isso é feito através de um construtor privado e um método estático getInstance() que retorna a instância única. O padrão é útil quando precisamos de acesso global a um único objeto ou recurso compartilhado.
O documento discute estratégias para criar layouts responsivos utilizando medidas flexíveis como porcentagens e unidades em. Aborda como converter layouts fixos para fluidos, utilizar imagens responsivas e limitar layouts fluidos em telas muito grandes.
O documento discute estratégias de design responsivo para websites adaptarem-se a diferentes dispositivos. Aborda tags semânticas do HTML5 que melhoram a acessibilidade e o SEO, além de técnicas como viewport, grid layout fluido, imagens flexíveis e media queries para estilização condicional de acordo com características dos dispositivos.
O documento descreve a história da Internet e da World Wide Web, como o HTTP e o HTML permitem a comunicação entre clientes e servidores, e algumas tecnologias que permitem criar páginas dinâmicas, como CGI, APIs e scripts do lado do servidor.
O documento discute o framework JavaScript Sencha ExtJS, que permite a implementação de aplicações ricas para a web. O ExtJS é baseado em componentes e possui grande comunidade de desenvolvedores. Ele pode integrar com outros frameworks e tecnologias como PHP, Rails e Spring para a parte do servidor.
O documento discute refatoração de código jQuery para uma abordagem baseada em objetos. Ele apresenta como refatorar handlers de eventos e requisições Ajax para uma função construtora Receita(), encapsulando o comportamento de cada receita em um objeto. Isso permite gerenciar múltiplas receitas de forma independente ao invés de usar um objeto literal único.
Estimativas de Esforço - Engenharia de SoftwareEduardo Mendes
O documento discute estimativas de esforço para projetos de software e apresenta três abordagens: Análise de Pontos de Função, Pontos de Caso de Uso e métricas ágeis como Pontos de Estórias de Usuário. O autor também discute como calcular o esforço usando essas métricas e quais fatores influenciam as estimativas.
Java web 6 JSP Expression Language Taglib parte 2Eduardo Mendes
O documento apresenta o uso de JSP e Servlets para recuperar atributos em requisições. Há dois códigos JSP mostrados: um usa Expression Language (EL) para recuperar atributos de forma simplificada, enquanto o outro usa código Java embutido para recuperar os mesmos atributos. O documento também explica os principais operadores e funcionalidades da EL, como o uso de pontos, colchetes e tags como <c:if>.
The document discusses Rails model validations which ensure only valid objects are persisted to the database. It describes different validation methods like presence, length, numericality, and uniqueness that can be applied to model attributes. These validations are triggered during create, save, update, and update_attributes and allow specifying validation criteria like minimum or maximum length, numeric comparisons, and unique values within a scoped context.
O documento discute o padrão Iterator para permitir que objetos de coleções diferentes sejam iterados de forma uniforme. O padrão encapsula a iteração através da interface Iterator e classes concretas de Iterator para cada tipo de coleção, removendo dependências do código cliente. Isso permite que a garçonete imprima menus de forma genérica, independente da implementação interna de cada menu.
O documento descreve o padrão de projeto Command. Ele encapsula solicitações como objetos comando que contêm toda a informação necessária para executar uma ação ou acionar um objeto. Um invocador pode executar diferentes comandos sem saber o que eles realmente fazem. Isso permite parametrizar clientes, enfileirar comandos e desfazer ações.
O documento descreve o Padrão de Projeto Facade. A Facade simplifica a interface de um subsistema complexo, ocultando sua complexidade e fornecendo uma interface unificada e fácil de usar.
Este documento fornece um resumo sobre desenvolvimento de conteúdo web para dispositivos móveis. Apresenta estratégias como não fazer nada, conteúdo adaptado e versão móvel específica. Também discute breve história das linguagens móveis, HTML5, CSS e web design responsivo.
Este documento apresenta uma aula introdutória sobre PHP, abordando conceitos como arquitetura cliente-servidor, sintaxe básica do PHP, formulários, variáveis, condicionais e loops. Contém exemplos práticos de programas simples em PHP e exercícios para fixar os conceitos.
O documento discute os fundamentos de projeto orientado a objetos, padrões de projeto e anti-padrões. Ele aborda tópicos como herança, polimorfismo, interfaces, classificações de padrões e como padrões podem ajudar a resolver problemas comuns de software.
O documento descreve uma simulação de um lago com patos usando orientação a objetos. Inicialmente, a herança foi usada para definir o comportamento dos patos, mas isso causou problemas quando os requisitos mudaram. Posteriormente, o padrão Strategy foi aplicado para encapsular os comportamentos de voo e de grasnar em classes separadas, permitindo a composição desses comportamentos nos objetos Pato.
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
Este certificado confirma que Gabriel de Mattos Faustino concluiu com sucesso um curso de 42 horas de Gestão Estratégica de TI - ITIL na Escola Virtual entre 19 de fevereiro de 2014 a 20 de fevereiro de 2014.
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
2. Padrão Método-Gabarito
Receita de Café
Ferver um pouco de
água
Misturar o café na água
fervente
Servir o café na xícara
Acrescentar açúcar e
leite
Receita de Chá
Ferver um pouco de
água
Colocar o chá em
infusão na água
fervente
Despejar o chá na
xícara
Acrescentar o limão
2 receitas bem parecidas
3. Transformando as bebidas em código
Cafe.java
public class Cafe {
public void prepararReceita(){
ferverAgua();
misturarCafeComAgua();
servirNaXicara();
adicionarAcucarELeite();
}
public void ferverAgua() {
System.out.println("Agua Fervendo");
}
public void misturarCafeComAgua() {
System.out.println("Misturando café com água");
}
public void servirNaXicara() {
System.out.println("Servindo na xicara");
}
public void adicionarAcucarELeite() {
System.out.println("Adicionando acucar e leite");
}
}
Receita de Café
Ferver um pouco de água
Misturar o café na água
fervente
Servir o café na xícara
Acrescentar açuúcar e
leite
Cada 1 dos passos
está implementado
como um método
4. public class Cha {
public void prepararReceita(){
ferverAgua();
misturarChaComAgua();
servirNaXicara();
adicionarLimao();
}
public void ferverAgua() {
System.out.println("Agua Fervendo");
}
public void misturarChaComAgua(){
System.out.println("Mergulhando o cha");
}
public void servirNaXicara() {
System.out.println("Servindo na xicara");
}
public void adicionarLimao() {
System.out.println("Adicionando limão");
}
}
Agora o chá
Cha.java
Muito parecido
com a sequência
de código.
O segundo e o quarto
método são diferentes
mas praticamente iguais.
5. Duplicação de código
Devemos depurar o projeto
Qual seria a melhor alternativa para evitar
essa duplicação?
6. Compare os códigos
public class Cafe {
public void prepararReceita(){
ferverAgua();
misturarCafeComAgua();
servirNaXicara();
adicionarAcucarELeite();
}
public void ferverAgua() {
System.out.println("Agua Fervendo");
}
public void misturarCafeComAgua() {
System.out.println("Misturando café com
água");
}
public void servirNaXicara() {
System.out.println("Servindo na xicara");
}
public void adicionarAcucarELeite() {
System.out.println("Adicionando acucar e
leite");
}
}
public class Cha {
public void prepararReceita(){
ferverAgua();
misturarChaComAgua();
servirNaXicara();
adicionarLimao();
}
public void ferverAgua() {
System.out.println("Agua Fervendo");
}
public void misturarChaComAgua() {
System.out.println("Mergulhando o cha");
}
public void servirNaXicara() {
System.out.println("Servindo na xicara");
}
public void adicionarLimao() {
System.out.println("Adicionando limão");
}
}
8. Características
da nova estrutura
O método prepararReceita() vai para a
superclasse e torna-se abstrato, pois ele é
diferente nas duas classes
Cada subclasse sobrescreve o método
prepararReceita()
Os métodos que são iguais – ferverAgua e
servirNaXicara – são extraídos para a superclasse
Os métodos específicos de cada classes são
implementados na própria subclasse
9. Indo além
O que mais há em comum?
Receita de Café
Ferver um pouco de água
Misturar o café na água
fervente
Servir o café na xícara
Acrescentar açúcar e leite
Receita de Chá
Ferver um pouco de água
Colocar o chá em infusão na água
fervente
Despejar o chá na xícara
Acrescentar o limão
10. Indo além
O mesmo algoritmo?
Ferver a água
Misturar com água quente o café ou o chá
Servir em uma xícara
Adicionar os condimentos da bebida
Existe uma maneira de extrair para a superclasse
o próprio prepararReceita()?
11. Abstraindo o método
prepararReceita()
public class Cafe {
public void prepararReceita(){
ferverAgua();
misturarCafeComAgua();
servirNaXicara();
adicionarAcucarELeite();
}
public class Cha {
public void prepararReceita(){
ferverAgua();
misturarChaComAgua();
servirNaXicara();
adicionarLimao();
}
12. O novo prepararReceita()
public final void prepararReceita() {
ferverAgua();
misturar();
servirNaXicara();
adicionarCondimentos();
}
Com o método final uma subclasse não podem sobrescrever
o método e alterar a receita
13. A nova BebidaCafeinada.java
public abstract class BebidaCafeinada {
public final void prepararReceita() {
ferverAgua();
misturar();
servirNaXicara();
adicionarCondimentos();
}
abstract void misturar();
abstract void adicionarCondimentos();
public void ferverAgua() {
System.out.println("Agua Fervendo");
}
public void servirNaXicara() {
System.out.println("Servindo na xicara");
}
}
Os métodos que são específicos
serão implementados nas
subclasses
14. As novas bebidas
public class Café
extends BebidaCafeinada {
public void misturar() {
System.out.println(
"Misturando café");
}
public void
adicionarCondimentos() {
System.out.println(
"Adicionando acucar");
}
}
public class Cha
extends BebidaCafeinada {
public void misturar() {
System.out.println(
"Mergulhando o cha");
}
public void
adicionarCondimentos() {
System.out.println(
"Adicionando limão");
}
}
17. O Método-Gabarito
(Template-Method)
O Método-Gabarito define os passos de um
algoritmo e permite que a implementação de
um ou mais desses passos seja fornecida pela
subclasse
18. O antes e depois
Antes
As classes dispersas
controlavam o algoritmo
Havia duplicação de código
Toda alteração exigiria
mudanças nas subclasses
gerando múltiplas alterações
A organização das classes
exige muito trabalho para
adicionar uma nova bebida
As informações sobre o
algoritmo e a sua forma de
implementação está dispersa
em muitas classes
Depois
A superclasse controla o
algoritmo
A superclasse maximiza o o
reuso através das subclasses
As mudanças no algoritmo
ficam concentradas na
superclasse
A superclasse fornece uma
estrutura geral para criação de
novas bebidas. Novas bebidas
precisam implementar poucos
métodos
A superclasse concentra o
conhecimento sobre o
algoritmo e confia às
subclasses o fornecimento
completo das implementações
19. +1 Padrão
TEMPLATE-METHOD(Método-Gabarito)
O Padrão Template-Method define o
esqueleto de um algoritmo dentro de um método,
transferindo alguns de seus passos para as
subclasses. O Método-Gabarito permite que as
subclasses redefinam certos passos de um algoritmo
sem alterar a estrutura do mesmo.
20. Em miúdos
O padrão consiste na criação de um gabarito.
O que é um gabarito?
Um método
O método define um algoritmo como uma
sequência de passos
Um ou mais passos podem ser redefinidos
A estrutura permanece a mesma
21. Diagrama de classes
metodo1();
metodo2();
Podem existir várias
subclasses concretas
A classe concreta implementa
os métodos abstratos
O método gabarito está desacoplado
da implementação dos métodos
22. Participantes
Classe Abstrata
Define as operações abstratas fundamentais que
as subclasses concretas definem para implementar
passos de um algoritmo
Implementa um método gabarito que define o
esqueleto de um algoritmo
Classe Concreta
Implementa as operações fundamentais para
executarem os passos específicos do algoritmo da
subclasse
23. Colaborações
A Classe Concreta depende da Classe Abstrata
para implementar os passos invariantes do
algoritmo
24. O “gancho”
Um método vazio:
public void gancho() {}
public abstract class ClasseAbstrata {
public void metodoGabarito() {
metodo1();
metodo2();
metodoConcreto();
gancho();
}
abstract void metodo1();
abstract void metodo2();
final void metodoConcreto() {
//implementacao...
}
void gancho(){}
}