Sunteți pe pagina 1din 8

PROGRAMACION ORIENTADA A OBJETOS

UNIDAD I
Introducción a la Programación Orientada a Objetos
Orígenes de la POO
El primer lenguaje orientado a objetos fue Simula 67, un lenguaje diseñado para realizar
simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard del centro de cómputo
Noruego en Oslo.

Las ideas en ese lenguaje fueron usados en otros lenguajes, desde derivados de Lisp y
pascal hasta la familia de lenguajes Smalltalk, los cuales fueron desarrollados por Xerox
PARC, pero diseñados para ser un sistema dinámico completo en el que los objetos
pudieran se creados y modificados sin necesitar un sistema basado en programas estáticos.
La programación orientada a Objetos se desarrollo como un lenguaje dominante a mitad de
1980, debido a la influencia de C++, una extensión del lenguaje C. Su dominancia fue
ayudada por la creciente popularidad de las interfaces graficas.

Las tecnologías orientadas a objetos se han convertido en la década de los noventa en uno
de los motores clave de la industria del software. El lenguaje Simula como se menciono
anteriormente, es uno de los lenguajes orientado a objetos más antiguos, fue desarrollado en
1967.

Según se informa, la historia es que trabajaban en simulaciones de naves, y fueron


confundidas por la explosión combinatoria de cómo las diversas naves podían afectar unas
a las otras. La idea ocurrió para agrupar los diversos tipos de naves en diversas clases de
objetos, siendo responsable cada clase de objetos de definir sus propios datos y
comportamiento. Fueron refinados más tarde en Smalltalk, que fue desarrollado en Simula
en Xerox PARC (y cuya primera versión fue escrita sobre Basic) pero diseñado para ser un
sistema completamente dinámico en el cual los objetos se podrían crear y modificar "en
marcha" en lugar de tener un sistema basado en programas estáticos.

La programación orientada a objetos, suele conocerse como un nuevo paradigma de


programación.

DEFINICION DE PARADIGMA
El concepto paradigma procede del griego paradeigma, que significa “ejemplo” o
“modelo”.
A partir de la década del ’60, comenzó a utilizarse para definir a un modelo o patrón en
cualquier disciplina científica o contexto epistemológico.

Un paradigma científico establece aquello que se debe observar; el tipo de interrogantes


que hay que formular para hallar las respuestas en relación al objetivo; cómo deben
estructurarse dicho interrogantes; y cómo deben interpretarse los resultados de la
investigación científica.
DEFINICION DE OBJETO
Todo lo que puede ser conocido o sentido por el sujeto, incluso él mismo Los objetos son la
clave para entender la tecnología orientada a objetos. Si se mira al alrededor ahora mismo
se encontrará con muchos ejemplos de objetos del mundo real:
• Un perro
• Un escritorio
• Una computadora
• Una bicicleta
• Una persona

Los objetos del mundo real comparten dos características:


Todos tienen estado y comportamiento.
Los perros tienen estado (nombre, color, raza, hambriento) y comportamiento (ladrando,
buscando, meneando la cola).
Las bicicletas también tienen un estado (marcha actual, cadencia de pedaleo actual,
velocidad actual) y comportamiento (cambio de marcha, cambio de cadencia de pedaleo,
frenar).
Identificar el estado y el comportamiento de los objetos del mundo real es una gran ayuda
para empezar a pensar en términos de programación orientada a objetos.
BENEFICIOS DE LA P.O.O.

- Mejora la calidad del software


- Acorta los tiempos de desarrollo
- Los objetos bien diseñados constituyen la base para módulos reutilizables,
aumentando la productividad.
- Incrementa la reutilización del software.
- Facilidad en el mantenimiento
- Mantenibilidad (facilidad de mantenimiento). Los programas son más fáciles
de leer y comprender y el control de la complejidad del programa se consigue
gracias a la ocultación de información, que permite dejar visibles sólo los
detalles considere necesarios.
- Modificabilidad (facilidad para modificar los programas) Se puede hacer
añadidos y supresiones a programas, tales como un programa. Los nuevos
objetos se pueden heredar de otro objeto raíz y solo se necesita añadir o borrar
los elementos que son diferentes.
- Reutilización ó reusabilidad: Los objetos se pueden utiliza numerosas veces.
Un programa Orientado a Objetos, se construye de objetos reutilizables que
son relativamente independientes de otros objetos, puede tener características
que se heredan de otros objetos.
- Fiabilidad: Las aplicaciones orientadas a objetos pueden ser más fiables ya que
incorporan partes estándar comprobadas.
- La herencia permite una mayor extensibilidad.
- El encapsulamiento y las interfaces reducen los problemas del mantenimiento.

Que es la reutilización?
• “Cualquier procedimiento que produce o ayuda a producir un sistema mediante el nuevo
uso de algún elemento procedente de un esfuerzo de desarrollo anterior”.

• “Utilización de conceptos y objetos existentes en un sistema o situación nueva,


directamente o adaptándolos.
Para ello, estos conceptos y objetos deberán encontrarse codificados en un nivel de
abstracción establecido y deberán poder ser recuperados.”

CLASES.

Una clase es la descripción de un conjunto de objetos; consta de métodos y datos que


resumen características comunes de un conjunto de objetos. Se puede definir muchos
objetos de la misma clase. Dicho de otro modo, una clase es la declaración de un tipo de
objeto.

Las clases son similares a los tipos de datos y equivalen a modelos o plantillas que
describen cómo se construyen ciertos tipos de objetos. Cada vez que se construye un objeto
a partir de una clase, estamos creando lo que se llama una instancia de esa clase.
Una clase es la representación de un conjunto de elementos que comparten las mismas
características.

Una clase es una estructura que contiene datos y procedimientos (funciones) que son
capaces de operar sobre esos datos. A partir de una clase se puede definir objetos, cada uno
de los cuales tienen un estado y unas operaciones específicas.

Ejemplo:

Supongamos que se desea diseñar una aplicación para controlar a todo el personal que
estudia o trabaja en el Instituto Tecnológico conociendo la información correspondiente a
cada uno de ellos.

Trabajadores Docentes Trabajadores de Servicio Estudiantes


Nombre Nombre Nombre
Dirección Dirección Dirección
Número de Identidad Número de Identidad Número de Identidad
Sexo Sexo Sexo
Fecha de Ingreso Fecha de Ingreso Año
Cargo Cargo Especialidad
Salario Salario
Departamento Área
Asignatura

Inicialmente podríamos pensar en declarar tres clases : TDocente, TServicio y Estudiante;


pero si analizamos la información observamos que hay propiedades que se repiten en las
tres clases como son: Nombre, Dirección, Número de Identidad y Sexo por lo que se
pudiera declarar una clase Persona que agrupe estas propiedades comunes y así no tener
que repetirlas en cada una de las clases por lo que tendríamos ahora cuatro clases:
pero aún quedan, en las clase TDocente y TServicio propiedades comunes por lo que se
pudiera declarar una clase Trabajador con las propiedades Fecha Ingreso, cargo y Salario
quedando finalmente cinco clases:

2.1.1 E
nca
psulamiento.

Un objeto, desde nuestro punto de vista, puede verse como una pieza de software que
cumple con ciertas características:
encapsulamiento
herencia
Encapsulamiento significa que el objeto es auto-contenido, o sea que la misma definición
del objeto incluye tanto los datos que éste usa (atributos) como los procedimientos
(métodos) que actúan sobre los mismos. Cuando se utiliza programación orientada a
objetos, se definen clases (que definen objetos genéricos) y la forma en que los objetos
interactúan entre ellos, a través de mensajes. Al crear un objeto de una clase dada, se dice
que se crea una instancia de la clase, o un objeto propiamente dicho. Por ejemplo, una clase
podría ser "autos", y un auto dado es una instancia de la clase.

Encapsulación o Encapsulamiento: Es la propiedad que permite asegurar que el contenido


de la información de un objeto está oculta al mundo exterior; el objeto A no conoce lo que
hace el objeto B, y viceversa. La encapsulación (también se conoce como ocultación de la
información), en esencia, es el proceso de ocultar todos los secretos de un objeto que no
contribuye a sus características esenciales.

La encapsulación permite la división de un programa en módulos. Estos módulos se


implementan mediante clases. En la práctica, esto significa que cada clase debe tener dos
partes: un interfaz de una clase captura sólo su vista externa y la implementación contiene
la representación de la abstracción, así como mecanismos que realizan el comportamiento
deseado.

La Programación Orientada a Objetos (POO) como solución

La programación orientada a objetos es una nueva forma de programar. Introduce nuevos


conceptos, que superan y amplían conceptos antiguos ya conocidos. Entre ellos destacan los
siguientes:

Objeto: Un conjunto de propiedades o atributos (datos) y de comportamiento o


funcionalidad ("métodos"). Corresponden a los objetos reales del mundo que nos rodea, o a
objetos internos del sistema (del programa). En conclusión un objeto es un elemento del
mundo real

Clase: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La


instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas.

Método: algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se


desencadena tras la recepción de un "mensaje". Desde el punto de vista del
comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en
las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro
objeto del sistema.

Evento: un suceso en el sistema (tal como una interacción del usuario con la máquina, o un
mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado
al objeto pertinente.

Mensaje: una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus
métodos con ciertos parámetros asociados al evento que lo generó.

Propiedad o atributo: contenedor de un tipo de datos asociados a un objeto (o a una clase


de objetos), que hace los datos visibles desde fuera del objeto, y cuyo valor puede ser
alterado por la ejecución de algún método.

Estado interno: es una propiedad invisible de los objetos, que puede ser únicamente
accedida y alterada por un método del objeto, y que se utiliza para indicar distintas
situaciones posibles para el objeto (o clase de objetos).
En comparación con un lenguaje imperativo, una "variable" no es más que un contenedor
interno del atributo del objeto o de un estado interno, así como la "función" es un
procedimiento interno del método del objeto.

CARACTERÍSTICAS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS

Abstracción: cada objeto en el sistema sirve como modelo de un "agente"


abstracto que puede realizar trabajo, informar y cambiar su estado, y
"comunicarse" con otros objetos en el sistema sin revelar cómo se implementan
estas características. Los procesos, las funciones o los métodos pueden también
ser abstraídos y cuando lo están, una variedad de técnicas son requeridas para
ampliar una abstracción.

Encapsulamiento: también llamado "ocultación de la información". Cada objeto está


aislado del exterior, es un módulo natural, y cada tipo de objeto expone una interfaz a otros
objetos que especifica cómo pueden interactuar con los objetos de la clase. El aislamiento
protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a
acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su
estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de
maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos
lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una
manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un
agregado o rompecabezas de objetos.

Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden compartir


el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento
correspondiente al objeto que se esté usando. O dicho de otro modo, las referencias y las
colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un
comportamiento en una referencia producirá el comportamiento correcto para el tipo real
del objeto referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última
característica se llama asignación tardía o asignación dinámica. Algunos lenguajes
proporcionan medios más estáticos (en "tiempo de compilación") de polimorfismo, tales
como las plantillas y la sobrecarga de operadores de C++.

Herencia: las clases no están aisladas, sino que se relacionan entre sí, formando una
jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de
todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el
encapsulamiento permitiendo a los objetos ser definidos y creados como tipos
especializados de objetos preexistentes. Estos pueden compartir (y extender) su
comportamiento sin tener que reimplementar su comportamiento. Esto suele hacerse
habitualmente agrupando los objetos en clases y estas en árboles o enrejados que reflejan
un comportamiento común. Cuando un objeto pertenece a más de una clase se llama
herencia múltiple; esta característica no está soportada por algunos lenguajes (como Java).

S-ar putea să vă placă și