Tipos de clases y objetos

Tipos de clases y objetos gy markioOz 110R5pR 16, 2011 37 pagcs capitulo 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 abetos. PACE 1 or37 2 to View nut*ge Contenido 2. 1. Abstr Tipos abstractos de d rogramación. 2. 2. de los TAD. 2. 4. Clases y objetos. 2. 5. Declaración de una clase. 2. 6. Paquetes. 2. 7. Constructores. 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

Componentes. Conceptos clave Abstracción. Constructores. Encapsulación. Especificadores de acceso: public, protected, private. abstracción de datos. La modularidades la posibilidad dedividir unaaplicación enpiezasmás pequeñas llamadas módulos. La abstracción de datos es la técnica para inventar nuevos tipos dedatos quesean más adecuados a una aplicacóny, por consiguiente, faciliten la escritura del programa. La técnica de abstracción de datos es unatécnica potente depropósito general que, cuando se utiliza adecuadamente, puede producirprogramas más cortos, más legiblesyflexibles.

Loslenguajes de programación soportanensus compiladores tipos de datos fundamentales o básicos (predefinidos), tales como int, char yfloat enJava, C yC++. Lenguajes deprogramación como Java tienencaracterísticasquepermiten ampliar el lenguaje añadiendo sus propios tipos dedatos. 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 medioenqueun programador abstrae algunos conceptosde programación creando un nuevo tipo dedato.

La modularización deun programa utiliza la noción detipo abstracto dedato (TAD) iempre que sea posible. Si el lenguaje deprogramación soporta los tiposquedesea el usuarioyel conjunto deoperaciones sobre cada tipo, se obtieneun nuevo tipo dedato denominado TAD. Una claseesun tipo dedato quecontiene código (métodos)y datos. Una clase permite encapsular todo el código ylos datos necesarios para gestionar un tipo específico deun elemento deprograma,como unaventana enla pantalla, un dispositivo conectado aunacomputadora, una figuradeun programa de dibujoo unatarea realizada por unacomputadora.

Eneste capítulo se aprenderá acrear(definir yespecificar) 2 7 computadora. Eneste capítulo se aprenderá acrear(definir y especificar)yautilizar clases individuales. ABStrACCIón En LEnGuAJES dE PrOGrAMACIón Los lenguajes de programación son las herramientas mediante las cuales los diseñadores de lenguajes pueden implementarlos modelos abstractos. La abstracciónofrecida por los lenguajes de programaciónse puededividir endos categorías: abstracción de datos (perteneciente alos datos) yabstracción de control (perteneciente alas estructuras decontrol).

Desde comienzos dela década delos sesenta, cuando se desarrollaron los primeros lenguajes de programación dealtonivel, hasido osible utilizar las abstracciones más primitivas deambas categorías(variables, tiposdedatos, procedimientos, control de bucles, etc. ). 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 altonivel introdujeron las estructuras decontrol: sentencias debifurcación (iO ybucles (for, while, do-loop, etc. . Las estructuras decontrol describen el orden enel quese ejecutan las sentencias o grupos de sentencia(unidades de programa). Las unidades deprograma 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 mo funcionan. Cuandoel subprograma se llama, ba er lo que hace yno conocer lo que hace yno cómo lo hace. De este modo,se convierten encajas negras queamplian el lenguaje de programación autilizar.

Engeneral, los subprogramas son los mecanismos más ampliamente utilizados para reutillzar código, a través decoleccionesdesubprogramas enbibliotecas. Tipos de datos: Clases y objetos Las abstracciones ylas estructuras decontrol se clasifican en estructuras decontrol anivel de sentenciayanivel deunidades. Las abstracciones decontrol anivel deunidad 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 deprocedimientos 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 queutiliza el procedimiento o función. La abstracciónaparece enlos subprogramas debido alas siguientes causas: • Con el nombre delos subprogramas, un programador puedeasignar unadescripción abstracta quecapturael significado global del subprograma. Utilizando el nombre enlugarde escribir el código, permite al programador aplicar la acciónentérminos desudescripción de alto nivel enlugardesus detalles debajo nivel. ?? Los subprogramas proporcionan ocultación de la información. Las variables locales y cualquier otra definición local se encapsulan enel subprograma, ocultándose deforma que no pueden utilizarse fuera del subprograma. Por conslguiente, el programador no tiene quepreocuparse sobre las definiciones locales. • Los parámetros delos subpr 4 37 programador no tiene quepreocuparse sobre las definiciones locales. • Los parámetros delos subprogramas, junto con la ocultacióndela información anterior, permiten crear subprogramas queconstituyen entidades desoftware propias.

Los detalles locales dela implementación puedenestarocultos, mientrasquelos parámetros se pueden utilizar para establecer la interfaz pública. En Java, la abstracción procedimental se establece con los métodoso funciones miembros de clases. tros mecanismos de abstracción de control La evolución delos lenguajes deprogramación hapermitido la aparición deotros mecanismos parala abstracción decontrol, como manejo de excepciones, corrutinas, unidades concurrentes o plantillas (templates). Estas construcciones son soportadas por los lenguajes deprogramación basadosyorientados aobjetos, como java, Modula-2, Ada, C+ , Smalltalko Eiffel.

Abstracciones de datos Los primeros pasos hacia la abstracción dedatos se crearoncon lenguajes tales como FORTRAN, COBOL YALGOL 60, conla introducción detipos devariablesdiferentes, quemanipulaban nteros, númerosreales, caracteres, valores lógicos, etc. Sin embargo, estos tipos dedatos no podían ser modificados y no siempre se ajustaban al tipo deuno para el quese necesitaban. Por ejemplo, el tratamiento decadenas esunadeficiencia en FORTRAN, mientras quela precisión y fiabilidad para cálculos matemáticos es muy alta.

La siguiente generación delenguajes, incluyendo Pascal, SIMULA-67 yALGOL 68, ofreció unaamplia selecclón detiposdedatos ypermitió al programador modificar y ampliarlos tipos dedatos existentes mediante construcciones especificas (por ejemplo, arraysyregistros) s 7 atos existentesmediante construcciones especificas (por ejemplo, arraysyregistros). Además, SIMULA-67 fue el primer lenguaje quemezcló datos yprocedimientos mediante la construcción declases, queeventualmente se convirtió enla base del desarrollo deprogramación orientada aobjetos.

Estructuras de datos en Java La abstracción de datos esla técnica deprogramación que permite inventar o definir nuevos tipos dedatos (tipos de datos definidos por el usuario) adecuados ala aplicación quese desea realizar. La abstraccióndedatos es unatécnica muy potente quepermite diseñar programas más cortos, legiblesy lexibles. La esencia dela abstracciónessimilar ala utilización deun tipo de dato, cuyo usose realizasin tener encuenta cómo está representado o implementado. Lostipos dedatos son abstracciones yel proceso deconstruirnuevos tiposse llama abstraccióndedatos.

Los nuevos tiposdedatos definidos por el usuariose 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 programacion estructurada. Sin embargo, estos lenguajes no soportantotalmente una etodología orientada aobjetos. La abstracción dedatos útil para este propósito no sólo clasifica objetos deacuerdo asu estructura de representación, sino quelos clasifican deacuerdo al comportamiento esperado.

Tal comportamiento es expresable entérminosdeoperaciones quesonsignificativas sobre esos datos, ylas operacionessonel único mediopara crear, modificar yacceder alos objetos. En términos más precisos, Ghezzi indica que un tipo de dato 6 7 Ghezzi indica que un tipo de dato definible por el usuario se denomina tipo abstracto dedato (TAD) si: • Existeuna onstrucción del lenguaje quele permite asoclar la representación delos datos con las operaciones quelo manipulan; • La representación del nuevo tipo dedato está oculta delas unidades deprograma quelo utilizan[GHEzz187].

Las clases de Java o de C++ cumplen las dos condiciones: agrupan los datos junto a las operaciones, ysurepresentación queda oculta deotrasclases. Los tipos abstractos dedatos proporcionan un mecanismoadicional mediante el cual se realiza unaseparación clara entre la interfazyla implementación del tipo dedato. La implementación de un tipo abstracto dedato consta de: 1. La representación: elección delas estructuras dedatos. 2. Las operaciones:elección delos algoritmos. La interfaz del tipo abstracto dedato se asocia con las operaciones ydatos visibles al exterior del TAD. lPOS ABStrACtOS dE dAtOS Algunos lenguajes deprogramación tienencaracterísticasquenos permiten ampliarel lenguaje añadiendo sus propiostipos de datos. Un tipo dedato definido por el programador se denomina tipo abstracto dedatos (TAD) para diferenciarlo del tipo fundamental(predefinido)dedatos. Por ejemplo, enJava, el tipo Punto, querepresenta las coordenadas x ey deun sistema de oordenadas rectangulares,no existe. Sin embargo, es posible implementarel tipo abstracto dedatos, considerandolos valores quese almacenan enlas variablesyquéoperaciones están disponibles paramanipularestas variables.

Enesencia, un tipo abstracto es un tipo 37 abstracto esun tipo dedato queconsta dedatos (estructuras de datos propias) yoperaciones quese puedenrealizar sobre ellos. Un TAD se compone deestructuras de datos ylos procedimientos o funciones quemanipulan esas estructuras de datos. Para recordar Un tlpo abstracto de datos puede definirse mediante la ecuación: aD = Representación (datos) + Operaciones (funciones y procedimientos) La estructuradeun tipo abstracto dedato (clase), desde un punto devista global, se compone de la interfazydela implementación (Figura 2. 1).

Las estructuras dedatos reales elegidas para almacenar la representación deun tipo abstracto dedatos son invisibles alos usuarios o clientes. Los algoritmos utilizados para implementarcada una delas operaciones delos TAD están encapsuladas dentro delos propios TAD. La característica deocultamiento dela información significa quelos objetos tieneninterfaces públicas. Sin embargo, las epresentaciones eimplementaciones deesas interfaces son privadas. Figura . Estructura de un tipo abstracto de datos (TAD) Ventajas de los tipos abstractos de datos Un tipo abstracto dedato elo(estructura)conun número deoperaciones q se modelo.

Los tipos basados enestructurasy comportamientos comunes. 2. Mejoranla robustez del sistema. Si hay características subyacentes enlos lenguajes, permiten la especificación del tipo decada variable. Los tiposabstractos dedatos permiten la comprobación detipospara evitar errores detipo entiempo de ejecución. 3. Mejoranel rendimiento (prestaciones). Para istemas tipeados (tipificados), el conocimiento delos objetos permite la optimización detiempo decompilación. 4. Separan la implementación dela especificación. Permiten la modificacióny la mejora de laimplementación sin afectar la interfaz pública del tipo abstracto dedato. . permiten la extensibilidad del sistema. Los componentes de software reutilizables son má fáciles decrearymantener. 6. Recogen mejor la semánticadel tipo. Los tipos abstractos dedatos agrupan o localizan las operaciones yla representación deatributos. Un programa que maneja un TAD lo hace teniendoencuenta las operaciones o la uncionalidad quetiene, sin interesarse por la representacion fisicadelos datos. Es decir, los usuarios de un TAD se comunican con éste apartir dela interfazqueofreceel TAD mediante funciones de acceso. odríacambiarsela implementación del tipo dedato sin afectar al programa queusael TAD yaquepara el programa está oculta. Implementación de los tAd Las unidades deprogramación delenguajes quepueden implementarun TAD reciben distintos nombres: Modula-2 C++ Java módulo paquete clase clase Enestos lenguajes se definenla especificacióndel TAD, que Ada declara las operaciones yl uestra el código fuente implementación, que declara las operaciones ylos datos, yla implementación,que muestra el código fuente delas operaciones, quepermanece ocultoal exterior del módulo.

ESPECIFICACIón dE LOS tAd El objetivo dela especificación es describir el comportamiento del TAD; consta dedos partes, la descripción matemática del conjunto de datos y la de las operaciones definidas en ciertos elementos deese conjunto dedatos. Laespecificación del TAD puede tener un enfoque Informal, quedescribe los datos y las operaciones relacionadas enlenguaje natural. Otro enfoque as riguroso, la especificación formal, supone suministrar un conjunto deaxiomas quedescriben las operaciones ensu aspecto sintáctico ysemántico.

Especificación informal de un tAd Consta dedos partes: • Detallar enlos datos del tipo los valores quepuedentomar. • Describir las operaciones relacionándolas con los datos. El formato quegeneralmentese emplea, primero especifica el nombre del TAD y los datos: TAD nombre del tipo(valores y su descripción) Acontinuacióncada unadelas operaciones con sus argumentos, yunadescripción funcional en lenguaje natural, con este formato: Operación(argumentos) D cional