Exercícios da Caelum fj-11 sobre arrays

4 respostas
A

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):

  1. 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!

  1. 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

 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!

4 Respostas

S

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!

M

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

A

Muito obrigado aos 2 !
ajudou legal!
Se alguem souber onde tem na net os exercicios da caelum resolvidos fico grato!
vlww!

maisongalvao144
Vou postar aqui a minha solução para análise.
/*
 * 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();
    }
}
Criado 1 de março de 2010
Ultima resposta 14 de nov. de 2012
Respostas 4
Participantes 4