e se eu utilizar o método de construtores altera o comando ?
WendersonLP
Olha eu acho que essa lógica está incorreta. Porque quando se criar uma classe como veículo a tendência é
que um determinado tipo de veículo à extenda e não um motorista, entendeu? Um motorista deveria herdar
de uma classe do tipo pessoa e não de veículo, porque o motorista é quem conduz o veículo mas não é um.
pedroroxd
Que comando?
É a classe que extende otra classe…
J
Jose_48
é que minha proposta está confusa então
vou melhorar então um pouco:
motorista dirige veiculo
será que da certo ?
como utilizar o conceito de herança aqui
rmendes08
Não usa, simples assim. O relacionamento motorista - dirige - veículo é do tipo USA-UM, e não do tipo É-UM. Observe:
(a) motorista USA-UM veículo
(b) motorista É-UM veículo
repare que a proposição (a) faz muito mais sentido do que (b). Sendo assim, herança não é a opção para o seu motorista acessar o veículo, basta você passar um objeto veículo para o método que deve utilizá-lo.
ramos
O que você quer fazer não é herança, é agregação.
Se um motorista dirige um veículo, logo a classe motorista precisa ter um atributo que guarde uma referência para qual veículo ele dirige.
Um exemplo desta agregação poderia ser implementado assim:
string, long e int então fica como classe e não como tipo de variável, seria isso ?
J
Jose_48
e se eu precisar declarar um variavel do tipo string para direcao atual,
privateStringdirecao;
ramos
Se for sobre a minha resposta, não seria isso. Neste caso, preciso que você detalhe melhor sua última pergunta para que eu tentar ser mais claro.
J
Jose_48
para Ramos:
não sei se estou certo, mas eu disse que em sua implementação long, int e string será acessado como classe e não como variável stática.
J
Jose_48
vou exemplificar o que entendi:
se eu colocar um método para o veículo frear e outro para o veículo acelerar como eu iria declarar a variável como string ou int:
ramos
Então. Sobre os tipos em Java, existe uma particularidade que eu não sei se você já sabe:
String é objeto e não tipo primitivo
Fora isto, talvez você tenha estranhado o fato de eu ter colocado a variável limiteDePassageiros com modificador public ao invés de declará-la como private e usar métodos do tipo set e get.
Se estiver falando disto, eu fiz public por causa da pressa na digitação mesmo! rs…
Deste modo a classe Onibus ficou sem encapsulamento.
Você está usando qual material pra estudar Java?
ramos
Jose_48:
vou exemplificar o que entendi:
se eu colocar um método para o veículo frear e outro para o veículo acelerar como eu iria declarar a variável como string ou int:
Vou fazer uma classe mais resumida aqui pra tentarmos usar de exemplo para o caso que você falou.
Neste caso, a velocidade ficou encapsulada (protegida) e só pode ser alterada pelos métodos acelerar e frear.
Este exemplo ficou claro?
J
Jose_48
Ramos:
eu tenho comigo Use a cabeça! Java e Apostila Caelum_Java_objetos. :shock:
J
Jose_48
Ramos:
o exemplo ficou claro quanto a declaração de variável
mas veja que se eu precisar avançar o veiculo na classe motorista eu teria que ir de um em um certo … e dai como ficaria : :?:
ramos
Este “Java, Use a Cabeça!” parece muito legal.
Pelas propagandas parece que tem uns exemplos bem empolgantes.
O material da Caelum eu não conheço, mas deve ser legal.
Muito tempo atrás eu estudei um PDF “Introdução ao Java” que era bastante didático. Mas ela está meio ultrapassada para as versões atuais do Java. Os exemplos usam uma versão antiga do AWT, etc.
Se eu fosse te dar um conselho, diria pra você ir com calma, entendendo todos os exemplos que estudasse.
Também é tem que persistir, porque não dá pra aprender tudo do dia pra noite quando. Mas de uma semana pra outra dá pra entender alguma coisa já.
ramos
Jose_48:
Ramos:
o exemplo ficou claro quanto a declaração de variável
mas veja que se eu precisar avançar o veiculo na classe motorista eu teria que ir de um em um certo .... e dai como ficaria : :?:
Vamos lá:
publicclassMotorista{VeiculomeuVeiculo;publicvoidpassear(){meuVeiculo=newVeiculo();meuVeiculo.acelerar();meuVeiculo.acelerar();meuVeiculo.acelerar();// velocidade já está valendo 3 esta horameuVeiculo.frear();}}
Neste caso, quando a classe Motorista tem um atributo meuVeiculo do tipo Veiculo.
Quando for chamado o método passear, será criada uma instância do veiculo que será manipulada através dos métodos acelerar e frear.
PS: Vou usar este exemplo no meu livro :D
J
Jose_48
e seu eu colocasse uma estrutura while
veiculo_parado < velocidade e pedir para acelerar
como fica a implementação:
acho que agora eu viajei não foi…
ramos
Você está pegando o espírito do negócio.
É só você fazer do jeito que você falou.
Precisaria apenas adicionar um método int getVelocidade na classe Veiculo que escrevi acima e depois usá-lo na classe Motorista.