Fala galera estudando java, o tempo não para né :), me aventurando no cap 9 do livro deitel 8 edição Herança, tem um exercício que pede para passar o exemplo de herança para composição, eu fiz, só que quando executo da um erro e não sei o que pode ser…Pior que o exemplo de herança da o mesmo erro, quem puder me ajudar agradeço.
A classe não é complexa, só é um pouco grande devido aos métodos set e get para manipular as variáveis de instância
// Exercício 9.3: EmpregadoComissionado.java
public class EmpregadoComissionado
{
private String primeiroNome;
private String ultimoNome;
private String numeroSegurancaSocial;
private double faturamentoBruto; // vendas brutas semanais
private double taxaComissao; // porcentagem da comissão
// Construtor de cinco argumentos
public EmpregadoComissionado( String primeiro, String ultimo, String nss, double fatura, double taxa )
{
// chamada implicita para o construtor Object ocorre aqui
primeiroNome = primeiro;
ultimoNome = ultimo;
numeroSegurancaSocial = nss;
setFaturamentoBruto( fatura ); // valida e armazena as vendas brutas
setTaxaComissao( taxa ); // valida e armazena a taxa de comissão
}
// configura o nome
public void setPrimeiroNome( String primeiro )
{
primeiroNome = primeiro; // deve validar
}
// retorna o nome
public String getPrimeiroNome()
{
return primeiroNome;
}
// configura o sobrenome
public void setUltimoNome( String ultimo )
{
ultimoNome = ultimo; // deve validar
}
// retorna o sobrenome
public String getUltimoNome()
{
return ultimoNome;
}
// configura o CIC
public void setNSS( String nss )
{
numeroSegurancaSocial = nss;
}
// retorna o CIC
public String getNSS()
{
return numeroSegurancaSocial;
}
// configura a quantidade de vendas brutas
public void setFaturamentoBruto( double fatura )
{
faturamentoBruto = ( fatura < 0.0 ) ? 0.0 : fatura;
}
// retorna a quantidade de vendas brutas
public double getFaturaBruta()
{
return faturamentoBruto;
}
// configura a taxa de comissão
public void setTaxaComissao( double taxa )
{
taxaComissao = ( taxa > 0.0 && taxa < 1.0 ) ? taxa : 0.0;
}
// retorna a taxa de comissão
public double getTaxaComissao()
{
return taxaComissao;
}
// calcula os lucros
public double lucros()
{
return getTaxaComissao() * getFaturaBruta();
}
// retorna a representação String do objeto EmpregadoComissionado
@Override // indica que esse método sobrescreve um método de superclasse
public String toString()
{
return String.format( "%s: %s %s\n%s: %s\n%s: %.2f\n%s: %.2f",
"Empregado Comissionado", getPrimeiroNome(), getUltimoNome(),
"Número de Segurança Social", getNSS(),
"Vendas Brutas", getFaturaBruta(),
"Taxa de Comissão", getTaxaComissao() );
}
}
Aqui vai a segunda classe
// Exercício 9.3: EmpregadoComissionadoSalarioBase.java
public class EmpregadoComissionadoSalarioBase
{
private double salarioBase; // salário-base por semana
private EmpregadoComissionado dados; // referencia ao objeto EmpregadoComissionado com os dados
// primeiro nome, ultimo nome, nss, vendas, taxa
// construtor de seis argumentos
public EmpregadoComissionadoSalarioBase( EmpregadoComissionado meusDados, double salario )
{
dados = meusDados;
setSalarioBase( salario ); // valida e armazena salário-base
}
// configura o salário-base
public void setSalarioBase( double salario )
{
salarioBase = ( salario < 0.0 ) ? 0.0 : salario;
}
// retorna o salário-base
public double getSalarioBase()
{
return salarioBase;
}
// calcula os lucros
public double lucros()
{
// não permitido: taxaComissao e faturamentoBruto private em superclasse
return getSalarioBase() + dados.lucros();
}
// retorna a representação de String de EmpregadoComissionado
@Override // indica que esse método sobrescreve um método de superclasse
public String toString()
{
// não permitido: tenta acessar membros private da superclasse
return String.format(
"%s %s\n%s: %.2f\n", "Salário-base",
super.toString(), "Salário base", getSalarioBase() );
}
}
E aqui vai a ultima classe que é a principal onde executo
// Exercício 9.3: EmpregadoComissionadoSalarioBaseTeste.java
public class EmpregadoComissionadoSalarioBaseTeste
{
public static void main( String[] args )
{
// instacia o objeto EmpregadoComissionado
EmpregadoComissionado empregado = new
EmpregadoComissionado( "Thyago", "Santos", "333-33-3333", 5000, .04 );
EmpregadoComissionadoSalarioBase empregadoObj = new EmpregadoComissionadoSalarioBase( empregado, 300 );
// obtém os dados de empregado comissionado
System.out.println(
"Informações de Empregado obtidas por métodos: \n" );
System.out.printf( "%s %s\n", "Primeiro nome é",
empregado.getPrimeiroNome() );
System.out.printf( "%s %s\n", "Último nome é",
empregado.getUltimoNome() );
System.out.printf( "%s %s\n", "Número de Segurança Social é",
empregado.getNSS() );
System.out.printf( "%s %.2f\n", "Vendas Brutas é",
empregado.getFaturaBruta() );
System.out.printf( "%s %.2f\n", "A Taxa de Comissão é",
empregado.getTaxaComissao() );
System.out.printf( "%s %.2f\n", "O Salário Base é",
empregadoObj.getSalarioBase() );
empregadoObj.setSalarioBase( 1000 ); // configura o salário Base
System.out.printf( "\n%s:\n\n%s\n",
"Informações de Empregado atualizadas obtidas pelo toString", empregado.toString() );
}
}
E o erro que dá é este:
Exception in thread “main” java.lang.UnsupportedClassVersionError: EmpregadoComissionadoSalarioBaseTeste : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: EmpregadoComissionadoSalarioBaseTeste. Program will exit.