Cap Muestra Joyanes 8448156315 PDF

Title Cap Muestra Joyanes 8448156315
Author Pedro Arias
Course Fundamentos de Ingeniería de Software
Institution Universidad APEC
Pages 37
File Size 1.1 MB
File Type PDF
Total Downloads 72
Total Views 128

Summary

Download Cap Muestra Joyanes 8448156315 PDF


Description

capitulo

2

tipos de datos: Clases y objetos Objetivos Con el estudio de este capítulo usted podrá: • Definir lo que es un tipo de datos. • Conocer los tipos de datos básicos. • Conocer los tipos de datos estructurados. • Especificar los tipos abstractos de datos. • Entender el concepto de encapsulación de datos a través de las clases. • Definir las clases como una estructura que encierra datos y métodos. • Especificar tipos abstractos de datos a través de una clase. • Establecer controles de acceso a los miembros de una clase. • Identificar los miembros dato de una clase como la representación de las propiedades de un objeto. • Identificar los métodos de una clase con el comportamiento o funcionalidad de los objetos.

Contenido 2.1. Abstracción en lenguajes de programación. 2.2. Tipos abstractos de datos. 2.3. Especificación de los TAD. 2.4. Clases y objetos. 2.5. Declaración de una clase. 2.6. Paquetes. 2.7. Constructores.

Conceptos clave ♦ Abstracción. ♦ Componentes. ♦ Constructores. ♦ Encapsulación. ♦ Especificadores de acceso: public, protected, private.

2.8. Recolección de objetos. 2.9. Objeto que envía el mensaje: this. 2.10. Miembros static de una clase. 2.11. Clase Object. 2.12. Tipos abstractos de datos en Java. RESUMEN EJERCICIOS PROBLEMAS

♦ ♦ ♦ ♦ ♦

Interfaz. Ocultación de la información. Reutilización. Software. Tipos de datos y variables.

Para profundizar (página web: www.mhe.es/joyanes) ▪ Aplicación del tipo abastracto de dato conjunto.

23

24    Estructuras de datos en Java

IntrOduCCIón Enestecapítuloseexaminanlosconceptosdemodularidadyabstracción de datos.Lamodularidadeslaposibilidaddedividirunaaplicaciónenpiezasmáspequeñasllamadasmódulos.La abstracción de datoseslatécnicaparainventarnuevostiposdedatosqueseanmásadecuadosa unaaplicacióny,porconsiguiente,facilitenlaescrituradelprograma.Latécnicadeabstracción dedatosesunatécnicapotentedepropósitogeneralque,cuandoseutilizaadecuadamente,puede producirprogramasmáscortos,máslegiblesyflexibles. Loslenguajesdeprogramaciónsoportanensuscompiladorestipos de datos fundamentales o  básicos (predefinidos),talescomoint,charyfloatenJava,CyC++.LenguajesdeprogramacióncomoJavatienencaracterísticasquepermitenampliarellenguajeañadiendosuspropios tiposdedatos. Un tipo de dato definido por el programador se denomina tipo  abstracto  de  dato,  TAD, (abstract  data  type, ADT). El término abstracto se refiere al medio en que un programador abstraealgunosconceptosdeprogramacióncreandounnuevotipodedato. Lamodularizacióndeunprogramautilizalanocióndetipoabstractodedato(TAD)siempre queseaposible.Siellenguajedeprogramaciónsoportalostiposquedeseaelusuarioyelconjuntodeoperacionessobrecadatipo,seobtieneunnuevotipodedatodenominadoTAD. Una claseesuntipodedatoquecontienecódigo(métodos)ydatos.Unaclasepermiteencapsulartodoelcódigoylosdatosnecesariosparagestionaruntipoespecíficodeunelemento deprograma,comounaventanaenlapantalla,undispositivoconectadoaunacomputadora,una figuradeunprogramadedibujoounatarearealizadaporunacomputadora.Enestecapítulose aprenderáacrear(definiryespecificar)yautilizarclasesindividuales.

2.1.

ABStrACCIón En LEnGuAJES dE PrOGrAMACIón

Los lenguajes de programación son las herramientas mediante las cuales los diseñadores de lenguajespuedenimplementarlosmodelosabstractos.Laabstracciónofrecidaporloslenguajes deprogramaciónsepuededividirendoscategorías: abstracción de datos(pertenecientealos datos)yabstracción de control(pertenecientealasestructurasdecontrol). Desdecomienzosdeladécadadelossesenta,cuandosedesarrollaronlosprimeroslenguajes deprogramacióndealtonivel,hasidoposibleutilizarlasabstraccionesmásprimitivasdeambas categorías(variables,tiposdedatos,procedimientos,controldebucles,etc.).

2.1.1.

Abstracciones de control

Los microprocesadores ofrecendirectamente sólo dos mecanismos paracontrolarel flujo y ejecución de las instrucciones: secuencia  y salto. Los primeros lenguajes de programación dealtonivelintrodujeronlasestructurasdecontrol:sentenciasdebifurcación (if)ybucles (for, while, do-loop, etc.). Lasestructurasdecontroldescribenelordenenelqueseejecutanlassentenciasogruposde sentencia(unidades de programa).Lasunidadesdeprogramaseutilizancomobloquesbásicos delaclásicadescomposición“descendente”.Entodosloscasos,lossubprogramasconstituyen una herramienta potente de abstracción ya que, durante su implementación, el programador describeendetallecómofuncionan.Cuandoelsubprogramasellama,bastaconconocerloque haceynocómolohace.Deestemodo,seconviertenencajasnegrasqueamplíanellenguaje deprogramaciónautilizar.Engeneral,lossubprogramassonlosmecanismosmásampliamente utilizadosparareutilizarcódigo,atravésdecoleccionesdesubprogramasenbibliotecas.

Tipos de datos: Clases y objetos

 25

Lasabstraccionesylasestructurasdecontrolseclasificanenestructurasdecontrolanivelde sentenciayaniveldeunidades.Lasabstraccionesdecontrolaniveldeunidadseconocencomo abstracciones procedimentales. abstracción procedimental (por procedimientos) Es esencial para diseñar software modular y fiable la abstracción procedimental que se basa enlautilizacióndeprocedimientosofuncionessinpreocuparsedecómoseimplementan.Esto es posible sólo si conocemos qué hace el procedimiento; esto es, conocemos la sintaxis y la semánticaqueutilizaelprocedimientoofunción.Laabstracciónapareceenlossubprogramas debidoalassiguientescausas: • Conelnombredelossubprogramas,unprogramadorpuedeasignarunadescripciónabstractaquecapturaelsignificadoglobaldelsubprograma.Utilizandoelnombreenlugarde escribirelcódigo,permitealprogramadoraplicarlaacciónentérminosdesudescripción dealtonivelenlugardesusdetallesdebajonivel. • Los subprogramas proporcionan ocultación de la información. Las variables locales y cualquierotradefiniciónlocalseencapsulanenelsubprograma,ocultándosedeforma que no pueden utilizarse fuera del subprograma. Por consiguiente, elprogramador no tienequepreocuparsesobrelasdefinicioneslocales. • Losparámetrosdelossubprogramas,juntoconlaocultacióndelainformaciónanterior, permitencrearsubprogramasqueconstituyenentidadesdesoftwarepropias.Losdetalles localesdelaimplementaciónpuedenestarocultos,mientrasquelosparámetrossepueden utilizarparaestablecerlainterfazpública. EnJava,laabstracciónprocedimentalseestablececonlosmétodosofuncionesmiembros declases. otros mecanismos de abstracción de control Laevolucióndeloslenguajesdeprogramaciónhapermitidolaaparicióndeotrosmecanismos paralaabstraccióndecontrol,comomanejo de excepciones, corrutinas, unidades concurrentes  oplantillas (templates).Estasconstruccionessonsoportadasporloslenguajesdeprogramación basadosyorientadosaobjetos,comoJava,Modula-2,Ada,C++,SmalltalkoEiffel.

2.1.2.

Abstracciones de datos

LosprimerospasoshacialaabstraccióndedatossecrearonconlenguajestalescomoFORTRAN, COBOLyALGOL60,conlaintroduccióndetipos devariablesdiferentes,quemanipulaban enteros, números reales, caracteres,valoreslógicos,etc.Sinembargo,estostiposdedatos no podíansermodificadosynosiempreseajustabanaltipodeunoparaelquesenecesitaban.Por ejemplo,eltratamientodecadenasesunadeficienciaenFORTRAN,mientrasquelaprecisióny fiabilidadparacálculosmatemáticosesmuyalta. Lasiguientegeneracióndelenguajes,incluyendoPascal,SIMULA-67yALGOL68,ofrecióunaampliaseleccióndetiposdedatosypermitióalprogramadormodificaryampliarlos tiposdedatosexistentesmedianteconstruccionesespecíficas(porejemplo,arrays yregistros). Además,SIMULA-67fueelprimerlenguajequemezclódatosyprocedimientosmediantela construccióndeclases,queeventualmenteseconvirtióenlabasedeldesarrollodeprogramaciónorientadaaobjetos.

26    Estructuras de datos en Java Laabstracción de datoseslatécnicadeprogramaciónquepermiteinventarodefinirnuevos tiposdedatos(tiposdedatosdefinidosporelusuario)adecuadosalaaplicaciónquesedesea realizar.Laabstraccióndedatosesunatécnicamuypotentequepermitediseñarprogramasmás cortos,legiblesyflexibles.Laesenciadelaabstracciónessimilaralautilizacióndeuntipode dato,cuyousoserealizasintenerencuentacómoestárepresentadooimplementado. Lostiposdedatossonabstraccionesyelprocesodeconstruirnuevostipossellamaabstraccióndedatos.Losnuevostiposdedatosdefinidosporelusuariosellamantipos abstractos de  datos. El concepto de tipo, tal como se definió en Pascal y ALGOL 68, ha constituido un hito importante para la realización de un lenguaje capaz de soportar programación estructurada. Sinembargo,estoslenguajesnosoportantotalmenteunametodologíaorientadaaobjetos.La abstraccióndedatosútilparaestepropósitonosóloclasificaobjetosdeacuerdoasuestructura derepresentación,sinoquelosclasificandeacuerdoalcomportamientoesperado.Talcomportamientoesexpresableentérminosdeoperacionesquesonsignificativassobreesosdatos,ylas operacionessonelúnicomedioparacrear,modificaryaccederalosobjetos. En términos más precisos, Ghezzi indica que un tipo de dato definible por el usuario se denominatipoabstractodedato(TAD)si: • Existeunaconstruccióndellenguajequelepermiteasociarlarepresentacióndelosdatos conlasoperacionesquelomanipulan; • Larepresentacióndelnuevotipodedatoestáocultadelasunidadesdeprogramaquelo utilizan[GHEzzI87]. Las clases de Java o de C++ cumplen las dos condiciones: agrupan los datos junto a las operaciones,ysurepresentaciónquedaocultadeotrasclases. Lostiposabstractosdedatosproporcionanunmecanismoadicionalmedianteelcualserealizaunaseparaciónclaraentrelainterfazylaimplementacióndeltipodedato.Laimplementación deuntipoabstractodedatoconstade: 1. Larepresentación:eleccióndelasestructurasdedatos. 2. Lasoperaciones:eleccióndelosalgoritmos. Lainterfazdeltipoabstractodedatoseasociaconlasoperacionesydatosvisiblesalexterior delTAD.

2.2.

tIPOS ABStrACtOS dE dAtOS

Algunoslenguajesdeprogramacióntienencaracterísticasquenospermitenampliarellenguaje añadiendosuspropiostiposdedatos.Untipodedatodefinidoporelprogramadorsedenomina tipoabstractodedatos(TAD)paradiferenciarlodeltipofundamental(predefinido)dedatos.Por ejemplo,enJava,eltipo Punto,querepresentalascoordenadas xeydeunsistemadecoorde nadasrectangulares,noexiste.Sinembargo,esposibleimplementareltipoabstractodedatos, considerandolosvaloresquesealmacenanenlasvariablesyquéoperacionesestándisponibles paramanipularestasvariables.Enesencia,untipoabstractoesuntipodedatoqueconstadedatos (estructurasdedatospropias)yoperacionesquesepuedenrealizarsobreellos.UnTADsecomponede estructuras de datosylos procedimientoso funcionesquemanipulanesasestructuras dedatos.

Tipos de datos: Clases y objetos

 27

Para recordar Un tipo abstracto de datos puede definirse mediante la ecuación: taD = Representación (datos) + Operaciones (funciones y procedimientos)

Laestructuradeuntipoabstractodedato(clase),desdeunpuntodevistaglobal,secompone delainterfazydelaimplementación(Figura2.1). Lasestructurasdedatosrealeselegidasparaalmacenarlarepresentacióndeuntipoabstracto dedatossoninvisiblesalosusuariosoclientes.Losalgoritmosutilizadosparaimplementarcada unadelasoperacionesdelosTADestánencapsuladasdentrodelospropiosTAD.Lacaracterísticadeocultamientodelainformaciónsignificaquelosobjetostieneninterfaces públicas.Sin embargo,lasrepresentacioneseimplementacionesdeesasinterfacessonprivadas.

Figura 2.1 Estructura de un tipo abstracto de datos (TAD)

2.2.1.

Ventajas de los tipos abstractos de datos

Untipoabstractodedatosesunmodelo(estructura)conunnúmerodeoperacionesqueafectan aesemodelo.Lostiposabstractosdedatosproporcionannumerososbeneficiosalprogramador, quesepuedenresumirenlossiguientes: 1. Permiten una mejor conceptualización y modelización del mundo real. Mejoran la representaciónylacomprensibilidad.Clarificanlosobjetosbasadosenestructurasy comportamientoscomunes.

28    Estructuras de datos en Java 2. Mejoranlarobustezdelsistema.Sihaycaracterísticassubyacentesenloslenguajes,permitenlaespecificacióndeltipodecadavariable.Lostiposabstractosdedatospermiten lacomprobacióndetiposparaevitarerroresdetipoentiempodeejecución. 3. Mejoranelrendimiento(prestaciones).Parasistemastipeados (tipificados),elconocimientodelosobjetospermitelaoptimizacióndetiempodecompilación. 4. Separanlaimplementacióndelaespecificación.Permitenlamodificaciónylamejorade laimplementaciónsinafectarlainterfazpúblicadeltipoabstractodedato. 5. Permiten la extensibilidad del sistema. Los componentes de software reutilizables son másfácilesdecrearymantener. 6. Recogenmejorlasemánticadeltipo.Lostiposabstractosdedatosagrupanolocalizanlas operacionesylarepresentacióndeatributos. UnprogramaquemanejaunTADlohaceteniendoencuentalasoperacionesolafuncionalidadquetiene,sininteresarseporlarepresentaciónfísicadelosdatos.Esdecir,losusuariosde unTADsecomunicanconésteapartirdelainterfazqueofreceelTADmediantefuncionesde acceso.Podríacambiarselaimplementacióndeltipodedatosinafectaralprogramaqueusael TADyaqueparaelprogramaestáoculta.

2.2.2.

Implementación de los tAd

LasunidadesdeprogramacióndelenguajesquepuedenimplementarunTADrecibendistintos nombres: Modula-2 Ada C++ Java

     

módulo paquete clase clase

EnestoslenguajessedefinenlaespecificacióndelTAD,quedeclaralasoperacionesylos datos,ylaimplementación,quemuestraelcódigofuentedelasoperaciones,quepermanece ocultoalexteriordelmódulo.

2.3.

ESPECIFICACIón dE LOS tAd

ElobjetivodelaespecificaciónesdescribirelcomportamientodelTAD;constadedospartes, la descripción matemática del conjunto de datos y la de las operaciones definidas en ciertos elementosdeeseconjuntodedatos. LaespecificacióndelTADpuedetenerunenfoqueinformal,quedescribelosdatosylas operacionesrelacionadasen lenguaje natural.Otroenfoquemasriguroso,la especificación  formal,suponesuministrarunconjuntode axiomasquedescribenlasoperacionesensuaspectosintácticoysemántico.

2.3.1.

Especificación informal de un tAd

Constadedospartes: • Detallarenlosdatosdeltipolosvaloresquepuedentomar. • Describirlasoperacionesrelacionándolasconlosdatos.

Tipos de datos: Clases y objetos

 29

Elformatoquegeneralmenteseemplea,primeroespecificaelnombredelTADylosdatos: TADnombre del tipo(valoresysudescripción) Acontinuacióncadaunadelasoperacionesconsusargumentos,yunadescripciónfuncional enlenguajenatural,conesteformato: Operación(argumentos) Descripción funcional

Comoejemplo,sevaaespecificareltipoabstractodedatosConjunto: TAD Conjunto(coleccióndeelementossinduplicidades,puedenestarencualquierorden,se usapararepresentarlosconjuntosmatemáticosconsusoperaciones). Operaciones,seponenlasoperacionesbásicassobreconjuntos: Conjuntovacio. Creaunconjuntosinelementos. Añadir(Conjunto, elemento). Comprueba si elelemento forma parte del conjunto; en caso negativo,es añadido. La operaciónmodificaalconjunto. Retirar(Conjunto, elemento). Sielelementopertenecealconjunto,eseliminadodeéste.Laoperaciónmodificaalconjunto. Pertenece(Conjunto, elemento). Verificasielelementoformapartedelconjunto,encuyocasodevuelvecierto. Esvacio(Conjunto). Verificasielconjuntonotieneelementos,encuyocasodevuelvecierto. Cardinal(Conjunto). Devuelveelnúmerodeelementosdelconjunto. Union(Conjunto, Conjunto). Realizalaoperaciónmatemáticadelaunióndedosconjuntos.Laoperacióndevuelveun conjuntoconloselementoscomunesynocomunesalosdosconjuntos. Sepuedenespecificarmásoperacionessobreconjuntos,tododependerádelaaplicaciónque sequieradaralTAD.

A tener en cuenta La especificación informal de un TAD tiene como objetivo describir los datos del tipo y las operaciones según la funcionalidad que tienen. No sigue normas rígidas al hacer la especificación, simplemente indica, de forma comprensible, la acción que realiza cada operación.

2.3.2.

Especificación formal de un tAd

Laespecificaciónformalproporcionaunconjuntodeaxiomasquedescribenelcomportamiento detodaslasoperaciones.Ladescripciónhadeincluirunapartedesintaxis,encuantoalostipos

30    Estructuras de datos en Java delosargumentosyaltipodelresultado,yunapartedesemántica,dondesedetallalaexpresión delresultadoqueseobtieneparaunosvaloresparticularesdelosargumentos.Laespecificación formalhadeserlobastantepotenteparaquecumplaelobjetivodeverificarlacorreccióndela implementacióndelTAD. ElesquemaquesigueconstadeunacabeceraconelnombredelTADylosdatos: TAD nombre del tipo (valores que toma los datos del tipo)

Lesiguelasintaxisdelasoperaciones,quelistalasoperacionesmostrandolostiposdelos argumentosyeltipodelresultado: Sintaxis Operación(Tipo argumento, ...)

->

Tipo resultado

A continuación se explica la semántica de las operaciones. Ésta seconstruye dando unos valoresparticularesalosargumentosdelasoperaciones,apartirdelosqueseobtieneunaexpresión resultado. Éste puede tener referencias a tipos ya definidos, valores de tipo lógico o referenciasaotrasoperacionesdelpropioTAD. Semántica Operación(valores particulares argumentos) ⇒ expresión resultado

Alhacerunaespecificaciónformal,siemprehayoperacionesdefinidasporsímismasquese consideranconstructoresdelTAD.Sepuededecirquemedianteestosconstructoressegeneran todoslosposiblesvaloresdelTAD.Normalmente,seeligecomoconstructorlaoperaciónque inicializa(porejemplo,ConjuntovacíoenelTAD Conjunto)ylaoperaciónqueañadeundatoo elemento(estaoperaciónescomúnalamayoríadelostiposabstractosdedatos).Seacostumbra amarcarconunasteriscolasoperacionesquesonconstructores. AcontinuaciónseespecificaformalmenteelTAD Conjunto;paraformarlaexpresiónresultadosehaceuso,siesnecesario,delasentenciaalternativasi-entonces-sino. TAD Conjunto(colección de elementos sin duplicidades, pueden estar en cualquier orden, se  usa para representar los conjuntos matemáticos con sus operaciones). 

Sintaxis *Conjuntovacio...


Similar Free PDFs