Documentos de Académico
Documentos de Profesional
Documentos de Cultura
• Basado en objetos
• Basado en clases
• Permite la herencia
La gran mayoría de los lenguajes de los que se dice que son orientados a objetos sólo
cumplen con las dos primeras características, por lo tanto son únicamente lenguajes
basados en objetos y no orientados a objetos. La herencia es lo que hace la diferencia
entre uno y otro.
Este tipo de programación considera como unidad central a los objetos. Entendiendo
que un objeto es una encapsulación (agrupación) de un conjunto de datos y de métodos
para manipular éstos. Por ejemplo, una ventana Windows es un objeto. Este objeto
posee características y datos, como son tamaño, color, barras de desplazamiento,
titulo, etc., y métodos que permiten manipular esos datos. Por ejemplo, cuando el
usuario apunta con el cursor del ratón al botón de maximizar de la ventana y hace clic
sobre él, se produce un mensaje dirigido a la propia ventana que provoca la ejecución
del método que produce su maximización.
La POO es una forma de programación que utiliza objetos que responden a sucesos.
Estos sucesos producen un flujo de mensajes entre los objetos, lo que origina cambios
en el estado del objeto que recibe el mensaje. Como ejemplo, piense en el problema de
que un objeto caja de texto visualice un mensaje cuando se haga clic en otro objeto
botón de pulsación. La estructura del programa básicamente estará formada por dos
objetos y un mapa de mensajes; uno de los mensajes relacionará el clic sobre el botón
con el método que tiene que ejecutarse para poner el comunicado en la caja de texto.
Así, la POO es un enfoque sumamente natural, puesto que la estructura de los
programas refleja directamente la estructura del problema.
• Los objetos bien diseñados son la base para sistemas que se construyen a partir
de módulos reutilizables, dando lugar a una mayor productividad.
• La reutilización de las clases que han sido probadas en circunstancias reales, en
proyectos anteriores, dan lugar a sistemas de mayor calidad y con menos
errores.
• La herencia hace posible definir sistemas más fiables, más fáciles de ampliar y
menos costosos de mantener.
• Un diseño orientado a objetos es una herramienta clave para enfrentarse a
problemas complejos porque favorece el paso de pequeños a grandes sistemas.
• Las aplicaciones requieren escribir menos líneas de código, menos sentencias
de bifurcación y por lo tanto, los módulos son más comprensibles.
• La encapsulación ayuda a construir sistemas más seguros.
• En contraste con la programación tradicional, donde siempre existe la posibilidad
de que una modificación de un procedimiento o de una estructura de datos afecte
a otros procedimientos, la programación orientada a objetos no necesita
examinar todo el código fuente para ver si un cambio local afecta a otras partes.
Abstracción
Encapsulamiento
Polimorfismo
Número de parámetros.
Tipo de los parámetros.
Tipo del valor de retorno.
Al construir una casa, cosas como paredes, puertas, ventanas, armarios y luces
formarán parte de nuestro vocabulario. Sin embargo, ninguna de esas cosas se
encuentra aislada. Las paredes limitan con otras paredes. Las puertas y las ventanas se
colocan en las paredes para hacer aberturas para la gente y la luz. Los muebles y las
luces están físicamente adyacentes a las paredes y techos. Las paredes, las puertas,
los armarios y las luces se pueden agrupar para formar cosas más complejas, como las
habitaciones.
Una asociación es una relación estructural que especifica que los objetos de un
elemento están conectados con los objetos de otro. Dada una asociación entre dos
clases, se puede establecer una relación desde un objeto de una clase hasta algunos
objetos de la otra clase.
DEPENDENCIA
Una dependencia es una relación de uso que declara que un elemento (por ejemplo, la
clase Ventana) utiliza información y los servicios de otro elemento (por ejemplo, la clase
Evento)
GENERALIZACION
AGREGACIÓN
Agregación. Una asociación normal entre dos clases representa una relación estructural
entre iguales, es decir, ambas clases están conceptualmente en el mismo nivel, sin ser
ninguna más importante que la otra. A veces, se desea modelar una relación
"todo/parte", en la cual una clase representa una cosa grande (el "todo"), que consta de
elementos más pequeños (las "partes"). Este tipo de relación se denomina agregación,
la cual representa una relación del tipo "tiene un", o sea, un objeto del todo tiene objetos
de la parte. En realidad, la agregación es sólo un tipo especial de asociación y se
especifica añadiendo a una asociación normal un rombo vacío en la parte del todo
COMPOSICIÓN
La agregación resulta ser un concepto simple con una semántica bastante profunda. La
agregación simple es puramente conceptual y no hace más que distinguir un "todo" de
una "parte". La agregación simple no cambia el significado de la navegación a través de
la asociación entre el todo y sus partes, ni liga las vidas del todo y las partes.
Sin embargo, existe una variación de la agregación simple (la composición) que añade
una semántica importante. La composición es una forma de agregación, con una fuerte
relación de pertenencia y vidas coincidentes de la parte con el todo. Las partes con una
multiplicidad no fijada pueden crearse después de la parte compuesta a la que
pertenecen, pero una vez creadas viven y mueren con ella. Tales partes también se
pueden eliminar explícitamente antes de la eliminación de la parte compuesta.
Esto significa que, en una agregación compuesta, un objeto puede formar parte de sólo
una parte compuesta a la vez. Por ejemplo, en un sistema de ventanas, un Marco
pertenece exactamente a una Ventana. Esto contrasta con la agregación simple, en la
que una parte se puede compartir por varios agregados.
Por ejemplo, en el modelo de una casa, una Pared puede ser parte de uno o más
objetos Habitacion.
REALIZACIÓN
Objetos
Métodos
Objeto
mensajes atributos
Métodos
La estructura interna de un objeto está oculta para otros usuarios y la única conexión
que tiene con el exterior son los mensajes. Los atributos (datos) que oculta un objeto,
solamente pueden ser manipulados por los métodos asociados al propio objeto. Los
mensajes son la especificación de una comunicación entre objetos que transmiten
información, con la expectativa de que se desencadenara una actividad. Ahora una
Interacción es un comportamiento que incluye un conjunto de mensajes
intercambiados por un conjunto de objetos dentro de un contexto para lograr un
propósito.
Clases
Una clase se puede considerar como una plantilla para crear objetos de esa clase o
tipo. Una clase describe los métodos y atributos que definen las características
comunes a todos los objetos de esa clase. Precisamente la clave de la programación
orientada a objetos está en abstraer los métodos y atributos comunes a un conjunto
de objetos y encapsularlos en una clase.
Una clase es un tipo de objeto definido por el usuario. En otras palabras, una clase
equivale a la generalización de un tipo específico de objeto. Un objeto es la concreción
de una clase (algunos autores utilizan el término instancia, traducción directa de
instance). Por ejemplo, un objeto de la clase C sería un ejemplar O de esa clase.
Entonces, para disponer de un objeto, primero se abstraen las características comunes
de ese grupo de objetos, después se delimitan esas características comunes (clase) y
por último se pone nombre a uno o más ejemplares de la clase (objetos).
Aunque en las definiciones anteriores hemos utilizado el término objeto como sinónimo
de instancia, en general, cuando hablamos de objetos nos referimos, dependiendo del
contexto, a clases o a instancias. Esto es así, porque un objeto es, por una parte, un
principio de organización, y por otra, una región de almacenamiento que contiene una
copia del elemento especificado por una clase. Desde este segundo punto de vista, los
términos objeto e instancia son sinónimos; no sucediendo lo mismo desde el primer
punto de vista, por lo que no conviene popularizar el término instancia.
Un atributo asociado con una clase representa un valor que es compartido por todos los
objetos de esa clase; esto es, sólo existe una copia de ese atributo (en Java este tipo
de atributo es static). En cambio, un atributo asociado a un objeto de una clase
representa un valor particular a ese objeto; esto es, cada objeto tiene su propio copia.
Para crear un objeto de una determinada clase simplemente hay que declarar una
variable de dicha clase. Por ejemplo, la siguiente declaración en Java crea un objeto de
la clase párrafo: el objeto párrafo1.
Parrafo parrafo1;
Parrafo1.justificación();
SUBCLASES
Podemos considerar las clases alumno y empleado en un nivel inferior. De este modo
alumno y empleado heredarán los atributos y los métodos de su clase padre persona a
los que podemos añadir los atributos y métodos propios de la clase hija. Esto es,
Alumno Empleado
Administrativo Profesor
MENSAJES
Para poder crear una aplicación necesitarás más de un objeto, y estos objetos no
pueden estar aislados unos de otros, pues bien, para comunicarse esos objetos se
envían mensajes.
Los mensajes son simples llamadas a las funciones o métodos del objeto con él que se
quiere comunicar para decirle que haga cualquier cosa.
RECOLECTOR DE BASURA