Está en la página 1de 6

Programacin orientada a objetos

La programacin orientada a objetos (POO, u OOP


segn sus siglas en ingls) es un paradigma de programacin que viene a innovar la forma de obtener resultados.
Los objetos manipulan los datos de entrada para la obtencin de datos de salida especcos, donde cada objeto
ofrece una funcionalidad especial.

"programacin estructurada camuada en un lenguaje


de POO.
La programacin orientada a objetos diere de la
programacin estructurada tradicional, en la que los datos y los procedimientos estn separados y sin relacin,
ya que lo nico que se busca es el procesamiento de unos
datos de entrada para obtener otros de salida. La programacin estructurada anima al programador a pensar sobre todo en trminos de procedimientos o funciones, y en
segundo lugar en las estructuras de datos que esos procedimientos manejan. En la programacin estructurada solo se escriben funciones que procesan datos. Los programadores que emplean POO, en cambio, primero denen
objetos para luego enviarles mensajes solicitndoles que
realicen sus mtodos por s mismos.

Muchos de los objetos pre-diseados de los lenguajes de


programacin actuales permiten la agrupacin en bibliotecas o libreras, sin embargo, muchos de estos lenguajes
permiten al usuario la creacin de sus propias bibliotecas.
Est basada en varias tcnicas, incluyendo herencia,
cohesin, abstraccin, polimorsmo, acoplamiento y
encapsulamiento.
Su uso se populariz a principios de la dcada de 1990.
En la actualidad, existe una gran variedad de lenguajes de
programacin que soportan la orientacin a objetos.

2 Origen

Introduccin

Los conceptos de la POO tienen origen en Simula 67,


Los objetos son entidades que tienen un determinado es- un lenguaje diseado para hacer simulaciones, creado
por Ole-Johan Dahl y Kristen Nygaard, del Centro de
tado, comportamiento (mtodo)" e identidad":
Cmputo Noruego en Oslo. En este centro se trabajaba
La identidad es una propiedad de un objeto que lo en simulaciones de naves, que fueron confundidas por la
diferencia del resto; dicho con otras palabras, es su explosin combinatoria de cmo las diversas cualidades
identicador (concepto anlogo al de identicador de diferentes naves podan afectar unas a las otras. La idea
surgi al agrupar los diversos tipos de naves en diversas
de una variable o una constante).
clases de objetos, siendo responsable cada clase de obUn objeto contiene toda la informacin que permite de- jetos de denir sus propios datos y comportamientos.
Fueron renados ms tarde en Smalltalk, desarrollado en
nirlo e identicarlo frente a otros objetos pertenecientes a
otras clases e incluso frente a objetos de una misma clase, Simula en Xerox PARC (cuya primera versin fue escrita
sobre Basic) pero diseado para ser un sistema completaal poder tener valores bien diferenciados en sus atributos.
mente
dinmico en el cual los objetos se podran crear y
A su vez, los objetos disponen de mecanismos de intermodicar sobre la marcha (en tiempo de ejecucin) en
accin llamados mtodos, que favorecen la comunicacin
entre ellos. Esta comunicacin favorece a su vez el cam- lugar de tener un sistema basado en programas estticos.
bio de estado en los propios objetos. Esta caracterstica La POO se fue convirtiendo en el estilo de programacin
lleva a tratarlos como unidades indivisibles, en las que no dominante a mediados de los aos 1980, en gran parte
debido a la inuencia de C++, una extensin del lenguaje
se separa el estado y el comportamiento.
Los mtodos (comportamiento) y atributos (estado) es- de programacin C. Su dominacin fue consolidada gratn estrechamente relacionados por la propiedad de con- cias al auge de las interfaces grcas de usuario, para las
junto. Esta propiedad destaca que una clase requiere de cuales la POO est particularmente bien adaptada. En esmtodos para poder tratar los atributos con los que cuen- te caso, se habla tambin de programacin dirigida por
ta. El programador debe pensar indistintamente en am- eventos.
Las caractersticas de orientacin a objetos fueron agregadas a muchos lenguajes existentes durante ese tiempo,
incluyendo Ada, BASIC, Lisp ms Pascal, entre otros. La
adicin de estas caractersticas a los lenguajes que no fueron diseados inicialmente para ellas condujo a menudo a

bos conceptos, sin separar ni darle mayor importancia a


alguno de ellos. Hacerlo podra producir el hbito errneo de crear clases contenedoras de informacin por un
lado y clases con mtodos que manejen a las primeras
por el otro. De esta manera se estara realizando una
1

CARACTERSTICAS DE LA POO

problemas de compatibilidad y en la capacidad de mantedel comportamiento, es lo que el objeto puede hacer.


nimiento del cdigo. Los lenguajes orientados a objetos
Un mtodo puede producir un cambio en las propiepuros, por su parte, carecan de las caractersticas de
dades del objeto, o la generacin de un evento con
las cuales muchos programadores haban venido a depenun nuevo mensaje para otro objeto del sistema.
der. Para saltar este obstculo, se hicieron muchas tentativas para crear nuevos lenguajes basados en mtodos Evento Es un suceso en el sistema (tal como una interaccin del usuario con la mquina, o un mensaje enorientados a objetos, pero permitiendo algunas caracteviado por un objeto). El sistema maneja el evento
rsticas imperativas de maneras seguras. El lenguaje de
enviando el mensaje adecuado al objeto pertinente.
programacin Eiel de Bertrand Meyer fue un temprano
Tambin se puede denir como evento la reaccin
y moderadamente acertado lenguaje con esos objetivos,
que puede desencadenar un objeto; es decir, la acpero ahora ha sido esencialmente reemplazado por Java,
cin que genera.
en gran parte debido a la aparicin de Internet y a la implementacin de la mquina virtual Java en la mayora de Atributos Caractersticas que tiene la clase.
navegadores web. PHP en su versin 5 se ha modicado;
soporta una orientacin completa a objetos, cumpliendo Mensaje Una comunicacin dirigida a un objeto, que le
ordena que ejecute uno de sus mtodos con ciertos
todas las caractersticas propias de la orientacin a objeparmetros asociados al evento que lo gener.
tos.
Propiedad o atributo Contenedor de un tipo de datos
asociados a un objeto (o a una clase de objetos), que
3 Conceptos fundamentales
hace los datos visibles desde fuera del objeto y esto
se dene como sus caractersticas predeterminadas,
La POO es una forma de programar que trata de eny cuyo valor puede ser alterado por la ejecucin de
contrar una solucin a estos problemas. Introduce nuevos
algn mtodo.
conceptos, que superan y amplan conceptos antiguos ya
Estado interno Es una variable que se declara privada,
conocidos. Entre ellos destacan los siguientes:
que puede ser nicamente accedida y alterada por
un mtodo del objeto, y que se utiliza para indicar
Clase Deniciones de las propiedades y comportamiendistintas situaciones posibles para el objeto (o clase
to de un tipo de objeto concreto. La instanciacin
de objetos). No es visible al programador que maes la lectura de estas deniciones y la creacin de un
neja una instancia de la clase.
objeto a partir de ella.
Componentes de un objeto Atributos, identidad, relaciones y mtodos.
Herencia Por ejemplo, herencia de la clase C a la clase
D, es la facilidad mediante la cual la clase D hereIdenticacin de un objeto Un objeto se representa
da en ella cada uno de los atributos y operaciones
por medio de una tabla o entidad que est compuesta
de C, como si esos atributos y operaciones hubiesen
por sus atributos y funciones correspondientes.
sido denidos por la misma D. Por lo tanto, puede
usar los mismos mtodos y variables pblicas declaradas en C. Los componentes registrados como En comparacin con un lenguaje imperativo, una variaprivados (private) tambin se heredan, pero como ble no es ms que un contenedor interno del atributo del
no pertenecen a la clase, se mantienen escondidos objeto o de un estado interno, as como la funcin es
al programador y slo pueden ser accedidos a travs un procedimiento interno del mtodo del objeto.
de otros mtodos pblicos. En el caso de los componentes registrados como protegidos (protected)
tambin se heredan, pero solo para esa clase, no para 4 Caractersticas de la POO
futuras clases heredadas. Esto es as para mantener
hegemnico el ideal de POO.
Existe un acuerdo acerca de qu caractersticas contempla la orientacin a objetos. Las caractersticas siguienObjeto Instancia de una clase. Entidad provista de
tes son las ms importantes:[1]
un conjunto de propiedades o atributos (datos) y
de comportamiento o funcionalidad (mtodos), los
mismos que consecuentemente reaccionan a even- Abstraccin Denota las caractersticas esenciales de un
objeto, donde se capturan sus comportamientos. Catos. Se corresponden con los objetos reales del munda objeto en el sistema sirve como modelo de un
do que nos rodea, o con objetos internos del sistema
agente abstracto que puede realizar trabajo, infor(del programa).
mar y cambiar su estado, y comunicarse con otros
Mtodo Algoritmo asociado a un objeto (o a una clase
objetos en el sistema sin revelar cmo se implede objetos), cuya ejecucin se desencadena tras la
mentan estas caractersticas. Los procesos, las funrecepcin de un mensaje. Desde el punto de vista
ciones o los mtodos pueden tambin ser abstrados,

3
y, cuando lo estn, una variedad de tcnicas son rela encapsulacin, los lenguajes soportan la modulaqueridas para ampliar una abstraccin. El proceso
ridad de diversas formas.
de abstraccin permite seleccionar las caracterstiPrincipio de ocultacin Cada objeto est aislado del
cas relevantes dentro de un conjunto e identicar
exterior, es un mdulo natural, y cada tipo de objeto
comportamientos comunes para denir nuevos tiexpone una interfaz a otros objetos que especica
pos de entidades en el mundo real. La abstraccin
cmo pueden interactuar con los objetos de la clase.
es clave en el proceso de anlisis y diseo orientado
El aislamiento protege a las propiedades de un oba objetos, ya que mediante ella podemos llegar a arjeto contra su modicacin por quien no tenga demar un conjunto de clases que permitan modelar la
recho a acceder a ellas; solamente los propios mtorealidad o el problema que se quiere atacar.
dos internos del objeto pueden acceder a su estado.
Esto asegura que otros objetos no puedan cambiar
Encapsulamiento Signica reunir todos los elementos
el estado interno de un objeto de manera inesperaque pueden considerarse pertenecientes a una misda, eliminando efectos secundarios e interacciones
ma entidad, al mismo nivel de abstraccin. Esto perinesperadas. Algunos lenguajes relajan esto, permimite aumentar la cohesin (diseo estructurado) de
tiendo un acceso directo a los datos internos del oblos componentes del sistema. Algunos autores conjeto de una manera controlada y limitando el grado
funden este concepto con el principio de ocultacin,
de abstraccin. La aplicacin entera se reduce a un
principalmente porque se suelen emplear conjuntaagregado o rompecabezas de objetos.
mente.
Polimorsmo Comportamientos diferentes, asociados a Recoleccin de basura La recoleccin de basura (garbage collection) es la tcnica por la cual el entorno
objetos distintos, pueden compartir el mismo nomde objetos se encarga de destruir automticamenbre; al llamarlos por ese nombre se utilizar el comte, y por tanto desvincular la memoria asociada, los
portamiento correspondiente al objeto que se est
objetos que hayan quedado sin ninguna referencia
usando. O, dicho de otro modo, las referencias y
a ellos. Esto signica que el programador no debe
las colecciones de objetos pueden contener objetos
preocuparse por la asignacin o liberacin de mede diferentes tipos, y la invocacin de un compormoria, ya que el entorno la asignar al crear un nuetamiento en una referencia producir el comportavo objeto y la liberar cuando nadie lo est usando.
miento correcto para el tipo real del objeto refeEn la mayora de los lenguajes hbridos que se exrenciado. Cuando esto ocurre en tiempo de ejecutendieron para soportar el Paradigma de Programacin, esta ltima caracterstica se llama asignacin
cin Orientada a Objetos como C++ u Object Pastarda o asignacin dinmica. Algunos lenguajes
cal, esta caracterstica no existe y la memoria debe
proporcionan medios ms estticos (en tiempo de
desasignarse expresamente.
compilacin) de polimorsmo, tales como las plantillas y la sobrecarga de operadores de C++.
Herencia Las clases no se encuentran aisladas, sino que
se relacionan entre s, formando una jerarqua de
clasicacin. Los objetos heredan las propiedades
y el comportamiento de todas las clases a las que
pertenecen. La herencia organiza y facilita el polimorsmo y el encapsulamiento, permitiendo a los
objetos ser denidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que
volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en rboles o enrejados que reejan un comportamiento
comn. Cuando un objeto hereda de ms de una clase se dice que hay herencia mltiple; siendo de alta
complejidad tcnica por lo cual suele recurrirse a la
herencia virtual para evitar la duplicacin de datos.
Modularidad Se denomina modularidad a la propiedad que permite subdividir una aplicacin en partes
ms pequeas (llamadas mdulos), cada una de las
cuales debe ser tan independiente como sea posible
de la aplicacin en s y de las restantes partes. Estos mdulos se pueden compilar por separado, pero
tienen conexiones con otros mdulos. Al igual que

5 Resumen
La POO es un paradigma surgido en los aos 1970, que
utiliza objetos como elementos fundamentales en la construccin de la solucin. Un objeto es una abstraccin de
algn hecho o ente del mundo real, con atributos que representan sus caractersticas o propiedades, y mtodos
que emulan su comportamiento o actividad. Todas las
propiedades y mtodos 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.

6 Algunos lenguajes orientados a


objetos
Simula (1967) es aceptado como el primer lenguaje que
posee las caractersticas principales de un lenguaje orientado a objetos. Fue creado para hacer programas de simulacin, en donde los objetos son la representacin de la
informacin ms importante.

Smalltalk (1972 a 1980) es posiblemente el ejemplo cannico, y con el que gran parte de la teora de la programacin orientada a objetos se ha desarrollado.

Smalltalk[10]

Entre los lenguajes orientados a objetos se destacan los


siguientes:

Vala

ABAP

[2]

ABL[3]
ActionScript
ActionScript 3
Ada
C++
C
C Sharp (C#)
Clarion
Clipper[4]
D
Object Pascal (Embarcadero Delphi)
Gambas
GObject
Genie
Harbour

NOTAS Y REFERENCIAS

Magik (SmallWorld)

VB.NET
Visual FoxPro[11]
Visual Basic 6.0
Visual DataFlex
Visual Objects
XBase++
DRP
Scala[12][13]
Muchos de estos lenguajes de programacin no son puramente orientados a objetos, sino que son hbridos que
combinan la POO con otros paradigmas.
Al igual que C++, otros lenguajes, como OOCOBOL,
OOLisp, OOProlog y Object REXX, han sido creados
aadiendo extensiones orientadas a objetos a un lenguaje
de programacin clsico.
Un nuevo paso en la abstraccin de paradigmas de programacin es la Programacin Orientada a Aspectos
(POA). Aunque es todava una metodologa en estado de
maduracin, cada vez atrae a ms investigadores e incluso
proyectos comerciales en todo el mundo.

Eiel
Fortran 90/95

7 Vase tambin

Java
JavaScript[5]
Lexico[6]

Base de datos orientada a objetos


Ingeniera de software basada en componentes

Objective-C
Ocaml
Oz
R
Pauscal (en espaol)
Perl[7][8]
PHP[9]
PowerBuilder
Python

8 Notas y referencias
[1] Coad, P; Yourdon, E. (1991). Prentice-Hall International editions, ed. Object-oriented Design. ISBN
9780136300700.
[2] SAP Business Suite (de la empresa SAP AG), lenguaje
orientado a eventos.
[3] Lenguaje de programacin de OpenEdge de Progress
Software.
[4] Versin 5.x con librera de objetos Class(y).

Ruby

[5] La herencia se realiza por medio de la programacin basada en prototipos.

Self

[6] En espaol.

[7] Soporta herencia mltiple. La resolucin se realiza en


estructura de rbol (preorden), pero puede modicarse al algoritmo linearization C3 por medio del mdulo
Class::C3 en CPAN).
[8] Class::C3.
[9] PHP: a partir de su versin 5.
[10] Entorno de objetos puro.
[11] Visual FoxPro: en su versin 6.
[12] Lenguaje de programacin usado por Twitter.
[13] http://www.scala-lang.org/page.jsp

Enlaces externos
Qu es la programacin orientada a objetos.

10 ORIGEN DEL TEXTO Y LAS IMGENES, COLABORADORES Y LICENCIAS

10
10.1

Origen del texto y las imgenes, colaboradores y licencias


Texto

Programacin orientada a objetos Fuente: https://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos?oldid=92412787


Colaboradores: AstroNomo, Andre Engels, Moriel, Sauron, Pieter, Hashar, ManuelGR, Robbot, Raul2010~eswiki, Angus, Caravena,
Vivero, Comae, Rosarino, Dodo, Crescent Moon, Ascnder, Sms, Elwikipedista, Tano4595, Barcex, Galio, JavierCantero, Jecanre,
Ivan.Romero, MatiasBellone, Identy, Niqueco, SergioVares, Soulreaper, Joji, Airunp, Nulain, Alejolp, JMPerez, Taichi, Rembiapo pohyiete
(bot), El Padrino, Dem, Funin, Josuemb, Murven, Byj2000, Alhen, Superzerocool, Yrbot, Vitamine, BOTijo, YurikBot, Icvav, GermanX,
ZeruGiran, KnightRider, The Photographer, Edwardcetera, Jesuja, Txo, Otermin, Lasneyx, Spc, Tomatejc, Aleator, Jstitch, BOTpolicia,
l, Manawo, Chguer, CEM-bot, Jorgelrm, Tute, Laura Fiorucci, Mariano12 1989, X.Cyclop, Anonimato1990, Antur, Montgomery, Alvaro qc, PabloCastellano, Mahadeva, Yeza, JoaquinFerrero, IrwinSantos, Kavanagh, Cratn, Isha, Egaida, Mpeinadopa, JAnDbot, Kved,
Mansoncc, Muro de Aguas, TXiKiBoT, SuperJoe, Anthemfor182, Bot-Schafter, Humberto, Netito777, Xsm34, Sirpuppet, Idioma-bot, Plux, Jmvkrecords, Developer, Biasoli, Cinevoro, VolkovBot, Technopat, Queninosta, Nesita02, Erl, Penguino, Matdrodes, FJJW, Etnas,
Carocbax, DJ Nietzsche, Muro Bot, Edmenb, Otherox, Dj Merlin, Soynatan, SieBot, ESTEBAN ESPINOZA, Carmin, Mel 23, Manw,
Pascow, Pedro Felipe, Aleposta, Tirithel, Jmmuguerza, Locos epraix, Ing moi, Javierito92, Marcecoro, HUB, Nicop, DragonBot, Lentucky, Farisori, Estirabot, Tosin2627, Eduardosalg, Leonpolanco, Pan con queso, Pablo323, Cosmox, Furti, Poco a poco, Tonchizerodos,
Alexbot, Darkicebot, Serser, Prision3ro, BodhisattvaBot, Raulshc, Aipni-Lovrij, SilvonenBot, Camilo, UA31, Abajo estaba el pez, AVBOT, David0811, Angel GN, MarcoAurelio, Carok, Diegusjaimes, DumZiBoT, CarsracBot, HerculeBot, Arjuno3, Juvalen, Andreasmperu, Luckas-bot, Spirit-Black-Wikipedista, Yonidebot, ArthurBot, Milyka, SuperBraulio13, Xqbot, Jkbw, Dreitmen, Leonardo Tadei, Pedrovicenterosero, FrescoBot, Ricardogpn, Metronomo, Botarel, BOTirithel, Hprmedina, Halfdrag, Bitman28, Marsal20, Vubo, Maaksz2, El
mago de la Wiki, PatruBOT, Dinamik-bot, LilyKitty, TjBot, Akira 999, Foundling, Edslov, EmausBot, Sergio Andres Segovia, Africanus,
Superbenja, J053d, Minirobots, Wrdhat, Emiduronte, MadriCR, Waka Waka, Penavarro09, Tokvo, MerlIwBot, Raymonddoyle, MetroBot,
Invadibot, Bibliolotranstornado, DLeandroc, Helmy oved, Syum90, Lautaro 97, Josefergui, Lamauro, Jean70000, Addbot, Balles2601,
Hans Topo1993, Jmas131, Machado Ortiz, DarkBlueZV, Jlopezsilva, Jarould, Matiia, Crystallizedcarbon, AlvaroMolina, DavidBorjaM,
Vivi bos, Fernando2812l, Vmca09, Betoramona, AlmaLopezBlanco, Victorciko2, Krassnine y Annimos: 653

10.2

Imgenes

Archivo:Commons-emblem-question_book_orange.svg
Fuente:
https://upload.wikimedia.org/wikipedia/commons/1/1f/
Commons-emblem-question_book_orange.svg Licencia: CC BY-SA 3.0 Colaboradores: <a href='//commons.wikimedia.org/wiki/File:
Commons-emblem-issue.svg' class='image'><img alt='Commons-emblem-issue.svg' src='https://upload.wikimedia.org/wikipedia/
commons/thumb/b/bc/Commons-emblem-issue.svg/25px-Commons-emblem-issue.svg.png' width='25' height='25' srcset='https:
//upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Commons-emblem-issue.svg/38px-Commons-emblem-issue.svg.png
1.5x,
https://upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Commons-emblem-issue.svg/50px-Commons-emblem-issue.svg.png 2x'
data-le-width='48' data-le-height='48' /></a> + <a href='//commons.wikimedia.org/wiki/File:Question_book.svg' class='image'><img
alt='Question
book.svg'
src='https://upload.wikimedia.org/wikipedia/commons/thumb/9/97/Question_book.svg/25px-Question_
book.svg.png' width='25' height='20' srcset='https://upload.wikimedia.org/wikipedia/commons/thumb/9/97/Question_book.svg/
38px-Question_book.svg.png 1.5x, https://upload.wikimedia.org/wikipedia/commons/thumb/9/97/Question_book.svg/50px-Question_
book.svg.png 2x' data-le-width='252' data-le-height='199' /></a> Artista original: GNOME icon artists, Jorge 2701

10.3

Licencia del contenido

Creative Commons Attribution-Share Alike 3.0