// Classe "principal"
class Funcionario2 {
// Atributos dessa classe;
Pessoa titular; // Ligação da classe Funcionario2 a classe Pessoa.
String setor;
double salario;
double valeRefeicao;
// Metodos utilizados diretamente nesta classe
// Metdodo para aumento de salario.
// Crio aqui uma variavel aumento e por isso o metodo é vásio (void).
// Quando alguém chama recebeAumento é necessário passar um parâmetro
// de valor.
// fazemos isso dentro das chaves, e criamos uma variavel (double aumento)
// para receber esse valor.
// Tem que ficar claro que esse é o comportamento deste metodo.
// Não podemos devolver nada, ele apenas irá manipular o que recebe
// Por isso usamos o void.
void recebeAumento(double aumento){
aumento += salario; // Uso o += em subistituição de (n = n + n).
}
double calculaGanhoAnual(){
return this.salario * 12; // usamos o this. porque pegamos
// de forma inteligente o salario do usuario Pessoa titular
// automaticamente, o java nos da essa vantagem.
// invez de usarmos o nome aqui podemos fazer isso para
// automatizar essa tarefa a tornando mais facil.
}
// Metodo salarioMaisVale.
// Como existe a variavel salario e valeRefeicao
// Eu apenas a calculo elas somando.
// Diferente de um metodo void este usa variaveis
// ja predetermiadas com valores afizados.
// por isso dizemos que salarioMaisVale alem de ser um metodo
// pode ser considerado uma variavel.
// dizemos que salarioMaisVale, quando evocado,
// recebe salario + valeRefeicao.
double salarioMaisVale(){
return this.salario + this.valeRefeicao;
}
}
// Classe Pessoa.
// Criamos a classe Pessoa que é setada a classe principal.
class Pessoa {
// Atributos desta classe.
int anoAtual = 2017; // criei a variavel anoAtual para
// facilitar o calculo que necessitam do ano, assim,
// quando precisar alterar o ano só precisarei mecher aqui.
String nome;
int anoDeNascimento;
int idade = 2017 - anoDeNascimento;
String estadoCivil;
int anoDeAdesao;
// Metodo quantosAnosTem.
int quantosAnosTem(){
return anoAtual - anoDeNascimento;
}
// Metodo quantosAnosNaEmpresa.
int quantosAnosNaEmpresa(){
return anoAtual - anoDeAdesao;
}
}
// Classe Programa2
// Aqui é onde eu realmente utilizo os dados das classe anteriores.
class Programa2 {
// Defino o metodo que a classe irá funcionar.
public static void main(String[] args){
// Crio um funcionario pablo usando a classe principal.
Funcionario2 pablo = new Funcionario2();
//pablo.nome = "Pablo Lukan";
pablo.setor = "TI";
pablo.salario = 2000;
pablo.valeRefeicao = 800;
// Aqui faço o pablo usar a classe Pessoa passando pela
// classe principal.
pablo.titular = new Pessoa();
// A diferença da lincagem desta classe com anterior
// É que uso pablo. mais o link entre a classe principal e pessoa
// que é o titular. dai sigo com o atributo que quero utilizar
// ex: pablo.titular.nome = "pablo...";
pablo.titular.nome = "Pablo de Abreu Vieira";
pablo.titular.anoDeNascimento = 1988;
//pablo.titular.idade = 2017 - anoDeNascimento;
pablo.titular.estadoCivil = "não";
pablo.titular.anoDeAdesao = 2011;
// Fazendo os metodos funcionarem (metodos que se usam da classe principal).
pablo.recebeAumento(300); // incremento um valor para o aumento.
pablo.calculaGanhoAnual(); // chamo o metodo calculaGanhoAnual.
pablo.salarioMaisVale(); //chamos o metodo salarioMaisVale.
// Metodos que se usam da classe pessoa.
pablo.titular.quantosAnosTem();
pablo.titular.quantosAnosNaEmpresa();
// Impressões de meu programa.
System.out.println(); // Usando um salto de linha para melhorar a visualização da informação.
System.out.println("O funcionario " + pablo.titular.nome + " Tem salario atual de: " + pablo.salario);
System.out.println(); // Usando um salto de linha para melhorar a visualização da informação.
System.out.println("Ele recebe: " + pablo.calculaGanhoAnual() + " por ano.");
System.out.println();
System.out.println("O vale refeicao de " + pablo.titular.nome + " e de: " + pablo.valeRefeicao);
System.out.println();
System.out.println("Somando o salario com o vale que ele recebe da: " + pablo.salarioMaisVale());
System.out.println();
System.out.println("Tendo " + pablo.titular.quantosAnosTem() + " anos.");
System.out.println();
System.out.println("ja estando na empresa a " + pablo.titular.quantosAnosNaEmpresa() + " anos.");
System.out.println();
// Usando um iff para testar se a pessoa é casada e dai fazer a impressão correta
// do estado civil.
if (pablo.titular.estadoCivil == "sim" || pablo.titular.estadoCivil == "SIM"){
System.out.println("sendo casado");
} else {
System.out.println("Sendo Solteiro");
}
}
}