• Nenhum resultado encontrado

Desenvolvimento Web TCC Turma A-1 /

N/A
N/A
Protected

Academic year: 2021

Share "Desenvolvimento Web TCC Turma A-1 /"

Copied!
5
0
0

Texto

(1)

Desenvolvimento Web – TCC-00.226

Turma A-1 / 2013.2

Professor Leandro A. F. Fernandes

Instituto de Computação Universidade Federal Fluminense

Lista de Exercícios 02

Orientação a Objetos

1) Identifique as classes, atributos e métodos necessários para modelar e implementar:

a) Uma conta corrente que possui um número, um saldo, um status que informa se ela é especial ou não, um limite e um conjunto de movimentações.

b) Uma movimentação que possui uma descrição, um valor e uma informação se ela é uma movimentação de crédito ou débito.

c) Um banco que armazene um conjunto de contas e forneça métodos que permitam que sejam feitos criações de conta, exclusão de contas, saques (uma conta corrente só pode fazer saques desde que o saldo remanescente não seja negativo), depósitos, emissão de saldo e extrato e transferência entre contas.

Uma vez feita a modelagem, aguarde a aulas sobre herança e encapsulamento e implemente as classe em Java.

2) Implemente uma classe Bicicleta para representar uma bicicleta. Toda bicicleta tem uma velocidade (atributo velocidade) e uma marcha (atributo marcha). Além disto, a bicicleta pode: acelerar (método acelerar), frear (método frear) e apresentar o seu estado atual (método imprimirEstados). Em sua construção a classe deve iniciar na marcha 0 (zero) e com velocidade 0 (zero).

Implemente uma segunda classe como sendo a classe principal do sistema. Ela deve ter o método main e ser responsável por criar objetos do tipo bicicletas, interagir com seus métodos e, a cada interação, imprimir da saída padrão o estado atual a bicicleta manipulada. 3) Altere a classe do exercício anterior para que ela apresente um novo atributo que representa a

velocidade máxima desempenhada pela bicicleta. De forma específica:

a) Inclua o atributo velocidadeMaxima, que representa o valor máximo que o atributo velocidade pode apresentar.

b) O valor de velocidadeMaxima deve ser atribuído no momento em que o objeto é criado utilizando um construtor de inicialização. A classe Bicicleta não deverá mais ter construtor padrão.

c) O método imprimirEstados, quando invocado, deve apresentar (na saída padrão) o valor da velocidadeMaxima que foi atribuída ao objeto, além dos valores dos outros atributos.

d) Ao incrementar a velocidade, o objeto deve impedir que a velocidade da bicicleta supere a velocidadeMaxima.

(2)

4) Implemente um time de futebol onde cada jogador pode apresentar uma posições táticas. O seu programa deve apresentar:

a) Uma classe Time que deve ter 11 jogadores e métodos que permitam a substituição e consulta dos jogadores atuais.

b) Uma classe Jogador que apresenta uma posição tática, um número e um nome. Crie um construtor para inicializar esses atributos e métodos para consultar seus estados.

c) Um tipo enumerado PosicaoTatica que codifica as seguintes posições: goleiro, zagueiro, lateral, meia e atacante.

A classe principal do programa deve conter apenas o método principal. A partir deste método deverá ser criada uma instância de time, instâncias de jogadores e chamadas aos métodos de atribuição e consulta implementados.

5) Uma moeda apresenta um valor e um tipo monetário. São exemplos de tipos monetários: Real, Dólar ou Euro. Cada tipo monetário apresenta uma cotação em relação ao Real, isto é: R$1,00 vale R$1,00; US$1,00 vale R$2,25; e €1,00 vale R$3,01.

Usando a classe Scanner, escreva um programa que peça para o usuário informar um valor expresso em um dos tipos monetários disponíveis no sistema e o converta para outro dos tipos monetários disponíveis. Os tipos de origem e destino também devem ser escolhidos pelo usuário. O método principal deverá apresentar o resultado da conversão para o usuário via saída padrão.

O nome da classe principal deverá ser ConversorMonetario. O valor informado pelo usuário e o tipo monetário de origem deverão ser utilizados na criação de uma instância da classe Valor. Um tipo monetário é representado pela classe Moeda, que possui como atributos seu nome e valor de conversão para Real.

A classe Valor deverá ter os dois atributos citados anteriormente, um construtor de inicialização, métodos de consulta a seus atributos e um método que recebe como argumento uma instância de Moeda e retorna uma instância de Valor que representa o objeto Valor corrente convertido para a moeda indicada.

6) Implemente uma classe que represente polinômios com uma variável. Esta classe deve conter:

a) Diferentes construtores. b) Métodos de acesso.

c) Operações de adição e multiplicação.

d) Um método que faça a avaliação do polinômio, dado um número real .

Escreva, também, uma classe principal que testa os comportamentos da classe que representa o polinômio.

7) A hierarquia de classificação científica dos seres vivos segue a taxonomia de Lineu. Abaixo é apresentado um sumário parcial do mais geral (reino) para o mais específico (Espécie) na classificação. Neste sumário, Império, Domínio e Sub/Superdivisões são omitidos por simplicidade:

a) Reino

b) Filo (animais) / Divisão (plantas) c) Classe

(3)

d) Ordem e) Família f) Gênero g) Espécie

Com base no sumário acima, a classificação do homem, cão e mosca é dada por:

Homem Cão Mosca

Reino Animalia Animalia Animalia

Filo Chordata Chordata Arthropoda

Classe Mammalia Mammalia Insecta

Ordem Primata Carnívora Díptera

Família Hominidae Canidae Muscidae

Gênero Homo Canis Musca

Espécie Homo sapiens Canis familiaris Musca domestica

Fica evidente a partir deste exemplo que existe uma organização hierárquica nas classificações para o homem, cão e mosca. Esta hierarquia pode ser expressão por uma árvore:

Neste exercício:

a) Represente por meio de classes Java a hierarquia de classificação que envolve homem, cão e mosca na taxonomia de Lineu.

b) Em sua modelagem verifique se faz sentido todas as classes serem concretas ou se é preciso definir alguma(s) delas como abstrata(s).

Animalia

Chordata Arthropoda

Mammalia Insecta

Primata Carnívora Díptera

Hominidae Canidae Muscidae

Homo Canis Musca

(4)

c) Implemente o método String obterDescricao() em Animalia e sobrescreva este método em toda subclasse, de modo que quando invocado retorne toda a taxonomia de uma dada instância. Por exemplo, para uma instância de Homo sapiens o String retornado seria:

Reino Aimalia Filo Chordata Classe Mammalia Ordem Primata Família Hominidae Gênero Homo

Espécie Homo sapiens

8) De forma incremental, traduza o seguinte conjunto de classes em um programa Java. Importante: Não são permitidas chamadas diretas ou indiretas a System.in, System.out ou similares de dentro das classes criadas.

a) Classe: Porta

Atributos: aberta, cor, dimensaoX, dimensaoY, dimensaoZ

Métodos: void abrir(), void fechar(), void pintar(Cor cor), boolean estaAberta()

Para testar, crie uma porta, abra e feche a mesma, pinte-a de diversas cores (um tipo enumerado criado por você), altere suas dimensões e use o método estaAberta para verificar se ela está aberta.

b) Classe: Casa

Atributos: cor, porta1, porta2, porta3

Método: void pintar(Cor cor), int totalDePortas(), int quantidadeDePortasAbertas()

Para testar, crie uma casa e pinte-a. Crie três portas e coloque-as na casa; abra e feche as mesmas como desejar. Utilize o método quantasPortasEstaoAbertas para imprimir o número de portas abertas.

c) Classe: Edificio

Atributos: cor, totalDePortas, totalDeAndares, portas[] Métodos: void pintar(Cor cor), int totalDePortas(),

int quantasPortasEstaoAbertas(), void adicionarAndar(), void adicionaPorta(Porta p), int totalDeAndares()

d) Para testar, crie um edifício e pinte-o. Crie seis portas e coloque-as no edifício através do método adicionaPorta, abra e feche-as como desejar. Utilize o método quantasPortasEstaoAbertas para imprimir o número de portas abertas e o método totalDePortas para imprimir o total de portas em seu edifício. Crie alguns andares utilizado o método adicionarAndar e retorne o número total de andares utilizando o método totalDeAndares.

e) As classes Casa e Edificio ficaram muito parecidas. Crie a classe Imovel e coloque nela tudo o que Casa e Edificio têm em comum. Faça Imovel superclasse de Casa e Edificio. Note que alguns métodos em comum não poderão ser implementados por Imovel (e.g., quantasPortasEstaoAbertas e totalDePortas). Logo, esses deverão ser declarados como métodos abstratos. 9) Implemente um conjunto de classes que representam uma variação do jogo Batalha Naval.

Nesta variação, o tabuleiro possui 8×8 casas e sobre essas casas são distribuídas três peças, cada uma ocupando uma casa. Cada uma das peças possui uma pontuação (10, 20 e 30 pontos, respectivamente). Elas são caracterizadas por instâncias da classe Peca, sendo

(5)

posicionadas aleatoriamente no momento de criação do objeto da classe Tabuleiro. O jogador poderá executar até 5 tiros para tentar atingir as peças. A qualquer momento do jogo o jogador poderá consultar o tabuleiro para verificar quantos pontos fez na partida. Utilize adequadamente o conceito de encapsulamento ao programar as duas classes requeridas. Note que o jogador não poderá ver a localização das peças. Caso contrário fica fácil acertá-las.

10) Crie uma classe abstract de polígono. Todo polígono deve saber calcular sua área. Crie três tipos de especializações, respectivamente, para círculo, retângulo e triângulo. Sobrescreva nas especializações o método abstrato de cálculo de área declarado na classe de polígono. Crie uma classe de polígono complexo que pode ser constituída por um ou mais polígonos. Forneça um método que calcule a área deste de polígonos completos. Utilize o princípio de polimorfismo sempre que possível.

11) A integral de uma função para um determinado intervalo é a soma de sua área naquele intervalo. Ela pode ser calculada numericamente a partir de aproximações de retângulos. Implemente:

a) A classe Integral juntamente com o método

double calcularIntegral(Funcao f, double a, double b),

que recebe um objeto Funcao e um intervalo [a, b] para calcular a integral no intervalo. A classe Integral tem um atributo denominado iD (intervalo de discretização), que corresponde a largura fixa de cada retângulo.

b) A classe Funcao é uma classe abstrata que tem um método

double avaliar(double x), que recebe um valor x e retorna o valor da função em x.

c) Classes Exponencial e Cubica como especializações da classe Funcao para calcular, respectivamente, as funções ( ) = e ( ) = , sobrescrevendo o método avaliar da classe ancestral.

d) Uma classe descendente da classe Funcao denominada FuncaoAgregadora, que tem um vetor de objetos descendentes da classe Funcao. O valor retornado pelo método avaliar de FuncaoAgregadora é obtido por meio da soma de diversas funções que fazem parte desta função.

Referências

Documentos relacionados

4 Este processo foi discutido de maneira mais detalhada no subtópico 4.2.2... o desvio estequiométrico de lítio provoca mudanças na intensidade, assim como, um pequeno deslocamento

Este trabalho buscou, através de pesquisa de campo, estudar o efeito de diferentes alternativas de adubações de cobertura, quanto ao tipo de adubo e época de

O objetivo deste estudo foi determinar a prevalência da coccidiose em frangos de corte no ano de 2012 em uma integração localizada na região noroeste do estado do

Preliminarmente, alega inépcia da inicial, vez que o requerente deixou de apresentar os requisitos essenciais da ação popular (ilegalidade e dano ao patrimônio público). No

17 CORTE IDH. Caso Castañeda Gutman vs.. restrição ao lançamento de uma candidatura a cargo político pode demandar o enfrentamento de temas de ordem histórica, social e política

O enfermeiro, como integrante da equipe multidisciplinar em saúde, possui respaldo ético legal e técnico cientifico para atuar junto ao paciente portador de feridas, da avaliação

O desenvolvimento desta pesquisa está alicerçado ao método Dialético Crítico fundamentado no Materialismo Histórico, que segundo Triviños (1987)permite que se aproxime de

Sendo assim, o presente estudo visa quantificar a atividade das proteases alcalinas totais do trato digestório do neon gobi Elacatinus figaro em diferentes idades e dietas que compõem