Lista de Exercícios Para a P2



Documentos relacionados
1.1. Definição do Problema

Proporcionar a modelagem de sistemas utilizando todos os conceitos da orientação a objeto;

Programação Orientada a Objetos

Motivação Este trabalho apresenta o desenvolvimento do controle da interatividade num sistema para a área de computação gráfica, mais especificamente

PROVA DE NOÇÕES DE INFORMÁTICA

7. Defina encapsulamento. R.: Encapsular é ocultar. Criar uma cápsula ao redor da classe, para proteger o que está dentro dela.

Padrões de Projeto. Factory Method

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C. Exercícios: Structs

Orientação a Objetos

Interface gráfica em Java: Swing e SWT

3. Numerar a coluna da direita conforme a da esquerda 1) Classe (2) :Aluno 2) Um dado objeto (3) oaluno:aluno 3) Objeto (1) Aluno

O que é Microsoft Excel? Microsoft Excel. Inicialização do Excel. Ambiente de trabalho

Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Capítulo 6 - Threads

Processo de Desenvolvimento de Software

M A N U A L D O ADMINISTRADOR DO PORTAL

Introdução a Banco de Dados. INTRODUÇÃO

Glossário Versão 1.0 Desenvolvimento do Sistema de Gestão de Documentos Doc Manager Histórico de Revisão

UTILIZAÇÃO DE ARQUITETURA EM CAMADAS BASEADA NO MODEL VIEW CONTROLLER, EM APLICAÇÕES WEB

TUTORIAL DO SISTEMA CE MERCANTE

Programação em JAVA. Subtítulo

SISTEMA OPERACIONAL - ios

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

Microsoft Powerpoint 2003

MANUAL DO SISTEMA TRT-5 PRESTADOR MÉDICO

Cartilha de Acesso Rápido

USANDO O PYTHON PARA ESCREVER PLUG-INS PARA O GIMP

Avaliação da Satisfação do Cliente de Informática

e-nota G Módulo de Guarda da Nota Fiscal eletrônica

TUTORIAL SOBRE O GOOGLE DOCS

Formação WEB com PHP. Subtítulo

Microcontroladores e Microprocessadores. Conversão de Bases Prof. Samuel Cavalcante

Sistema de Cadastro de Pessoa Jurídica

Manual Escrituração Fiscal Digital

- Campus Salto. Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula

LIBREOFFICE: APRESENTAÇÃO COM O IMPRESS. Professor: Francisco Dantas Nobre Neto

Curso de Sistemas de Informação Campus Guaíba Cursos de Informática Projeto de Inclusão Digital APOSTILA APOSTILA POWER POINT

ARQUITETURAS PARA APLICAÇÕES MÓVEIS

Produção de Vídeos Didáticos: Tábua de Galton

DEVF IT Solutions. Gerenciador de Log. Documento Visão. Versão 2.0. Projeto Integrador 2015/2 Engenharia de Software

Elementos básico de uma rede Samba - Local Master Browser

Sistemas Distribuídos Capítulo 4 - Aula 5

Dispositivos Externos

AUCON AUTOMAÇÃO E CONTROLE LTDA

Informativo de Versão 19.10

Gerenciamento de dispositivos móveis

Universidade Federal da Fronteira Sul Moodle Versão 3.0 MANUAL DO ALUNO

Painel Gráfico No-Break Conception Multi Ativo Innovation

sumário CAPÍTULO 01 CAPÍTULO 02 CAPÍTULO 03 CAPÍTULO 04 CAPÍTULO 05 CAPÍTULO 06 CONHECENDO CORELDRAW X régua, linhas-guia e grade...

Diário Oficial Digital. Sistema web para pesquisa de mátérias Manual do usuário

Sistema PROJUDI Vara de Execuções Penais

INTRODUÇÃO À INFORMÁTICA: TERMINOLOGIA BÁSICA RAÍ ALVES TAMARINDO

MAPA Manual do Usuário PGA SIGSIF Registro de Produto

Atualizações de Software Guia do Usuário

Engenharia de Software

Atualização de Software Guia do Usuário

INTEGRAÇÃO JAVA COM ARDUINO

Manual do Módulo de Assistência Estudantil / PROAES

Manual Básico. Para utilização do Gerenciador de Imóveis

Venda? - FS72. Sistema: Futura Server. Caminho: Vendas>Pedido de Vendas. Referência: FS72. Versão:

Análise e Projeto Orientados por Objetos

BIZAGI PROCESS MODELER - TUTORIAL INSTALAÇÃO E PRIMEIRO ACESSO

ACADÊMICO AVA MANUAL DE UTILIZAÇÃO DO MOODLE PERFIL ALUNO 31/05/2016

Nota Fiscal Eletrônica

Guia de desenvolvimento de um aplicativo para o sistema operacional Android

Modelando sistemas em UML - Casos de uso.

Usando o painel do operador

Desenvolvimento guiado por testes e ferramentas xunit

Conteúdo Programático

PHP-GTK. Criando Aplicações Gráficas com PHP. Pablo Dall'Oglio. Segunda Edição Inclui PHP 5 e GTK 2. Novatec

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

Trabalho Prático II - Resta 1 Data de Entrega: Conferir no calendário!

Padrões de Projeto. T ó p i c o s A v a n ç a d o s e m L i n g u a g e m d e P r o g r a m a ç ã o. Prof. Alexandre Vidal

Arquiteturas para Sistemas Distribuídos I

Estruturas de Repetição

de rede são comumente utilizadas nos dias de hoje. Um dos grandes desafios para a tecnologia de redes sem fio no momento é o handoff vertical, onde

Sistema de Gerenciamento para a lanchonete Paulinho Lanches

TOTVS Microsiga Protheus Gestor de Configuração

Para ser usado com aplicativos ativados para scanner/leitor de Código QR

Bem-vindo ao tópico sobre conceitos de determinação de preços.

Consultório On-line. Tudo o que você precisa em um só lugar.

GABINETE DE ASSESSORAMENTO TÉCNICO MANUAL DE PRESTAÇÃO DE CONTAS

Credenciamento. e manual de instalação Magento. Credenciamento. Configurações

Realizando seu primeiro pedido de vendas

Bem-vindo ao tópico sobre Cadastro e documentos.

INTERNET GROUP MANAGEMENT PROTOCOL - IGMP

Com uma melhoria no visual o sistema conta com novidades e alguns aprimoramentos nos recursos já existentes.

Padrões de Projeto. Padrões de Projeto. Além dos 23 Padrões GoF. Os 23 Padrões de Projeto. Documentação de um Padrão. Classificação dos Padrões

Qualidade de Produto. Maria Cláudia F. P. Emer

PROGRAMA TERRITÓRIOS DA CIDADANIA. # Manual Operacional # Matriz de Ações 2013

Lojamundi Tecnologia Sem Limites br

Como tratar eventos - A interface ActionListener e o método actionperformed

Conhecimentos Básicos de Computação e Microinformática

Administração de Sistemas Proprietários. Prof. Rodrigo Siqueira

SICLOM Mapa Mensal. 1 Mapa Mensal. Versão: Manual de preenchimento do mapa mensal no SICLOM Gerencial

Enviar fotos e vídeos entre duas câmeras da marca Canon (PowerShot SX60 HS)

Modem e rede local Guia do usuário

Transcrição:

Técnicas de Projeto e Implementação de Sistemas I Lista de Exercícios Para a P2 1. Explique o conceito de padrões de projeto e o diferencie dos Frameworks e APIs. 2. Explique o conceito de composição em projeto orientado a objetos. 3. Compare o conceito de composição à herança. 4. Explique o conceito de delegação. 5. Explique como funciona e qual é a aplicabilidade do padrão Singleton. 6. Explique como funciona e qual é a aplicabilidade do padrão Factory Method. 7. Explique como funciona e qual é a aplicabilidade do padrão Abstract Factory. 8. Explique como funciona e qual é a aplicabilidade do padrão Decorator. 9. Explique como funciona e qual é a aplicabilidade do padrão Observer. 10. Explique como funciona e qual é a aplicabilidade do padrão Command. 11. Explique como funciona e qual é a aplicabilidade do padrão Strategy. 12. Explique como funciona e qual é a aplicabilidade do padrão Adapter. 13. Explique como funciona e qual é a aplicabilidade do padrão Facade. 14. Explique como funciona e qual é a aplicabilidade do padrão Iterator. 15. Explique como funciona e qual é a aplicabilidade do padrão Composite. 16. O método Array.sort() disponível na linguagem Java é um exemplo do padrão Strategy. Explique por que? 17. Considere um jogo que dá suporte ao usuário mapear botões do Joystick a ações do personagem (e.g., se mover para frente, para a direita, pular). Como desenvolvedores do jogo, queremos ter uma solução com baixo acoplamento entre o tratador de eventos (módulo que recebe a informação sobre o botão ter sido pressionado) e as ações em si. Qual padrão de projeto você utilizaria para alcançar este objeto? Descreva textualmente como esta implementação seria estruturada.

18. Considere uma sistema de telemetria para um carro de Fórmula 1. Este sistema deve exibir em múltiplas interfaces (e.g., monitor nos boxes, página na Internet) as informações relevantes do carro: velocidade atual, consumo de combustível, desgaste dos pneus. Qual padrão de projeto você utilizaria para implementar este aspecto do sistema? 19. Considere um editor de desenhhos que permite ao usuário desenhar elementos gráficos como linhas, polígonos e texto, em figuras e diagramas. A abstração chave é o conceito de objeto gráfico: uma forma editável e capaz de se desenhar, representada por uma interface chamada Shape. A interface Shape propõe três métodos: BoundingBox(): retorna um retângulo que descreve a caixa envolvente da forma. CreateManipulator(): retorna uma instância de um objeto capaz de manipular a forma de modo apropriado. Draw(): desenha a forma. Há duas implementações da interface Shape no sistema: PolygonShape e LineShape. Desejamos adicionar uma terceira, o TextShape. Entretanto, o código do TextShape é complexo e há uma API que disponibiliza uma classe denominada TextView com as mesmas funcionalidades necessárias. A desvantagem desta API é que seus métodos são chamados de GetExtent() (ao invés de BoundingBox()) e Display() (ao invés de Draw()). Como podemos utilizar a API neste caso? Qual padrão de projeto auxiliaria nesta tarefa? Desenhe um diagrama de classes que ilustre a sua solução. 20. Considere a seguinte afirmação: o padrão Abstract Factory, quando usado corretamente, reduz o acoplamento. Esta afirmação é verdadeira? Explique. 21. Considere a seguinte afirmação: em uma implementação típica do padrão Abstract Factory, implicitamente, utilizamos o padrão Factory Method. Você considere esta afirmação verdadeira? Explique. 22. Considere um sistema que precise escrever eventos em um arquivo de log. Cada linha do arquivo de log contém a descrição de um evento. A descrição de um evento pode conter vários tipos de informação que podem ou não ser relevantes para um usuário específico (e.g., data e hora, módulo que gerou o evento, nome da função que gerou o evento, número da linha executada quando o evento foi gerado, temperatura da CPU quando o evento ocorreu). Além destas informações, um evento sempre tem uma descrição textual. Suponha que desejamos permitir que cada usuário defina as informações que quer ver nos logs dos eventos. Elabore uma solução baseada no padrão Decorator. Apresente o diagrama de classes e esboce o código fonte em Java da implementação. 23. Em uma grande empresa, há uma equipe especializada para lidar com problemas na área de TI. Cada membro desta equipe possui conhecimento para atender a alguns tipos específicos de problemas (e.g., problemas na infraestrutura de rede, problemas de software, problemas de hardware, problemas nos servidores). Quando algum funcionário da empresa tem um

problema de TI, ele acessa uma página web e preenche um formulário com os dados do problema, incluindo o tipo. O sistema recebe esta queixa e repassa o problema para todos os funcionários habilitados a tratar aquele tipo de problema. Este repasse basicamente resulta em uma mensagem ser exibida no monitor do membro da equipe de TI correspondente. Qual dos padrões estudados em sala de aula é adequado a este cenário? Esboce um diagrama de classes ilustrando como este padrão pode ser aplicado. 24. Um gerenciador de desktop é um aplicativo que gerencia a área de trabalho de um usuário em um ambiente gráfico. Este aplicativo exibe algumas ferramentas básicas ao usuário, como uma barra dos programas atualmente abertos, um relógio, uma barra com um menu de programas disponíveis no sistema e a área de trabalho em si (com um papel de parede, ícones, etc). Suponha que queremos desenvolver um gerenciador de desktop. Para cada tipo de ferramenta (e.g., barra com menu, barra de programas abertos), teremos múltiplas versões disponíveis (na forma de classes). Ao ser inicializado, o gerenciador de desktop lerá configurações de um arquivo e escolherá, para cada tipo de ferramenta, a versão preferida pelo usuário. Toda vez que o usuário interagir com o desktop (com o mouse), o gerenciador identificará a qual ferramenta a interação corresponde e repassará o comando para ela. Qual padrão de projeto pode ser utilizado para este sistema? Esboce uma solução no forma de um diagrama de classes. 25. A maioria dos bancos possui hoje aplicativos para smartphones. Estes aplicativos permitem que seus clientes façam operações bancárias, como obtenção de extratos, transferências, DOCs, TEDs, pagamento de boletos, aplicações e etc. Suponha que um determinado banco, que já possui uma aplicação deste tipo, quer permitir que terceiros desenvolvam plugins para a realização de compras e pagamentos. Por exemplo, se uma livraria desenvolve um aplicativo de compras, este pode ser integrado ao aplicativo do banco através de um plugin permitindo que com um clique na tela o cliente efetue o pagamento através de uma transferência bancária. Este plugin receberia o valor da compra e os dados bancários da loja e, acessando o aplicativo do banco faria a transferência, observando o saldo disponível e os dados de autenticação do cliente. O sistema do banco, no entanto, é complexo e esta simples tarefa exige a instanciação e manipulação de várias classes em uma ordem específica. O que o banco poderia fazer, em seu aplicativo, para que os plugins pudessem realizar este tipo de operação de forma mais simples? Qual padrão de projeto visto em sala de aula poderia auxiliar nesta tarefa? Esboce um diagrama de classes para esta solução. 26. Considere um sistema de gerência de pessoal em uma empresa. Esta empresa organiza seus empregaods em uma hierarquia: cada empregado pode ser responsável por zero ou mais empregados subalternos. Há 4 tipos de empregados: presidentes, vice-presidentes, gerentes e outros. Todo empregado tem um nome, um CPF um edereço de e-mail e um salário. Nosso sistema deve ser capaz, entre outras coisas, de: contabilizar o custo total (soma dos salários) de todos os funcionários abaixo de um dado funcionário na hierarquia.

permitir que um funcionário envie um e-mail para todos os funcionários abaixo dele próprio na hierarquia. Dentre os padrões de projeto vistos em sala de aula, qual poderia ser utilizado para implementar esta parte do sistema? Esboce um diagrama de classes da solução e as implementações em Java dos métodos custototal() (que contabiliza o custo total em relação a um empregado) e enviaemail() (que envia um e-mail a partir de um empregado), ambos da classe Empregado. 27. Considere a solução da questão anterior. Vários módulos do sistema precisam percorrer a estrutura de dados contendo todos os funcionários (por exemplo, para fazer a folha de pagamento, para gerar relatórios, etc). Os percorrimentos precisam ser realizados de acordo com vários critérios. Por exemplo, há módulos distintos para gerar as folhas de pagamento dos gerentes, dos vice-presidentes e dos outros funcionários. Há ainda um módulo que precisa percorrer os empregados por ordem de nível na hierarquia: primeiro o presidente, depois seus sobordinados diretos, depois os subordinados diretos destes, e assim sucessivamente. Proponha uma solução que permita que estes vários módulos sejam desacoplados da estrutura de dados que armazena os empregados. Qual padrão de projeto é utilizado para isso? Esboce o código em Java da sua solução. 28. Considere uma aplicação que precisa enviar dados pela porta serial do computador. A aplicação têm vários módulos que, em momentos variados, necessitam escrever na porta serial. Por uma limitação do sistema operacional, o dispositivo correspondente à porta não pode ser aberto várias vezes simultaneas. Como solução, criamos a seguinte classe: public class SerialPort { SerialPort sp = null; private SerialPort() { } // Requisita ao SO a abertura do dispositivo. public SerialPort getinstance() { } if (sp == null) sp = new SerialPort(); return(this); public void write(string msg) { // Escreve msg na porta serial.

} } Sobre esta classe: a) Qual padrão de projeto é utilizado? b) Por que o construtor é declarado como sendo privado? c) Se há múltiplas threads no sistema, o método write() permite concorrência? I.e., é possível que uma thread seja preemptada dentro deste método e, neste momento, outra comece a executá-lo? 29. Considere o seguinte diagrama de classes: 30. Dê exemplos de padrões de projeto de criação. 31. Dê exemplos de padrões de projeto estruturais. 32. Por que o MVC é considerado um padrão composto? 33. Descreva os personagens envolvidos no padrão MVC e suas colaborações. 34. Os padrões de projeto são uma técnica de reúso de código? Explique. 35. O que é um framework? Como eles funcionam? Quais as diferenças entre um framework e uma biblioteca? 36. Como funciona o paradigma de linha de produto? 37. No paradigma de linha de produto, o que é a plataforma? Qual a diferença entre uma plataforma e um framework? 38. Explique o conceito de personalização em massa.

39. Suponha que um cliente requisite o desenvolvimento um determinado tipo de software com o qual sua empresa não tem experiência. Seu gerente sugere a adoção do paradigma de desenvolvimento baseado em linha de produto. Esta é uma boa ideia? Sob quais condições? 40. Quais são os potenciais benefícios do paradigma de linha de produto na engenharia de software?