Você está na página 1de 4

Escreva uma classe Veiculo com os atributos identificador velocidade atual direo atual public class Veiculo { private

long private int private int private Motorista identificador; velocidadeAtual; direcaoAtual; motorista;

public long getIdentificador() { return identificador; } public int getVelocidadeAtual() { return velocidadeAtual; } public void setVelocidadeAtual(int velocidadeAtual) { this.velocidadeAtual = velocidadeAtual; } public int getGrauDirecaoAtual() { return direcaoAtual; } public void setGrauDirecaoAtual(int direcaoAtual) { this.direcaoAtual = direcaoAtual; } public Motorista getMotorista() { return motorista; } public void setMotorista(Motorista motorista) { this.motorista = motorista; } } Escreva uma classe Motorista com os atributos nome veiculo (do tipo da classe Veiculo) public class Motorista { private String nome; private Veiculo veiculo; public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public Veiculo getVeiculo() { return veiculo; } public void setVeiculo(Veiculo veiculo) { this.veiculo = veiculo; } } Adicione um construtor ao morista, informando o seu nome, e um construtor sem a

necessidade de especificao de nome public class Motorista { ... // se existe a necessidade de se instanciar a classe sem passar parmetros // quando um construtor com parmetros j existe, // necessrio criar outro sem parmetros e implementao public Motorista() {} public Motorista(String nome) { this.nome = nome; } ... O nmero identificador de cada veculo distinto dos demais, e deve ser atribudo no mo mento da sua criao (via construtor) Crie uma classe utilitria para gerao de chaves nicas, sequencialmente, utili zando atributos static package util; public class ChaveIdentificacao { // atributos static no so retirados da memria durante a execuo do programa // podendo ter seu valor reutilizado na prxima instanciao da classe private static long proximaChave; // mtodos static so chamados diretamente pela classe // sem necessitar da instanciao de um objeto public static long getNext() { proximaChave++; return proximaChave; } } Na classe viculo o construtor // construtor executado no momento de instanciacao do objeto public Veiculo() { this.identificador = ChaveIdentificacao.getNext(); } Retire o mtodo setIdentificador, pois no queremos que outro objeto altere a propri edade Teste a classe veculo, crie uma classe Aplicativo, com um mtodo main, que cria um veculo e imprime o resultado do mtodo toString(). public class Aplicativo { public static void main(String[] args) { Veiculo v = new Veiculo(); System.out.println(v.toString()); } }

Sobrescreva o mtodo toString na classe Veculo, para que ele retorne a informao do id entificador do veculo em formato String public String toString() { return "Veculo id = " + identificador; } Execute novamente o aplicativo. Crie um for dentro do mtodo main de Aplicativo, para que imprima 10 vezes o toStr ing de novos veculos criados public static void main(String[] args) { for (int i = 0; i < 10; i++) { Veiculo v = new Veiculo(); System.out.println(v.toString()); } } Execute novamente o aplicativo e verifique como incrementado o identificador par a cada novo veculo criado Adicione dois mtodos classe Veculo: Acelerar deve incrementar em 1 a velocidade atual do veculo Frear deve decrementar em 1 a velocidade atual do veculo, interrompendo e m 0 public void acelerar() { velocidadeAtual++; } public void desacelerar() { if (velocidadeAtual > 0) { velocidadeAtual-=1; } } Adicione um mtodo ao Motorista, que solicite que ele avance com o veculo at uma det erminada velocidade e outro que o faa reduzir at uma velocidade determinada // avancar at a velocidade solicitada public void avancar(int velocidade) { while (veiculo.getVelocidadeAtual() < velocidade) { veiculo.acelerar(); } } // reduzir at a velocidade solicitada public void reduzir(int velocidade) { while (veiculo.getVelocidadeAtual() > velocidade) { veiculo.desacelerar(); } } Escreva uma classe ListaDeVeiculos para armazenar em memria os veculos a serem cri ados Ela utiliza, internamente, um array

Teste a classe Veculo recm-criada. Escreva uma classe Aplicativo, com um mtodo main, que cria alguns veculos e imprime na tela o valor do campo identificao. Utilize o mtodo add(Objeto) da ArrayList criada internamente

Adicione um construtor a Veiculo que recebe um motorista como parmetro. Observe que j existe um construtor na classe que deve ser mantido e invocado por esse novo construtor. Adicione dois mtodos acelerar: um que aumenta a velocidade atual do veculo sempre em +1, e outro que altera a velocidade atual do veculo para um valor recebido. Adicione um mtodo pare, que configura a velocidade do veculo como zero. Adicione mtodos virar a Veiculo: ele recebe uma das seguintes constantes: VIRAR_ESQUERDA ou VIRAR_DIREITA. 2

Você também pode gostar