You are on page 1of 6

Programacin orientada a objetos

La programacin orientada a objetos o POO (OOP


segn sus siglas en ingls) es un paradigma de programacin que usa los objetos en sus interacciones,
para disear aplicaciones y programas informticos.
Est basado en varias tcnicas, incluyendo herencia,
cohesin, abstraccin, polimorsmo, acoplamiento y
encapsulamiento. Su uso se populariz a principios de la
dcada de los aos 1990. En la actualidad, existe una gran
variedad de lenguajes de programacin que soportan la
orientacin a objeto.

programacin estructurada camuada en un lenguaje


de programacin orientado a objetos.

La POO 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 progra1 Introduccin
macin orientada a objetos, en cambio, primero denen
objetos para luego enviarles mensajes solicitndoles que
Los objetos son entidades que tienen un determinado es- realicen sus mtodos por s mismos.
tado, comportamiento (mtodo) e identidad:
El estado est compuesto de datos o informaciones;
sern uno o varios atributos a los que se habrn asignado unos valores concretos (datos).

2 Origen

Los conceptos de la programacin orientada a objetos tie El comportamiento est denido por los mtodos o nen origen en Simula 67, un lenguaje diseado para hacer
mensajes a los que sabe responder dicho objeto, es simulaciones, creado por Ole-Johan Dahl y Kristen Nydecir, qu operaciones se pueden realizar con l.
gaard, del Centro de Cmputo Noruego en Oslo. En este
La identidad es una propiedad de un objeto que lo centro se trabajaba en simulaciones de naves, que fuediferencia del resto; dicho con otras palabras, es su ron confundidas por la explosin combinatoria de cmo
identicador (concepto anlogo al de identicador las diversas cualidades de diferentes naves podan afectar unas a las otras. La idea surgi al agrupar los diverde una variable o una constante).
sos tipos de naves en diversas clases de objetos, siendo
Un objeto contiene toda la informacin que permite de- responsable cada clase de objetos de denir sus propios
datos y comportamientos. Fueron renados ms tarde en
nirlo e identicarlo frente a otros objetos pertenecientes a
otras clases e incluso frente a objetos de una misma clase, Smalltalk, desarrollado en Simula en Xerox PARC (cuya primera versin fue escrita sobre Basic) pero diseado
al poder tener valores bien diferenciados en sus atributos.
A su vez, los objetos disponen de mecanismos de inter- para ser un sistema completamente dinmico en el cual
los objetos se podran crear y modicar sobre la marcha
accin llamados mtodos, que favorecen la comunicacin
entre ellos. Esta comunicacin favorece a su vez el cam- (en tiempo de ejecucin) en lugar de tener un sistema babio de estado en los propios objetos. Esta caracterstica sado en programas estticos.
lleva a tratarlos como unidades indivisibles, en las que no La programacin orientada a objetos se fue convirtiendo
se separa el estado y el comportamiento.
en el estilo de programacin dominante a mediados de los
Los mtodos (comportamiento) y atributos (estado) aos ochenta, en gran parte debido a la inuencia de C++,
estn estrechamente relacionados por la propiedad de una extensin del lenguaje de programacin C. Su domiconjunto. Esta propiedad destaca que una clase requie- nacin fue consolidada gracias al auge de las Interfaces
re de mtodos para poder tratar los atributos con los que grcas de usuario, para las cuales la programacin oriencuenta. El programador debe pensar indistintamente en tada a objetos est particularmente bien adaptada. En esambos conceptos, sin separar ni darle mayor importan- te caso, se habla tambin de programacin dirigida por
cia a alguno de ellos. Hacerlo podra producir el hbito eventos.
errneo de crear clases contenedoras de informacin por Las caractersticas de orientacin a objetos fueron agreun lado y clases con mtodos que manejen a las prime- gadas a muchos lenguajes existentes durante ese tiempo,
ras por el otro. De esta manera se estara realizando una incluyendo Ada, BASIC, Lisp ms Pascal, entre otros. La
1

adicin de estas caractersticas a los lenguajes que no fueron diseados inicialmente para ellas condujo a menudo
a problemas de compatibilidad y en la capacidad de mantenimiento del cdigo. Los lenguajes orientados a objetos
puros, por su parte, carecan de las caractersticas de las
cuales muchos programadores haban venido a depender.
Para saltar este obstculo, se hicieron muchas tentativas
para crear nuevos lenguajes basados en mtodos orientados a objetos, pero permitiendo algunas caractersticas
imperativas de maneras seguras. El Eiel de Bertrand
Meyer fue un temprano y moderadamente acertado lenguaje con esos objetivos, pero ahora ha sido esencialmente reemplazado por Java, en gran parte debido a la aparicin de Internet y a la implementacin de la mquina
virtual de Java en la mayora de navegadores. PHP en su
versin 5 se ha modicado; soporta una orientacin completa a objetos, cumpliendo todas las caractersticas propias de la orientacin a objetos.

Conceptos fundamentales

CARACTERSTICAS DE LA POO

Un mtodo puede producir un cambio en las propiedades del objeto, o la generacin de un evento con
un nuevo mensaje para otro objeto del sistema.
Evento Es un suceso en el sistema (tal como una interaccin del usuario con la mquina, o un mensaje enviado por un objeto). El sistema maneja el evento
enviando el mensaje adecuado al objeto pertinente.
Tambin se puede denir como evento la reaccin
que puede desencadenar un objeto; es decir, la accin que genera.
Atributos Caractersticas que tiene la clase.
Mensaje Una comunicacin dirigida a un objeto, que le
ordena que ejecute uno de sus mtodos con ciertos
parmetros 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 dene como sus caractersticas predeterminadas,
y cuyo valor puede ser alterado por la ejecucin de
algn mtodo.

La programacin orientada a objetos es una forma de programar que trata de encontrar una solucin a estos proble- Estado interno Es una variable que se declara privada,
mas. Introduce nuevos conceptos, que superan y amplan
que puede ser nicamente accedida y alterada por
conceptos antiguos ya conocidos. Entre ellos destacan los
un mtodo del objeto, y que se utiliza para indicar
siguientes:
distintas situaciones posibles para el objeto (o clase
de objetos). No es visible al programador que maneja una instancia de la clase.
Clase Deniciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciacin
es la lectura de estas deniciones y la creacin de un Componentes de un objeto Atributos, identidad, relaciones y mtodos.
objeto a partir de ella.
Herencia (Por ejemplo, herencia de la clase C a la clase
D) es la facilidad mediante la cual la clase D hereda en ella cada uno de los atributos y operaciones
de C, como si esos atributos y operaciones hubiesen
sido denidos por la misma D. Por lo tanto, puede
usar los mismos mtodos y variables pblicas declaradas en C. Los componentes registrados como
privados (private) tambin se heredan, pero como
no pertenecen a la clase, se mantienen escondidos
al programador y slo pueden ser accedidos a travs
de otros mtodos pblicos. Esto es as para mantener hegemnico el ideal de POO.

Identicacin de un objeto Un objeto se representa


por medio de una tabla o entidad que est compuesta
por sus atributos y funciones correspondientes.
En comparacin con un lenguaje imperativo, una variable no es ms que un contenedor interno del atributo del
objeto o de un estado interno, as como la funcin es
un procedimiento interno del mtodo del objeto.

4 Caractersticas de la POO

Existe un acuerdo acerca de qu caractersticas contemObjeto Instancia de una clase. Entidad provista de pla la orientacin a objetos. Las caractersticas siguienun conjunto de propiedades o atributos (datos) y tes son las ms importantes:
de comportamiento o funcionalidad (mtodos), los
mismos que consecuentemente reaccionan a eventos. Se corresponden con los objetos reales del mun- Abstraccin Denota las caractersticas esenciales de un
objeto, donde se capturan sus comportamientos. Cado que nos rodea, o con objetos internos del sistema
da objeto en el sistema sirve como modelo de un
(del programa). Es una instancia a una clase.
agente abstracto que puede realizar trabajo, inforMtodo Algoritmo asociado a un objeto (o a una clase
mar y cambiar su estado, y comunicarse con otros
de objetos), cuya ejecucin se desencadena tras la
objetos en el sistema sin revelar cmo se implemenrecepcin de un mensaje. Desde el punto de vista
tan estas caractersticas. Los procesos, las funciodel comportamiento, es lo que el objeto puede hacer.
nes o los mtodos pueden tambin ser abstrados, y,

3
cuando lo estn, una variedad de tcnicas son requelacin) de polimorsmo, tales como las plantillas y
ridas para ampliar una abstraccin. El proceso de
la sobrecarga de operadores de C++.
abstraccin permite seleccionar las caractersticas
relevantes dentro de un conjunto e identicar com- Herencia Las clases no se encuentran aisladas, sino que
se relacionan entre s, formando una jerarqua de
portamientos comunes para denir nuevos tipos de
clasicacin. Los objetos heredan las propiedades
entidades en el mundo real. La abstraccin es clave
y el comportamiento de todas las clases a las que
en el proceso de anlisis y diseo orientado a objepertenecen. La herencia organiza y facilita el politos, ya que mediante ella podemos llegar a armar un
morsmo y el encapsulamiento, permitiendo a los
conjunto de clases que permitan modelar la realidad
objetos ser denidos y creados como tipos especiao el problema que se quiere atacar.
lizados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que
Encapsulamiento Signica reunir todos los elementos
volver a implementarlo. Esto suele hacerse habitualque pueden considerarse pertenecientes a una mismente agrupando los objetos en clases y estas en rma entidad, al mismo nivel de abstraccin. Esto perboles o enrejados que reejan un comportamiento
mite aumentar la cohesin de los componentes del
comn. Cuando un objeto hereda de ms de una clasistema. Algunos autores confunden este concepto
se se dice que hay herencia mltiple; siendo de alta
con el principio de ocultacin, principalmente porcomplejidad tcnica por lo cual suele recurrirse a la
que se suelen emplear conjuntamente.
herencia virtual para evitar la duplicacin de datos.
Modularidad Se denomina modularidad a la propiedad
que permite subdividir una aplicacin en partes ms Recoleccin de basura La recoleccin de basura o garbage collection es la tcnica por la cual el entorno de
pequeas (llamadas mdulos), cada una de las cuaobjetos se encarga de destruir automticamente, y
les debe ser tan independiente como sea posible de
por tanto desvincular la memoria asociada, los objela aplicacin en s y de las restantes partes. Estos mtos que hayan quedado sin ninguna referencia a ellos.
dulos se pueden compilar por separado, pero tienen
Esto signica que el programador no debe preocuconexiones con otros mdulos. Al igual que la enparse por la asignacin o liberacin de memoria, ya
capsulacin, los lenguajes soportan la modularidad
que el entorno la asignar al crear un nuevo objeto y
de diversas formas.
la liberar cuando nadie lo est usando. En la mayora de los lenguajes hbridos que se extendieron para
Principio de ocultacin Cada objeto est aislado del
soportar el Paradigma de Programacin Orientada
exterior, es un mdulo natural, y cada tipo de oba Objetos como C++ u Object Pascal, esta caracjeto expone una interfaz a otros objetos que especiterstica no existe y la memoria debe desasignarse
ca cmo pueden interactuar con los objetos de la
expresamente.
clase. El aislamiento protege a las propiedades de un
objeto contra su modicacin por quien no tenga derecho a acceder a ellas; solamente los propios mtodos internos del objeto pueden acceder a su estado. 5 Resumen
Esto asegura que otros objetos no puedan cambiar
el estado interno de un objeto de manera inespera- La programacin orientada a objetos es un paradigma
da, eliminando efectos secundarios e interacciones surgido en los aos 70, que utiliza objetos como elemeninesperadas. Algunos lenguajes relajan esto, permi- tos fundamentales en la construccin de la solucin. Un
tiendo un acceso directo a los datos internos del ob- objeto es una abstraccin de algn hecho o ente del munjeto de una manera controlada y limitando el grado do real, con atributos que representan sus caractersticas
de abstraccin. La aplicacin entera se reduce a un o propiedades, y mtodos que emulan su comportamiento
agregado o rompecabezas de objetos.
o actividad. Todas las propiedades y mtodos comunes a
Polimorsmo Comportamientos diferentes, asociados a
objetos distintos, pueden compartir el mismo nombre; al llamarlos por ese nombre se utilizar el comportamiento correspondiente al objeto que se est
usando. O, dicho de otro modo, las referencias y
las colecciones de objetos pueden contener objetos
de diferentes tipos, y la invocacin de un comportamiento en una referencia producir el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en tiempo de ejecucin,
esta ltima caracterstica se llama asignacin tarda
o asignacin dinmica. Algunos lenguajes proporcionan medios ms estticos (en tiempo de compi-

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 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[6]

Entre los lenguajes orientados a objetos se destacan los


siguientes:

Vala

Magik (SmallWorld)

VB.NET

ABAP -> SAP Lenguaje orientado a eventos

Visual FoxPro[7]

ABL Lenguaje de programacin de OpenEdge de


Progress Software

Visual Basic 6.0

ActionScript
ActionScript 3
Ada
C++

NOTAS Y REFERENCIAS

Visual DataFlex
Visual Objects
XBase++
Lenguaje DRP
Scala[8]

C#
Clarion
Clipper[1]
D
Object Pascal (Embarcadero Delphi)
Gambas
GObject
Genie
Harbour
Eiel
Fortran 90/95

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.

7 Vase tambin

Java

Ingeniera de software basada en componentes

JavaScript[2]

Base de datos orientada a objetos

Lexico[3]
Objective-C
Ocaml
Oz
R
Pauscal [En espaol]

8 Notas y referencias
[1] Versin 5.x con librera de objetos Class(y)
[2] la herencia se realiza por medio de la programacin basada
en prototipos.
[3] en castellano

PHP[5]

[4] soporta herencia mltiple. La resolucin se realiza en preorden, pero puede modicarse al algoritmo
linearization C3 por medio del mdulo Class::C3 en
CPAN)

PowerBuilder

[5] a partir de su versin 5

Python

[6] Entorno de objetos puro

Ruby

[7] en su versin 6

Self

[8] lenguaje usado por Twitter

Perl[4]

Enlaces externos
Qu es la programacin orientada a objetos

10

10
10.1

TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES

Text and image sources, contributors, and licenses


Text

Programacin orientada a objetos Fuente: http://es.wikipedia.org/wiki/Programaci%C3%B3n%20orientada%20a%20objetos?oldid=


80875470 Colaboradores: AstroNomo, Andre Engels, Moriel, Sauron, Pieter, Hashar, ManuelGR, Robbot, Raul2010, Angus, Caravena,
Vivero, Comae, Rosarino, Dodo, Crescent Moon, Ascnder, Sms, Elwikipedista, Tano4595, Barcex, 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, 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-BlackWikipedista, 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, EmausBot, Sergio Andres Segovia, Africanus, Superbenja, J053d, Minirobots,
Wrdhat, Emiduronte, MadriCR, Waka Waka, Penavarro09, Tokvo, MerlIwBot, Raymonddoyle, MetroBot, Bibliolotranstornado, DLeandroc, Helmy oved, Syum90, Josefergui, Lamauro, Jean70000, Addbot, Balles2601, Jmas131, Machado Ortiz, DarkBlueZV, Jlopezsilva,
Matiia, DavidBorjaM y Annimos: 605

10.2

Images

Archivo:Commons-emblem-question_book_orange.svg
Fuente:
http://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='//upload.wikimedia.org/
wikipedia/commons/thumb/b/bc/Commons-emblem-issue.svg/25px-Commons-emblem-issue.svg.png'
width='25'
height='25'
srcset='//upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Commons-emblem-issue.svg/38px-Commons-emblem-issue.svg.png
1.5x, //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='//upload.wikimedia.org/wikipedia/commons/thumb/9/97/Question_book.svg/25px-Question_book.svg.png'
width='25' height='20' srcset='//upload.wikimedia.org/wikipedia/commons/thumb/9/97/Question_book.svg/38px-Question_book.svg.
png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/9/97/Question_book.svg/50px-Question_book.svg.png 2x' data-lewidth='252' data-le-height='199' /></a> Artista original: GNOME icon artists, Jorge 2701

10.3

Content license

Creative Commons Attribution-Share Alike 3.0

You might also like