Conoce300 __ Pascal Con Free Pascal __ Introducción a La Programación Orientada a Objetos II __...

download Conoce300 __ Pascal Con Free Pascal __ Introducción a La Programación Orientada a Objetos II __ Atributos, Propiedades, Métodos de Clase y Estáticos

of 4

description

ljblbjjl

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.