You are on page 1of 3

Estructuras de datos - Introducción

Conceptos de Orientación a Objetos

La Programación Orientada a Objetos (POO u OOP según siglas en inglés)


es un paradigma de programación que define los programas en términos de
"clases de objetos", objetos que son entidades que combinan estado (es
decir, datos), comportamiento (esto es, procedimientos o métodos) e
identidad (propiedad del objeto que lo diferencia del resto). La
programación orientada a objetos expresa un programa como un conjunto
de estos objetos, que colaboran entre ellos para realizar t areas. Esto difiere
de los lenguajes procedimentales tradicionales, en los que los datos y los
procedimientos están separados y sin relación. Estos métodos están
pensados para hacer los programas y módulos más fáciles de escribir,
mantener y reutilizar.
Otra manera en que esto es expresado a menudo, es que la programación
orientada a objetos anima al programador a pensar en los programas
principalmente en términos de tipos de datos, y en segundo lugar en las
operaciones ("métodos") específicas a esos tipos de datos. Los lengua jes
procedimentales animan al programador a pensar sobre todo en términos
de procedimientos, y en segundo lugar en los datos que esos
procedimientos manejan.
Los programadores que emplean lenguajes procedimentales , escriben
funciones y después les pasan datos. Los programadores que emplean
lenguajes orientados a objetos definen objetos con datos y métodos y
después envían mensajes a los objetos diciendo que realicen esos métodos
en sí mismos.

Abstracción: cada objeto en el sistema sirve como modelo de un agente


abstracto que puede realizar un trabajo, informar y cambiar su estado.
Además puede comunicarse con otros objetos en el sistema sin revelar
cómo se implementan estas características.

Objeto: de una manera muy amplia, un objeto es cualquier cosa, tanto


tangible como intangible, que se puede imaginar. Un programa escrito en
estilo orientado a objetos consistirá en una serie de objetos que
interaccionan entre sí.

Clase: se puede ver como la plantilla para objetos. Para que una
computadora sea capaz de crear un objeto es necesario proporcionar una
definición denominada clase. Una vez que se ha definido una clase, se
pueden crear tantos objetos de la clase como necesite el programa.

Instancia: objeto que se crea a partir de una clase. Un objeto se denomina


instancia de una clase. Una instancia de una clase pertenece a la clase.

Mensajes: es el medio por el cual se le indica a una clase o a un objeto


que realice una tarea. Por ejemplo, para una clase llamada X, se le puede
indicar a la clase que cree una instancia (un objeto X) y después enviarle el
mensaje m a este objeto para que realice una labor en particular.

Métodos: no se puede enviar un mensaje a cualquier clase u objeto. Se


puede enviar un mensaje únicamente a aquellas clases y objetos que
comprenden el mensaje enviado. Para que una clase un objeto procese el

1
Estructuras de datos - Introducción

mensaje que recibe, debe poseer un método que coincida con ese mensaje,
es decir, una secuencia de instrucciones que la clase u objeto siguen para
llevar a cabo la tarea. Un método definido para una clase se denomina
método de clase y un método definido para un objeto se denomina método
de instancia.

Atributos, propiedad, variable : componente de los objetos de una clase


que almacena datos. Al igual que los métodos se puede n dividir en dos: de
instancia y de clase. Los atributos de instancia, representan el estado de la
una instancia particular en un momento determinado. Los atributos de clase
se usan para representar información compartida por todas las instancias o
para representar información colectiva acerca de las instancias. También se
pueden clasificar en los datos que pueden cambiar denominados variable y
los que no pueden cambiar denominados constante.

Herencia: mecanismo de la orientación a objetos usado para dise ñar dos o


mas clases que son distintas, pero comparten muchas características. Se
puede ver también, como el proceso gracias al cual podemos derivar de
una clase partiendo de otra, llamada base. También permite el diseño de
jerarquía de clases.

Clase Base

Clase A Clase B

Se dibujan flechas de cada subclase a su superclase porque una subclase


puede referirse a elementos definidos en la superclase, pero no al revés.
Una subclase heredará todo de su superclase. No se puede decir que se
quiere que una clase herede el 50% de su superclase. Sin embargo, es
posible que una clase redefina componentes heredados. Igualmente, una
subclase puede añadir métodos y valores de datos a aquellos heredados de
su superclase.
La herencia no se limita a un único nivel. Una su bclase puede ser una
superclase de otras clases.

Herencia múltiple: proceso en el que se deriva una clase a partir de varias


clases base

Herencia simple: proceso en el que se deriva una clase a partir de una


sola clase base.

Encapsulamiento: se conoce también como ocultamiento de la


información. El usuario (programador) no tiene acceso directo a las partes
del objeto o a su implementación; solamente se puede acceder a ellas de
forma indirecta a través de métodos proporcionados junto con el objeto
Polimorfismo: en forma literal significa muchas formas. En el contexto del
diseño orientado a objetos indica la capacidad que tiene una variable objeto
para tomar distintas formas .

2
Estructuras de datos - Introducción

Sobrecarga: es lo que se conoce en algunos lenguajes orientados a


objetos como polimorfismo “desaguado”. La sobrecarga se representa
cuando una sola clase T tiene varios métodos con el mismo nombre,
siempre que cada uno tenga una firma distinta. La firma de un método es la
combinación de su nombre, la clase y la cantidad de argumentos q ue pasan
a ella.

Diferencias con la programación proced imental


La programación procedimental conduce a las mejoras de la técnica, como
la programación estructurada y "refinamientos sucesivos" (1), los métodos
modernos de diseño de software orientado a obj etos incluyen refinamientos
entre los que están el uso de los patrones de diseño, diseño por contrato, y
lenguajes de modelado (ej: UML).
La programación procedimental clásica presenta ciertos problemas, que han
ido haciéndose cada vez más graves, a medida que se construían
aplicaciones y sistemas informáticos más complejos, entre los que destacan
los siguientes:
 Modelo mental anómalo. Nuestra imagen del mundo se apoya en los
seres, a los que asignamos nombres sustantivos, mientras la
programación clásica s e basa en el comportamiento, representado
usualmente por verbos.
 Es difícil modificar y extender los programas, pues suele haber datos
compartidos por varios subprogramas, que introducen interacciones
ocultas entre ellos.
 Es difícil mantener los programas. Casi todos los sistemas
informáticos grandes tienen errores ocultos, que no surgen a la luz
hasta después de muchas horas de funcionamiento.
 Es difícil reutilizar los programas. Es prácticamente imposible
aprovechar en una aplicación nueva las subrutinas que se diseñaron
para otra.
 Es compleja la coordinación y organización entre programadores para
la creación de aplicaciones de media y gran envergadura.
 En la programación orientada a objetos pura no deben utilizarse
llamadas de subrutinas, únicamente mens ajes.
Por ello, a veces recibe el nombre de programación sin CALL, igual que la
programación estructurada se llama también programación sin GOTO.
Sin embargo, no todos los lenguajes orientados a objetos prohíben la
instrucción CALL (o su equivalente), perm itiendo realizar programación
híbrida, procedimental y orientada a objetos a la vez.
Algunos lenguajes orientados a objetos
 Smalltalk
 Objective-C
 C++
 Ada 95
 Java
 OCaml
 Python
 C#
 Eiffel
 Visual Basic .NET

You might also like