Eu acho que consegui fazer , mas eu tenho a impressão que não fiz o código correto
[b]- Eu fiz alguma coisa desnecessária ?
-Realmente eu estou usando herança? eu coloquei extends mas eu não consigo visualizar onde que eu to herdando da classe Aluno [/b]
publicclassAluno{protectedinttipoAluno;protectedintirmaos;publicAluno(){tipoAluno=irmaos=0;}publicAluno(inttipo,intirmaos){tipoAluno=tipo;this.irmaos=irmaos;}}publicclassMensalidadeextendsAluno{doubledesconto;doublemensalidade;publicMensalidade(){desconto=mensalidade=0;}publicMensalidade(inttA,intqtdI){super(tA,qtdI);inttpAluno=tA;intqtd=qtdI;}publicdoublecalcularMensalidade(inttipoAluno,intqtdIrmaos){if(tipoAluno==0)mensalidade=0;else{if(tipoAluno==1)mensalidade=500;}if(qtdIrmaos==1)desconto=0.05;else{if(qtdIrmaos==2)desconto=0.1;if(qtdIrmaos>2)desconto=0.15;}return(mensalidade-(mensalidade*desconto));}}publicclassPrincipal{publicstaticvoidmain(Stringargs[]){Mensalidadeteste=newMensalidade();System.out.println("A Mensalidade é de "+teste.calcularMensalidade(1,1)+" reais");}}
Creio eu que esse segundo construtor de Mensalidade é desnecessário, mas na dúvida botei, eu sempre tenho dúvida para saber quando tenho que criar construtores e seus parâmetros
ViniGodoy
Lembre-se que a herança representa a relação é um. E composição a relação tem um.
Então, vamos a pergunta.
Dizemos que: Uma mensalidade é um aluno, ou que um aluno tem um conjunto de mensalidades?
diogoribeiro
Cara realmente vc está usando errado. Quando vc estende uma classe vc tem em sua classe tdos o métodos e propriedades da sua super classe, isso atendendo aos níveis de acesso dos métodos e das variáveis.
Fica melhor assim:
public class Aluno{
//Os seus dados comuns a todos alunos nessa classe, e um método padrão para o calculo das mensalidade
}
E depois vc cria novas classes estendendo a classe aluno, tipo “AlunoX”, e sobrescreve o método de calculo da mensalidade. Fazendo assim, onde vc precisar do calculo dessa mensalidade vc só faz uma chamada ao método calculaMedia do aluno, não precisando passar o “tipo” do aluno.
Dá uma lida na apostila da caelum q vai te ajudar bastante com o java.
O tipo de aluno == 0 é o “AlunoBolsista” e o tipo de aluno == 1 é o “AlunoPagante”.
Quanto mais irmãos um AlunoPagante tiver, ele tem desconto maior.
Para um AlunoBolsista é irrelevante saber quantos irmãos tem, já que não paga nada mesmo.
Milk15
Ahhh eu acho que agora eu entendi, vo tentar refazer depois eu posto aki vlw galera
Milk15
Aeee, acho que finalmente consegui, :lol: :
fiz desse jeito agora
coloquei como o Diogo falou, o metodo calcularMensalidade na classe Aluno
E depois criei um classe filha “AlunoX” que no caso é AlunoPago que também poderia ter AlunoBolsista etc e tal.
publicclassAluno{protectedinttipoAluno;protectedintirmaos;publicAluno(){tipoAluno=irmaos=0;}protecteddoublemensalidade;protecteddoubledesconto;publicdoublecalcularMensalidade(inttipoAluno,intqtdIrmaos){if(tipoAluno==0)mensalidade=0;else{if(tipoAluno==1)mensalidade=500;}if(qtdIrmaos==1)desconto=0.05;else{if(qtdIrmaos==2)desconto=0.1;if(qtdIrmaos>2)desconto=0.15;}return(mensalidade-(mensalidade*desconto));}}publicclassAlunoPagoextendsAluno{//Sobrescrevi o metodo calcularMensalidade para adequar ao "tipoAluno == 1"(Aluno que paga)publicdoublecalcularMensalidade(intqtdIrmaos){mensalidade=500;if(qtdIrmaos==1)desconto=0.05;else{if(qtdIrmaos==2)desconto=0.1;if(qtdIrmaos>2)desconto=0.15;}return(mensalidade-(mensalidade*desconto));}}importjava.util.Scanner;publicclassPrincipal{publicstaticvoidmain(Stringargs[]){AlunoPagoalunoA=newAlunoPago();//Entrada da quantidade de irmaosScannerinput=newScanner(System.in);System.out.println("Quantos irmaos vc tem?");intqtdI=input.nextInt();doubleresultado=alunoA.calcularMensalidade(qtdI);System.out.println("A Mensalidade é de: "+resultado+" reais");}}
E
EltonKerber
Aparentemente está correto.
Já testou no compilador?