unidad i: la poo y el lenguaje de programacion java · unidad i: la poo y el lenguaje de...

16
UNIDAD I: LA POO Y EL LENGUAJE DE PROGRAMACION JAVA 1.1 Introducción a la POO. 1.1.1. Que es programación orientada a objetos (POO). 1.1.2. Historia de la POO. 1.1.3. Concepto de Objeto y Clase. 1.1.4. Abstracción. 1.1.5. Encapsulamiento. 1.1.6. Herencia. 1.1.7. Polimorfismo. 1.1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS 1.1.1. Que es programación orientada a objetos (POO). La programación Orientada a objetos (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación. Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en términos de objetos, propiedades, métodos y otras cosas que veremos rápidamente para aclarar conceptos y dar una pequeña base que permita soltarnos un poco con este tipo de programación. ¿Cómo definiría con sus propias palabras POO? Motivación Durante años, los programadores se han dedicado a construir aplicaciones muy parecidas que resolvían una y otra vez los mismos problemas. Para conseguir que los esfuerzos de los programadores puedan ser utilizados por otras personas se creó la POO. Que es una serie de normas de realizar las cosas de manera que otras personas puedan utilizarlas y adelantar su trabajo, de manera que consigamos que el código se pueda reutilizar. La POO no es difícil, pero es una manera especial de pensar, a veces subjetiva de quien la programa, de manera que la forma de hacer las cosas puede ser diferente según el programador. Aunque podamos hacer los programas de formas distintas, no todas ellas son correctas, lo difícil no es programar orientado a objetos sino programar bien. Programar bien es importante porque así nos podemos aprovechar de todas las ventajas de la POO. Cómo se piensa en objetos Pensar en términos de objetos es muy parecido a cómo lo haríamos en la vida real. Por ejemplo vamos a pensar en un coche para tratar de modelizarlo en un esquema de POO. Diríamos que el coche es el elemento principal que tiene una serie de características,

Upload: ngonguyet

Post on 28-Jun-2018

233 views

Category:

Documents


0 download

TRANSCRIPT

UNIDAD I: LA POO Y EL LENGUAJE DE PROGRAMACION JAVA

1.1 Introducción a la POO. 1.1.1. Que es programación orientada a objetos (POO). 1.1.2. Historia de la POO. 1.1.3. Concepto de Objeto y Clase. 1.1.4. Abstracción. 1.1.5. Encapsulamiento. 1.1.6. Herencia. 1.1.7. Polimorfismo.

1.1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS

1.1.1. Que es programación orientada a objetos (POO). La programación Orientada a objetos (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación.

Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en términos de objetos, propiedades, métodos y otras cosas que veremos rápidamente para aclarar conceptos y dar una pequeña base que permita soltarnos un poco con este tipo de programación.

¿Cómo definiría con sus propias palabras POO?

Motivación

Durante años, los programadores se han dedicado a construir aplicaciones muy parecidas que resolvían una y otra vez los mismos problemas. Para conseguir que los esfuerzos de los programadores puedan ser utilizados por otras personas se creó la POO. Que es una serie de normas de realizar las cosas de manera que otras personas puedan utilizarlas y adelantar su trabajo, de manera que consigamos que el código se pueda reutilizar.

La POO no es difícil, pero es una manera especial de pensar, a veces subjetiva de quien la programa, de manera que la forma de hacer las cosas puede ser diferente según el programador. Aunque podamos hacer los programas de formas distintas, no todas ellas son correctas, lo difícil no es programar orientado a objetos sino programar bien. Programar bien es importante porque así nos podemos aprovechar de todas las ventajas de la POO.

Cómo se piensa en objetos

Pensar en términos de objetos es muy parecido a cómo lo haríamos en la vida real. Por ejemplo vamos a pensar en un coche para tratar de modelizarlo en un esquema de POO. Diríamos que el coche es el elemento principal que tiene una serie de características,

como podrían ser el color, el modelo o la marca. Además tiene una serie de funcionalidades asociadas, como pueden ser ponerse en marcha, parar o aparcar.

En un esquema POO el coche sería el objeto, las propiedades serían las características como el color o el modelo y los métodos serían las funcionalidades asociadas como ponerse en marcha o parar.

Por poner otro ejemplo vamos a ver cómo modelizaríamos en un esquema POO una fracción, es decir, esa estructura matemática que tiene un numerador y un denominador que divide al numerador, por ejemplo 3/2.

La fracción será el objeto y tendrá dos propiedades, el numerador y el denominador. Luego podría tener varios métodos como simplificarse, sumarse con otra fracción o número, restarse con otra fracción, etc.

Estos objetos se podrán utilizar en los programas, por ejemplo en un programa de matemáticas harás uso de objetos fracción y en un programa que gestione un taller de coches utilizarás objetos coche. Los programas Orientados a objetos utilizan muchos objetos para realizar las acciones que se desean realizar y ellos mismos también son objetos. Es decir, el taller de coches será un objeto que utilizará objetos coche, herramienta, mecánico, recambios, etc.

Escriba un ejemplo sencillo además de los planteados de POO

1.1.2 Historia de la POO

Al mismo tiempo que se da la Crisis del Software, por otro lado la Orientación a Objetos (OO) se empezó a discutir a fines de los años 60 con el desarrollo del lenguaje SIMULA67 por Nygaard y Ole-Johan Dahl en el Centro de Cálculo Noruego, en él, introdujeron los conceptos de clase, subclases y rutinas, muy parecidos los conceptos a los lenguajes orientados a objetos de hoy en día. A mitad de la década de los 70 los científicos del Centro de Investigaciones Palo Alto de XEROX (PARC) (XEROX Palo Alto Research Center) crearon el lenguaje SMALLTALK, el primer lenguaje orientado a objetos consistente y completo. En él cada elemento del lenguaje fue realizado un objeto. Este último lenguaje evolucionó a través de varios lanzamientos realizados por PARC. A pesar de este movimiento temprano hacia los lenguajes orientados a objetos, sólo se lograron pequeñas incursiones en la comunidad de la programación general. El progreso reciente se ha acelerado debido principalmente a la disponibilidad de las extensiones orientadas a objetos para dos lenguajes populares: C y PASCAL, y a las extensiones prometidas para otros lenguajes comerciales populares como BASIC y COBOL. En sus comienzos la programación de computadores era una tarea relegada prácticamente a los "genios" de la computación de aquel entonces; hacer un programa para computador demandaba miles de horas de tiempo invertido y desde luego miles de miles o millones de líneas de código para llevar a cabo una tarea determinada. Bien la programación de ese entonces tenía un estilo particular llamado hoy día programación en spaghetti, se llama así porque todo el código generalmente sigue una

línea secuencial desde la primera instrucción hasta la última, ocasionalmente hay saltos entre instrucciones, pero generalmente se regresa al punto donde se originó el salto... los lenguajes más populares en ese entonces eran desde luego el ASM, el FORTRAN y el COBOL. Luego los programas se fueron haciendo más grandes y complejos, así que las cosas se comenzaron a hacer dificiles de manejar (es decir aún más dificiles de manejar), allí nació una nueva forma de programación... una nueva metodología, la programación estructurada.

Programación Estructurada

La solución a tantos problemas fue básicamente sencilla, agrupar el código por funcionalidad de tal forma que cada funcionalidad pueda ser invocada tantas veces como se necesite, esto permitió reducir las líneas de código necesarias para crear un programa ya que si existe una rutina compleja que podía ser en algún grado repetitiva, esta se coloca en una función que sea aplicable en uno o más casos diferentes, veamos un ejemplo...

Supongamos que tenemos un programa que controla las cuentas de un banco (imaginemos un banco pequeño), así que se ha creado un conjunto de programas para tal fin. Dentro de esos programas tenemos una sección de programa que lo que hace es manejar los retiros que ha hecho el dueño de la cuenta, lo cual implica descontar un valor determinado de una cuenta y elaborar el registo contable correspondiente... imaginemos otra parte del código de ese programa, un cliente paga su tarjeta de crédito así que otra vez el programa descuenta el valor de la cuenta del cliente, también elabora el registro contable correspondiente y adicionalmente hace otros registros y abonos a la cuenta de la tarjeta de crédito... Este tipo de cosas las tendría que hacer el programa miles de veces, una vez cada que se presente una transacción en el banco.

En programación spaguetti eso tomaría miles de líneas como lo vimos anteriormente, ya que por cada transacción se requiere volver a repetir las instrucciones para hacer lo correspondiente; en programación estructurada esto ya no es necesario ya que habríamos creado algunas funcionalidades que nos permiten invocarlas cuando las necesitemos, así solamente crearíamos el código para registrar el abono o el descuento de dinero de una cuenta, y otro código para hacer registros contables, así que cada vez que los necesitemos simplemente colocamos una línea de código haciendo el llamado a la funcionalidad, y no repitiendo nuevamente todo el código que hace parte de la misma. Pero los días de la programación estructurada estaban contados, los programas siguieron creciendo, tener un código altamente estructurado ya no ayudaba lo suficiente, pues la complejidad y magnitud de las cosas que se deben hacer aumentaba exponencialmente...

Y llegó la POO

Cuando las cosas se hicieron demasiado complejas, fue necesario tomar decisiones radicales, cuando nació la programación estructurada la solución fue sencilla... demasiado sencilla, agrupar las cosas en funcionalidades... funcionó y de hecho funciona tanto que si se hubiese deseado disminuir nuevamente la complejidad de los problemas de la programación a gran escala simplemente se hubiesen creado niveles de agrupamiento de funcionalidades, algo como funcionalidades de funcionalidades, pero el problema se volvería a repetir entre más grande fuera el software, así que hubo necesidad de cambiar las cosas de una manera más profunda.

La forma en que se hacían los programas era siempre orientada a la funcionalidad, es decir que haga lo que debe y que lo haga de la manera más rápida, ocasionalmente y si era posible reutilizar el código ya creado, los incidentes comenzaron a aparecer veamos una ejemplo, sigamos con el banco...

Bien, el banco ha crecido un poco más razón por la cual necesitan modernizar su sistema (hardware, programas etc...) se ponen en la labor de crear nuevos programas, como los requieren en el menor tiempo imposible dividieron su área de desarrollo en varios grupos: uno que hará toda la parte con cuentas corrientes, otro que funciona con cuentas de ahorro, y otro con tarjetas débito, otro con CDT etc. Para evitar algunos problemas definen una serie de estándares de nomenclatura y ese tipo de cosas. Tiempo después los módulos del programa ya están casi listos así que se disponen a integrar todos esos programas en un programa único, pero cuando iniciaron con eso pasó algo inesperado... Los señores del grupo de cuentas de ahorros crearon unas funciones, se llaman débito y crédito, mientras tanto los señores del grupo de CDT´s , los de tarjetas, los de cuenta corriente etc. crearon también todos funciones llamadas débito y crédito, pero todas hacen cosas diferentes cada una para su caso puntual... resultado de la operación: hay que renombrar todas las funciones débito crédito para que todas se llamen diferentes, cosa que todos los grupos... con desagrado decidieron acatar, todos excepto dos.

El grupo de cuentas de ahorro y el de tarjeta de crédito no pueden hacer el cambio de una manera tan sencilla ya que han utilizado unas librerías provistas por terceros y que ya desde hace tiempo interactúan con u sistema de transacciones a nivel internacional que requiere que el software cumpla con una serie de lineamientos e interfaces de programación, y para completar el problema parte de esas interfaces implican no solo es usar el nombre que ya usan en sus funciones sino que el nombre que se ha propuesto utilizar ya es usado para otros fines en dichas librerías integradas, etc.

Así las cosas les tardara un poco de tiempo a los señores hacer los cambios que necesitan porque definitivamente el programa integrador no se puede crear si hay dos funciones con el mismo nombre dentro del paquete, imaginemos todas las variables que habrán quedado con nombres parecidos, sino es que iguales... en un programa tan enorme evitar esa situación es algo muy complicado.

Pero en POO las cosas habrían sido diferentes, puesto que desde que se han creado los módulos cada uno es un componente por separado y las funciones de los Sre del CDT serian accedidas algo así como:

CDT.debito CDT.crédito Las de ahorros serian: Ahorros.debito Ahorros.crédito Y así sucesivamente con cada uno de los módulos, de hecho todos podrían tener las mismas variables: a, b, c, d, e, f y no pasaría absolutamente nada. Otro problema con el sistema estructurado es que si los señores de CDT tienen una función para encripción única que no debe ser usada por nadie más... no hay garantía de que más adelante los señores de tarjeta de crédito la usen, y pueden hacerlo por que hace parte del mismo programa enlazado, eso sería muy difícil sino imposible de evitar en programación estructurada, pero en POO sería muy sencillo ya que le diríamos a nuestra función que fuera de uso privado, es decir solo utilizable dentro del grupo de CDT.

Según el texto leído sobre programación estructura y POO explique de forma sencilla porque afirmaría usted que la POO posee más ventajas que la Programación estructurada. Paradigma de la Programación Orientada a Objetos. Para aquel que no es un programador, Orientación a Objetos significa algo bastante familiar: considerar al mundo como un conjunto de entidades u objetos que están relacionados y se comunican entre ellos. Esta es la forma en que la gente normal ve el mundo, así es que este pensamiento tiene intrínsecamente sentido. La Orientación a Objetos se basa en estas ideas: un programa es un mundo que representa un subconjunto del mundo real. La estructura del programa se simplifica en gran medida si cada una de las entidades u objetos del problema que se está modelando corresponde directamente con un objeto que se puede manipular internamente en un programa. Para el desarrollo de sistemas, la orientación a objetos es un nivel de abstracción de computadora más allá de los procedimientos y los datos. La orientación a objetos anima al desarrollador de sistemas a concentrarse en los temas importantes e ignorar el resto a la hora de la modelación.

El hecho de que el tema central sean los objetos, aunque intuitivamente, marca una desviación significativa de los anteriores paradigmas de la programación. Una ecuación para reconocer una aproximación a la Orientación a Objetos es: ORIENTACIÓN_OBJETOS = CLASES Y OBJETOS + HERENCIA + COMUNICACIÓN CON MENSAJES

Todos los sistemas que merecen la descripción de Orientado a Objetos contienen estos mecanismos esenciales, aunque los mecanismos pueden no estar realizados exactamente de la misma forma. Analicemos ahora los términos de la ecuación. 1.1.3 Conceptos de Objetos y Clase OBJETOS (Sinónimo de instancia). Es la abstracción de alguna cosa en el dominio del problema que refleja la capacidad de un sistema de alcanzar información alrededor de él. Los objetos, por lo tanto, son entidades que tienen atributos (datos) y formas de comportamiento (procedimientos) particulares. Lasaplicaciones pueden constar de diferentes clases de objetos. Un objeto pasivo es el que actúa solamente bajo petición. Los objetos activos efectúan el seguimiento de los sucesos que ocurren en una aplicación y actúan de forma autónoma.

Un objeto consta de:

Tiempo de vida: La duración de un objeto en un programa siempre está limitada en el tiempo. La mayoría de los objetos sólo existen durante una parte de la ejecución del programa. Los objetos son creados mediante un mecanismo denominado instanciación, y cuando dejan de existir se dice que son destruidos.

Estado: Todo objeto posee un estado, definido por sus atributos. Con él se definen las propiedades del objeto, y el estado en que se encuentra en un momento determinado de su existencia.

Comportamiento: Todo objeto ha de presentar una interfaz, definida por sus métodos, para que el resto de objetos que componen los programas puedan interactuar con él.

Defina con sus propias palabras que es un objeto y las partes que este consta CLASE. Una clase es una descripción de un conjunto de objetos casi idénticos. Una clase consta de métodos y datos que resumen las características comunes de los objetos, incluyendo una descripción de cómo crear un nuevo objeto de la clase. En otras palabras, las clases contienen los anteproyectos para crear objetos. Redefiniendo un objeto. Un objeto es un modelo o instancia de una clase. Ejemplos de estos conceptos (utilizaremos un lenguaje más fácil de entender para definirlos):

Una clase es un molde que define los datos y procedimientos que actúan sobre esos datos y los objetos serán los elementos producidos por ese molde. Ejemplo 1: Consideremos cómo un programador podría designar una aplicación de procesamiento de una posición en el espacio en forma orientada a objetos.

Los objetos serían PuntoA, PuntoB donde tanto PuntoA como PuntoB tienen las

características de posición.

Veamos ahora cómo sería la aplicación con el sistema de los números complejos en forma orientada a objetos. Algunos objetos son p y q que por ser números complejos son de la forma (real, imaginaria). Defina con sus propias palabras que es una clase: Descripción del término herencia: La herencia es un mecanismo para expresar similitud entre clases, amplificando definiciones de las clases similares previamente definidas. La herencia permite crear nuevas clases llamadas subclases agregando solamente las diferencias con la clase. En otras palabras la herencia es una partición en subclases más especializadas.

El principio en que se basa este concepto es de que las clases que se derivan de otra clase, comparten las características comunes de la clase de la que descienden. Ejemplo 1: Ejemplo 1:

Ejemplo 2 Ejemplo 2: Para este ejemplo usaremos la clase publicación. Descripción del término comunicación con mensajes. Los objetos tienen la posibilidad de actuar, la acción sucede cuando un objeto recibe un mensaje, que es, una solicitud que pide al objeto que se comporte de alguna forma. Cuando se ejecutan los programas orientados a objetos, los objetos reciben, interpretan y responden a mensajes procedentes de otros objetos. Los mensajes pueden contener información para clasificar una solicitud. El objeto emisor del mensaje no necesita conocer la forma en que el objeto receptor está llevando a cabo la solicitud, solamente conoce que se está sucediendo.

Los procedimientos residen en el objeto y determinan cómo actúa el objeto cuando recibe un mensaje. De hecho, los métodos proporcionan el único mecanismo para cambiar los valores de las variables del objeto. (A este hecho se le conoce como encapsulamiento). Los mensajes que reciben el objeto son los únicos conductos que conectan al objeto con el mundo exterior. Estas características de los objetos confieren a la orientación a objetos su ventaja: la orientación a objetos fomenta la modularidad haciendo muy claras las fronteras entre objetos, explícita la comunicación entre los mismo y oculta los detalles de la realización. En un programa con orientación a objetos ocurren tres sucesos: 1) Se crean los objetos cuando se necesitan. 2) Los mensajes se mueven de un objeto a otro a medida que el programa procesa internamente información o responde a la entrada de los usuarios. 3) Se borran los objetos cuando ya no son necesarios y se recupera memoria.

En base al ejemplo anterior escriba otro ejemplo donde represente al objeto, clase

método y herencia.

Características deseadas de la Programación Orientada a Objetos Las características deseadas pueden variar y es difícil ponerse de acuerdo. 1. Principio de Abstracción

• Datos • Procedimientos

2. Encapsulamiento 3. Herencia

• Simple • Múltiple

4. Comunicación con mensajes 5. Polimorfismo Manejo automático de memoria

• Constructores • Destructores

Métodos virtuales Sobreposición de operadores Antes de ver cada uno de estos conceptos es importante mencionar que los ejemplos de los mismos se darán con seudo código, por lo que daremos una idea de este concepto. El seudo código se utiliza como una herramienta para estructurar el código de un programa sin comprometerse con ningún lenguaje, pero que es posible que tenga alguna semejanza con el lenguaje a utilizar. En el seudo código se utilizan palabras en nuestro lenguaje que son similares a las palabras utilizadas por los lenguajes de programación. En realidad el seudo código es muy similar a un algoritmo pero más estructurado, ya que se le deben de dar sangrías a la escritura de las instrucciones para hacerlo más legible en la lectura. Iniciamos: Principio de abstracción: • Es el principio de ignorar los aspectos de un sujeto que no son relevantes en un propósito de orden de concentración más exacto. • El proceso de representar entidades reales como elementos internos a un programa recibe el nombre de abstracción. • De esta forma, un tipo de dato abstracto se puede escribir concentrándose en las operaciones que manipulan a los objetos de este tipo, sin caer en detalles de representación y manipulación de datos.

Datos. Es un atributo del objeto que representa cuantitativamente o cualitativamente a ese objeto.

Procedimiento. Es una operación que lleva a cabo un servicio a los atributos del

objeto. Ejemplo 1:

En el ejemplo de la posición en el espacio se quiere representar en objetos, queremos abstraer esta parte del mundo real a un programa que pueda representarlos. Una posición en el plano la determinan las coordenadas (x, y), que serían nuestros datos y los procedimientos que las manipulen pueden ser: iniciar posición leer x leer y saluda Ejemplo 2: En el ejemplo de los números complejos se tiene que éstos son de la forma (real, imaginaria), donde real e imaginaria son números reales, de lo que podemos intuir que los datos sean: real e imaginaria Los atributos que manipulan estos datos pueden ser todos los operadores aritméticos (+, -, *, /) y los operadores de relación ( =, < > ). Encapsulamiento (ocultamiento de datos). Se refiere al hecho de que ningún programador ni de ninguna otra parte de un programa se pueda tener acceso a los datos de un objeto en forma directa, sino a través de los procedimientos del objeto. Ejemplo 1: En este ejemplo para leer cualquiera de las coordenadas no se puede directamente sólo leyendo por separado las coordenadas con los procedimientos de lectura. Ejemplo 2: En el ejemplo de los números complejos cada número complejo no se puede modificar a menos que sea con los operadores. Herencia. La herencia es un mecanismo que para expresar similaridad entre clases, simplificando definiciones de clases similares previamente detenidas. • La herencia simple es cuando el lenguaje sólo permite que una clase derive de una clase. • La herencia múltiple es cuando una clase puede ser derivada de más de una clase.

Ejemplo 1. Herencia simple:

Ejemplo 2. Herencia Múltiple: (Multimedia)

Comunicación con mensajes. Las variable de un objeto sólo pueden ser manipuladas por sus propios métodos. Es decir, los mensajes mandan una petición de acción a un objeto, mientras que los métodos del objeto deciden cómo llevar a cabo la acción. Ejemplo: En la definición de posición consta de los datos, coordenadas X e Y y los métodos que inician y devuelven los valores X y Y. Procedimiento leer X Regresa valor de X Polimorfismo Es cuando una clase tiene varios procedimientos con el mismo nombre, pero con distinto tipo y/o número de argumentos. Ejemplo 1: Se puede tener más de un procedimiento saluda en la clase posición. a) Se puede tener un procedimiento procedimiento Saluda escribe "Hola soy posición"; b) Se puede tener un procedimiento procedimiento Saluda (mensaje) escribe mensaje; Manejo Automático de Memoria. En el apartado de comunicación con mensajes se menciona que en un programa con orientación a objetos ocurren tres sucesos, dos de ellos nos interesan. El primer suceso dice: "Se crean los objetos cuando se necesitan." y el tercer suceso indica: "Se borran los objetos cuando ya no son necesarios y se recupera la memoria.". Estos sucesos se desarrollan con los constructores y destructores. • Constructores Los constructores son procedimientos de la clase que permiten crear objetos. Un constructor es llamado para asignar memoria a un objeto, para asignar valores a los datos del objeto y realizar tareas iniciales para un nuevo objeto. Esto implique que si no podemos trabajar con un objeto que no haya sido creado a través de un constructor y si sólo se pueden modificar mediante los procedimientos de

la clase NO TENEMOS FORMA DE CORROMPER EL OBJETO, lo cual aumenta la confiabilidad y facilita la rehusabilidad. • Destructores Un destructor es un procedimiento de la clase que realiza la tarea opuesta a su constructor, libera la memoria que fue asignada al objeto que fue creado por el constructor. Es deseable que el destructor se invoque implícitamente cuando el objeto abandone el bloque donde fue declarado. El destructor le permite al programador despreocuparse de tener que liberar la memoria que deja de utilizar y correr el riesgo de que ésta se sature. Ejemplos: Normalmente en los lenguajes con orientación a objetos el destructor como el constructor tienen el mismo nombre de la clase a la que pertenece. Ejemplo 1: Constructor iniciar (real 1, real 2) x = real 1 y = real 2 Destructor iniciar borra x borra y Métodos Virtuales. Una jerarquía de clases unidas por la herencia, con nombres de métodos comunes para operaciones que son similares conceptualmente, pero que realizan tareas diferentes. Como consecuencia, cuando diferentes objetos de las diferentes clases de la jerarquía reciben el mismo mensaje, éste provoca acciones totalmente distintas. Ejemplo: En el ejemplo 1, Posición, Punto y Círculo pueden recibir cada uno el mensaje saluda y responder de distinta forma, los procedimientos serían: a) posición saluda "Hola, soy posición"; b) punto saluda "Hola, soy punto"; c) círculo saluda "Hola, soy círculo" Se puede hacer algo más complejo como hacer procedimientos que mostrará el punto o mostrará el círculo. Sobreposición de Operadores. Es una característica de un lenguaje de programación que permite que el mismo operador sea utilizado con tipos diferentes. Dicho de otra forma, si se tiene una aritmética definida con ciertos operadores, sería deseable que permita utilizar la misma notación para los nuevos tipos de operadores que se definan. Ejemplo: En el ejemplo 2 de números complejos se tienen los operadores aritméticos un ejemplo de sobrecarga de operadores sería:

complejos operador + (complejo,complejo) complejos operador *(complejo,complejo) Con sus propias palabras defina una a una las características de la programación Orientada a Objetos

Mapa Conceptual

POO

Paradigma

programación

Nueva forma de

pensar

Es

Consta

Estado

Comportamiento

Poseen

Clases

Consta

Propiedades

Poseen

Posee

principios

Abstracción

Encapsulamiento

Herencia

Comunicación con

mensajes

Polimorfismo

Simple

Datos

Procedimie

ntos

Múltiple

Atributos

Métodos

Tiempo de Vida

Objetos