[RESOLVIDO]Exercicio OO

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 é:

  1. 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 ! :smiley:

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!

Vai um link muito bom do Guj:
http://www.guj.com.br/search?cx=partner-pub-9448585618971060%3A4001950301&cof=FORID%3A10&ie=UTF-8&q=Variaveis+de+instancia&x=0&y=0&siteurl=www.guj.com.br%2Fjava%2F243175-exercicio-oo%231257486#924

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

[quote=MarcioCasteloBranco]Vai um link muito bom do Guj:
http://www.guj.com.br/search?cx=partner-pub-9448585618971060%3A4001950301&cof=FORID%3A10&ie=UTF-8&q=Variaveis+de+instancia&x=0&y=0&siteurl=www.guj.com.br%2Fjava%2F243175-exercicio-oo%231257486#924[/quote]

Ola Marcio,

Estou usando o livro Java6 Ensiono 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.