Vous êtes sur la page 1sur 3

15/10/2015

Conoce300::PascalconFreePascal::IntroduccinalaprogramacinorientadaaobjetosII::Referenciasdeclase

LENGUAJESDEPROGRAMACIN

PASCALCONFREEPASCAL
TrabajaenIBM

Accedeasusofertasdeempleo.
Checalasvacantesypostlate.

11.IntroduccinalaprogramacinorientadaaobjetosII.

11.4.Referenciasdeclase.

anterior::indice::siguiente

11.1.Excepciones.
11.2.Propiedades.
11.3.Mtodosabstractos.
11.4.Referenciasdeclase.

11.5.Solapamientodeobjetos,operadoresisyas, 11.7.Arreglosabiertosvariant.
yelmtodoclasstype.
11.8.Preguntasyejercicios.
11.6.Atributos,propiedades,mtodosdeclasey 11.9.Respuestaalaspreguntasyejercicios.
mtodosestticos.

Unareferenciadeclaseesuntipodedatoquedefinimosparaquesepuedacrearunavariable,quepermitaguardarunaclaseen
dichavariable,esdecirladireccindememoriadedichaclase.Unadelascualidadesdeestacaractersticaesquenospermite
crearobjetosapartirdelaclasequeseguardeenunavariable.
Veamosunejemplosimple,suponiendoquehemoscreadolaclaseTClaseA,entoncespodemosdefinirunareferenciadeclase,
delsiguientemodo:

Type
TClaseAClass=ClassofTClaseA

Ahoradeclaramosdosvariablesunaqueserunobjetoylaotraunaclase.

Var
ClaseAClass=TClaseAClass
ObjetoA=TClaseA

Luegoasignamoslaclaseycreamoselobjeto:

ClaseAClass:=TClaseA
ObjetoA:=ClaseAClass.create

Como podemos observar en ves de usar TClaseA.create hemos usado la variable que almacena la clase, y no la clase misma
parahacerlo.
LasReferenciasdeclasenoserantilessiestosnohacenusodelamismacompatibilidadentreobjetos.Cuandocreamosuna
variable que es una referencia de clase como ClaseAClass, podemos asignarle a esta variable cualquier clase que sea
descendientedelaclaseTClaseA.EsdecirsiTClaseBesdescendientedeTClaseA,entoncesestotambinesvalido:

ClaseAClass:=TClaseB

Freepascaldeclaravariasreferenciasdeclaseensuslibrerias,comoson:TClassyExceptionClass,quesonreferenciasdeclase
delasclasesTclassyException.Ysedeclarandelasiguientemanera:

TClass=ClassofTObject
ExceptClass=ClassofException

EltipodereferenciadeclaseTClass,sepuedeusarparaalmacenarcualquierclaseescritaenfreepascal,yaquetodaclasees
descendientedeTObject.Explicadotodoloanteriorobservemosahoraelsiguienteprograma:

{$codepageutf8}
{$modeobjfpc}
USESNumeros,Complejos,Reales;
VAR
Ref:TClassNumero;
cad:string;
num1,num2:TNumero;
rpt:char;

http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap1104Referencias%20de%20clase.php

1/3

15/10/2015

Conoce300::PascalconFreePascal::IntroduccinalaprogramacinorientadaaobjetosII::Referenciasdeclase

BEGIN

Writeln('IngreseconquenumerosquiereMultiplicar:');
Writeln('[1]Complejos');
Writeln('[2]Reales');
Readln(rpt);
CASErptOF
'1':Ref:=TComplejo;
'2':Ref:=TReal;
END;

Write('Ingreseelprimernumero');readln(cad);
//Setienequeusarelconstructordelpadre
num1:=Ref.create;
num1.PonCad(cad);

Write('Ingreseelsegundonumero');readln(cad);
//Setienequeusarelconstructordelpadre
num2:=Ref.create;
num2.PonCad(cad);

num1.Multiplicacion(num2);
Writeln(num1.ObtCad(3))
END.

Cdigofuente16:Ejemplodelusodereferenciasdeclase.

EnesteprogramahacemosusodelasclassesTNumero,TComplejosyTReal,vistoenloscaptulosanteriores,loprimeroquese
puedeobservareslavariableRef:TClassNumero,endondeTClassNumeroesunreferenciadeclasedelaClaseTNumero.
Elprogramapidealusuariosobrequenumeroseharlamultiplicacin,siseharconunnumeroComplejooReal,yhaciendouso
delareferenciadeclases,seescogequeclasesusarparacrearlosnmerosyrealizarlaoperacin.
Algo importante es que si la variable almacena la clase TComplejo, esto no significa que podamos usar los mtodos y atributos
quetieneestaclase,slosepuedenusarlosmtodosyatributosdelaclasepadre,queenestecasoesTNumero.Esdecirhacer
estonoesposible.

Num1:=Ref.crear(0,0)

y el compilador generar un error indicandonos que el mtodo crear no es miembro de la clase a la que se hace referencia. La
unidadesyelprogramadeejemplodeestecapitulosepuedendescargardesdeesteenalce:Ejemplo02.zip

Recomendar

Tweet

anterior::indice::siguiente

SUGERENCIAS

"Agradezco que se tomen su tiempo, para escribirme una sugerencia. Toda sugerencia que me
escribameayudaamejorarloscontenidosdelawebacordeasusnecesidades.Lassugerencias,se
recibirn siempre y cuando ingrese al menos su nombre o seudnimo y la sugerencia. Las
sugerenciassondeusointernoynosernpublicadasenlawebConoce3000"

Nombreoseudnimo

CorreoElectrnico

Sugerencias

Deseorecibirunacopiadelmensaje.

Enviar

http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap1104Referencias%20de%20clase.php

2/3

15/10/2015

Conoce300::PascalconFreePascal::IntroduccinalaprogramacinorientadaaobjetosII::Referenciasdeclase

PORTADA| LIBROS| APUNTES| ARTCULOS

Todoslostextos,imgenesyvideosdeConoce3000estancolocadosbajounalicencia:
CreativeCommonsReconocimientoNoComercial3.0UnportedLicense.

http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap1104Referencias%20de%20clase.php

3/3

Vous aimerez peut-être aussi