Computing">
Progracion de Objetos
Progracion de Objetos
Progracion de Objetos
Programació n Orientada
a Objetos
Introducció n a los Objetos
Emilio Alejandro Hernandez Herrera
19/05/2019
Maestro
Introducción
Los objetos son entidades que tienen un determinado "estado", "comportamiento (método)"
e "identidad":
La identidad es una propiedad de un objeto que lo diferencia del resto; dicho con otras
palabras, es su identificador (concepto análogo al de identificador de una variable o una
constante).
Un objeto contiene toda la información que permite definirlo e identificarlo frente a otros
objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, al poder
tener valores bien diferenciados en sus atributos. A su vez, los objetos disponen de
mecanismos de interacción llamados métodos, que favorecen la comunicación entre ellos.
Esta comunicación favorece a su vez el cambio de estado en los propios objetos. Esta
característica lleva a tratarlos como unidades indivisibles, en las que no se separa el estado
y el comportamiento.
Clase
Herencia
Objeto
Método
Es un suceso en el sistema (tal como una interacción del usuario con la máquina, o un
mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje
adecuado al objeto pertinente. También se puede definir como evento la reacción que
puede desencadenar un objeto; es decir, la acción que genera.
Atributos
Mensaje
Una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con
ciertos parámetros asociados al evento que lo generó.
Propiedad o atributo
Contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace
los datos visibles desde fuera del objeto y esto se define como sus características
predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún método.
Estado interno
Es una variable que se declara privada, que puede ser únicamente accedida y alterada por
un método del objeto, y que se utiliza para indicar distintas situaciones posibles para el
objeto (o clase de objetos). No es visible al programador que maneja una instancia de la
clase.
Componentes de un objeto
Identificación de un objeto
Un objeto se representa por medio de una tabla o entidad que esté compuesta por sus
atributos y funciones correspondientes.
Abstracción
Encapsulamiento
Significa reunir todos los elementos que pueden considerarse pertenecientes a una misma
entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión (diseño
estructurado) de los componentes del sistema. Algunos autores confunden este concepto
con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.
Polimorfismo
Herencia
Las clases no se encuentran aisladas, sino que se relacionan entre sí, formando una
jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de
todas las clases a las que pertenecen.
Modularidad
Principio de ocultación
Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone
una "interfaz" a otros objetos que especifica cómo pueden interactuar con los objetos de
la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por
quien no tenga derecho a acceder a ellas; solamente los propios métodos internos del
objeto pueden acceder a su estado. Esto asegura que otros objetos no puedan cambiar el
estado interno de un objeto de manera inesperada, eliminando efectos secundarios e
interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo
a los datos internos del objeto de una manera controlada y limitando el grado de
abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos.
Recolección de basura
La POO es un paradigma surgido en los años 1970, que utiliza objetos como elementos
fundamentales en la construcción de la solución. Un objeto es una abstracción de algún
hecho o ente del mundo real, con atributos que representan sus características o
propiedades, y métodos que emulan su comportamiento o actividad. Todas las propiedades
y métodos comunes a los objetos se encapsulan o agrupan en clases. Una clase es una
plantilla, un prototipo para crear objetos; en general, se dice que cada objeto es una
instancia o ejemplar de una clase.
Tipos
Para realizar programación orientada a objetos existen dos corrientes principales:[2][3]
Basada en prototipos.- Es soportado en Javascript, Python y Ruby. No hay clases, solo hay
objetos. El mecanismo para la reutilización está dado por la clonación de objetos. Se crean
directamentos objetos y cuando se quiere generar otro con la misma estructura se usa
clonación. Una vez clonado si queremos podemos agregar los campos y métodos
necesarios. Un objeto prototípico es un objeto que se utiliza como una plantilla a partir de
la cual se obtiene el conjunto inicial de propiedades de un objeto. Cualquier objeto puede
ser utilizado como el prototipo de otro objeto, permitiendo al segundo objeto compartir
las propiedades del primero.
Simula (1967) es aceptado como el primer lenguaje que posee las características principales
de un lenguaje orientado a objetos. Fue creado para hacer programas de simulación, en
donde los "objetos" son la representación de la información más importante.
Smalltalk (1972 a 1980) es posiblemente el ejemplo canónico, y con el que gran parte de la
teoría de la programación orientada a objetos se ha desarrollado.
Entre los lenguajes orientados a objetos se destacan los
siguientes:
ABAP[4]
ABL[5]
ActionScript
ActionScript 3
C Sharp (C#)
Clarion
Clipper[6]
D
Object Pascal (Embarcadero Delphi)
Gambas
GObject
Genie
Harbour
Eiffel
Fortran 90/95
Java
JavaScript[7]
Lexico[8]
Objective-C
Ocaml
Oz
R
Pauscal (en español)
Perl[9][10]
PHP[11]
PowerScript
Processing.[12]
Python
Ruby
Self
Smalltalk[13]
Swift
Magik
Vala
VB.NET
Visual FoxPro[14]
Visual Basic 6.0
Visual DataFlex
Visual Objects
XBase++
DRP
Scala[15][16]
Muchos de estos lenguajes de programación no son puramente orientados a objetos, sino
que son híbridos que combinan la POO con otros paradigmas.
Al igual que C++, otros lenguajes, como OOCOBOL, OOLisp, OOProlog y Object REXX,
han sido creados añadiendo extensiones orientadas a objetos a un lenguaje de programación
clásico.