Pequenas Duvidas nas Classes e Métodos

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?

Não. Cada classe tem sua responsabilidade. Os funcionarios fazem parte da classe empresa por isso a responsabilidade de adicionar os funcionarios para a empresa pertence a empresa e não ao funcionario. Lembre-se, um funcionario não se auto adiciona a uma empresa, quem adiciona um funcionario em uma empresa é a própria empresa.

Tente seguir a logica da vida real.

obrigado esclareceu minha duvida :slight_smile:

podem fechar…