• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Virtual Void

array de um user defined type

3 mensagens neste tópico

boas.

gostava de saber como criar e utilizar um array de um tipo definido pelo utilizador. por exemplo:

//tendo esta classe como base para as outras todas

abstract class Pessoa
{
   protected String nome;
   protected int idade;

  

   Pessoa(String name, int age)
   {
     nome=name;
     idade=age;
   }

   Pessoa(Pessoa ob)
   {
     nome=ob.nome;
     idade=ob.idade;
   }
   
   abstract void printInfo();
}


//classe funcionario que herda de Pessoa e vai ser a super classe de Engenheiro

abstract class Funcionario extends Pessoa
{
   protected int numFunc;
   protected int numMeses;

  
   
   Funcionario(String name, int age, int numF, int numM)
   {
      super(name,age);
      numFunc=numF;
      numMeses=numM;
   }

   Funcionario(Funcionario ob)
   {
      super(ob);
      numFunc=ob.numFunc;
      numMeses=ob.numMeses;
   }

   void printInfo()
   {
     System.out.println("nome: " +nome + " idade: " +idade+ " numero: " + numFunc + " meses: " + numMeses);
   }

   abstract float salario();
}

// por fim a classe Engenheiro


class Engenheiro extends Funcionario
{

   Engenheiro()
   {
      super("vazio",0,0,0);
   }

   Engenheiro(String name, int age, int numF, int numM)
   {
      super(name,age,numF,numM);
   }

   Engenheiro(Engenheiro ob)
   {
     super(ob);
   }
  
   float salario()
   {
      float total=0;
      
      total=3000+(300*numMeses);
      return total;
   }

   void setEng(String name, int age, int numF, int numM)
   {
      nome=name;
      idade=age;
      numFunc=numF;
      numMeses=numM;
   }

   void printInfo()
   {
      super.printInfo();
      System.out.println("salario: " + salario());
   }
}

class Testa
{
   public static void main(String args[])
   {
      Engenheiro e1 = new Engenheiro("Malaquias",34,567,19);
      Engenheiro e2 = new Engenheiro(e1);
      Engenheiro arrayeng[] = new Engenheiro[3];
      
      e1.printInfo();
      e2.printInfo();

      arrayeng[0].setEng("Juliano",67,879,33);            /*aki da-me a seguinte  excepcao:  Exception in thread "main" java.lang.NullPointerException
        at Testa.main(Testa.java:54)*/
      arrayeng[1].setEng("Carmindo",21,22,1);
      arrayeng[2].setEng("Armenio",45,367,23);

      for(int i=0; i<3; i++)
        arrayeng[i].printInfo();
   }
}

pk é k me akontece isto? o k e k tou a fazer mal? qual a melhor forma de fazer um array de engenheiros e dps imprimir a info desse array?

obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quando fazes:

Engenheiro arrayeng[] = new Engenheiro[3]

estás apenas a reservar espaço para para 3 objectos do tipo Engenheiro, não estás a criar os objectos. No entanto estás a tentar usar o método setEng() que é um método de instância, é um método que precisa de um objecto do tipo Engenheiro criado.

Faz:

arrayeng[0] = new Engenheiro()

e podes aceder ao método setEng()

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora