Herencia en Pascal

30
HERENCIA SIMPLE •Determina un único padre para todas aquellas subclases que se crean a partir de la clase padre

Transcript of 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

En object pascal únicamente es posible establecer un tipo de herencia

simple.

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.

Animal

Reptil

Serpiente

Anfibio

Rana

Mamífero

Caballo

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;

• implementation

• { Tseda }

• constructor Tseda.create;

• begin

• promedio:=0;

• 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.salirClick(Sender: TObject);

• begin

• Close;

• end;

• procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);

• begin

• atr.Free;

• obj.Free;

• end;

• procedure TForm1.calcularClick(Sender: TObject);

• begin

• llenar(atr);

• mostrar;

• 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.

• FIN