Boa noite a todos;
São dúvidas mais conceituais que técnicas, mas vamos lá. Tenho as 3 classes básicas abaixo:
Funcionario:class Funcionario {
//Atributos e alguns métodos simples;
}
class Empresa {
String nome;
String CNPJ;
//Métodos
}
class TestaEmpresa {
public static void main(String[] args) {
Empresa empresa = new Empresa();
empresa.f1 = new Funcionario();
empresa.f1.salario = 100;
}
}
Ao tentar compilar o TestaEmpresa.java e recebo os seguintes erros:
TestaEmpresa.java:6: error: cannot find symbol
empresa.f1 = new Funcionario();
^
symbol: variable f1
location: variable empresa of type Empresa
TestaEmpresa.java:7: error: cannot find symbol
empresa.f1.salario = 100;
^
symbol: variable f1
location: variable empresa of type Empresa
2 errors
Neste ponto, interpretando as mensagens, imagino que seja porque em minha classe empresa não tenha declarado um atributo Funcionário (não posso instanciar um funcionário dentro de Empresa se não existe este atributo na classe empresa). Então volto e adiciono:
Funcionario f1;
em "Empresa.java" e o código compila.
Deste exemplo simples vem as dúvidas:
1 - Não poderia declarar, por exemplo, "Funcionario Func;" nesta mesma classe Empresa no lugar de "Funcionario f1"? Fiz isso e obtive um monte de erros novos. Nesta classe ele tem, necessariamente, que ter o mesmo nome de variável que declaro na classe TestaEmpresa? É porque estou criando uma instância, é isso?
2 - É correto pensar que, quando estou escrevendo o código da classe Empresa eu tenho que saber exatamente quantos funcionários eu terei na instância desta classe (ou seja, na empresa)?
3 - Entendo que quando crio a classe TestaEmpresa, o que estou fazendo é criando uma instância da classe Empresa, sendo assim, não posso adicionar um "Funcionário f2" a mais por exemplo (pois não existe f2 lá em Empresa). É certo pensar desta forma?
Não sei se ficou claro, caso não, posso tentar explicar melhor. Sei que as dúvidas são bem básicas, estou tentando fazer vários e vários exercícios simples como este para ver se a lógica da coisa sedimenta, mas tem sido bem difícil criar o "modelo mental" de POO.
Como sempre, agradeço os insights e bora estudar!
TG