Exercícios Java (desafio)

[b][i]Caros amigos tenho alguns exercicios de Java da aula de programação
orientada a objetos que eu não consegui resolver.
Talvez seja pq eu seja um novato nessa área e ainda seja inexperiente.
Mas para vcs que ja são feras tenho certeza que esses exercicios serão
considerados uma simples diversão.
Para os que puderem me ajudar, os exercicios são esses:
*1 ? Crie uma classe Porta em JAVA, que represente uma porta e possua os seguintes atributos:
1 estaAberta
2 cor
3 dimensaoX
4 dimensaoY
5 dimensaoZ
e os seguintes métodos:
6 abre,
7 fecha,
8 pinta,
9 estaAberta
Teste sua Porta numa classe de teste. Nela, crie uma Porta, feche a mesma, pinte-a de diversas cores, altere suas dimensões e use o método estaAberta para verificar se ela está aberta.

*2 ? Desenvolva em JAVA uma classe Casa que represente uma casa e possua os seguintes atributos:
1 cor
2 portas (Lista de portas, ou seja, Array)
e os seguintes métodos:
1 pinta
2 quantasPortasEstaoAbertas
Teste sua Casa numa classe de teste. Nela, crie uma casa e pinte-a. Crie 3 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.

*4 ? Qual a diferença de se usar Métodos Abstratos e Interfaces?

*5 ? Crie em JAVA uma classe Racional que represente um número racional qualquer da forma p/q, onde p é o numerador da fração e q é o denominador da fração. As operações devem fazer cálculos aritméticos com frações, sempre no modo p/q. São as seguintes:

1 Adição de 2 Racionais
2 Subtração de 2 Racionais
3 Multiplicação de 2 Racionais
4 Divisão de 2 Racionais
5 Imprimir o Racional na forma p/q
6 Imprimir o Racional em ponto flutuante de precisão dupla.

Crie um programa de Teste para a classe Racional, de maneira que um usuário possa entrar com os números racionais na forma p/q e escolher a operação a ser feita através de um menu de opções. Toda a operação deve imprimir seu resultado na tela automaticamente.

É importante ressaltar que o uso de padrões de programação é imprescindível nas questões práticas, e que será avaliado não só a execução do código realizado, mas também todas as características de programação em JAVA ensinadas em sala de aula. Apenas para relembrar, não esqueça de utilizar corretamente os modificadores de acesso nem o conceito de encapsulamento. O uso de Tratamento de Exceções corretamente será bonificado com aumento substancial na nota, assim como Interfaces Gráficas.

Se os amigos puderem me ajudar, ficaria eternamente grato!!!
qualquer coisa entre em contato comigo: davidcostamsn@yahoo.com.br

Desde já agradeço

David

Cara, se liga, o pessoal aqui diz sempre, mas não se cansa…

Não é de costume o pessoal fazer exercicio de facul…
vc acha q alguem vai perder tempo fazendo seu dever de casa???
vá tentando fazer e poste as duvidas…

Marck

To doido para ter meus próprios deveres de casa.

oi david!

de que faculdade eh esse trabalho? alguns exercicios parecem com alguns que eu ja vi

O mais engraçado é que ele não é o primeiro que escreve “desafio” no título! hahahahahaha…

Manda as suas dúvidas que a gente te ajuda a resolver.

David, tenta fazer e vai postando as duvidas q o pessoal vai ajudando, mtos de nós como é meu caso, trabalham e só tem tempo de ir ajudando em coisas pequenas mas fazer tudo é embaçado e msm q vc erre é comum, seu professor nao vai te matar por nao saber… 8)

[quote=Paulo Silveira]oi david!

de que faculdade eh esse trabalho? alguns exercicios parecem com alguns que eu ja vi[/quote]

esses exercícios eu vi na apostila fj-11 da Caelum…e tem coisa misturada com os exc da deitel…

tenho tudo feito aqui…
mas no funny se você não tentar…nem começou!??

abraços!

Troféu cara-de-pau de fevereiro.
(Talvez apareça piores)

perai mais 1? cara isso aqui eh um forum para discurssao e nao para competir… poe sua sintaxe e diz aonde nao ta conseguindo entender ou o erro q ta dando…

vlw!! so mais uma dica www.google.com e pesquisa o que é um forum, para que serve… :smiley:

Oi,
Bom, realmente concordo com as pessoas aqui do forum sobre
a opinião de programas feitos, mais discordo com a falta de educação
de cada 1.

O ideal seria você mesmo fazer e aprender esse exercicio,
mesmo sendo iniciante (que a final eu não sei se você é, e nem conheco
o seu parentesco de conhecimento para com o java) você pode colocar qualquer
duvida aqui que será respondida… mesmo não sabendo nem começar o exercicio
agente assumira a divida de ajudalo.

Então, uma duvida sua que eu poderia tentar ajudar seria essa:

Qual a diferença de se usar Métodos Abstratos e Interfaces?

Respostas:

O ideal seria você entender primeiramente o que seria uma classe abstrata,
logo, para uma classe se tornar abstrata, ele deve possuir pelo menos 1 método abstrato.
Um método abstrato você mesmo define como seria a implementação dele.

Achei esse exemplo bem legal de um amigo aqui no guj:

“vc tem o metodo correr() na class animal, ai a classe cavalo implementa o metodo correr,
e depois a class tartaruga implementa o correr tbm… sendo q,
o cavalo corre de uma forma e a tartaruga de outra entao… vc implementou um metodo abstract
(diferente em cada classe)…”

Caracteristicas de uma classe Abstrata:

  • Toda classe abstract tem que ter pelo menos um método abstrato.

  • Não é permitido instanciar objetos de uma classe abstrata (claro, pois existe pelo menos um método que não possui implementação, aquele que é abstrato)

  • Uma classe que estende uma classe abstrata, se esta não for abstrata também, deve forneceer a implementação do(s) método(s) abstrato(s), “sobrescrevendo” o(s) método(s) abstrato(s) herdado(s).

  • Se a classe que a extende também for abstrata, esta pode fornecer ou não implementação para os métodos herdados, sendo que a primeira clase concreta (não abstrata) que herdar esse hierarquia tem que obrigatóriamente fornecer a implementação dos métodos abstratos herdados.

-------

Para entender melhor uma Interface, entre no tópico:

http://www.guj.com.br/posts/list/49746.java

Pois seria muito grande eu explicar pra você… e não achei nenhuma maneira mais simplificada…

Tchauzin!

1 curtida

No caso do Java, você não é obrigado a ter nenhum método abstrato para a classe ser abstrata, essa definição é herdada do C++. Basta declara-la como abstract class.

Um exemplo de classe abstrata sem nenhum método abstrato é a classe KeyAdapter, do próprio Java.

so para completar o que o vinny falou o inverso é obrigatorio, se tiver um metodo abstrato a class deve ser abstrata… o inverso como ele falou nao eh obrigado ja que em classes abstrata posso implementar os metodos.

[color=blue]davidquest , tambem sou iniciante e aproveitei seu exemplo pra treinar um pouco… ai vai o meu codigo …[/color]
[color=red]exercicio 1 ( Porta ) :[/color]

[code]public class Porta {

boolean estaAberta ;
String cor ;
double dimensionX , dimensionY ;

void abre(){
	
	this.estaAberta = true ;
}
void fecha(){
	
	this.estaAberta = false ;
}
void pinta( String color ){
	
	this.cor = color ;
}
String esta_Aberta (){
	
	if ( this.estaAberta == true ) return "SIM" ;
	else return "NÂO" ;
}

} // fim Porta[/code]

[color=red]Programa de teste :[/color]

[code]public class TestePorta {

public static void main(String[] args) {

	String[] cores = { "azul" , "verde" , "vermelho" , "branco" , "amarelo" , "preto" };
	Porta p1 = new Porta() ;
	
	// teste ( passo 1 )
	p1.fecha();
	p1.pinta( cores[0] );
	p1.dimensionX = 1.21 ;
	p1.dimensionY = 2.32 ;
	
	System.out.println("===> PORTA CRIADA <========( passo 1 )====");
	System.out.println("* COR -> " + p1.cor );
	System.out.println("* ALTURA -> " + p1.dimensionY + "m");
	System.out.println("* LARGURA -> " + p1.dimensionX + "m");
	System.out.println("* ESTA ABERTA ? -> " + p1.esta_Aberta() );
	System.out.println("===========================> teste ok <===\n");
	
	// teste ( passo 2 )
	p1.abre();
	p1.pinta( cores[4] );
	p1.dimensionX = 0.67 ;
	p1.dimensionY = 1.95 ;
	
	System.out.println("===> PORTA CRIADA <========( passo 2 )====");
	System.out.println("* COR -> " + p1.cor );
	System.out.println("* ALTURA -> " + p1.dimensionY + "m");
	System.out.println("* LARGURA -> " + p1.dimensionX + "m");
	System.out.println("* ESTA ABERTA ? -> " + p1.esta_Aberta() );
	System.out.println("===========================> teste ok <===\n");
}

} // fim TestePorta[/code]

[color=blue]Agora o resto eh contigo … espero ter ajudado …
Qualquer duvida estamos a disposição …
[/color]

Metal,

Modificar o acesso dos atributos com o “private”, é uma ótima idéia.

Ha!! E só p/ uma boa prática.

So pra alinhar os conceitos,

Uma classe abstrata 'e uma classe que 'e declarada abstract, ela pode ou nao conter metodos abstratos, ou seja nao 'e obrigatorio ter um metodo abstrato :wink:

diferente das interfaces classes abstratas podem conter metodos static and final. Classes abstratas podem incluir metodos implementados diferentemente das interfaces que soh possuem a assinatura dos metodos.

a aplicacao das classes abstratas eh justificada quando voce quer deixar o trabalho pela metade, em outras palavras tem uma classe base para outras subclasses mas que possuem alguns metodos comuns as classes que vao herdar a classe mae.

dica: se voce possue uma classe abstrata apenas com metodos abstratos, transforme-a em uma interface.

[quote=davidquest]Caros amigos tenho alguns exercicios de Java da aula de programação
orientada a objetos que eu não consegui resolver.
Talvez seja pq eu seja um novato nessa área e ainda seja inexperiente.
Mas para vcs que ja são feras tenho certeza que esses exercicios serão
considerados uma simples diversão.
[/quote]

Inexperiente em Java, mas muito experiente em outras áreas - psicologia aplicada, por exemplo …

“vc tem o metodo correr() na class animal, ai a classe cavalo implementa o metodo correr,
e depois a class tartaruga implementa o correr tbm… sendo q,
o cavalo corre de uma forma e a tartaruga de outra entao… vc implementou um metodo abstract
(diferente em cada classe)…”

Tchauzin![/quote]

Isso não é polimorfismo???

Ops… algum coveiro andou desenterrando tópicos a muito tempo mortos por aqui… :roll:

Só pra comentar… esse exercicio parece o da apostila FJ-11 da Caelum.

E ai meu amigo

Eu acredito que a melhor coisa a se fazer e mesmo você
Tentar e tentar e tentar