viernes, 20 de marzo de 2015

Hablando Sobre Programacion Orientada a Objetos



En la primera clase correspondiente a la asignatura Lenguajes y Técnicas Avanzadas de Programación, se realizo una discusión acerca de los conocimientos que se obtuvieron a lo largo de la carrera sobre la Programación Orientada a Objetos y de que forma esta nos ayudaría en la sincronizacion de los conocimientos obtenidos y lo que estaríamos a punto de integrar. 

La programación orientada a objetos es una “filosofía”, un modelo de programación, con su teoría y su metodología, que conviene conocer y estudiar antes de nada. Un lenguaje orientado a objetos es un lenguaje de programación que permite el diseño de aplicaciones orientadas a objetos. Dicho esto, lo normal es que toda persona que vaya a desarrollar aplicaciones orientadas a objetos aprenda primero la “filosofía” (o adquiera la forma de pensar) y después el lenguaje, porque “filosofía” sólo hay una y lenguajes muchos. Con esta explicación veremos breve mente los conceptos básicos de la programación orientada a objetos desde un punto de vista global, sin particularizar para ningún lenguaje de programación específico. 



Una Nueva Forma de Pensar...

     Es muy importante destacar que cuando hacemos referencia a la programación orientada a objetos no estamos hablando de unas cuantas características nuevas añadidas a un lenguaje de programación. Estamos hablando de una nueva forma de pensar acerca del proceso de descomposición de problemas y de desarrollo de soluciones de programación. 

   La programación orientada a objetos surge en la historia como un intento para dominar la complejidad que, de forma innata, posee el software. Tradicionalmente, la forma de enfrentarse a esta complejidad ha sido empleando lo que llamamos programación estructurada, que consiste en descomponer el problema objeto de resolución en subproblemas y más subproblemas hasta llegar a acciones muy simples y fáciles de codificar.

La programación orientada a objetos es una nueva forma de pensar, una manera distinta de enfocar los problemas. Ahí radica la dificultad de aprender un lenguaje totalmente orientado a objetos, como es Java, sin conocer previamente los pilares de la programación orientada a objetos. 





Java más que un lenguaje orientado a objetos...

 Java es un lenguaje de objetos el cual incorpora el uso de la orientación a objetos como uno de los pilares básicos y fundamentales del lenguaje.

Esto constituye una importante diferencia con respecto a C++. C++ está pensado para su utilización como lenguaje orientado a objetos, pero también es cierto que con C++ se puede escribir código sin haber oído nada de la programación orientada a objetos.

  • ¿Que es un Objeto?
      Un objeto no es más que un conjunto de variables (o datos) y métodos (o funciones) relacionados entre sí. Los objetos en programación se usan para modelar objetos o entidades del mundo real (el objeto hijo, madre, o farmacéutica, por ejemplo). 


     Los atributos del objeto (estado) y lo que el objeto puede hacer (comportamiento) están expresados por las variables y los métodos que componen el objeto respectivamente. Por ejemplo, un objeto que modelase una bicicleta en el mundo real tendría variables que indicararían el estado actual de la bicicleta: su velocidad es de 20 km/h, su cadencia de pedaleo 90 r.p.m. y su marcha actual es la 5ª. Estas variables se conocen formalmente como variables instancia o variables miembro porque contienen el estado de un objeto bicicleta particular y, en programación orientada a objetos, un objeto particular se denomina una instancia.

Ejemplo:

class Objeto(): 
color = "verde" 
tamanio = "grande" 
aspecto = "feo" 
antenas = Antena() 
ojos = Ojo() 
pelos = Pelo() 
def flotar(self): 
print 12 
et = Objeto() 
print et.color 
print et.tamanio 
print et.aspecto 
et.color = "rosa" 
print et.color


¿Que es Encapsulamiento?



 Se denomina encapsulamiento al hecho de empaquetar o proteger las variables miembro con los métodos miembro. De cualquier forma, el hecho de encapsular las variables y las funciones miembro relacionadas proporciona dos importantes beneficios a los programadores de aplicaciones:
  1. Capacidad de crear módulos: El código fuente de un objeto puede escribirse y mantenerse independiente del código fuente del resto de los objetos. 
  2. De esta forma, un objeto puede pasarse fácilmente de una parte a otra del programa. Podemos dejar nuestra bicicleta a un amigo, y ésta seguirá funcionando.  
  3. Protección de información: Un objeto tendrá una interfaz pública perfectamente definida que otros objetos podrán usar para comunicarse con él. De esta forma, los objetos pueden mantener información privada y pueden cambiar el modo de operar de sus funciones miembros sin que esto afecte a otros objetos que usen estas funciones miembro.
  • ¿Que es una Clase?
         Una clase es una plantilla que define las variables y los métodos que son comunes para todos los objetos de un cierto tipo.  
      Normalmente en el mundo real existen varios objetos de un mismo tipo, o como diremos enseguida, de una misma clase. Por ejemplo, mi bicicleta es una de las muchas bicicletas que existen en el mundo. Usando la terminología de la programación orientada a objetos, diremos que mi bicicleta es una instancia de la clase de objetos conocida como bicicletas. 
        Todas las bicicletas tienen algunos estados o atributos (color, marcha actual, cadencia actual, dos ruedas) y algunos métodos (cambiar de marcha, frenar) en común. Sin embargo, el estado particular de cada bicicleta es independiente del estado de las demás bicicletas. La particularización de estos atributos puede ser diferente. Es decir, una bicicleta podrá ser azul, y otra roja, pero ambas tienen en común el hecho de tener una variable “color”. De este modo podemos definir una plantilla de variables y métodos para todas las bicicletas. 

                                   
Ejemplo:

class Objeto:
pass

class Antena:
pass

class Pelo:
pass

class Ojo: 
pass

  • ¿Que es la Herencia?

Una vez que hemos visto el concepto de clase y el de objeto, estamos en condiciones de introducir otra de las características básicas de la programación orientada a objetos.

El mecanismo de herencia permite definir nuevas clases partiendo de otras ya existentes. Las clases que derivan de otras heredan automáticamente todo su comportamiento, pero además pueden introducir características particulares.      


  • Lenguajes de POO.
  • C++
  • Objective C
  • Java
  • Smalltalk
  • Eiffel
  • Lexico 
  • Rubyy
  • Python
  • SDK
  • OCAML
  • Object Pascal
  • CLIPS
  • Visual.net
  • Actionscript
  • COBOL
  • Pauscal 
  • Perl
  • C#
  • Visual Basic.NET
  • PHP
  • Simula
  • Delphi
  • PowerBuilder
  • Maya
  • Corel Draw

No hay comentarios:

Publicar un comentario