[RESOLVIDO]Exercicio OO

[quote=MarcioCasteloBranco]Uma boa sugestão é o famoso livro do Deitel,
Como programar Java.[/quote]

Blz Marcio,

tipo, ja dei uma lida ali nos links que você me passou, ja clariou mais ainda minha mente!

Vou conseguir esse livro ae pra mim, como programar Java, Deitel!

Obrigado amigo, abraço

[quote=MarcioCasteloBranco]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][/quote]

Muito bom, Marcio
Nesse caso ae voçê, ja usou conceitos de encapsulamento né?
qualificou os atributos como private, ae para cada atributo é necessário um método set e get !

Estou correto?

Valeu

[quote=MarcioCasteloBranco]Muito bom este livro eu comecei com ele!
[/quote]

È acho esse livro, muito didatico mesmo…

Sim e isto aí, parabéns vc tem uma boa percepção,
Bem vindo a JAVALAND!!
VLW

[quote=MarcioCasteloBranco]Sim e isto aí, parabéns vc tem uma boa percepção,
Bem vindo a JAVALAND!!
VLW[/quote]

Vlw mano, obrigado pelo elogio!

abraço té + tudo de bom

Só um detalhe gente…

muito cuidado pra não colocar coisas desnecessárias para determinados tipos de problemas.

Métodos acessores são excelentes quando usados de forma coerente.

Aconselho esse Post: http://blog.caelum.com.br/nao-aprender-oo-getters-e-setters/

Para ter o entendimento pleno de getters e setters.

Embora legal, seu código não ficou mais simples Marcio, pois usar getters e setters nessa situação e da forma que foi usado, deixou o código maior e muito mais confuso…

Abs [] e sucesso nos estudos…

[quote=adriano_si]Só um detalhe gente…

muito cuidado pra não colocar coisas desnecessárias para determinados tipos de problemas.

Métodos acessores são excelentes quando usados de forma coerente.

Aconselho esse Post: http://blog.caelum.com.br/nao-aprender-oo-getters-e-setters/

Para ter o entendimento pleno de getters e setters.

Embora legal, seu código não ficou mais simples Marcio, pois usar getters e setters nessa situação e da forma que foi usado, deixou o código maior e muito mais confuso…

Abs [] e sucesso nos estudos…[/quote]

Hum, blz, valeu amigo adriano_si.

Vi o link que voce passou, vou procurar conteudos relacionados a uso indiscriminado de gets e sets

[quote=ziulluiz][code]

void ligaMotor() {
	status = true;
	System.out.println("Motor ligado, voltagem = " + this.voltagem);
}

[/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

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!

[/quote]

Boa noite ziulluiz,

Nesse caso o método ligaMotor() pode ficar como nosso amigo citou acima é melhor mesmo.
Tudo que você disse está correto, se no caso você precisasse dar uma velocidade ao motor, era melhor criar um outro método como eu citei acima para receber como parametro a nova velocidaide entendeu ?

Variavel de instancia é muito, muito simples.

Variavel de instancia são todas menos a static. Ou seja qualquer tipo de variavel que você declarar, veja:


public final int CODIGO_01 = 1;
private String nome = "NOME";
protected transient int sequencia = 0;

São todas variaveis de instancia porque elas só vão estar disponíveis a partir do momento que você instanciar a classe motor, entendi ?


Motor motor = new Motor();

Somente nesse momento você tem acesso aquelas variaveis, por isso, variaveis de instancia.

E variavel de classe é toda aquela declarada como static, porque ?

Porque independente se a classe for instanciada ou não, a variavel de classe vai sempre existir, exemplo:

public static String teste = "Teste";

Esse valor vai sempre estar disponivel, sem precisar que a classe seja instanciada. E instanciar uma classe é nada mais nada menos do que dar um new na mesma, assim como foi feito acima.

[quote=RodrigoM91][quote=ziulluiz][code]

void ligaMotor() {
	status = true;
	System.out.println("Motor ligado, voltagem = " + this.voltagem);
}

[/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

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!

[/quote]

Boa noite ziulluiz,

Nesse caso o método ligaMotor() pode ficar como nosso amigo citou acima é melhor mesmo.
Tudo que você disse está correto, se no caso você precisasse dar uma velocidade ao motor, era melhor criar um outro método como eu citei acima para receber como parametro a nova velocidaide entendeu ?

Variavel de instancia é muito, muito simples.

Variavel de instancia são todas menos a static. Ou seja qualquer tipo de variavel que você declarar, veja:


public final int CODIGO_01 = 1;
private String nome = "NOME";
protected transient int sequencia = 0;

São todas variaveis de instancia porque elas só vão estar disponíveis a partir do momento que você instanciar a classe motor, entendi ?


Motor motor = new Motor();

Somente nesse momento você tem acesso aquelas variaveis, por isso, variaveis de instancia.

E variavel de classe é toda aquela declarada como static, porque ?

Porque independente se a classe for instanciada ou não, a variavel de classe vai sempre existir, exemplo:

public static String teste = "Teste";

Esse valor vai sempre estar disponivel, sem precisar que a classe seja instanciada. E instanciar uma classe é nada mais nada menos do que dar um new na mesma, assim como foi feito acima.[/quote]

Hum, RodrigoM91.

Agora sim, entendi legal, pow muito simples quando voçê entende!

Tipo esses conceitos ae, a pessoa tem que saber legal, para nao si perder, porque tipo, tudo em linguem de programação, voce tem que está sabendo dos detalhes,
as vezes por causa de um detalhe voce ja fica grilado, pensando que nao está aprendendo kkk.

Mas tipo, valeu irmao, continue ajudando as pessoas ae, quando eu tiver sabedoria suficiente, vou ajudar tambem.

Abraço e tudo de bom. té ++

:smiley:

Tranquilo cara, fica em paz !

Você vai aprende sim, eu também estou apredendo !

Falo !