Download - Herencia en Pascal
HERENCIA SIMPLE
• Determina un único padre para todas aquellas subclases que se
crean a partir de la clase
padre
Es la capacidad de poder crear subclases o clases hijas que hereden
atributos y métodos comunes definidos por una clase mayor o padre también llamada
superclase
HERENCIA EN PASCAL
LA HERENCIA MÚLTIPLE
Determina uno o más padres para todas aquellas subclases
que se crean, una clase hija únicamente hereda aquellos atributos o
métodos establecidos como public o públicos.
CLASE PADRE• unit Ucentral;
• {$mode objfpc}{$H+}
• interface
• uses
• Classes, SysUtils;
• type
• { Tcentral }
• Tcentral=class
ATRIBUTOS PRIVADOS DE LA CLASE
• private
• cc:integer;
• nombre:string;
• edad:integer;
• semestre:integer;
• public
• constructor create;
• procedure setnombre(nom:string);
• function getnombre:string;
• procedure setedad(ed:integer);
• function getedad:integer;
• procedure setsemester(sem:integer);
• function getsemestre:integer;
• procedure setcc(c:integer);
• function getcc:integer;
• end;
IMPLEMENTACIÓN DEL MÉTODO CONSTRUCTOR DE LA CLASE
• implementation
• { Tcentral }
• constructor Tcentral.create;
• begin
• nombre:='';
• semestre:=0;
• cc:=0;
• edad:=0;
• end;
IMPLEMENTACIÓN DEL MÉTODO SELECTOR Y MODIFICADOR
• procedure Tcentral.setnombre(nom: string);
• begin
• nombre:=nom;
• end;
• function Tcentral.getnombre: string;
• begin
• Result:=nombre;
• end;
IMPLEMENTACIÓN DEL MÉTODO SELECTOR Y MODIFICADOR
• procedure Tcentral.setedad(ed: integer);
• begin
• edad:=ed;
• end;
• function Tcentral.getedad: integer;
• begin
• Result:=edad;
• end;
• procedure Tcentral.setsemester(sem: integer);
• begin
• semestre:=sem;
• end;
• function Tcentral.getsemestre: integer;
• begin
• Result:=semestre;
• end;
• procedure Tcentral.setcc(c: integer);
• begin
• cc:=c;
• end;
• function Tcentral.getcc: integer;
• begin
• Result:=cc;
• end;
• end.
•
• unit Usede;
• {$mode objfpc}{$H+}
• interface
• uses
• Classes, SysUtils,Ucentral;
• type
• { Tseda }
• Tseda=class(Tcentral)
• private
• promedio:real;
• public
• constructor create;
• procedure setpromedio(pro:real);
• function getpromedio:real;
• function subcidio:double;
• end;
• procedure Tseda.setpromedio(pro: real);
• begin
• promedio:=pro;
• end;
• function Tseda.getpromedio: real;
• begin
• Result:=promedio;
• end;
• function Tseda.subcidio: double;
• var
• aub:double;
• begin
• if (getpromedio >= 4 )and (getedad <=18) then
• begin
• aub:=30000;
• end• else• if (getpromedio < 4 ) and (getpromedio >=3)and(getedad<=18) then
• begin• aub:=5000;
• end• else• begin• aub:=0;
• end;• Result:=aub;
• end;• end.
UNIDAD DE LA VENTANA• unit Uventana;
• {$mode objfpc}{$H+}
• interface
• uses
• Classes, SysUtils, FileUtil,Ucentral,Usede, LResources, Forms, Controls, Graphics, Dialogs,
• StdCtrls;
• type
• private
• obj:Tseda;
• atr:Tcentral;
• procedure mostrar;
• procedure llenar(datos:Tcentral);
• { private declarations }
• public
• { public declarations }
• end;
• procedure TForm1.FormCreate(Sender: TObject);
• begin
• obj:=Tseda.create;
• atr:=Tcentral.create;
• end;
• procedure TForm1.limpiarClick(Sender: TObject);
• begin
• ListBox1.Clear;
• nom.Clear;
• Pro.Clear;
• seme.Clear;
• ed.Clear;
• ced.Clear;
• nom.SetFocus;
• end;
• procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
• begin
• atr.Free;
• obj.Free;
• end;
• procedure TForm1.mostrar;
• begin
• ListBox1.Clear;
• ListBox1.Items.Add('Nombre ' +atr.getnombre );
• ListBox1.Items.Add('Cedula ' +IntToStr(atr.getcc));
• ListBox1.Items.Add('Edad ' +IntToStr(atr.getedad));
• ListBox1.Items.Add('Semestre ' +IntToStr(atr.getsemestre));
• ListBox1.Items.Add('Sbcido de $ : ' +FloatToStr(obj.subcidio));
• ListBox1.Items.Add('Promedio ' +FloatToStr(obj.getpromedio));
• end;
• procedure TForm1.llenar(datos: Tcentral);
• begin
• datos.setcc(StrToInt(ced.Text));
• datos.setedad(StrToInt(ed.Text));
• datos.setnombre(nom.Text);
• datos.setsemester(StrToInt(seme.Text));
• obj.setpromedio(StrToFloat(Pro.Text));
• end;
• initialization
• {$I Uventana.lrs}
• end.