Programación Orientada a Objetos – Características de la POO

Este post es parte de una serie de artículos sobre POO y viene a continuación de ¿Qué es P.O.O.?

Características de la P.O.O.:

No hay un acuerdo aceptado por todo el mundo respecto a cuáles son las características que definen la POO, pero al menos todos concuerdan en estas tres:

  1. Abstracción.
  2. Encapsulación.
  3. Herencia.

Abstracción:

Cada vez que pronunciamos una palabra, realmente lo que hacemos es asociar ese sonido (o ese conjunto de garabatos al escribir) con una serie de cosas. Decimos que una ave es tal cosa, que una silla es tal otra, etc.

Cuando vamos a aplicar la POO, lo primero que debemos hacer es cumplir con una vieja máxima de guerra: Divide y Vencerás. Es decir, lo que hacemos es seccionar nuestro código en grupos de código más pequeño que, al unirlos, hacen el trabajo. Un buen ejemplo de abstracción es el cuerpo humano, aunque el cuerpo es una unidad, está dividido en lo que conocemos por sistemas (el sistema respiratorio, el sistema linfático, cardiovascular, etc., etc.). Estos sistemas, a su vez están compuestos por otros más pequeños: los órganos, y así sucesivamente. La abstracción nos permite dividir nuestro programa en distintos objetos que se agrupan para formar cosas más complejas.

Pero ¿qué demonios es realmente la abstracción? Básicamente es la capacidad de separar los elementos (al menos mentalmente) para poder verlos de forma singular. Como cuando describimos el cuerpo humano y decimos cabeza, brazo(s), pierna(s), etc.

Encapsulación:

También conocida como ocultamiento. Cuando me acuesto a ver televisión no me preocupo del modo como éste funciona, o lo que hace para cambiar de canal o aumentar el volumen. A menos que seas experto en electrónica o técnico en televisores, te pasará lo mismo: no lo sabes y no te importa; sólo sabes que al presionar un botón ocurre la magia.

La encapsulación se encarga de mantener ocultos los procesos internos que necesita para hacer lo que sea que haga, dándole al programador acceso sólo a lo que necesita. Esto da dos ventajas iniciales: Lo que hace el usuario puede ser controlado internamente (incluso sus errores), evitando que todo colapse por una intervención indeseada (tú no quieres que tu mamá, que no tiene ni idea de electrónica, abra tu televisor y empiece a jugar con los circuitos para cambiar los canales manualmente ¿verdad?). La segunda ventaja es que, al hacer que la mayor parte del código esté oculto, puedes hacer cambios y/o mejoras sin que eso afecte el modo como los usuarios van a utilizar tu código. Sólo tienes que mantener igual la forma de acceder a él (en el caso del control de la tele, que los botones sigan siendo los mismos y que el botón de “apagado” no cambie el volumen). Por cierto, estas puertas de acceso que das a los usuarios son lo que se conoce como interfaz.

Herencia:

Uno de los elementos (a mi modo de ver) más interesantes de la P.O.O. La herencia es la capacidad que tiene una clase de derivar las propiedades y métodos de otra (suena a chino ¿no? Calma, lo veremos luego con paciencia ;) ). Tratemos de explicarlo con un ejemplo:

Decimos que una gallina es un ave; esto quiere decir que las gallinas tienen características comunes con otras aves (pico, plumas, etc.), es decir que la gallina hereda las características comunes de todas las aves. Pero además, resulta que un ave es un animal, lo que significa que también comparte características comunes al caballo, el perro, el hombre (seeee, somos animales) y cualquier otra cosa que pueda ser clasificada como animal.

La herencia nos permite, entre otras cosas, evitar tener que escribir el mismo código una y otra vez, puesto que al definir que una categoría (que en programación llamaremos clase) pertenece a otra, automáticamente estamos atribuyéndoles las características generales de la primera, sin tener que definirlas de nuevo.

Una vez establecidas las características de la P.O.O., veamos sus elementos básicos: Clase e Instancia

Technorati Tags: , ,

Advertisement

Acerca de The Fricky!
Web Developer, Internet Jedi, amante de los estándares y de aprender algo nuevo cada día

31 Responses to Programación Orientada a Objetos – Características de la POO

  1. jose dice:

    escriban la ventaja

  2. Dulce_19 dice:

    Gracias por la explicación, y simplificar las características me agrada mucho que haya utilizado ejemplos pues, hace mas fácil el entendimiento XD XD

  3. Tu explicación es muy buena y fácil de entender, sería excelente ver como explicas el poliformismo.

  4. naira dice:

    gracias por tu informacion.. esta muy entendible muchas gracias!!

  5. juanjo dice:

    gracias por la explicacion..ojala que nos des mas y mas explicaciones interesantes y bien ejemplificadas..recordá que siempre ayudas a alguien ..gracias

  6. Cerios dice:

    Agradezco su intéres de que podamos ver con claridad su explicaciones, son muy claras.
    saludos,

  7. Pingback: Caracteristicas de la poo « Programacion Avanzada

  8. daimont dice:

    muy agradecida con la explicacion, me fue muy util para la comprension..

  9. oswal narvaez dice:

    gracias por la explicacion, me ayudo a entender mucho mejor el tema….

  10. nallely dice:

    me gusto su pagina este bien explicada =)y se entiende
    muy bien.
    gracias x pensar en los novatos

  11. Pingback: http://thefricky.wordpress.com/2007/12/28/programacion-orientada-a-objetos-caracteristicas-de-la-poo/ http://www.mawape.com.ar/blog/2009/09/14/programacion-orientada-a-objetos-%e2%80%93-%c2%bfque-es-poo/ | mawape

  12. Pingback: Características de la Programación Orientada a Objetos | MAWAPE Sistermas, software, flash, flex, air, ria, flas lite, android, iphone, nokia, windows, mac, apple, webos, symbian, windows mobile, tutoriales, videos, realidad aumentada, software develope

  13. Yomayda Luna dice:

    Gracias por la explicacion me hayuda bastante para entender y asi puedo dar una buena exposicion

  14. VAn BuUrEn FaN dice:

    Me ayudo bastante en mi investigación sigan publicando de la programación

  15. JDaniel dice:

    sencillamente espectacular la forma en que te explicas, me viene de diez, ya que este año empiezo con programacion orientada a objetos y estos conceptos son muy buenos para comenzar a entender este nuevo paradigma..

    • The Fricky! dice:

      Me alegra que lo hayas comprendido. Este tipo de cosas no son fáciles de entender al principio (o al menos no lo fueron para mí). Espero que te ayude en tus clases.

  16. chava dice:

    Que buenos ejemplos gracias

  17. quiero saber las propiedades de un objeto abstracion, publicas y privadas en que consiste cada uno de ellos y un ejemplo

    • The Fricky! dice:

      Mmmm, creo que te has confundido un poco. No existe un objeto Abstracción. La Abstracción es un proceso mental.

      Imagino que a lo que te refieres es a una Clase Abstracta. Si es ése el caso, la explicación es relativamente simple: Una Clase Abstracta es una clase que no ha sido pensada para ser instanciada sino para crear sub-clases. Puede tener sólo la declaración de las propiedades/métodos/eventos o puede también tener implementaciones, es decir, que estos tengan código. En cualquier caso, lo más importante de una clase abtracta es que no está pensada para crear objetos de ella sino otras clases que se deriven de ella.

      Sobre el tema de public, private y demás, puedes verlo en el post Ámbito, Public, Private, Protected, Local, que es parte de este mismo curso.

  18. Kompañero dice:

    Orale, esta padre la manera en que explicas las cosas gracias…=)

  19. Fer dice:

    capoo muy buenoo

  20. h4k dice:

    Está muy bien explicado, gracias por darte el tiempo.

    Sólo una duda, en wikipedia dice que encapsulación y ocultamiento no son lo mismo y lo separan como conceptos diferentes.

    • The Fricky! dice:

      Pues, es un buena pregunta. En este caso (como en otros) volvemos a las diferencias de opiniones entre distintos autores. Para algunos la encapsulación (o encapsulamiento) sólo implica reunir los elementos que están al mismo nivel de abstracción, otros van más allá, diciendo que también implica mantener estos elementos fuera del alcance real de quien usa la clase, he ahí la diferencia.
      Al final, es cosa de tomar partido en favor de una de las dos perspectivas. Evidentemente, en este curso tomamos partido por la segunda.

  21. super man dice:

    yo soy de escuela secundaria y estoy dando esto y adivinen me va mal y es aburrido

  22. julieta dice:

    falto poliformismo

  23. El pibe dice:

    Soy más q novato en esto, quisiera saber porq no tomas en cuenta Polimorfismo ya q he estado investigando esto y hay partes en q lo nombran y otras no. Agradecería tu respuesta.

    • The Fricky! dice:

      Pues, tienes razón, he dejado el polimorfismo de lado. La razón principal es porque no todos los autores están de acuerdo en él como una característica esencial de la POO. Tal es así que no es extraño encontrar lenguajes que no aplican el polimorfismo, sin embargo tienes razón, voy a revisarlo e inlcuir polimorfismo.
      Gracias por la observación

  24. sonya dice:

    Sonya

    Es muy interesante este tema de POO, me gustaria profundizar mas acerca de este tema ya q yo recibi en la U, ahora me toca aplicarlo y me cuesta un poco volver a recordarlo.

  25. chuan dice:

    esta todo muy bien explicado, pero es verdad q deberias incluir el polimorfismo….

  26. esmeralda dice:

    muy buena informacion mucho mas explicita en lo que dice….

  27. seny dice:

    ;) grax

Deja un comentario

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

Logo de WordPress.com

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

Twitter picture

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

Facebook photo

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

Connecting to %s

Seguir

Get every new post delivered to your Inbox.