Introduccion POO

20
Universidad Nacional Autónoma de Nicaragua, Mangua RURD Facultad de Ciencias e Ingenierías Departamento de Computación Introducción a la Orientación a Objetos MSc. Lawdee Narváez B. Managua 05 de 2015

description

Introduccion al paradigma OO

Transcript of Introduccion POO

Page 1: Introduccion POO

Universidad Nacional Autónoma de Nicaragua, ManguaRURD

Facultad de Ciencias e IngenieríasDepartamento de Computación

Introducción a la Orientación a Objetos

MSc. Lawdee Narváez B.

Managua 05 de 2015

Page 2: Introduccion POO

Definición de Término

Paradigma

Un paradigma de programación se define por la forma que un determinado programador resuelve un problema, proporcionando visión y determinando la forma como el programador estructura y ejecuta un programa determinado. Los principales paradigmas de programación son: el Imperativo, el Declarativo, el Lógico, el Funcional y el Orientado a Objetos.

Paradigma es un término de origen griego, "parádeigma", que significa modelo, patrón, ejemplo. En un sentido amplio se corresponde con algo que va a servir como modelo o ejemplo a seguir en una situación dada. Son las directrices de un grupo que establecen límites y que determinan cómo una persona debe actuar dentro de los límites.

El paradigma es un principio, una teoría o un conocimiento originado de la investigación en un campo científico. Una referencia inicial que servirá como modelo para futuras investigaciones.

http://www.significados.com/paradigma/

Page 3: Introduccion POO

Paradigma de la Orientación a Objetos

Bajo este paradigma cambia el modo de organización del programa: clases, concepto de ejecución de programa: paso de mensajes.

Metodología de desarrollo de aplicaciones en el cual estas se organizan como colecciones cooperativas de objetos, cada uno de los cuales representan una instancia de alguna clase y cuya clase son miembros de jerarquías de clases unidas mediante relaciones de herencia.

(Grady Booch).

A través del Paradigma Orientado a Objetos se visualiza el mundo de un nuevo modo:

Agentes y comunidades Mensajes y Métodos Responsabilidades Objetos y Clases Jerarquías de clases Enlaces de métodos

Page 4: Introduccion POO

Paradigma de la Orientación a Objetos

Agentes y comunidades

Mensajes y Métodos

Un programa orientado a objetos se encuentra estructurado como una comunidad de agentes que interaccionan (Objetos). Cada objeto juega un rol en la solución del problema. Cada objeto proporciona un servicio o realiza una acción que es posteriormente utilizada por otros miembros de la comunidad.

A un objeto se le envían mensajes con propósito que realice una determinada acción.

El objeto selecciona el método apropiado para llevar a cabo tal acción.  Este proceso es conocido como paso de mensajes. Un mensaje se diferencia de un procedimiento/función por lo siguiente:

• Siempre hay un receptor (esto no ocurre en la llamada a una función) 

• La interpretación de un mismo mensaje puede variar en función del receptor del mismo.

Page 5: Introduccion POO

Paradigma de la Orientación a Objetos

Responsabilidades

Objetos y Clases

El comportamiento para cada objeto se describe en términos de responsabilidades (mayor independencia entre los objetos).Protocolo: conjunto de responsabilidades de un objeto.

Un objeto puede definirse como la encapsulación de un estado y comportamiento, y se encuentran agrupados en categorías (Clases).El método que invoca un objeto en respuesta a un mensaje viene determinado por la clase del objeto receptor.

Page 6: Introduccion POO

Paradigma de la Orientación a Objetos

Jerarquia de Clases

Enlace de métodos

En tiempo de compilación (enlace estático)

En tiempo de ejecución (enlace dinámico)

En la realidad, muchos conocimientos se encuentran organizados en términos de jerarquías. Este principio por el cual el conocimiento de una categoría más general es aplicable a una categoría más específica se denomina generalización, y su implementación dentro de la POO se le denomina herencia.

Es el instante en el cual una llamada a un método es asociado al código que debe ser ejecutado, este puede darse en dos formas:

Page 7: Introduccion POO

Programación Orientada a Objetos

La programación orientada a objetos es una forma de programar que trata de encontrar una solución a los problemas que ocasionaba la programación estructurada. Introduce nuevos conceptos, que superan y amplían conceptos antiguos ya conocidos. Entre ellos destacan los siguientes: Clase, Herencia, Objeto, Método, Mensaje y Propiedad o Atributo.

La POO en los últimos años se ha venido posicionando en un paradigma de programación dominante y en una herramienta para resolver lo que se le denomino Crisis del software.

A través de este nuevo concepto de programación se facilita una forma particular de programar más cercana a la manera de como expresamos las cosas en la vida real.

Bajo la percepción de la programación orientada a objetos tenemos que diseñar nuestros programas en términos de objetos, propiedades y métodos. La POO expresa un programa como un conjunto de estos objetos, los cuales colaboran entre ellos para la realización de sus tareas, lo que permite que los módulos y programas sean más fáciles de escribir, mantener y reutilizar.

Page 8: Introduccion POO

Programación Orientada a Objetos y la Programación Tradicional

Desde el origen del software y el desarrollo de la programación de computadoras han surgido una serie de evoluciones sucesivas, entre las cuales resalta la programación estructurada, la cual tenía como principio fundamental dividir un programa en subprogramas más pequeños y fáciles de resolver, hasta alcanzar niveles de complejidad elementales, basándose siempre en la idea ¿Qué debe hacer el programa? Según lo ha planteado Ceballos (Fco. Javier Ceballos, 1997) Programación Orientada a Objetos con C++ 2ed.

En su momento esta metodología obtuvo resultados satisfactorios, pero tiene algunas limitaciones:

No ayuda a la reutilización de código.  Si dos subprogramas comparten una misma función (fn)

reutilizando el código que define la misma, y se desea modificar posteriormente fn debido a un cambio en los subprogramas que la utiliza, tal modificación también afectaría al otro subprogramas, lo que implica realizar dos funciones.

  Distinta abstracción del mundo. La programación clásica se centra

en el comportamiento, normalmente representado por verbos, mientras que nuestra mente se centra en los seres, a los que, normalmente, identificamos con sustantivos.

Page 9: Introduccion POO

Programación Orientada a Objetos y la Programación Tradicional

De acuerdo con los planteamientos anteriores, podemos decir que la programación tradicional se desarrolla a partir de procedimientos y datos, sin deslindar que procedimientos actúan sobre qué datos. Los datos son estructurados con el fin de que puedan ser procesados por un conjunto de procedimientos diferentes, lo que implica que la estructura de datos y procedimientos, están sujetos a cambios.

Siempre bajo estos mismos planteamientos, se deduce que la programación estructurada, se interesa primero por los procedimientos y después por los datos, el diseño orientado a objetos se interesa en primer lugar por los datos, a los cuales posteriormente se le asocian procedimientos, obviándose la interrogante que plantea la programación tradicional “¿Qué debe hacer el programa?” por la interrogante ¿De qué trata el programa?, por tanto se organiza el desarrollo alrededor de los datos manipulados y no alrededor de sus funcionalidades.

Bajo esta percepción de concebir un programa, resulta mucho más eficaz dado que en el contexto real de un programa, los elementos más estables son los datos.

Page 10: Introduccion POO

Programación Orientada a Objetos y Lenguajes Orientados a Objetos

Desde el desarrollo de la programación orientada a objetos, son varios los lenguajes de programación que dieron pautas a los lenguajes orientados a objetos, entre este grupo de lenguajes tenemos: LISP (años 50), Simula (años 60), Modula, Ada, pascal, C etc. Las características de estos sirvieron como base para la construcción de mecanismos orientados a objetos.

Smalltalk surge en la década de los 70’s como un lenguaje puro orientado a objetos, en los años posteriores, los avances que se experimentan en la POO fueron pocos, tomando fuerza hasta los años 80’s cuando los avances son mayores, con toda esta nueva revolución en los lenguajes surge el lenguaje C++, como sucesor de C, guardando siempre compatibilidad con su antecesor.

Page 11: Introduccion POO

Programación Orientada a Objetos y Lenguajes Orientados a Objetos

Ventajas de los Lenguajes Orientados a Objetos

Entre algunas de las ventajas que poseen los lenguajes realmente orientado a objetos se tienen:

Objetos bien diseñados, puesto que son la base para sistemas que se construyen a partir de módulos reutilizables, dando lugar a una mayor productividad.

Reutilización de clases que ya han sido probadas en circunstancias reales, lo que da lugar a sistemas de mayor calidad y con menos errores. 

La herencia hace posible la definición de sistemas más fiables, más fáciles de ampliar y menos costosos de mantener. 

Un diseño orientado a objeto es una herramienta clave para enfrentarse a problemas complejos dado que favorece el paso de pequeños a grandes sistemas.

Page 12: Introduccion POO

Programación Orientada a Objetos y Lenguajes Orientados a Objetos

Ventajas de los Lenguajes Orientados a Objetos

Entre algunas de las ventajas que poseen los lenguajes realmente orientado a objetos se tienen:

Las aplicaciones requieren de menos líneas de código, menos sentencias de bifurcación y por lo tanto los módulos son más comprensible.

La encapsulación permite la creación de sistemas más seguros.

 

A diferencia con la programación tradicional, donde siempre existe la posibilidad de que una modificación de un procedimiento o una estructura de datos afecte otros procedimientos, la POO no necesita examinar todo el código fuente para ver si un cambio afecta a otras partes.

Page 13: Introduccion POO

Características de un Lenguajes Orientados a Objetos

Todo lenguaje orientado a objetos debe tener al menos las siguientes características:

Para un LOO todo es y se trata como un objeto.

 

Todo objeto debe corresponder como instancia de una clase

 

Todos aquellos objetos de una misma clase pueden recibir los mismos mensajes

Las clases deben definir el comportamiento de los objetos y su estructura interna.

Las clases se encuentran organizadas en una estructura arbórea de única raíz, llamada jerarquía de herencia.

Page 14: Introduccion POO

Características de un Lenguajes Orientados a Objetos

Todo lenguaje orientado a objetos debe tener al menos las siguientes características:

Un programa es un conjunto de objetos que se comunica mediante el paso de mensajes.

 

Tener soporte a lo que es Polimorfismo

 

Tipado estático (imponer un tipo a un objeto en tiempo de compilación, es decir asegurar que un objeto entiende los mensajes que se le envían).

 

Recolector de basura.

 

Concurrencia (opcional, no necesariamente es un característica de un LOO).

Page 15: Introduccion POO

Mecanismos de la Programación Orientada a Objetos

Todo lenguaje orientado a objetos debe tener al menos las siguientes características:

Que es un Objeto:

Dentro del mundo de la POO, como se ha indicado varias veces anteriormente, que un programa se divide en componentes compuesto por procedimientos y datos. Es a estos componentes que se les considera un Objeto. Lo que conlleva a decir que un objeto es una unidad que contiene datos y las funciones que operan sobre esos datos.

Otra forma de definir un objeto, según Ceballos (Ceballos, 1997) es que un objeto se trata de una encapsulación genérica de datos y de los procedimientos para manipularlos, en otras palabras, un objeto se trata de una entidad que posee atributos particulares, los datos y la

Page 16: Introduccion POO

Mecanismos de la Programación Orientada a Objetos

Que es un Objeto:

Dentro del mundo de la POO, como se ha indicado varias veces anteriormente, que un programa se divide en componentes compuesto por procedimientos y datos. Es a estos componentes que se les considera un Objeto. Lo que conlleva a decir que un objeto es una unidad que contiene datos y las funciones que operan sobre esos datos.

Otra forma de definir un objeto, según Ceballos (Ceballos, 1997) es que un objeto se trata de una encapsulación genérica de datos y de los procedimientos para manipularlos, en otras palabras, un objeto se trata de una entidad que posee atributos particulares, los datos y la forma de operar sobre ellos. Por tanto contiene operaciones que definen su comportamiento y por otra parte, variables que se manipulan por esas operaciones que definen su estado.

Page 17: Introduccion POO

Mecanismos de la Programación Orientada a Objetos

El estado de un objeto se compone por datos, es decir los valores (datos) que se le asignen a uno varios atributos.

El comportamiento lo definen los procedimientos o métodos con los que puede operar tal objeto. (Las operaciones que se pueden realizar con el).

La identidad es una propiedad que posee un objeto que lo hace diferente al resto, dicho con otras palabras, es su identificador.

Un objeto se encuentra compuesto por atributos, los cuales no son más que los datos que se encuentran contenidos en él, es decir son las características o las propiedades que posee un objeto

Page 18: Introduccion POO

Mecanismos de la Programación Orientada a Objetos

Mensajes

Al ejecutarse un programa orientado a objetos, los objetos se encuentran recibiendo, interpretando y respondiendo a mensajes de otros objetos, lo que quiere decir que el flujo de control funcional es reemplazado por el paso de mensajes entre objetos, originando cambios en el estado del objeto.

Un mensaje puede incluir información con el fin de clarificar una petición: por ejemplo al momento de imprimir, tener un objeto impresión al cual se le puede enviar el mensaje imprime más el nombre de la impresora.

Cuando un objeto ha recibido un mensaje, debe conocer perfectamente lo que tiene que hacer y cuando lo envía no necesita conocer cómo se desarrolla, sino que simplemente se está desarrollando.

Page 19: Introduccion POO

Mecanismos de la Programación Orientada a Objetos

Métodos Clases

Dentro de la POO, los métodos son constituidos por las operaciones o los procedimientos que operan sobre los atributos de los objetos

Los métodos se encuentran implementados dentro de una clase y son los que determinan como debe actuar el objeto cuando ha recibido un mensaje. Es decir es el que posee una secuencia de instrucciones que la clase u objeto sigue para realizar la tarea. Un método también puede ser capaz de enviar mensajes a otros objetos, solicitando una acción o información.

En términos formales una clase se conceptualiza como como una colección de objetos similares. Lo que puede decirse también, es una agrupación de categorías. Algunos autores también lo definen como una plantilla para la creación de objetos de esa clase o tipo, en una clase se describen los métodos y atributos que definen las características comunes a todos los objetos de esa clase

Las clases son tipos de datos definidos por el usuario, donde, tal como se señaló antes determinan la estructura de datos y las operaciones asociadas.

Además las clases son las definiciones de las propiedades y comportamientos de un tipo de objeto concreto.

Page 20: Introduccion POO

Paradigma de la Orientación a Objetos

Agentes y comunidades

Un programa orientado a objetos se encuentra estructurado como una comunidad de agentes que interaccionan (Objetos). Cada objeto juega un rol en la solución del problema. Cada objeto proporciona un servicio o realiza una acción que es posteriormente utilizada por otros miembros de la comunidad.

Metodología de desarrollo de aplicaciones en el cual estas se organizan como colecciones cooperativas de objetos, cada uno de los cuales representan una instancia de alguna clase y cuya clase son miembros de jerarquías de clases unidas mediante relaciones de herencia.

(Grady Booch).

A través del Paradigma Orientado a Objetos se visualiza el mundo de un nuevo modo:

Agentes y comunidades Mensajes y Métodos Responsabilidades Objetos y Clases Jerarquías de clases Enlaces de métodos