Ybadoo - Soluções em Software Livre
Tutoriais
Programação Orientada a Objetos

Slides

Exercício 07.01 Por que um entendimento profundo dos relacionamentos e responsabilidades de um objeto é importante (Sintes, 2002)?

Exercício 07.02 O Zoológico XPTO necessita de uma solução para registrar os animais sobre sua responsabilidade. Um animal é composto pelo nome de sua espécie, pelo nome do animal e por um apelido, como por exemplo, Chico, um elefante-da-savana (Loxodonta africana). Além de registrar os animais, o Zoológico XPTO precisa das seguintes funcionalidades: a) um método para retornar os animais de uma determinada espécie; b)um método para retornar o nome de todas as espécies registradas no Zoológico XPTO, sem duplicações; c) um método para contabilizar o número de animais disponíveis em cada uma das espécies registradas no Zoológico XPTO. Desenvolva a solução solicitada pelo Zoológico XPTO, apresentando a modelagem do projeto em Unified Modeling Language (UML) e a sua implementação.

Exercício 07.03 Desenvolva uma classe Televisão e uma classe ControleRemoto que podem controlar o volume e trocar os canais da televisão. O controle de volume permite aumentar ou diminuir a potência do volume de som em uma unidade de cada vez, no intervalo de 0 a 50. O controle de canal permite aumentar ou diminuir o número do canal em uma unidade, porém, também possibilita trocar para um canal específico, no intervalo de 1 a 500. Os canais disponíveis são apenas os canais cujos números sejam divisíveis por 3 ou por 5. Caso o usuário selecione um canal inválido, a Televisão deverá selecionar o próximo canal válido. Desenvolva a solução solicitada, apresentando a modelagem do projeto em Unified Modeling Language (UML) e a sua implementação.

Exercício 07.04 Muitos pacotes de software para processamento de textos populares têm verificadores ortográficos incorporados. Usamos recursos de verificação ortográfica na preparação deste livro e descobrimos que, não importando o cuidado que pensávamos ter usado na preparação de um capítulo, o software sempre era capaz de encontrar mais alguns erros de ortografia além dos que havíamos descoberto manualmente. Neste projeto, será pedido que você desenvolva o seu próprio utilitário de verificação ortográfica. Fazemos sugestões para ajudá-lo a começar. Você deve então pensar em adicionar mais recursos. Você pode achar útil usar um dicionário computadorizado como fonte de palavras. Por que digitamos tantas palavras com erros de ortografia? Em alguns casos, simplesmente não conhecemos a grafia correta e, assim, "damos o chute que parece mais razoável". Em alguns casos, trocamos duas letras (por exemplo, "pardão" em vez de "padrão"). Algumas vezes, digitamos duas vezes a mesma letra acidentalmente (por exemplo, "dooce" em vez de "doce"). Algumas vezes, tocamos uma tecla próxima daquela que queríamos (por exemplo, "anibersário" ao invés de "aniversário"). E assim por diante. Projete e implemente um programa de verificação ortográfica. O seu programa mantém um array wordList de strings de caracteres. Você pode digitar estes strings ou obtê-los de um dicionário computadorizado. O seu programa solicita ao usuário que forneça uma palavra. O programa então procura aquela palavra no array wordList. Se a palavra consta no array, o seu programa deve imprimir Palavra está grafada corretamente. Se a palavra não consta no array, seu programa deve imprimir Palavra não está grafada corretamente. Então, seu programa deveria procurar outras palavras em wordList, uma das quais pode ser a palavra que o usuário pretendia digitar. Por exemplo, você pode tentar todas as trocas simples de letras adjacentes no teclado para descobrir que a palavra "padrão" corresponde exatamente a uma das palavras em wordList. Naturalmente, isso implicaria que seu programa testasse todas as trocas simples, como "apdrão", "pardão", "padãro" e "padrão". Quando você encontra uma nova palavra igual a uma em wordList, imprima aquela palavra em uma mensagem tal como Você quis dizer "padrão"?. Implemente outros testes, tais como substituir cada letra duplicada por uma única letra e quaisquer outros testes que você possa desenvolver para aumentar a utilidade do seu verificador ortográfico. Desenvolva a solução solicitada, apresentando a modelagem do projeto em Unified Modeling Language (UML) e a sua implementação (Deitel, 2001).

Exercício 07.05 O jogo da forca é um jogo popular que pode ser jogado simplesmente com um pedaço de papel e lápis. As origens deste jogo não são conhecidas com rigor, mas alguns autores defendem que o jogo surgiu na época Vitoriana, no Reino Unido, sendo possível encontrar referências a este jogo em diversas obras, embora com nomes diferentes. No jogo da forca um jogador tem que descobrir uma palavra escondida, tendo como única informação prévia o número de letras que constituem a palavra. O jogador procede então, por tentativa e erro, sugerindo letras que podem pertencer a palavra. Quando uma letra pertence a palavra, é indicada ao jogador a posição (ou posições, caso a letra apareça múltiplas vezes) em que a letra aparece na palavra. Quando a letra não pertence a palavra, é incrementado um contador de tentativas (normalmente representado através do desenho de um indivíduo sendo enforcado). O jogo termina quando o jogador descobre todas as letras da palavra escondida (situação em que vence o jogo) ou quando esgota o número de tentativas possíveis (no máximo dez tentativas, situação em que perde o jogo). Projete e implemente um programa que permita ao usuário jogar o jogo da forca no computador. O programa selecionará aleatoriamente uma palavra de seu dicionário para que o usuário a descubra. Desenvolva a solução solicitada, apresentando a modelagem do projeto em Unified Modeling Language (UML) e a sua implementação.

Exercício 07.06 (Deitel, 2003) Desenvolva um programa que reproduza o jogo adivinhe o número como segue: o programa escolhe um número para ser adivinhado selecionando um inteiro aleatório no intervalo de 1 a 1000. O programa apresenta a mensagem Adivinhe um número entre 1 e 1000. O jogador insere o palpite a ser analisado pelo programa. Se o palpite do jogador estiver incorreto, o programa deve exibir a mensagem Muito alto! Tente novamente! ou Muito baixo! Tente novamente! para auxiliar o jogador a se aproximar da resposta correta. Quando o usuário inserir a resposta correta, o programa deve apresentar a mensagem Parabéns! Você adivinhou o número!. Desenvolva a solução solicitada, apresentando a modelagem do projeto em Unified Modeling Language (UML) e a sua implementação.

Exercício 07.07 (Vianna, 1914) A base de um sistema de numeração é o número de unidades de uma ordem qualquer, necessário para formar uma unidade de ordem imediatamente superior. A base de um sistema de numeração pode ser um número inteiro qualquer, de modo que há uma infinidade de sistemas de numeração, e nesses diversos sistemas os números inteiros são representados com tantos algarismos quantas forem as unidades da base. Os sistemas de numeração tem seu nome derivado da sua base, ou seja, o sistema binário tem base dois, o sistema octal tem base oito e o sistema decimal tem base dez. Desenvolva um sistema que realizar a conversão entre bases, aceitando números escritos na base dois ou binária até a base trinta e seis, cujo alfabeto é composto pelos elementos {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z}. Desenvolva a solução solicitada, apresentando a modelagem do projeto em Unified Modeling Language (UML) e a sua implementação.

Exercício 07.08 (Goodrich, 2007) Implemente a compressão e descompressão de documentos baseada na codificação de Huffman, apresentando a modelagem do projeto em Unified Modeling Language (UML) e a sua implementação.