pessoal, sou novo em java e OO, e queria saber como solucionar os exercicios da famosa apostila Caelum no capítulo de arrays (5.5 - Exercícios: Arrays):
- Volte ao nosso sistema de Funcionario e crie uma classe Empresa dentro do mesmo arquivo .java. A
Empresa tem um nome, cnpj e uma referência a uma array de Funcionario, além de outros atributos que
você julgar necessário.
class Empresa {
// outros atributos
Funcionario[] empregados;
String cnpj;
}
ESSE PRIMEIRO EU JÁ FIZ, SÓ COLOQUEI AQUI PRA PODER COLOCAR O SEGUNDO QUE É O QUE NÃO TO SABENDO!
- A Empresa deve ter um método adiciona, que recebe uma referência a Funcionario como argumento, e guarda esse funcionário. Algo como:
…
void adiciona(Funcionario f) {
// algo tipo:
// this.empregados[ ??? ] = f;
// mas que posição colocar?
}
…
Você deve inserir o Funcionario em uma posição da array que esteja livre. Existem várias maneiras para
você fazer isso: guardar um contador para indicar qual a próxima posição vazia ou procurar por uma posição
vazia toda vez. O que seria mais interessante?
É importante reparar que o método adiciona não recebe nome, rg, salário, etc. Essa seria uma maneira nem
um pouco estruturada, muito menos orientada a objetos de se trabalhar. Você antes cria um Funcionario e
já passa a referência dele, que dentro do objeto possui rg, salário, etc.
e tem o terceiro e seguintes, que se puder me mandar uma idéia também, fico grato!
obrigado!
Você pode criar uma variável estática, ex:
static int controlador = 0;
e aqui vc faz assim,
void adiciona(Funcionario f) {
this.empregados[ controlador ] = f;
controlador ++;
}
O outro dá pra fazer assim:
Funcionario f = new Funcionario();
f.setNome("Jose");
f.setRg("11111111").
f.setSalario(2.500);
Agora vc chama a classe que tem o método adiciona e passa o f como referência. Ex:
Digamos que o método adiciona() esteja dentro da classe Adiciona.
Adiciona add = new Adiciona();
add.adiciona(f);
Espero ter ajudado!
Ola, tambem sou novo em java e estou lendo a msma apostila…mto boa ela neh…
intao vc pode criar um contador estatico na classe…
tpw
class Empresa {
// outros atributos
Funcionario[] empregados = new Funcionario[10]; //acho q precisa definir o tamanho..
String cnpj;
static int contador;
void adiciona(Funcionario f) {
if(contador<10)
this.empregados[contador++] = f;
}
}
nao sei se ta certo mais espero ter ajudado
Muito obrigado aos 2 !
ajudou legal!
Se alguem souber onde tem na net os exercicios da caelum resolvidos fico grato!
vlww!
Vou postar aqui a minha solução para análise.
[code]
/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
/
package Exercicios;
/@author maison.souza*/
public class Empresa {
public String nome;
public int cnpj;
public Funcionario[] empregados;
public void adiciona(Funcionario f1) {
boolean estacheio = true;
for (int x = 0; x < empregados.length; x++) {
if (empregados[x] == null) {
estacheio = false;
empregados[x] = f1;
System.out.println( "Adicionado Funcionário = " + this.empregados[x].nome);
break;
}
}
if (estacheio == true) {
System.out.println("O vetor está cheio não foi possível adicionar " + f1.nome);
Funcionario[] empregados2 = new Funcionario[this.empregados.length * 2];
for (int i = 0; i < this.empregados.length; i++) {
empregados2[i] = empregados[i];
}
for (int x = empregados.length; x < empregados2.length; x++) {
if (empregados2[x] == null) {
empregados2[x] = f1;
System.out.println("Um novo vetor foi criado Adicionado Empregado = " + empregados2[x].nome);
empregados = empregados2;
break;
}
}
}
}
public boolean contem(Funcionario f1) {
boolean contem;
for (int x = 0; x < empregados.length; x++) {
if (this.empregados[x] == f1) {
System.out.println("Encontrado");
contem = true;
return true;
}
}
System.out.println("Não trabalha");
return false;
}
public void mostraEmpresa() {
System.out.println("Nome da Empresa :" + this.nome);
System.out.println("CNPJ: " + this.cnpj);
mostraEmpregados();
}
public void mostraEmpregados() {
for (int x = 0; x < this.empregados.length; x++) {
if (empregados[x] != null) {
System.out.println("Funcionario da posição " + x + " Funcionário = " + empregados[x].nome);
}
}
}
public void mostraDetalhes(Funcionario funcionario) {
funcionario.mostraFuncionario();
}
}[/code]