Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Contenido
Fundamentos
Modularidad
Reutilización
Visión POO
Lenguajes basados en clases
Modelo de embebimiento:
Modelo de Delegación:
El método lookup:
Subclases
Fundamentos
La POO se basa en el modelo objeto donde el elemento principal es el objeto, el cual es una
unidad que contiene todas sus características y comportamientos en sí misma, lo cual lo
hace como un todo independiente pero que se interrelaciona con objetos de su misma clase
o de otras clase, como sucede en el mundo real.
Una ventaja de la POO frente al paradigma algorítmico es la facilidad que brinda a través
de sus herramientas, de concebir, analizar, modelar, diseñar e implementar el mundo real de
manera fiel a como se presenta en la realidad; el paso que hay desde la concepción y
asimilación del problema hasta la implementación del mismo es un proceso que se hace de
manera casi natural. Esto porque el mundo está lleno de objetos reales, los cuales se pueden
representar como tales en una solución computarizada.
Principio de la página
Modularidad
Proceso de crear partes de un todo que se integran perfectamente entre sí para que
funcionen por un objetivo general, y a las cuales se les pueden agregar más componentes
que se acoplen perfectamente al todo, o extraerle componentes sin afectar su
funcionamiento. En el caso que se requiera actualizar un módulo, no hay necesidad de
hacer cambios en otras partes del todo. Un ejemplo clásico es un conjunto de módulos que,
al integrarlos conforman un armario, el cual puede agregarle más funcionalidad si se le
agregan más módulos, o al contrario. También se puede cambiar su finalidad si se
acomodan esos módulos para darle otro objetivo: volverlo una mesa.
Principio de la página
Reutilización
Principio de la página
Visión POO
Este concepto de POO se puede ver como una intuitiva correspondencia entre un software
de simulación de un sistema físico y el sistema físico en sí (o su modelo mecánico).
Objetos concretos: Partes físicas del modelo mecánico, ojo del modelo, no del sistema
real; o sea, los objetos planeta no son los planetas reales.
Modelo: Es una vista de un sistema del mundo real, es decir, una abstracción de dicho
sistema considerando un cierto propósito. Así, el modelo describe completamente aquellos
aspectos del sistema que son relevantes al propósito del modelo y a un apropiado nivel de
detalle.
Abstracción: Capacidad del ser humano para entender una situación excluyendo detalles y
sólo viéndola a alto nivel. El hombre ha comprendido el mundo con la abstracción. Esta
propiedad permite distinguir a un objeto de los demás, observando sus características y
comportamientos, pensando en qué es y no en cómo se codificaría en un lenguaje. Con la
abstracción se destaca lo importante y se ignora lo irrelevante, o sea, hay ocultamiento de
información. Hay abstracción de datos al declarar una variable tipo integer, ya que
internamente el compilador lo implementa en 2 bytes, lo cual es transparente al
programador, o al declarar una variable date, el compilador controla los días de los meses,
acepta sólo operaciones válidas entre las fechas, permitiendo al programador abstraerse de
esos detalles. Estos tipos de datos abstractos coleccionan valores y operaciones, los cuales
se usan transparentemente sin importar su implementación: otro lo implementa y yo lo uso.
Principio de la página
Utilizan las clases como estructuras para la creación de los objetos. Una clase se define
como la descripción de los atributos (campos y métodos) de los objetos. Con los campos se
define el estado del objeto en un momento dado, tales como color, tamaño, longitud,
básico, etc., y con los métodos se define su comportamiento, tal como abrirDB(),
validarAcceso(), insertar(), actualizar(), eliminar(), listar(), frenar(), arrancar(), etc. El
proceso de crear un objeto significa crear su estructura (atributos; es decir, campos +
métodos) en la memoria, donde guardará el contenido de sus campos y el código de sus
métodos. Ejemplo:
Principio de la página
Modelo de embebimiento:
Cuando cada objeto tiene un área de memoria independiente para guardar tanto sus
campos como sus métodos. Es muy eficiente en la búsqueda del código, pero
consume muchos recursos en memoria.
Principio de la página
Modelo de Delegación:
Cuando varios objetos de una misma clase comparten el código de sus métodos (no
sus campos), pues es el mismo para todos. Esto ahorra memoria, pero puede traer
otras situaciones, ya que un cambio en uno de los objetos, afecta a todos sus
congéneres.
Principio de la página
El método lookup:
Subclases
Con self tenemos acceso a los atributos de la clase desde su interior; para acceder a los
atributos de la clase padre, se usa super. La subclase es un mecanismo para evitar reescribir
las definiciones de una clase que queremos usar en esa subclase. De acuerdo a esto tenemos
que una subclase es mayor (o igual) que la superclase, ya que la subclase contiene todo lo
que tenga su superclase y aún más. Por esto, se dice que una subclase es una
especialización de la superclase; de forma análoga, una superclase es una generalización de
una subclase (más pequeño es más específico, más grande es más general).
Si c’ <: c y o : c’ entonces o : c;
Esto se lee: Si "c prima" es subclase de "c" y "o" es un objeto de “c prima”, entonces "o"
también es un objeto de "c".
Esta ley también aplica para los tipos de datos convencionales o primitivos, ya que como
sabemos un real es más que un entero, lo que significa que un entero puede manejarse
como real (pero al revés por que se truncarían los fracciones; habría coerción):
Real <: integer, lo que indica que un int se puede incluir entre los reales, osea que los reales
son un subtipo de los integer ...
Con esto se concluye que una subclase es lo mismo que un subtipo, y cuando se
implementa un método que puede procesar transparentemente un valor, el cual puede ser
real o integer, se dice que tiene la propiedad de polimorfismo o subsumption. Eso se logra
por esa relación de clase/subclase y tipo/subtipo, ya que de otra forma fallaría, pues el
método esperaría un dato exactamente del tipo con que se definió trabajar. O sea, que si yo
soy del tipo A, y A es mayor que el tipo B, entonces yo también soy del tipo B, así:
Si a : A y A <: B entonces a : B.
En el caso de nuestro ejemplo, de la superclase Cell y la subclase reCell, se puede decir que
un objeto de tipo reCell (obj1reCell) es del mismo tipo que un objeto Cell (obj1Cell), por
lo tanto puedo usar una función para cualquiera de los dos objetos siempre que esta función
acepte objetos del tipo reCell (donde cabrá también el tipo Cell) y no solamente del Cell
(donde solo cabrá el Cell).
Ejemplo:
Las líneas 4y5 son prohibidas porque en la 4 se definió el argumento tipo Cell; si se le
define tipo ReCell, ya puedo llamar f enviándole una Cell o una ReCell sin problema. Esto
es polimorfismo o subsumption por subtipos.
Por otro lado, si analizamos la clase y subclase definidas arriba, vemos que el método
restore solo es accedido por los objetos ReCell, más no por los objetos Cell, quienes no lo
“ven”; luego hay ocultamiento de información; así mismo el método get es común a ambos,
y el método set tiene diferente comportamiento por haber sido redefinido. En los lenguajes
modernos existen modificadores tales como private, public, protected, etc. para este
manejo.
El concepto de herencia
Jerarquía de clase
Herencia múltiple
Algunos lenguajes orientados a objetos, como C++ permiten herencias múltiples, lo que
significa que una clase puede heredar los atributos de otras dos superclases. Este método
puede utilizarse para agrupar atributos y métodos desde varias clases dentro de una sola.
polimorfismo (P.O.O)
POLIMORFISMO:
Ejemplo:
DIAGRAMAS UML Y
PROGRAMACION ORIENTADA A
OBJETOS
A lo largo del curso emos visto varias formas de programar en este apartado encontraras
algunos aspectos que involucran la programación orientada a objetos.
La Programación Orientada a Objetos(POO) es un modelo de la programación que como
su nombre lo dice utiliza objetos por medio de mensajes que nos ayudara a resolver
problemas.
CLASE
ATRIBUTO
Son las propiedades que describen a los objetos pueden ser datos.
MÉTODO
Son las acciones las operaciones,los procedimientos y funciones los cuales los tenemos que
aplicar a los atributos de los objetos que ocupamos.
OBJETO
Como ya sabemos un objeto es la instancia de una clase donde los objetos pueden contener
atributos y métodos que manejan la solución al problema que queremos resolver.
alumno
profesor
mesa
silla
mesa
pizarrón
ABSTRACCIÓN
La abstracción se refiere a acciones que solo ocuparemos aunque nuestro programa tenga
muchas funciones solo se utilizan las necesarias.
Marca
Modelo
Color
Tipo de vehículo ( automóvil, camión de carga, camión de
Tipo de Combustible (gasolina, diesel, etc.)
Uso (particular, público)
Número de pasajeros
Nombre del propietario
Dirección del propietario
HERENCIA
Esto se refiere a que un objeto hereda las características de la clase padre que es de la que
proviene aunque una clase de igual forma puede heredar características de otra clase.
La herencia define la relación entre clases “es un”, donde una subclase hereda de una o
más superclases.
POLIMORFISMO
En el polimorfismo nos referimos que muchas veces una operacion tiene el mismo nombre
pero tienen diferentes clases y funciones siendo distintas en cada una de ellas.
ENCAPSULAMIENTO
Esto se refiere a que varios objetos al programarlos ocultan sus funcionalidades internas
al exterior ya que reduce errores que pueden ocurrir cuando estamos ejecutando nuestros
programas.La ventaja es que puede tener acceso a varias acciones son mostrar sus
detalles.
Otro aspecto que tenemos que saber es que cada mensaje esta asociado a un método ya
que cuando un objeto recibe un mensaje la respuesta es una ejecución de un método.
Los atributos de los objetos solo son manipulados por los métodos que son propios del
objeto que estamos ocupando.
Para controlar el acceso a los miembros de una clase utilizaremos tres tipos diferentes
CONSTRUCTORES
Los constructores son métodos que sirven para inicializar los datos o variables de una
clase tiene el mismo nombre de la clase y no especificamos ningún valor de retorno.
Son miembros que estan ligados a las clases y no a los objetos.Son comunes para todos los
objetos de la clase.
Significan establecer y obtener el metodo get se usa cuando quieres saber cual es el valor
que tiene una variable privada de otra clase, el metodo set es para establecer un valor en
una variable privada de otra clase.
DIAGRAMAS UML
Los diagramas UML describen objetos y las estructuras de información que necesitamos
para realizar un programa es una visualización general de lo que necesitamos realizar en
nuestro programa.
DIAGRAMAS DE CLASE