Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

como pasar los objetos en los procedimientos

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Experto
Mensaje Jue Ago 25, 2005 2:18 am
serruxa
Perlero Nuevo
Perlero Nuevo
Registrado: 16 Ago 2005
Mensajes: 5
como pasar los objetos en los procedimientos Responder citando

Hola estoy trabajando con clases. Tengo mi programa principal, que crea un objeto "Objeto1" de la clase "Clase1" , este objeto necesito que lo utilice un procedimiento de otra clase "Clase2", por tanto se lo paso al constructor

$Objeto2 = clases::chuponAreapc->new($Objeto1).

Ahora el procedimiento "Procedimiento" que esta en la clase "Clase2" debería utilizar "Objeto1". Pero me da un error tal que:

Can't call method "miProcedimiento" on an undefined value at "clase2" line 180.

Espero que lo entendais Confused
Una ayudita?????Graciassss
Mensaje Jue Ago 25, 2005 8:46 am
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
Responder citando

Hola:

Lo primero es que te recomiendo que mandes una referencia del objeto:

Código:
$Objeto2 = clases::chuponAreapc->new(\$Objeto1);


Ahora, como no nos muestras el código que tienes en el constructor de tu Objeto2, no te podría decir a ciencia cierta cual podría ser tu error.

http://www.perldoc.com/perl5.8.4/pod/perlref.html


SALUDOS
Mensaje Jue Ago 25, 2005 9:16 am
explorer39
Perlero Frecuente
Perlero Frecuente
Registrado: 23 Ago 2005
Mensajes: 126
Ubicación: Valladolid, España
Responder citando

Se supone que quieres guardar el objeto1 dentro de clases2. Yo aquí lo guardo dentro de un hash, y luego lo recupero cuando necesito hacer la llamada al procedimiento1.

Sea clase1.pm:
Código:
package clase1;
use strict;

sub new {
  my $class = shift;
  my $self = {};
  bless($self,$class);
  return $self;
}

sub procedimiento1 {
  my $self = shift;
  print "Procedimiento en clases1 llamado\n";
}

1;

Sea clase2.pm:
Código:
package clase2;
use strict;

sub new {
  my $class = shift;
  my $objeto1 = shift;
  my $self = { Objeto1 => $objeto1 };
  bless($self,$class);
  return $self;
}

sub procedimiento2 {
  my $self = shift;
  my $other= $self->{ Objeto1 };
  print "Llamando a procedimiento1 en clases1\n";
  $other->procedimiento1;
}

1;

Sea el programa:
Código:
#!/usr/bin/perl -w

package main;
use lib '.';
use clase1;
use clase2;
use strict;

my $Objeto1 = clase1->new;

my $Objeto2 = clase2->new( $Objeto1 );

print "Llamando a procedimiento2\n";
$Objeto2->procedimiento2;

Sea el resultado:
Código:
Llamando a procedimiento2
Llamando a procedimiento1 en clases1
Procedimiento en clases1 llamado
Publicar nuevo tema   Responder al tema    Foros de discusión -> Experto Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group