Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-12-2005
liriko liriko is offline
Miembro
 
Registrado: nov 2005
Posts: 27
Poder: 0
liriko Va por buen camino
Question

Hola Roman ¡
Te paso la Unit Biblioteca y le hechas un ojo
Código Delphi [-]
unit Ubiblioteca;
interface
type
  Tipo=(Economia,Deportes,General);//Tipo enunmerado
  TBiblioteca=class //Clase padre
  private
    Editorial:string;
    Dir_Edit:string;
    Per_Contac:string;
    Tlfno:string;
    Poblacion:string[15];
    Provincia:string[15];
  public
    constructor Inicia;
    destructor Destroy;
    procedure Alta(Edit,Dir_Editorial,Persona_Contact,Telefono,Poblac,Prov:string);
    procedure Baja;
    procedure Modificacion;
    procedure mostrar(var Editorial1:string;
                      var Dir_Edit1:string;
                      var Per_Contac1:string;
                      var Tlfno1:string;
                      var Poblacion1:string;
                      var Provincia1:string;
                      var Autor1:string;
                      var Ano_Public1:Integer;
                      var Nombre_Nov1:string;
                      var ISBN1:string;
                      var Nombre1:string;
                      var Director1:string;
                      var Ttipo1:Tipo;
                      var Epoca1:string;
                      var Persona_prin1:string;
                      var Tema1:string;
                      var Personaje1:string;
                      var Autobiografia1:boolean); virtual;
  end;
  TNovela=class(TBiblioteca)//Clase que hereda de Biblioteca
  private
    Autor:string;
    Ano_Public:Integer;
    Nombre_Nov:string;
    ISBN:string;
  public
    constructor Inicia;
    destructor Destroy;
    procedure alta(Edit,Dir_Editorial,Persona_Contact,Telefono,Poblac,Prov,aut,nom_nov,tisbn:string;ano_publ:integ  er);
    procedure mostrar(var Editorial1:string;
                      var Dir_Edit1:string;
                      var Per_Contac1:string;
                      var Tlfno1:string;
                      var Poblacion1:string;
                      var Provincia1:string;
                      var Autor1:string;
                      var Ano_Public1:Integer;
                      var Nombre_Nov1:string;
                      var ISBN1:string;
                      var Nombre1:string;
                      var Director1:string;
                      var Ttipo1:Tipo;
                      var Epoca1:string;
                      var Persona_prin1:string;
                      var Tema1:string;
                      var Personaje1:string;
                      var Autobiografia1:boolean); override;
  end;
  TPrensa=class(TBiblioteca) //Clase que hereda de Biblioteca
  private
    Nombre:string;
    Director:string;
    Ttipo:Tipo;
  public
    constructor Inicia;
    destructor Destroy;
    procedure alta(Edit,Dir_Editorial,Persona_Contact,Telefono,Poblac,Prov,nom,dir:string; tip:tipo);
    procedure mostrar(var Editorial1:string;
                      var Dir_Edit1:string;
                      var Per_Contac1:string;
                      var Tlfno1:string;
                      var Poblacion1:string;
                      var Provincia1:string;
                      var Autor1:string;
                      var Ano_Public1:Integer;
                      var Nombre_Nov1:string;
                      var ISBN1:string;
                      var Nombre1:string;
                      var Director1:string;
                      var Ttipo1:Tipo;
                      var Epoca1:string;
                      var Persona_prin1:string;
                      var Tema1:string;
                      var Personaje1:string;
                      var Autobiografia1:boolean); override;
end;
  Thistorica=class(Tnovela)   //Clase que hereda de Novela
  private
    Epoca:string;
    Persona_prin:string;
  public
    constructor Inicia;
    destructor Destroy;
    procedure alta(Epk,per_prin,Edit,Dir_Editorial,Persona_Contact,Telefono,Poblac,Prov,aut,nom_nov,tisbn:string;a  no_publ:integer);
    procedure mostrar(var Editorial1:string;
                      var Dir_Edit1:string;
                      var Per_Contac1:string;
                      var Tlfno1:string;
                      var Poblacion1:string;
                      var Provincia1:string;
                      var Autor1:string;
                      var Ano_Public1:Integer;
                      var Nombre_Nov1:string;
                      var ISBN1:string;
                      var Nombre1:string;
                      var Director1:string;
                      var Ttipo1:Tipo;
                      var Epoca1:string;
                      var Persona_prin1:string;
                      var Tema1:string;
                      var Personaje1:string;
                      var Autobiografia1:boolean); override;
  end;
  Tficcion=class(Tnovela) //Clase que hereda de Novela
  private
    Tema:string;
  public
    constructor Inicia;
    destructor Destroy;
    procedure alta(tem,Edit,Dir_Editorial,Persona_Contact,Telefono,Poblac,Prov,aut,nom_nov,tisbn:string;ano_publ:i  nteger);
    procedure mostrar(var Editorial1:string;
                      var Dir_Edit1:string;
                      var Per_Contac1:string;
                      var Tlfno1:string;
                      var Poblacion1:string;
                      var Provincia1:string;
                      var Autor1:string;
                      var Ano_Public1:Integer;
                      var Nombre_Nov1:string;
                      var ISBN1:string;
                      var Nombre1:string;
                      var Director1:string;
                      var Ttipo1:Tipo;
                      var Epoca1:string;
                      var Persona_prin1:string;
                      var Tema1:string;
                      var Personaje1:string;
                      var Autobiografia1:boolean); override;
  end;
  Tbiografia=class(Tnovela)  //Clase que hereda de Novela
  private
    Personaje:string;
    Autobiografia:boolean;
  public
    constructor Inicia;
    destructor Destroy;
    procedure alta(Pers,Edit,Dir_Editorial,Persona_Contact,Telefono,Poblac,Prov,aut,nom_nov,tisbn:string;ano_publ:  integer;Autobio:boolean);
    procedure mostrar(var Editorial1:string;
                      var Dir_Edit1:string;
                      var Per_Contac1:string;
                      var Tlfno1:string;
                      var Poblacion1:string;
                      var Provincia1:string;
                      var Autor1:string;
                      var Ano_Public1:Integer;
                      var Nombre_Nov1:string;
                      var ISBN1:string;
                      var Nombre1:string;
                      var Director1:string;
                      var Ttipo1:Tipo;
                      var Epoca1:string;
                      var Persona_prin1:string;
                      var Tema1:string;
                      var Personaje1:string;
                      var Autobiografia1:boolean); override;
  end;
implementation
  constructor Tbiblioteca.Inicia; //iniciamos la clase padre
  begin
    inherited create;
  end;
  procedure Tbiblioteca.Alta(Edit,Dir_Editorial,Persona_Contact,Telefono,Poblac,Prov:string);
  begin
    Editorial:=Edit;      //cargamos las variables con los valores que le pasamos
    Dir_Edit:=Dir_Editorial;
    Per_Contac:=Persona_Contact;
    Tlfno:=telefono;
    Poblacion:=Poblac;
    Provincia:=Prov;
  end;
  procedure Tbiblioteca.Baja;        //procedimiento baja
  begin
  end;
  procedure Tbiblioteca.Modificacion;    //procedimiento para modificar
  begin
  end;
  procedure Tbiblioteca.mostrar(var Editorial1:string;
                      var Dir_Edit1:string;
                      var Per_Contac1:string;
                      var Tlfno1:string;
                      var Poblacion1:string;
                      var Provincia1:string;
                      var Autor1:string;
                      var Ano_Public1:Integer;
                      var Nombre_Nov1:string;
                      var ISBN1:string;
                      var Nombre1:string;
                      var Director1:string;
                      var Ttipo1:Tipo;
                      var Epoca1:string;
                      var Persona_prin1:string;
                      var Tema1:string;
                      var Personaje1:string;
                      var Autobiografia1:boolean); //procedimiento para mostrar
  begin
      Editorial1:=Editorial;      //cargamos las variables con los valores que le pasamos
      Dir_edit1:=Dir_Edit;
      Per_contac1:=Per_Contac;
      tlfno1:=Tlfno;
      Poblacion1:=Poblacion;
      provincia1:=Provincia;
  end;
  destructor Tbiblioteca.Destroy;  //destruimos la clase padre Tbiblioteca
  begin
    inherited destroy;
  end;

  constructor Tprensa.Inicia;  //iniciamos la clase hijja Tprensa
  begin
    inherited create;
  end;
  procedure Tprensa.alta(Edit,Dir_Editorial,Persona_Contact,Telefono,
                         Poblac,Prov,nom,dir:string; tip:tipo);
  begin
    inherited alta(Edit,Dir_Editorial,Persona_Contact,Telefono,Poblac,Prov);  //llamamos a la clase padre y le pasamos los valores en cuestion
    Nombre:=nom;
    Director:=dir;
    ttipo:=tip;
  end;
  procedure tprensa.mostrar(var Editorial1:string;
                      var Dir_Edit1:string;
                      var Per_Contac1:string;
                      var Tlfno1:string;
                      var Poblacion1:string;
                      var Provincia1:string;
                      var Autor1:string;
                      var Ano_Public1:Integer;
                      var Nombre_Nov1:string;
                      var ISBN1:string;
                      var Nombre1:string;
                      var Director1:string;
                      var Ttipo1:Tipo;
                      var Epoca1:string;
                      var Persona_prin1:string;
                      var Tema1:string;
                      var Personaje1:string;
                      var Autobiografia1:boolean);
  begin
    inherited mostrar(Editorial1,Dir_Edit1,Per_Contac1,Tlfno1,
                                   Poblacion1,Provincia1,Autor1,Ano_Public1,
                                   Nombre_Nov1,ISBN1,Nombre1,Director1,
                                   Ttipo1,Epoca1,Persona_prin1,Tema1,Personaje1,
                                   Autobiografia1);
    nombre1:=nombre;
    director1:=director;
    ttipo1:=ttipo;
  end;
 
    destructor Tprensa.Destroy;  //destruimnos la clase hija tprensa
  begin
    inherited destroy;
  end;
  constructor Tnovela.Inicia; //iniciamos la clase hija Tnovela
  begin
    inherited create;
  end;
  procedure Tnovela.alta(Edit,Dir_Editorial,Persona_Contact,Telefono,Poblac,Prov,aut,nom_nov,tisbn:string;ano_pu  bl:integer);
  begin
    inherited alta(Edit,Dir_Editorial,Persona_Contact,Telefono,Poblac,Prov);  //volvemos a llamar al procedmiento del padre "alta" y le pasamos los valores en cuestion
    Autor:=aut;
    Nombre_nov:=nom_nov;
    ISBN:=tisbn;
    ano_public:=ano_publ;
  end;
  procedure tnovela.mostrar(var Editorial1:string;
                      var Dir_Edit1:string;
                      var Per_Contac1:string;
                      var Tlfno1:string;
                      var Poblacion1:string;
                      var Provincia1:string;
                      var Autor1:string;
                      var Ano_Public1:Integer;
                      var Nombre_Nov1:string;
                      var ISBN1:string;
                      var Nombre1:string;
                      var Director1:string;
                      var Ttipo1:Tipo;
                      var Epoca1:string;
                      var Persona_prin1:string;
                      var Tema1:string;
                      var Personaje1:string;
                      var Autobiografia1:boolean);
   begin
    inherited mostrar(Editorial1,Dir_Edit1,Per_Contac1,Tlfno1,
                                   Poblacion1,Provincia1,Autor1,Ano_Public1,
                                   Nombre_Nov1,ISBN1,Nombre1,Director1,
                                   Ttipo1,Epoca1,Persona_prin1,Tema1,Personaje1,
                                   Autobiografia1);
    Ano_Public1:=ano_public;
    autor1:=autor;
    nombre_nov1:=nombre_nov;
    isbn1:=isbn;
   end;

  destructor Tnovela.Destroy;     //destruimos la clase hija Tnovela
  begin
    inherited destroy;
  end;
  constructor Thistorica.Inicia;
  begin
    inherited create;   //iniciamos la clase nieta Thistorica
  end;
  procedure Thistorica.alta(Epk,per_prin,Edit,Dir_Editorial,Persona_Contact,Telefono,Poblac,Prov,aut,nom_nov,tis  bn:string;ano_publ:integer);
  begin
    inherited alta(Edit,Dir_Editorial,Persona_Contact,Telefono,Poblac,Prov,aut,nom_nov,tisbn,ano_publ);
    Epoca:=Epk;
    Persona_prin:=per_prin;
  end;
  procedure thistorica.mostrar(var Editorial1:string;
                            var Dir_Edit1:string;
                            var Per_Contac1:string;
                            var Tlfno1:string;
                            var Poblacion1:string;
                            var Provincia1:string;
                            var Autor1:string;
                            var Ano_Public1:Integer;
                            var Nombre_Nov1:string;
                            var ISBN1:string;
                            var Nombre1:string;
                            var Director1:string;
                            var Ttipo1:Tipo;
                            var Epoca1:string;
                            var Persona_prin1:string;
                            var Tema1:string;
                            var Personaje1:string;
                            var Autobiografia1:boolean);
  begin
  inherited mostrar(Editorial1,Dir_Edit1,Per_Contac1,Tlfno1,
                                   Poblacion1,Provincia1,Autor1,Ano_Public1,
                                   Nombre_Nov1,ISBN1,Nombre1,Director1,
                                   Ttipo1,Epoca1,Persona_prin1,Tema1,Personaje1,
                                   Autobiografia1);
  Epoca1:=Epoca;
  persona_prin1:=persona_prin;
  end;
  destructor Thistorica.Destroy;
  begin
    inherited destroy;
  end;
  constructor Tficcion.Inicia;
  begin
    inherited create;
  end;
  procedure Tficcion.alta(tem,Edit,Dir_Editorial,Persona_Contact,Telefono,Poblac,Prov,aut,nom_nov,tisbn:string;a  no_publ:integer);
  begin
    inherited alta(Edit,Dir_Editorial,Persona_Contact,Telefono,Poblac,Prov,aut,nom_nov,tisbn,ano_publ);
    tema:=tem;
  end;
  procedure tficcion.mostrar(var Editorial1:string;
                            var Dir_Edit1:string;
                            var Per_Contac1:string;
                            var Tlfno1:string;
                            var Poblacion1:string;
                            var Provincia1:string;
                            var Autor1:string;
                            var Ano_Public1:Integer;
                            var Nombre_Nov1:string;
                            var ISBN1:string;
                            var Nombre1:string;
                            var Director1:string;
                            var Ttipo1:Tipo;
                            var Epoca1:string;
                            var Persona_prin1:string;
                            var Tema1:string;
                            var Personaje1:string;
                            var Autobiografia1:boolean);
  begin
  inherited mostrar(Editorial1,Dir_Edit1,Per_Contac1,Tlfno1,
                                   Poblacion1,Provincia1,Autor1,Ano_Public1,
                                   Nombre_Nov1,ISBN1,Nombre1,Director1,
                                   Ttipo1,Epoca1,Persona_prin1,Tema1,Personaje1,
                                   Autobiografia1);
  tema1:=tema;
  end;
  destructor Tficcion.Destroy;
  begin
    inherited destroy;
  end;
  constructor Tbiografia.Inicia;
  begin
    inherited create;
  end;
  procedure Tbiografia.alta(Pers,Edit,Dir_Editorial,Persona_Contact,Telefono,Poblac,Prov,aut,nom_nov,tisbn:strin  g;ano_publ:integer;Autobio:boolean);
  begin
    inherited alta(Edit,Dir_Editorial,Persona_Contact,Telefono,Poblac,Prov,aut,nom_nov,tisbn,ano_publ);
    Personaje:=Pers;
    Autobiografia:=Autobio;
  end;
  procedure tbiografia.mostrar(var Editorial1:string;
                            var Dir_Edit1:string;
                            var Per_Contac1:string;
                            var Tlfno1:string;
                            var Poblacion1:string;
                            var Provincia1:string;
                            var Autor1:string;
                            var Ano_Public1:Integer;
                            var Nombre_Nov1:string;
                            var ISBN1:string;
                            var Nombre1:string;
                            var Director1:string;
                            var Ttipo1:Tipo;
                            var Epoca1:string;
                            var Persona_prin1:string;
                            var Tema1:string;
                            var Personaje1:string;
                            var Autobiografia1:boolean);
  begin
  inherited mostrar(Editorial1,Dir_Edit1,Per_Contac1,Tlfno1,
                                   Poblacion1,Provincia1,Autor1,Ano_Public1,
                                   Nombre_Nov1,ISBN1,Nombre1,Director1,
                                   Ttipo1,Epoca1,Persona_prin1,Tema1,Personaje1,
                                   Autobiografia1);
  personaje1:=personaje;
  autobiografia1:=autobiografia;
  end;
  destructor Tbiografia.Destroy;
  begin
    inherited destroy;
  end;
end.

Tomare en cuenta tu consejo, yo por ahora solo me limito a aprender, llebo solo 1 mes programando en Delphi y es mi primer lenguaje de programacion orientado a objetos que aprendo, la pregunta mas logica es....¿Podria utilizar siempre Propiedades cuando exista una jerarquia de clases?
Responder Con Cita
  #2  
Antiguo 14-12-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Bien dicen que el hábito no hace al monje. Esto no tienen nada que ver con polimorfismo, es una horrible chapuza para utilizar virtual y override.

Es imperdonable que una clase haga referencia implícita o explícita a datos de sus descendientes. Cada método "virtual" carga con todos los posibles parámetros de la jerarquía. ¿Qué pensará este profesor? Hazle este cuestionamiento:

Supongamos que se distribuye el código compilado (dcus) de esta biblioteca sin proporcionar el código fuente. Y supongamos que en un futuro, quienes adquirieron la biblioteca necesitan ampliar la jerarquía añadiendo nuevos descendientes que introducen nuevos atributos. ¿Cómo se puede mantener el "polimorfismo"? Tendríamos que añadir los nuevos parámetros al procedimiento de la clase base. ¡Pero no disponemos del código fuente de la clase base!

De paso pregúntale para qué quiere todos esos var que anteceden a los parámetros ya que éstos no se modifican en la rutina.

Y en mi opinión, dotar de tantos parámetros a un método no es más que una forma de disfrazar de OOP a una programación procedural a la antigüita.

Mal, muy mal. Como te comenté: tómalo con reserva.

// Saludos
Responder Con Cita
  #3  
Antiguo 14-12-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por roman
De paso pregúntale para qué quiere todos esos var que anteceden a los parámetros ya que éstos no se modifican en la rutina.
Je, je. Aquí me equivoco. Ya veo por que son var. ¡Válgame dios!

// Saludos
Responder Con Cita
  #4  
Antiguo 14-12-2005
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 26
maeyanes Va por buen camino
Cita:
Empezado por roman
Je, je. Aquí me equivoco. Ya veo por que son var. ¡Válgame dios!

// Saludos
Lo mismo pensé yo...
Responder Con Cita
  #5  
Antiguo 14-12-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por maeyanes
Lo mismo pensé yo...
¿De que me equivoqué o del "válgame dios"?



// Saludos
Responder Con Cita
  #6  
Antiguo 14-12-2005
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 26
maeyanes Va por buen camino
Cita:
Empezado por roman
¿De que me equivoqué o del "válgame dios"?



// Saludos
Del "válgame dios"...


Me fui para atrás cuando vi ese código...
Responder Con Cita
  #7  
Antiguo 14-12-2005
liriko liriko is offline
Miembro
 
Registrado: nov 2005
Posts: 27
Poder: 0
liriko Va por buen camino
Unhappy polimorfismo

Ahora mismo me has descolocado.¿Lo que e hecho es una chapuza?, y si es asi...¿Como puedo solucionarlo??

Perdona pero estoy desconcertado, segun me dices, lo primero que deberia de haber hecho es transformar los parametros en propiedades, y no tengo ni idea de como hacer eso. Los var que hay puestos antes de cada parametro lo que dicen es que ese procedimiento va a devolver esos parametros al Form que uso para mostrar los datos.
Responder Con Cita
  #8  
Antiguo 14-12-2005
liriko liriko is offline
Miembro
 
Registrado: nov 2005
Posts: 27
Poder: 0
liriko Va por buen camino
polimorfismo

Soys rapidos,
Responder Con Cita
  #9  
Antiguo 14-12-2005
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 26
maeyanes Va por buen camino
Cita:
Empezado por liriko
Ahora mismo me has descolocado.¿Lo que e hecho es una chapuza?, y si es asi...¿Como puedo solucionarlo??

Perdona pero estoy desconcertado, segun me dices, lo primero que deberia de haber hecho es transformar los parametros en propiedades, y no tengo ni idea de como hacer eso. Los var que hay puestos antes de cada parametro lo que dicen es que ese procedimiento va a devolver esos parametros al Form que uso para mostrar los datos.
Checa el ejemplo que te di. Las dos clases que modifiqué usan solamente propiedades (como debería ser) y al final un ejemplo de como asignarle valores.

Para obtener el valor de las propiedades solo tienes que hacer lo contrario, por ejemplo, desde un formulario:

Código Delphi [-]
procedure TFom1.Form1Show(Sender: TObject);
begin
  // Formulario con 2 edit:
  Edit1.Text := Novela.Editorial;
  Edit2.Text := Novela.Autor
end;

Ya con eso estás obteniendo el valor de las propiedades del objeto Novela.


Saludos...
Responder Con Cita
  #10  
Antiguo 14-12-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Cita:
Empezado por liriko
segun me dices, lo primero que deberia de haber hecho es transformar los parametros en propiedades, y no tengo ni idea de como hacer eso. Los var que hay puestos antes de cada parametro lo que dicen es que ese procedimiento va a devolver esos parametros al Form que uso para mostrar los datos.
Revisa a fondo el ejemplo de Maeyanes

saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #11  
Antiguo 14-12-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
juer, que dificil es seguir este hilo con tanta actividad....

mejor vuelvo mañana... o mejor.... no me meto que estoy sobrando

saludos compis
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #12  
Antiguo 14-12-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Lepe
no me meto que estoy sobrando
No, si aquí el que sobra es el profesor

// Saludos
Responder Con Cita
  #13  
Antiguo 14-12-2005
liriko liriko is offline
Miembro
 
Registrado: nov 2005
Posts: 27
Poder: 0
liriko Va por buen camino
Unhappy polimorfismo

El ejercicio era el siguiente.
Hay que crear un programa el cual permita al usuario introducir los datos por teclado de Prensa, Novela histarica, novela de ficcion, o novela biografica. Para ello debemos usar una jerarquia de clases, las cuales ya habeis visto. Para implementar el procedure alta, el cual llenara un array polimorfico donde almacenaremos los objetos, debemos usar la Herencia. Para el Procedimiento Mostrar deberemos usar Polimorfismo.
Visto lo visto, lo que me estais aconsejando es que empieze de 0 el programa verdad?
Responder Con Cita
  #14  
Antiguo 14-12-2005
johnyy johnyy is offline
Registrado
 
Registrado: nov 2005
Posts: 6
Poder: 0
johnyy Va por buen camino
Unhappy perplejo

wenas,simplemente decir k un p...mes pa esto.
soy kompañero d clase de liriko y la verdad es k tanto kalentamiento y tanto "averiguar x vuestra cuenta" estaba empezando a moskearme.eso hay k vivirlo pa saber l k sentiamos,sin k nos explicara nada.dando kosas x sabidas y x corregidas.

al final tokara l de sempre,aprender cada uno x su cuenta

enga,salu2
Responder Con Cita
  #15  
Antiguo 14-12-2005
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 26
maeyanes Va por buen camino
Cita:
Empezado por johnyy
wenas,simplemente decir k un p...mes pa esto.
soy kompañero d clase de liriko y la verdad es k tanto kalentamiento y tanto "averiguar x vuestra cuenta" estaba empezando a moskearme.eso hay k vivirlo pa saber l k sentiamos,sin k nos explicara nada.dando kosas x sabidas y x corregidas.

al final tokara l de sempre,aprender cada uno x su cuenta

enga,salu2
Hola johnyy, bienvenido a estos foros, te recomiendo que le des una leidita a este hilo y ya que estamos en esto, también revisa la guía de estilo.


Saludos!!
Responder Con Cita
  #16  
Antiguo 14-12-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 26
vtdeleon Va por buen camino
Cita:
Empezado por maeyanes
Hola johnyy, bienvenido a estos foros, te recomiendo que le des una leidita a este hilo y ...
Wow, gracias, me quede vico
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #17  
Antiguo 14-12-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por liriko
¿Lo que e hecho es una chapuza?
Tú no. Tu profesor!!

¿Solucionarlo? No sé qué decirte. Quizá, por dar el beneficio de la duda al profesor, sería bueno ver cuáles fueron los requerimientos originales de la práctica.

Empecemos con el hecho de que semánticamente hablando los métodos alta y mostrar no les encuentro ningún sentido. ¿Qué significa dar de alta un libro?

Para mí, en todo caso, significaría crear una instancia de la clase TLibro, llenar sus propiedades con datos proporcionados por el usuario y guardar la instancia en un almacenaje permanente como podría ser una base de datos.

Piénsalo así:

Si tienes una clase


Código Delphi [-]
type
  TLibro = class
    propiedades

    procedure Alta(parámetros);
  end;

implementation

procedure TLibro.Alta(parámetros);
begin
  propiedades := parámetros);
end;


Realmente te puedes ahorrar las clases y usar records:


Código Delphi [-]
type
  TLibro = record
    propiedades
  end;

procedure Alta(parámetros);

interface

procedure Alta(Libro: TLibro; parámetros);
begin
  Libro.propiedades := parámetros;
end;

con lo cual se quita el disfraz OOP a las clases.

// Saludos
Responder Con Cita
  #18  
Antiguo 14-12-2005
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 26
maeyanes Va por buen camino
No soy Román pero te contesto.

Si, si se puede hacer.

Aquí te pongo como sería tu clase padre usando solamente propiedades:

Código Delphi [-]
  TBiblioteca = class // Clase padre
  private
    FEditorial: string;
    FDir_Edit: string;
    FPer_Contac: string;
    FTlfno: string;
    FPoblacion: string;
    FProvincia: string;
  public
    constructor Create;
    destructor Destroy; override;

    // Propiedades de la clase
    property Editorial: string 
      read FEditorial
      write FEditorial;
    property Dir_Edit: string;
      read FDir_Edit
      write FDir_Edit;
    property Per_Contact: string
      read FPer_Contact
      write FPer_Contact;
    property Tlfno: string
      read FTlfno
      write FTlfno;
    property Poblacion: string
      read FPoblacion
      write FPoblacion;
    property Provincia: string
      read FProvincia
      write FProvincia;
  end;

Ahora, una clase descendiente de TBiblioteca podría ser así:

Código Delphi [-]
  TNovela = class(TBiblioteca) //Clase que hereda de Biblioteca
  private
    FAutor:string;
    FAno_Public:Integer;
    FNombre_Nov:string;
    FISBN:string;
  public
    constructor Create;
    destructor Destroy; override;

    // Propiedades de la clase
    property Autor: string
      read FAutor
      write FAutor;
    property Ano_Public: string
      read FAno_Public
      write FAno_Public;
    property Nombre: string
      read FNombre: string
      write FNombre;
    property ISBN: string
      read FISBN
      write FISBN;
  end;

Ahora, para darle valores a las propiedades de un objeto sería tan fácil como:

Código Delphi [-]
var
  Novela: TNovela;

begin
  Novela := TNovela.Create;
  Novela.Editorial := 'Editores Unidos'; // Esta propiedad es heredada
  Novela.Autor := 'Anónimo'; // Esta propiedad es exclusiva de TNovela
    // y sus descendientes.
end;

Espero que esto te aclare un poco el uso de las propiedades.



Saludos...
Responder Con Cita
  #19  
Antiguo 14-12-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
A la excelente contestación de Maeyanes yo añadiría el polimorfismo en plena acción:

Código Delphi [-]
var Libro:TBiblioteca;
begin
  Libro := TNovela.Create(...);
 
end;

Libro podrá ser TBiblioteca, o cualquier otro descendiente.

saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 06:09:34.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi