Introducción A La Programación Orientada A Objetos
Mindtaker25 de Abril de 2014
2.614 Palabras (11 Páginas)229 Visitas
Un nuevo concepto en programación
Extraído de "Understanding Active X and OLE" por David Chappel
"En el transcurso de los últimos 35 años, los diseñadores de hardware para ordenadores han pasado del diseño de equipos del tamaño de un hangar a ordenadores portátiles basados en microprocesadores minúsculos.
En el mismo período, los desarrolladores de software han pasado de escribir programas en ensamblador y COBOL a escribirlos en C y C++. Podríamos denominar a esto progreso (algunas personas no estarían de acuerdo), pero claramente el mundo del software no progresa tan rápidamente como el mundo del hardware. Entonces, ¿qué tienen los diseñadores de hardware que los desarrolladores de software no poseen?
La respuesta está en los componentes utilizados. Si los ingenieros de hardware electrónico tuvieran que comenzar desde un montón de arena cada vez que diseñan un nuevo dispositivo de hardware, y el primer paso fuese la extracción de silicio para fabricar placas de circuitos integrados, el progreso tampoco sería tan veloz. Sin embargo, un diseñador de hardware siempre construye un sistema que se basa en componentes ya preparados, cada uno con una función específica y que brinda un conjunto de servicios a través de interfaces definidas. La tarea de los diseñadores de hardware es considerablemente más fácil gracias al trabajo de sus predecesores.
La reutilización de los componentes es también un método para crear mejores software. Aún hoy, los desarrolladores de software comienzan desde un montón de arena y siguen los mismos pasos que dieron cientos de desarrolladores en el pasado. A menudo el resultado es sorprendente, pero podría mejorarse. La creación de nuevas aplicaciones a partir de componentes ya existentes y que ya han sido probados, tiende siempre a producir códigos más fiables. Además, se ha demostrado que es más rápida y económica, factores no menos importantes."
El concepto de objeto
La programación orientada a objetos consiste en ordenar datos en conjuntos modulares de elementos de información del mundo real (denominado un dominio). Estos elementos de datos se llaman objetos. Estos datos se agrupan de acuerdo a las características principales del mundo real de estos elementos (tamaño, color, etc.).
El enfoque de objetos es una idea que se ha probado con creces. Simula fue el primer lenguaje de programación en implementar el concepto de clases en 1967. En 1976, Smalltalk implementó los conceptos de encapsulación, agrupación y herencia (los conceptos principales de la programación orientada a objetos). Por otra parte, se han implementado varios lenguajes de programación orientada a objetos a escala global (Eiffel, Objective C, Loops, etc.).
La dificultad que presenta este enfoque es la creación de una representación abstracta, en forma de objetos, de entidades que realmente existen (perro, auto, lámpara eléctrica...) o que existen virtualmente (seguridad social, clima...).
Un objeto se caracteriza por varios conceptos:
• Atributos: estos son los datos que caracterizan al objeto. Son variables que almacenan datos relacionados al estado de un objeto.
• Métodos (usualmente llamados funciones de miembro): Los métodos de un objeto caracterizan su comportamiento, es decir, son todas las acciones (denominadas operaciones) que el objeto puede realizar por sí mismo. Estas operaciones hacen posible que el objeto responda a las solicitudes externas (o que actúe sobre otros objetos). Además, las operaciones están estrechamente ligadas a los atributos, ya que sus acciones pueden depender de, o modificar, los valores de un atributo.
• Identidad: El objeto tiene una identidad, que lo distingue de otros objetos, sin considerar su estado. Por lo general, esta identidad se crea mediante un identificador que deriva naturalmente de un problema (por ejemplo: un producto puede estar representado por un código, un automóvil, por un número de modelo, etc.).
El concepto de clases
Una clase es la estructura de un objeto, es decir, la definición de todos los elementos de que está hecho un objeto. Un objeto es, por lo tanto, el "resultado" de una clase. En realidad, un objeto es una instancia de una clase, por lo que se pueden intercambiar los términos objeto o instancia (o incluso evento).
Una clase se compone de dos partes:
• Atributos (denominados, por lo general, datos miembros): esto es, los datos que se refieren al estado del objeto
• Métodos (denominados, por lo general, funciones miembros): son funciones que pueden aplicarse a objetos
Si tenemos una clase llamada auto, los objetos Peugeot y Renault serán instancias de esa clase. También puede haber otros objetos Peugeot 406, diferenciados por su número de modelo. Asimismo, dos instancias de una clase pueden tener los mismos atributos, pero considerarse objetos distintos independientes. En un contexto real: dos camisas pueden ser idénticas, pero no obstante, también ser diferentes de alguna manera. Sin embargo, si las mezclamos es imposible distinguir una de la otra.
El concepto de encapsulación
La encapsulación es un mecanismo que consiste en organizar datos y métodos de una estructura, conciliando el modo en que el objeto se implementa, es decir, evitando el acceso a datos por cualquier otro medio distinto a los especificados. Por lo tanto, la encapsulación garantiza la integridad de los datos que contiene un objeto.
Ocultación de datos
El usuario de una clase en particular no necesita saber cómo están estructurados los datos dentro de ese objeto, es decir, un usuario no necesita conocer la implementación Al evitar que el usuario modifique los atributos directamente y forzándolo a utilizar funciones definidas para modificarlos (llamadas interfaces), se garantiza la integridad de los datos (por ejemplo, uno puede asegurarse de que el tipo de datos suministrados cumple con nuestras expectativas bien que los se encuentran dentro del periodo de tiempo esperado).
La encapsulación define los niveles de acceso para elementos de esa clase. Estos niveles de acceso definen los derechos de acceso para los datos, permitiéndonos el acceso a datos a través de un método de esa clase en particular, desde una clase heredada o incluso desde cualquier otra clase. Existen tres niveles de acceso:
• público: funciones de toda clase pueden acceder a los datos o métodos de una clase que se define con el nivel de acceso público. Este es el nivel de protección de datos más bajo
• protegido: el acceso a los datos está restringido a las funciones de clasesheredadas, es decir, las funciones miembro de esa clase y todas lassubclases
• privado: el acceso a los datos está restringido a los métodos de esa clase en particular. Este es nivel más alto de protección de datos
El concepto de herencia
La herencia es específica de la programación orientada a objetos, donde una clase nueva se crea a partir de una clase existente. La herencia (a la que habitualmente se denomina subclases) proviene del hecho de que la subclase (la nueva clase creada) contiene las atributos y métodos de la clase primaria. La principal ventaja de la herencia es la capacidad para definir atributos y métodos nuevos para la subclase, que luego se aplican a los atributos y métodos heredados.
Esta particularidad permite crear una estructura jerárquica de clases cada vez más especializada. La gran ventaja es que uno ya no debe comenzar desde cero cuando desea especializar una clase existente. Como resultado, se pueden adquirir bibliotecas de clases que ofrecen una base que puede especializarse a voluntad (la compañía que vende estas clases tiende a proteger las datos miembro usando la encapsulación).
Jerarquía de clase
La relación primaria-secundaria entre clases puede representarse desde un punto de vista jerárquico, denominado vista de clases en árbol. La vista en árbol comienza con una clase general llamada superclase (a la que algunas veces se hace referencia como clase primaria, clase padre, clase principal, oclase madre; existen muchas metáforas genealógicas). Las clases derivadas (clase secundaria o subclase) se vuelven cada vez más especializadas a medida que van descendiendo el árbol. Por lo tanto, se suele hacer referencia a la relación que une a una clase secundaria con una clase primaria mediante la frase "es una" x o y.
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.
Definición de polimorfismo
La palabra polimorfismo proviene del griego y significa que posee varias formas diferentes. Este es uno de los conceptos esenciales de una programación orientada a objetos. Así como la herencia está relacionada con las clases y su jerarquía, el polimorfismo se relaciona con los métodos.
En general, hay tres tipos de polimorfismo:
• Polimorfismo de sobrecarga
• Polimorfismo paramétrico (también llamado polimorfismo de plantillas)
• Polimorfismo
...