Ae galera, sou novo aqui no fórum como também to começando a aprender Java :lol:
Poderiam me ajudar a resolver esse exercício aqui?:
Considere a seguinte função em linguagem C.
double calcularMensalidade(int tipoAluno,
int qtdIrmaos)
{
double desconto=0, mensalidade;
if (tipoAluno == 0) mensalidade = 0;
else if (tipoAluno == 1) mensalidade = 500;
if (qtdIrmaos == 1) desconto=0.05;
else if (qtdIrmaos == 2) desconto=0.1;
else if (qtdIrmaos > 2) desconto =0.15;
return mensalidade - mensalidade*desconto;
} Reescreva enquadrando-a em uma hierarquia de classes em Java.
Parece ser bem simples, mas como ainda não tenho muita segurança na programação em Java, to pedindo um auxílio aqui
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]
public class Aluno
{
protected int tipoAluno;
protected int irmaos;
public Aluno(){
tipoAluno = irmaos = 0;
}
public Aluno(int tipo, int irmaos){
tipoAluno = tipo;
this.irmaos = irmaos;
}
}
public class Mensalidade extends Aluno
{
double desconto;
double mensalidade;
public Mensalidade(){
desconto = mensalidade = 0;
}
public Mensalidade(int tA, int qtdI){
super(tA,qtdI);
int tpAluno = tA;
int qtd = qtdI;
}
public double calcularMensalidade(int tipoAluno, int qtdIrmaos){
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));
}
}
public class Principal
{
public static void main (String args[])
{
Mensalidade teste = new Mensalidade ();
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
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.
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.
public class Aluno
{
protected int tipoAluno;
protected int irmaos;
public Aluno(){
tipoAluno = irmaos = 0;
}
protected double mensalidade;
protected double desconto;
public double calcularMensalidade(int tipoAluno, int qtdIrmaos){
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));
}
}
public class AlunoPago extends Aluno
{
//Sobrescrevi o metodo calcularMensalidade para adequar ao "tipoAluno == 1"(Aluno que paga)
public double calcularMensalidade(int qtdIrmaos){
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));
}
}
import java.util.Scanner;
public class Principal
{
public static void main (String args[])
{
AlunoPago alunoA = new AlunoPago();
//Entrada da quantidade de irmaos
Scanner input = new Scanner (System.in);
System.out.println("Quantos irmaos vc tem?");
int qtdI = input.nextInt();
double resultado = alunoA.calcularMensalidade(qtdI);
System.out.println("A Mensalidade é de: "+resultado+" reais");
}
}