Olá
bem fiz varios exercicios e está aqui um exercicio completo para eu me explicar melhor
[code]class Data {
int dia;
int mes;
int ano;
}
class Empresa {
String nome;
String cnpj;
int i = 0;
Funcionario[] empregados;
static int contador;
//Método Adiciona
void adiciona(Funcionario f){
this.empregados[i] = f;
i++;
}
//Método Contem
boolean contem(Funcionario f){
for (int i = 0; i < this.empregados.length; i++) {
if (f == empregados[i]){
System.out.println(" O Funcionario " + empregados[i].nome + " já trabalha nesta empresa");
return true;
}
}
System.out.println("O Funcionário "+ empregados[i].nome +" não trabalha conosco");
return false;
}
//Método mostraEmpregados
void mostraEmpregados(){
System.out.println(".::Funcionarios cadastrados::.\n");
for (int i = 0; i < this.empregados.length; i++) {
if (empregados[i] != null){
System.out.println("-----------------------------------------------------------------------------------");
System.out.println("| Funcionário na posição: " + i + " |");
System.out.println("| Nome: " + empregados[i].nome +" | Depto: " + empregados[i].departamento + " | Salário: R$" + empregados[i].salarioMensal + " |");
System.out.println("-----------------------------------------------------------------------------------");
} else {
break;
}
}
}
}
class Funcionario {
Data dataDeEntrada;
public String nome;
public String departamento;
public String rg;
public double salarioMensal;
public double salarioAnual;
public boolean estaTrabalhando = true;
public double getSalarioMensal() {
return this.salarioMensal;
}
public setSalarioMensal(double salario) {
this.salarioMensal = salarioMensal;
}
//Método Bonifica
void bonifica(double aumento) {
this.salarioMensal += aumento;
}
//Método calculaGanhoAnual
double calculaGanhoAnual() {
return this.salarioAnual = this.salarioMensal * 12;
}
//Método verifica estaTrabalhando
boolean estaTrabalhando() {
if (estaTrabalhando == true) {
System.out.println("Está Trabalhando?: Sim");
return true;
} else {
System.out.println("Está Trabalhando?: Não");
return false;
}
}
//Método demite
void demitido() {
estaTrabalhando = false;
}
//Método Mostra
void dadosDoFuncionario(){
System.out.println("Nome: " + this.nome);
System.out.println("Departamento: " + this.departamento);
System.out.println("RG: " + this.rg);
this.estaTrabalhando();
this.calculaGanhoAnual();
System.out.println("Você está Ganhando Mensalmente: R$" + this.salarioMensal);
System.out.println("Você está Ganhando Anualmente: R$" + this.calculaGanhoAnual());
System.out.println("-------------------------------");
}
}
class ProgramaPrincipal {
public static void main (String[] args) {
//Data data = new Data();
Empresa empresa = new Empresa();
empresa.empregados = new Funcionario[10];
Funcionario f1 = new Funcionario();
f1.salarioMensal = 1000;
f1.nome = "Carlos";
empresa.adiciona(f1);
f1.departamento = "Catador de Lixo";
Funcionario f2 = new Funcionario();
f2.salarioMensal = 1700;
f2.nome = "Eduardo";
f2.departamento = "Garçom";
empresa.adiciona(f2);
empresa.mostraEmpregados();
}
}[/code]
Eu , no meu entendimento , no que leio na apostilas as classes e métodos precisam estar de acordo e sempre SEMPRE , fazer de um jeito que uma classe não precise muito de uma outra.
bem ali a classe Funcionario, ela deveria ter um método adiciona(); , mas quem faz este método é a classe Empresa ?, não seria mais façil criar uma array Funcionario[] funcionario; e dai só necessitar da própria classe?, E a classe empresa, apenas iria cuidar dos assuntos relacionados a empresa(fora os do funcionarios). E ai oque vocês acham?