Académique Documents
Professionnel Documents
Culture Documents
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
Todoslostextos,imgenesyvideosdeConoce3000estancolocadosbajounalicencia:
CreativeCommonsReconocimientoNoComercial3.0UnportedLicense.
http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap1104Referencias%20de%20clase.php
3/3