Ayuda y Analizador léxico-sintáctico de Free Pascal para ...
Conoce300 __ Pascal Con Free Pascal __ Introducción a La Programación Orientada a Objetos II __...
description
Transcript of Conoce300 __ Pascal Con Free Pascal __ Introducción a La Programación Orientada a Objetos II __...
-
15/10/2015 Conoce300::PascalconFreePascal::IntroduccinalaprogramacinorientadaaobjetosII::Atributos,propiedades,mtodosdeclaseyestticos
http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap1106Atributos%20propiedades%20metodos%20de%20clase%20y%20estaticos. 1/4
PASCALCONFREEPASCAL
11.IntroduccinalaprogramacinorientadaaobjetosII.
11.6.Atributos,propiedades,mtodosdeclaseymtodosestticos.anterior::indice::siguiente11.1.Excepciones.11.2.Propiedades.11.3.Mtodosabstractos.11.4.Referenciasdeclase.
11.5.Solapamientodeobjetos,operadoresisyas,yelmtodoclasstype.11.6.Atributos,propiedades,mtodosdeclaseymtodosestticos.
11.7.Arreglosabiertosvariant.11.8.Preguntasyejercicios.11.9.Respuestaalaspreguntasyejercicios.
Aldefinirunatributodeunaclase, loquesehacees indicarqueeseatributosedebecrearparacadaobjetoo instanciaquesecreedelaclase.Esdecircadaobjetoo instanciatienesupropiarepresentacinindependientedelatributo.Perosinembargoesmuytiltenerunatributocompartidoportodoslosobjetosdelaclase,aesosatributosselesconocecomoatributosdeclase,unatributodeclaseserelacionaconlaclase,peronoconlosobjetosoinstancias.Para definir atributos de clase se debe colocar antes las palabras reservadas class y var, para luego colocar los atributos, elbloquedeatributosdeclasesedebefinalizarconlapalabrareservadavar.Verejemplo:
TAvion=classclassvaraviones:integer//atributosovariablesdeclasecolorado:integervarconstructorcreateProcedureDespegarvirtualabstractEnd
Paraaccederaunatributodeclase,sloesnecesariousar laclase,noobstanteunobjetoo instancia, tambinsepuedeusarparaaccederalatributodeclase.Estonosdicequeelatributodeclasesepuedeusarsinhabersecreadoelobjeto.Losmtodosdeclaseal igualque losatributosdeclase,sonmtodosquese relacionancon lasclasesynocon losobjetosoinstancias,estotambinnospermitetenerunmtodocompartidoquefuncionarigualentodaslasinstanciasquesecreen,perodentrodelosmtodosdeclaseslosepuedenaccederaatributosdeclase,Aligualquelosatributoselmtododeclasesepuedeusarsinhabersecreadoelobjeto.UnejemplodeunmtododeclaseeselmtodoClassTypequeseexplicenelcapituloanterior.Paradeclararunmtododeclaseenfreepascal,slohayqueaadirlapalabraclaveclassdelantedelmtodo.
TypeTClaseA=classclassprocedureEscribe
Los mtodos de clase tambin pueden ser virtuales, por lo que se pueden sobreescribir y usar para crear polimorfismo. Losmtodosdeclasesepuedenejecutarusandounaclasecomoastambinusandounobjeto.
VarA:TClaseABegin...TClaseA.EscribeA.Escribe//ElobjetoAdebesercreadoconanterioridad
El parmetro oculto self de unmtodode clase, es una referencia a la clasededondeelmtodode clasees ejecutado,Si lmtododeclaseesejecutadocon la claseTClaseA,entonces self es la claseTClaseA, y si esteesejecutadoconunObjetoentoncesselftendrunareferenciadelaclasedelobjeto.Sinembargo,dentrodeunmtododeclasenosepuedeusarselfparaaccederalosatributos,propiedadesymtodosnormales,perosisepuedeusarparaejecutarconstructoresyotrosmtodosdeclase,atributosdeclaseypropiedadesdeclase.Laspropiedadesdeclasesonsimilaresalaspropiedadesnormales,peroslotrabajanconatributosdeclaseymtodosdeclaseestticos. Los mtodos de clase que hemos visto no se pueden usar con las propiedades de clase, para ello es necesarioconvertir unmtodode claseaunmtodoesttico colocandoal final delmtodode clase lapalabra reservadastatic, coneso
LENGUAJESDEPROGRAMACIN
TrabajaenSagarpaAccedeasusofertasdeempleo.Checalasvacantesypostlate.
-
15/10/2015 Conoce300::PascalconFreePascal::IntroduccinalaprogramacinorientadaaobjetosII::Atributos,propiedades,mtodosdeclaseyestticos
http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap1106Atributos%20propiedades%20metodos%20de%20clase%20y%20estaticos. 2/4
convertimosalmtododeclaseenunmtodoesttico,cuandounmtododeclasesehaceestticoesteyanosepuedeusarcomomtodosvirtuales,esdeciryanosepuedehacerpolimorfismo.Ejemplo:
{$codepageutf8}{$modeobjfpc}USESsysutils;TYPETClassAvion=CLASSOFTAvion;TAvion=CLASSCLASSVARFAviones:integer;//atributosovariablesdeclaseVARNombre:string;CONSTRUCTORcreate;CLASSFUNCTIONObtAviones:integer;static;CLASSpropertyaviones:integerreadObtAviones;
PROCEDUREDespegar;virtual;abstract;
END;TAvComercial=CLASS(TAvion)PROCEDUREDespegar;override;END;
TAvGuerra=CLASS(TAvComercial)PROCEDUREDespegar;override;END;
TEscenario=CLASSRef:TClassAvion;A:ARRAYOFTAvion;PROCEDUREGenerarAvionesAzar;END;
CONSTRUCTORTAvion.create;BEGINinheritedcreate;Faviones+=1END;
CLASSFUNCTIONTAvion.ObtAviones:integer;BEGINObtAviones:=FAvionesEND;
PROCEDURETAvComercial.Despegar;BEGINWriteln('DespegandoAvionComercial'+Nombre);END;PROCEDURETAvGuerra.Despegar;BEGINWriteln('DespegandoAviondeGuerra'+Nombre);END;
PROCEDURETEscenario.GenerarAvionesAzar;VARi,j,c:integer;BEGINrandomize;c:=random(100);setlength(A,c);FORi:=1TOc1DOBEGINj:=random(150);IF(jMOD2)=0THENref:=TAvComercialELSEref:=TAvGuerra;A[i]:=ref.create;A[i].Nombre:=IntToStr(i);A[i].despegar;END;Writeln(TAvion.aviones,'avionescreados');END;
VAREscenario:TEscenario;BEGINEscenario:=TEscenario.create;Escenario.GenerarAvionesAzarEND.
Cdigofuente21:Ejemplodelusodeunatributodeclasecomouncontadordeobjetos.Talcomosepuedeobservarenelejemploelusodeatributosdeclase,mtodosdeclaseypropiedadesdeclaseeseldedefinircontadorescomoelatributoaviones,quesecompartecon todos losobjetoscreados,yaquecomosemencionoanteriormente,cadavezquesecreaunavinenmemoria,noseseparaunespaciodememoriaparaelatributoavionesporcadaavinquesecrea,yaqueesteexisteenlapropiaclaseTAvion.Sielatributoaviones,nohubiesesidounatributodeclaseentoncescadavezquesecreaunavin,elatributoavionesdecadainstanciaslotendraelvalorde1.LosatributosdeclasetambinsepuedenusarcomovariablesdecontroldeunbucleFor,siempreycuandoseandeltipoentero,
-
15/10/2015 Conoce300::PascalconFreePascal::IntroduccinalaprogramacinorientadaaobjetosII::Atributos,propiedades,mtodosdeclaseyestticos
http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap1106Atributos%20propiedades%20metodos%20de%20clase%20y%20estaticos. 3/4
enumeradoocarcter,estoesdebidoaqueunatributodeclasesecomportacomounavariableglobal,ycomoyaseconocedeloexplicadoencaptulosanteriores,unbucleFor,admiteelusodevariablesglobalescomovariablesdecontrol.Acontinuacinunejemplo:
{$codepageutf8}{$modeobjfpc}
TYPETCualquierClase=CLASSCLASSVARj:integer;//variabledecontrolVARPROCEDUREPrueba;END;
PROCEDURETCualquierClase.Prueba;BEGINFORj:=1TO10DOWriteln(j);END;
VARMiClase:TCualquierClase;BEGINMiClase:=TCualquierClase.Create;MiClase.PruebaEND.
Cdigofuente22:Ejemplodelusodeunatributodeclasecomouncontadordeobjetos.Comosepuedeverenesteejemploelatributodeclaseconidentificadorj,sepuedeusarcomounavariabledecontroldelbucleFor.Noobstantealserunatributodeclase,sedebetenerpresentequeesteatributoescompartidoportodaslasinstanciasdelaclase.ltimarevisin:26/02/2014.
Tweet 0
anterior::indice::siguiente
SUGERENCIAS
"Agradezco que se tomen su tiempo, para escribirme una sugerencia. Toda sugerencia que meescribameayudaamejorarloscontenidosdelawebacordeasusnecesidades.Lassugerencias,serecibirn siempre y cuando ingrese al menos su nombre o seudnimo y la sugerencia. LassugerenciassondeusointernoynosernpublicadasenlawebConoce3000"Nombreoseudnimo :
CorreoElectrnico :Sugerencias :
Deseorecibirunacopiadelmensaje. Enviar
0Recomendar
-
15/10/2015 Conoce300::PascalconFreePascal::IntroduccinalaprogramacinorientadaaobjetosII::Atributos,propiedades,mtodosdeclaseyestticos
http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap1106Atributos%20propiedades%20metodos%20de%20clase%20y%20estaticos. 4/4
PORTADA|LIBROS|APUNTES|ARTCULOS
Todoslostextos,imgenesyvideosdeConoce3000estancolocadosbajounalicencia:CreativeCommonsReconocimientoNoComercial3.0UnportedLicense.