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:
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?
- 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.
- 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.
- 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