Objeto
La
idea de objeto es similar a la del mundo real, un objeto puede ser una silla,
una mesa. Tu perro es un objeto.
Los
objetos tienen dos características: Un estado y un comportamiento. Fíjate que
por ejemplo tu perro tiene un estado: nombre, color, raza, altura, etc. y un
comportamiento: ladrar, cavar pozo, llorar, dormir, comer, etc.
Entonces
podemos definir a un objeto en POO, como un conjunto de datos y funciones
relacionadas. A las funciones de los objetos, tales como acelerar en el caso
del auto, de aquí en más las llamaremos métodos, a los datos los llamaremos
atributos.
Los
objetos en programación, son modelados observando objetos del mundo real, por
ejemplo, implementamos el objeto "perro" dentro de nuestro programa
definiendo los atributos y métodos del objeto perro real.
Clase
Una
clase es algo abstracto que define la "forma" del objeto, se podría
hablar de la clase como el molde de los objetos.
En
el mundo real existen objetos del mismo tipo, por ejemplo, tu bicicleta es solo
una más de todas las bicicletas del mundo. Entonces diríamos que tu bicicleta
es una instancia de la clase "Bicicleta". Todas las bicicletas tienen
los atributos: color, cantidad de cambios, dueño y métodos: acelerar, frenar,
pasar cambio, volver cambio.
Las
fábricas de bicicletas utilizan moldes para producir sus productos en serie, de
la misma forma en POO utilizaremos la clase bicicleta (molde) para producir sus
instancias (objetos).
Los
objetos son instancias de clases.
Ejemplo:
Podríamos tener la clase Perro, una instancia de esta clase podría ser el
objeto perro llamado "Chicho". La clase Perro especificaría que todos
los perros tendrían un nombre, color de pelo, una altura. Mientras que la
instancia "Chicho" contendrá valores específicos para cada uno de
estos atributos.
Podemos
definir a una clase como una plantilla que define variables y métodos comunes
para todos los objetos de cierto tipo.
Abstracción
La
abstracción consiste en aislar un elemento de su contexto o del resto de los
elementos que lo acompañan. En programación, el término se refiere al énfasis
en el "¿qué hace?" más que en el "¿cómo lo hace?"
(característica de caja negra). El común denominador en la evolución de los
lenguajes de programación, desde los clásicos o imperativos hasta los
orientados a objetos, ha sido el nivel de abstracción del que cada uno de ellos
hace uso.
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 (pertenecientes a los datos) y abstracción de
control (perteneciente a las estructuras de control).
Los
diferentes paradigmas de programación han aumentado su nivel de abstracción,
comenzando desde los lenguajes de máquina, lo más próximo al ordenador y más
lejano a la comprensión humana; pasando por los lenguajes de comandos, los
imperativos, la orientación a objetos (OO), la Programación Orientada a
Aspectos (POA); u otros paradigmas como la programación declarativa, etc.
Modularidad
En
programación modular, y más específicamente en programación orientada a
objetos, se denomina Modularidad a la propiedad que permite subdividir una
aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales
debe ser tan independiente como sea posible de la aplicación en sí y de las
restantes partes.
Estos
módulos que se puedan compilar por separado, pero que tienen conexiones con
otros módulos. Al igual que la encapsulación, los lenguajes soportan la
Modularidad de diversas formas.
Según
Bertrand Meyer "El acto de particionar un programa en componentes
individuales para reducir su complejidad en algún grado. . .. A pesar de
particionar un programa es útil por esta razón, una justificación más poderosa
para particionar un programa es que crea una serie de límites bien definidos y
documentados en el programa. Estos límites, o interfaces, son muy valiosos en
la comprensión del programa.
Encapsulamiento
En
programación modular, y más específicamente en programación orientada a
objetos, se denomina encapsulamiento al ocultamiento del estado, es decir, de
los datos miembro, de un objeto de manera que sólo se puede cambiar mediante
las operaciones definidas para ese objeto.
Cada
objeto está aislado del exterior, es un módulo natural, y la aplicación entera
se reduce a un agregado o rompecabezas de objetos. El aislamiento protege a los
datos asociados a un objeto contra su modificación por quien no tenga derecho a
acceder a ellos, eliminando efectos secundarios e interacciones.
Herencia
La
herencia es, después de la agregación o composición, el mecanismo más utilizado
para alcanzar algunos de los objetivos más preciados en el desarrollo de
software como lo son la reutilización y la extensibilidad. A través de ella los
diseñadores pueden crear nuevas clases partiendo de una clase o de una
jerarquía de clases preexistente (ya comprobadas y verificadas) evitando con
ello el rediseño, la modificación y verificación de la parte ya implementada.
La herencia facilita la creación de objetos a partir de otros ya existentes e
implica que una subclase obtiene todo el comportamiento (métodos) y
eventualmente los atributos (variables) de su superclase
Polimorfismo
En
programación orientada a objetos el polimorfismo se refiere a la capacidad para
que varias clases derivadas de una antecesora utilicen un mismo método de forma
diferente.
Por
ejemplo, podemos crear dos clases distintas: Pez y Ave que heredan de la
superclase Animal. La clase Animal tiene el método abstracto mover que se
implementa de forma distinta en cada una de las subclases (peces y aves se
mueven de forma distinta).
Como
se mencionó anteriormente, el concepto de polimorfismo se puede aplicar tanto a
funciones como a tipos de datos. Así nacen los conceptos de funciones
polimórficas y tipos polimórficos. Las primeras son aquellas funciones que
pueden evaluarse o ser aplicadas a diferentes tipos de datos de forma
indistinta; los tipos polimórficos, por su parte, son aquellos tipos de datos
que contienen al menos un elemento cuyo tipo no está especificado.
No hay comentarios:
Publicar un comentario