Ola,
estou começando a estudar OO em java.
Depois de ler o capitulo hoje, fiz um exercício. Gostaria de saber si ele pode ser considerado correto, quero saber si estou no caminho certo!
O exercício é:
- Crie uma classe para simular o funcionamento de um motor. A classe Motor deve possuir as variáveis velocidade em RPM ( rotações por minuto), fabricante, voltagem,
status do motor (ligado/desligado) e os métodos ligaMotor, desligaMotor, verificaVelocida.
Olhem o que eu fiz :
package motor;
public class Motor {
static int velocidade = 80 ,voltagem = 12;
boolean status;
String fabricante;
void ligaMotor(int voltagem,int velocidade){
status = true;
System.out.println("Motor ligado");
}
void desligaMotor(){
status = false;
System.out.println("Motor desligado");
}
int verificaVelocidade(int velocidade){
return velocidade;
}
public static void main(String args[]){
Motor motor = new Motor();
motor.fabricante = "Ford";
System.out.println("O fabricante do motor é " + motor.fabricante);
motor.ligaMotor(voltagem,velocidade);
System.out.println("A velocidade é " + motor.verificaVelocidade(velocidade));
motor.desligaMotor();
}
}
Esta mais o menos certo pq que vc usou as variareis de instância com static?
Olá luiz!
O método ligaMotor não precisa receber parâmetro algum, afinal você nem os utiliza ele poderia ficar assim:void ligaMotor(){
status = true;
System.out.println("Motor ligado");
}
O mesmo para o método verificaVelocidade(), ficaria assim:int verificaVelocidade(){
return velocidade;
}
E claro, para chamar os mesmo, não é necessário passar os parâmetros também.
Outra coisa, para você criar uma instâcia da classe Motor ela precisa ter um construtor. Esse construtor poderia, por exemplo, receber o nome do fabricante do motor.
public class Motor{
...
String fabricante;
public Motor(String fabricante){
this.fabricante = fabricante;
}
...
}
Você não chegou a testar esse código?
Até mais!
Para poderem ser usadas no main.
Sim, concordo com vc Vin so gostaria de saber se ele sabia !
Ops… mancada minha, foi mal, Marcio.
public class Motor {
boolean status = false;
int velocidade = 0;
int voltagem = 0;
String fabricante = "";
void ligaMotor(int voltagem) {
this.voltagem = voltagem;
status = true;
System.out.println("Motor ligado, voltagem = " + this.voltagem);
}
void desligaMotor() {
status = false;
System.out.println("Motor desligado");
}
int verificaVelocidade() {
return velocidade;
}
public static void main(String args[]) {
Motor motor = new Motor();
motor.fabricante = "Ford";
System.out.println("O fabricante do motor é " + motor.fabricante);
motor.ligaMotor(12);
System.out.println("A velocidade é " + motor.verificaVelocidade());
motor.desligaMotor();
}
}
Boa noite ziulluiz,
Fico legal do jeito que você fez, eu fiz algumas alterações:
- Criando os atributos setando os valores default
- No método ligaMotor() tirei o parametro velocidade porque nesse caso acho que ficaria melhor criar um método tipo
protected int acelera(int velocidade) {
this.velocidade = velocidade;
return velocidade;
}
e no motor deixar realmente só a voltagem.
- No método verificaVelocidade você só vai verificar, ou seja só retornar e não atribuir uma nova velocidade e retornar a mesma entendeu?
E quando você instancia a classe e vai usar um método que tem que ser passado um valor como parametro você pode tanto passar direto com as variaveis como você fez, ou passar o valor direto como eu fiz.
Esperto ter ajudado ! 
Amigos vai uma maneira simples usando os métodos getter e setter !
[code]/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
/**
*
-
@author Marcio Zampiron
*/
public class Motor {
private int velocidade;
private String fabricante;
private int voltagem;
private boolean status;
public Motor(int velocidade, String fabricante, int voltagem, boolean status) {
this.velocidade = velocidade;
this.fabricante = fabricante;
this.voltagem = voltagem;
this.status = status;
}
public Motor() {
}
public String getFabricante() {
return fabricante;
}
public void setFabricante(String fabricante) {
this.fabricante = fabricante;
}
public boolean isStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
public int getVelocidade() {
return velocidade;
}
public void setVelocidade(int velocidade) {
this.velocidade = velocidade;
}
public int getVoltagem() {
return voltagem;
}
public void setVoltagem(int voltagem) {
this.voltagem = voltagem;
}
public void ligarMotor() {
if (!status) {
this.setStatus(true);
System.out.println(“Motor esta ligado!”);
} else {
System.out.println(“Motor já esta ligado!”);
}
}
public void desligarMotor() {
if (!status) {
System.out.println(“Motor já esta desigado!”);
} else {
this.setStatus(false);
}
System.out.println(“Motor esta desligado!”);
}
public void verificarVelocidade(){
System.out.println("Velocidade: "+this.getVelocidade());
}
public static void main(String[] args) {
Motor motor = new Motor(0, “Ferrari”, 24, false);
motor.ligarMotor();
motor.verificarVelocidade();
motor.setVelocidade(100);
motor.verificarVelocidade();
motor.setVelocidade(0);
motor.verificarVelocidade();
motor.desligarMotor();
}
}
[/code]
Ola, eu usei as variaveis de instância como static, porque até hoje, eu ainda nao sabia o que era variável de instância e variavel de classe!
Quer dizer, ainda nao estou sabendo os conceitos muito bem!
[quote=Vingdel]Olá luiz!
O método ligaMotor não precisa receber parâmetro algum, afinal você nem os utiliza ele poderia ficar assim:void ligaMotor(){
status = true;
System.out.println("Motor ligado");
}
O mesmo para o método verificaVelocidade(), ficaria assim:int verificaVelocidade(){
return velocidade;
}
E claro, para chamar os mesmo, não é necessário passar os parâmetros também.
Outra coisa, para você criar uma instâcia da classe Motor ela precisa ter um construtor. Esse construtor poderia, por exemplo, receber o nome do fabricante do motor.
public class Motor{
...
String fabricante;
public Motor(String fabricante){
this.fabricante = fabricante;
}
...
}
Você não chegou a testar esse código?
Até mais![/quote]
blz, estou começando a entender, preciso saber os conceitos de variavel de instância , de variável de classe, e tambem saber o conceito de metodo construtor!
Pois ae eu começo a fazer os exercícios melhor!
o que voce acha?
Para poderem ser usadas no main.
[/quote]
Isso mesmo, porque o main é um método statico, entao preciso qualificar a variavel como static para poder ser usada no main!
[quote=MarcioCasteloBranco]Sim, concordo com vc Vin so gostaria de saber se ele sabia !
[/quote]
sim eu sabia, ^^.
Estou em duvida na questao de conceitos referentes a VARIÀVEL DE INSTÂNCIA, saber o que é variavel de instância!?
Saber o que é variavel de classe!?
E saber em qual situação, eu tenho que criar um método construtor ? e tambem saber em qual situação ele deve conter parâmetros?
E saber em qual situação, eu devo usar um método costrutor default !?
Amigão qual livro vc esta usando como referência para seus estudos?
[quote=RodrigoM91][code]
public class Motor {
boolean status = false;
int velocidade = 0;
int voltagem = 0;
String fabricante = "";
void ligaMotor(int voltagem) {
this.voltagem = voltagem;
status = true;
System.out.println("Motor ligado, voltagem = " + this.voltagem);
}
void desligaMotor() {
status = false;
System.out.println("Motor desligado");
}
int verificaVelocidade() {
return velocidade;
}
public static void main(String args[]) {
Motor motor = new Motor();
motor.fabricante = "Ford";
System.out.println("O fabricante do motor é " + motor.fabricante);
motor.ligaMotor(12);
System.out.println("A velocidade é " + motor.verificaVelocidade());
motor.desligaMotor();
}
}
[/code]
Boa noite ziulluiz,
Fico legal do jeito que você fez, eu fiz algumas alterações:
- Criando os atributos setando os valores default
- No método ligaMotor() tirei o parametro velocidade porque nesse caso acho que ficaria melhor criar um método tipo
protected int acelera(int velocidade) {
this.velocidade = velocidade;
return velocidade;
}
e no motor deixar realmente só a voltagem.
- No método verificaVelocidade você só vai verificar, ou seja só retornar e não atribuir uma nova velocidade e retornar a mesma entendeu?
E quando você instancia a classe e vai usar um método que tem que ser passado um valor como parametro você pode tanto passar direto com as variaveis como você fez, ou passar o valor direto como eu fiz.
Esperto ter ajudado ! :D[/quote]
Ola, RodrigoM91 ,
Pow você ajudou muito, valeu mesmo, tipo, essas alterações que você fez, ficou legal!
Entendi a questão do método verificaVelocidade, que no caso eu nao tenho necessidade de atribuir um novo valor, somente tenho que verificar a velocidade, ou seja
mostrar o valor da mesmo, que ja está sendo inicializada com (ZERO) no corpo da classe! é isso mesmo, será que entendi mesmo?
Deixa eu ver si eu entendi, a velocidade ae no seu codigo, está valendo (ZERO) quando retornada do método verificaVelocidade né?
Entendi a questão de passar valor direto como voce fez!
Ola Marcio,
Estou usando o livro Java6 Ensino Didático
Desenvolvento e Implementando Aplicações 2° EDIÇÂO
Sérgio Furgeri
Ola Marcio,
Estou usando o livro Java6 Ensino Didático
Desenvolvendo e Implementando Aplicações 2° EDIÇÂO
Sérgio Furgeri
Muito bom este livro eu comecei com ele!
Uma boa sugestão é o famoso livro do Deitel,
Como programar Java.