Introduccion POO
-
Upload
bryanjavigazomejia -
Category
Documents
-
view
1 -
download
0
description
Transcript of 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
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/
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
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.
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.
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:
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.
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.
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.
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.
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.
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.
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.
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).
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
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.
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
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.
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.
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