Jump to content

Construtor padrão em Java.


Hercles
 Share

Recommended Posts

Caros, uma dúvida sobre a utilização de construtor. Ele é realmente necessário? Se tem o construtor padrão porque se cria um construtor diferente do padrão?

class Cliente
{
String nome;
String telefone;
String endereco;

public Cliente(String nome, String telefone, String endereco)
{
   this.nome = nome;
   this.telefone = telefone;
   this.endereco = endereco;
 }
}

class Cliente
{
String nome;
String telefone;
String endereco;

public Cliente()	// este seria o padrão.
}
Edited by Hercles
Link to comment
Share on other sites

Mostra um exemplo em como criavas um objecto usando cada uma dessas classes.

public class TESTE
{
  public static void main(String[] args)
  {
  Cliente c1 = new Cliente ("Fulano", "Rua A", "9999");
  Cliente c2 = new Cliente ("Beltrano", "Rua B", "8888");
  Pedido p1 = new Pedido(1, c1, 500, new GregorianCalendar());
  PedidoExpresso p2 = new PedidoExpresso(2, c2, 500, new
  GregorianCalendar());
  p2.setDataEntrega(new GregorianCalendar());
  System.out.println(p1.toString());
  System.out.println(p2.toString());
   }
}
Edited by Hercles
Link to comment
Share on other sites

Nesse exemplo apenas usas um dos construtores, o que tem os parametros.

Ou seja, se a classe tivesse apenas o construtor padrao, sem parametros, não podias definir o objecto dessa forma

Terias de instanciar o objecto sem parametros e depois atribuir os parametros de outra forma.

Por essa razão, e para simplificar, uma classe permite construtores diferentes.

  • Vote 1
Link to comment
Share on other sites

Outra razão adicional, é o facto de poderes forçar algumas pré-condições para utilizares apenas objectos que consideres válidos.

É uma forma de forçar contratos, embora existam outras técnicas mais usualmente utilizadas, como o "Builder Pattern"

Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática!

Link to comment
Share on other sites

Também podem ser decentemente utilizados com o Guice para fazer injecção de dependências.

Mas no fundo, nem todos os objecto podem (ou devem) ser inicializados "peça a peça". Se queres um objecto num estado consistente logo no momento da inicialização, reforças a necessidade de inicialização colocando um construtor com os argumentos que irão receber os valores que permitem a inicialização do objecto. Isso faz com que o construtor padrão não seja criado (a não ser que o cries também).

Edited by KTachyon

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Link to comment
Share on other sites

O interessante que observei que ao criar um construtor se pode criar restrições...

class Transporte extends Embarcacao
{
 double potencia;
 double carga;
 public Transporte(int capacidade, double velocMax, double comprimento,
 double largura, double potencia, double carga)
  {
 super(capacidade, velocMax, comprimento, largura);
if (potencia < carga)	  // restrição
	potencia = carga;
	this.potencia = potencia;
	this.carga = carga;
  }
}
Edited by Hercles
Link to comment
Share on other sites

Caros, sei que é uma pergunta boba, mas é que não sei rsrs... Quanto criei ai embaixo a classe cliente, logo abaixo o contrutor "public Cliente(String nome, String telefone, String endereco)" estas variáveis: nome, telefone e endereço são as mesmas da classe cliente? ou são outras que vão ser atribuintas a estas? Eu poderia criar outro nome para as variáveis do construtor?

class Cliente
{
String nome;
String telefone;
String endereco;

public Cliente(String nome, String telefone, String endereco)
{
   this.nome = nome;
   this.telefone = telefone;
   this.endereco = endereco;
 }
}
Edited by Hercles
Link to comment
Share on other sites

estas variáveis: nome, telefone e endereço são as mesmas da classe cliente?

não

Eu poderia criar outro nome para as variáveis do construtor?

até podias chamar huguinho, zezinho e luizinho ...

class Cliente
{
String nome;
String telefone;
String endereco;

       public Cliente(String huguinho, String zezinho , String luizinho)
       {
          this.nome = huguinho;
          this.telefone = zezinho;
          this.endereco = luizinho;
        }
}
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.