programación orientada a objetos

Este tema es un pilar para lograr contextualizar temas mas avanzados y lograr programar en lenguajes como java, .NET, entre otros.

para llevar un orden realizare una pequeña agenda de  cada uno de los temas

Agenda topic 1

  • introducción
  • clases y objetos
  • pilares de la orientación a objetos
  • Relaciones entre objetos

INTRODUCION

Con mis palabras:

Cuando trato de explicar algo trato de involucrar también su contexto histórico, ahora bien;  anteriormente de POO se programaba “Estructurado”.

la pregunta ahora es que paso con esta programación, por que cambiar el método?

para entender se puede explicar con el siguiente ejemplo:

Muchas personas en mi país tienen un cuarto útil, donde se colocan todos esos objetos que no es útiles por el memento, baterias, teléfonos, equipos que fueron remplazados por otros,libros, apuntes de la universidad,  tenemos la tentación de guardarlas por si algún dia pueden ser útiles, lo peor es que todo lo tiramos allí puesto que no lo tenemos separados por clases, esto va creciendo con el tiempo hasta que muchas veces no sabemos lo que tenemos guardado allí y para buscar algo se toma mucho tiempo,  a veces compramos objetos que ya teníamos guardado allí. ademas si le decimos a  otra persona que haga uso de los objetos de ese cuarto, se demoraría en saber que se tiene allí.

tomando la analogía  cuando uno crea una librería o modulo con algunas funciones  en la programación estructurada  uno también  guarda  el código en un lugar y el día que se necesite se busca,se importa y se le envía el mensaje a la función.

muchas veces generamos código que ya existía por desconocimiento de esta librería o peor aun creamos la misma función en varios módulos.

ahora bien si otra persona  siguiera con un proyecto se demoraría mucho para continuarlo o mantenerlo.

cuando la informática crecía, los programas crecían,  como ese cuarto útil ;

………………………………hubo la necesidad de buscar otro método…..

pero en realidad lo que se hizo fue una mejora al método

es como si la persona del cuarto útil se le diera la idea de clasificar todo lo que tiene en clases por sus atributos y funcionalidades, ademas de no clasificarlos en su propio cuarto útil, sino en un cuarto útil en común a muchas personas.

si algún dia  crearemos otro objeto se instanciaria con una  que tuviera esas propiedades y funciones o se crearía otra nueva desde cero.

CLASES Y OBJETOS

Resulta que la persona que tenia el cuarto útil se le dio por organizarse y  separar todos sus objetos por clases en cajas “paquetes”, cada paquete contenía otras cajas que tenia una parte donde era accesible y otra parte donde estaba con candado,  se le llamaron clase  por que lo que allí contenida  se separaba por atributos y funciones.

pero como este cuarto útil iba a contener millares de objetos debía existir registro lo cual se hacia en la misma caja y paquete.

cuando la persona iba a crear un objeto “colocarlo en la caja” lo que debía de hacer era  instanciar, algo asi:

nuevo_objeto= new  caja()

ahora bien que pasaría si quisiéramos cambiar  el “estado”, algún atributo o función, se mandaría un mensaje

nuevo_objeto.color=azul

Pilares de la programación orientada a objetos

  • abstracción
  • encapsulamiento
  • herencia
  • relaciones

abstraccion

resulta que en una caja de ese cuarto útil hay muchos objetos, pero un compañero  solo necesita uno de ellos con unos atributos y funcionalidades especificas , pues la  abstracción nos permite solo tomar lo que ese compañero necesita, no toda la caja

encapsulamiento

resulta que muchos compañeros tienen acceso a ese cuarto útil y el dueño tiene objetos privados que son los manuales de fabricación de los objetos, pues no pasa nada pues la cajas dentro de ese cuarto útil tiene una parte accesible por todos y una parte con candado.

Herencia

El concepto que daré sera desde otro punto de vista en base al ejemplo.

resulta que voy a colocar una caja 1 en otra caja2, entonces sus atributos y funcionalidades  de la caja1 deben ser compatibles con la de la caja2

la definición dice que si voy a crear un objeto esta puede heredar atributos y funcionalidades de su clase padre

polimorfismo

cuando una clase hereda atributos y funciones de una clase padre esta puede cambiar su forma de proceder y se da por los parámetros que se le dan.

Relaciones entre objetos

  • asociación
  • agregación
  • generalización
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s