I'm trying to build a Java project based on the concepts of object-oriented programming.
However the compiler (ECLIPSE) has an error in the line of my liigar function. It says it has a NullPointerException error. Searching the internet I saw that this is when the variable is "non-initialized". I checked my program and got a default value that I put for the varable as a "false". I wish I could understand why the eclipse is accusing this error.
In this class I put the main:
public class TestaCarro {
public static void main(String[] args){
Carro meuCarro = new Carro();
meuCarro.setCor("Azul");
meuCarro.setModelo("Gol");
// ligando o carro
meuCarro.ligar();
// Acelerando o carro
meuCarro.acelerar(80);
// Obtendo a marcha atual
int marchaAtual = meuCarro.obtemMarcha();
// Imprimindo informações sobre o carro e o estado dos atributos
System.out.print("Meu " + meuCarro.getModelo() + " " + meuCarro.getCor() + " ");
System.out.print("Está andando na marcha " + marchaAtual + " a ");
System.out.print(meuCarro.getVelocidadeAtual() + " Km/h!!!");
// Parando o carro
meuCarro.parar();
// Acelerando o carro novamente
meuCarro.acelerar(20);
// Obtendo a marcha atual novmente
marchaAtual = meuCarro.obtemMarcha();
// Imprimindo(novamente) informações sobre o carr e o estado dos atributos
System.out.print("Agora, meu " + meuCarro.getModelo() + " " + meuCarro.getCor() + " ");
System.out.print(" está andando na marcha " + marchaAtual + " a ");
System.out.println(meuCarro.getVelocidadeAtual() + " Km/h!!!");
// Parando o carro
meuCarro.parar();
// Desligando o carro
meuCarro.desligar();
}
}
In this class I have the first function to call:
public class Carro {
private String cor, modelo;// get e set
private int velocidadeAtual;// Apenas get
private double velocidadeMaxima = 140;// Definido por default + get
private Motor motor; // get e set
// Método para ligar o carro
public void ligar() {
if (this.motor.ligar())
System.out.println("O carro está sendo ligado...");
}
// Método para parar o carro
public void parar() {
System.out.println("Parando o carro...");
this.velocidadeAtual = 0;
}
// Método para desligar o carro
public void desligar() {
if (this.motor.desligar()) {
System.out.println("O carro está sendo desligado...");
} else {
System.out.println("Não há como desligar um carro em movimento.");
}
}
// Métodos get, set, acelerar, obterMarcha...
public String getCor() {
return cor;
}
public void setCor(String cor) {
this.cor = cor;
}
public String getModelo() {
return modelo;
}
public void setModelo(String modelo) {
this.modelo = modelo;
}
public Motor getMotor() {
return motor;
}
public void setMotor(Motor motor) {
this.motor = motor;
}
public double getVelocidadeAtual() {
return velocidadeAtual;
}
public double getVelocidadeMaxima() {
return velocidadeMaxima;
}
//Método qued devolve a marcha em que o carro está.
public void acelerar(double velocidade){
this.velocidadeAtual+=velocidade;
}
// Método que devolve a marcha em que o carro está
public int obtemMarcha() {
if(this.velocidadeAtual<=0) {
return -1;
}
else {
if(this.velocidadeAtual<=20) {
return 1;
}
else {
if(this.velocidadeAtual<=40) {
return 2;
}
else {
if(this.velocidadeAtual<=60) {
return 3;
}
else {
if(this.velocidadeAtual<=80) {
return 4;
}
else {
return 5;
}
}
}
}
}
}
}
Now I initialize in this other class the connect function:
public class Motor {
private double potencia;// get e set
private String tipoDeCombustivel;// get set
private boolean ligado = false;// is e set
public boolean ligar() {
this.ligado = true;
System.out.println("Ligando o motor...");
return true;
}
public boolean desligar() {
this.ligado = false;
System.out.println("Desligando o motor..");
return true;
}
public double getPotencia() {
return potencia;
}
public void setPotencia(double potencia) {
this.potencia = potencia;
}
public String getTipoDeCombustivel() {
return tipoDeCombustivel;
}
public void setTipoDeCombustivel(String tipoDeCombustivel) {
this.tipoDeCombustivel = tipoDeCombustivel;
}
public boolean isLigado() {
return ligado;
}
public void setLigado(boolean ligado) {
this.ligado = ligado;
}
}