Abstracción de los datos y
Orientación a Objeto
Clase 13
Contenido
• Por qué la abstracción de los Datos y
OOP
• Encapsulamiento y Herencia
– Módulos y tipos del módulo
– Clases
Ventajas de OOP
• Reduce carga conceptual
– Minimiza la cantidad de detalle pensada por el
programador en cualquier un momento.
• Proporciona falta y contención de cambio
– Limita la porción de un programa que necesita ser
visto al depurar.
– Limita la porción de un programa que necesita ser
cambiado si la interfaz es la misma.
• Proporciona
independencia
componentes del programa.
– Facilita el código reutilizable
entre
los
Código Reutilizable
• Ofrece existentes funcionalidades y
interfaces quitando lo que realmente no se
necesita
• Útil para definir nuevas abstracciones
como extensiones o refinamientos de
abstracciones existentes.
Modulos en Modula-2
Noticia:
Push, pop visible to each other
Push, pop visible to modules that import them
s, top not visible outside stack module
Main program
Module types
Multiple instances of a given
abstraction
Classes = module types + inheritance
Cada caso de un tipo del módulo o
clase tiene su propia copia del módulo o
variables de la clase
Tipo de Modulo
• Permite a un modulo tener muchas instancias
• Implementación
– Estáticamente los datos conocidos: desplazamiento estático
dentro del módulo
– Dinámicamente los datos conocidos:
• Porción del tamaño arreglada
• Porción del tamaño variable
• Dope vector al principio de la porción de tamaño fijo ( descriptor del
runtime contiene el tamaño de los datos dinámicos).
– Subrutinas
• Replica código para cada instancia (malgastador)
• Extra, parámetro oculto al subprograma con dirección de
almacenamiento del caso del módulo apropiado
Declaración de una Clase en
C++
Una declaración puede ponerse en un archivo de .h
separado del archivo de .cc que contiene las
definiciones.
La declaración debe contener toda la información:
• Programador necesita usar abstracción
correctamente.
• El compilador necesita en orden para generar
codigo:
– Forzar un poco de información privada en la
declaración
– La expansión de Inline se necesita en el código
Ejemplo de Declaración
Declaración
(puede contener privada
información también)
Herencia
• Clases derivadas, clases hijas, subclases.
– Tiene todos los datos y métodos de clase
base.
– Métodos adicionales y datos.
• Base clase, clase padre, super clase.
• Jerarquías de la clase.
• “Generic” clase base.
Generica Clase Base
Ocultando y remplanzado
miembros de la clase base
• Para reemplazar un método de una clase
base, redefínalo en la clase derivada.
• El método de clase base todavía es
accesible
– Operador de resolución de alcance:: (in C++)
– Super keyword (in Java, Smalltalk)
– Cambio de nombre explícito (Eiffel)
Envases
• Abstracción que lleva a cabo una colección de
objetos de una cierta clase del elemento.
Alternativas:
• Based on a Container element base class
– Objects derived from the element base class
• Nodo de la lista como objeto separado que
contiene un apuntador
• Miembro del nodo de la lista del objeto
mencionado
El diseño constante, intuitivo y útiles de la jerarquia
de clases son difíciles.
Herencia y visibilidad en C++
• Herencia
– Métodos ocultos de la clase base en C++:
• private base class (para ocultar)
• using declarations (para hacer visible)
– Miembros protegidos: visible a los métodos de
propia clase o de clases derivadas o amigas
– Miembros privados: visible a los métodos de
propia clase o amigos.
Ejemplo
Resumen de Regla de Visibilidad
• C++
– Cualquier clase puede limitar la visibilidad de sus
miembros
– Una clase derivada puede restringir la visibilidad
de miembros de una clase base, pero no puede
aumentarlos.
– Una clase derivada que limita visibilidad puede
restaurarla usando declaraciones
Resumen de Regla de Visibilidad
• Eiffel
– Las clases derivadas conservan restringen y
aumentan la visibilidad de los miembros de clases
bases.
• Java es igual que en C++ excepto por
– No tiene el diseño protected/private para clases
bases.
– La palabra clave protegida hace visible dentro del
paquete, además de las clases derivadas.
– No friends.
Descargar

Clase13