Вы находитесь на странице: 1из 44

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 especficos,
donde cada objeto ofrece una funcionalidad especial.
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, polimorfismo, 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.
ndice
[ocultar]

1Introduccin

2Origen

3Conceptos fundamentales

4Caractersticas de la POO

5Resumen

6Algunos lenguajes orientados a objetos

7Vase tambin

8Notas y referencias

9Enlaces externos

Introduccin[editar]
Los objetos son entidades que tienen un determinado "estado", "comportamiento
(mtodo)" e "identidad":

La identidad es una propiedad de un objeto que lo diferencia del resto; dicho con
otras palabras, es su identificador (concepto anlogo al de identificador de
una variable o una constante).

Un objeto contiene toda la informacin 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 interaccin llamados mtodos, que favorecen la comunicacin entre ellos.
Esta comunicacin favorece a su vez el cambio de estado en los propios objetos. Esta
caracterstica lleva a tratarlos como unidades indivisibles, en las que no se separa el
estado y el comportamiento.
Los mtodos (comportamiento) y atributos (estado) estn estrechamente relacionados
por la propiedad de conjunto. Esta propiedad destaca que una clase requiere de mtodos
para poder tratar los atributos con los que cuenta. El programador debe pensar

indistintamente en ambos 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 "programacin estructurada camuflada" en un
lenguaje de POO.
La programacin orientada a objetos difiere 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 definen
objetos para luego enviarles mensajes solicitndoles que realicen sus mtodos por s
mismos.

Origen[editar]
Los conceptos de la POO tienen origen en Simula 67, un lenguaje diseado para hacer
simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard, del Centro de Cmputo
Noruego en Oslo. En este centro se trabajaba en simulaciones de naves, que fueron
confundidas por la explosin combinatoria de cmo las diversas cualidades de diferentes
naves podan afectar unas a las otras. La idea surgi al agrupar los diversos tipos de
naves en diversas clases de objetos, siendo responsable cada clase de objetos de definir
sus "propios" datos y comportamientos. Fueron refinados ms tarde en Smalltalk,
desarrollado en Simula en Xerox PARC (cuya primera versin fue escrita sobre Basic) pero
diseado para ser un sistema completamente dinmico en el cual los objetos se podran
crear y modificar "sobre la marcha" (en tiempo de ejecucin) en lugar de tener un sistema
basado en programas estticos.
La POO se fue convirtiendo en el estilo de programacin dominante a mediados de
los aos 1980, en gran parte debido a la influencia de C++, una extensin del lenguaje de
programacin C. Su dominacin fue consolidada gracias al auge de las interfaces grficas
de usuario, para las cuales la POO est particularmente bien adaptada. En este caso, se
habla tambin de programacin dirigida por 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 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 lenguaje de programacin Eiffel 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 Java en la mayora
de navegadores web. PHP en su versin 5 se ha modificado; soporta una orientacin
completa a objetos, cumpliendo todas las caractersticas propias de la orientacin a
objetos.

Conceptos fundamentales[editar]
La POO es una forma de programar que trata de encontrar una solucin a estos
problemas. Introduce nuevos conceptos, que superan y amplan conceptos antiguos ya
conocidos. Entre ellos destacan los siguientes:
Clase

Definiciones de las propiedades y comportamiento de un tipo de objeto concreto.


La instanciacin es la lectura de estas definiciones y la creacin de un 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 definidos 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. En el caso de los
componentes registrados como "protegidos" (protected) tambin se heredan, pero
solo para esa clase, no para futuras clases heredadas. Esto es as para mantener
hegemnico el ideal de POO.
Objeto
Instancia de una clase. Entidad provista de un conjunto de propiedades o atributos
(datos) y de comportamiento o funcionalidad (mtodos), los mismos que
consecuentemente reaccionan a eventos. Se corresponden con los objetos reales
del mundo que nos rodea, o con objetos internos del sistema (del programa).
Mtodo
Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecucin se
desencadena tras la recepcin de un "mensaje". Desde el punto de vista del
comportamiento, es lo que el objeto puede hacer. 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 definir 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 define como sus
caractersticas predeterminadas, y cuyo valor puede ser alterado por la ejecucin
de algn mtodo.
Estado interno
Es una variable que se declara privada, que puede ser nicamente accedida y
alterada por un mtodo 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
Atributos, identidad, relaciones y mtodos.
Identificacin 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.

Caractersticas de la
POO[editar]
Existe un acuerdo acerca de qu
caractersticas contempla la "orientacin a
objetos". Las caractersticas siguientes son
las ms importantes:1
Abstraccin
Denota las caractersticas esenciales de un objeto, donde se capturan sus
comportamientos. Cada objeto en el sistema sirve como modelo de un "agente"
abstracto que puede realizar trabajo, informar y cambiar su estado, y
"comunicarse" con otros objetos en el sistema sin revelar "cmo" se implementan
estas caractersticas. Los procesos, las funciones o los mtodos pueden tambin
ser abstrados, y, cuando lo estn, una variedad de tcnicas son requeridas para
ampliar una abstraccin. El proceso de abstraccin permite seleccionar las
caractersticas relevantes dentro de un conjunto e identificar comportamientos
comunes para definir nuevos tipos de entidades en el mundo real. La abstraccin
es clave en el proceso de anlisis y diseo orientado a objetos, ya que mediante
ella podemos llegar a armar un conjunto de clases que permitan modelar la
realidad o el problema que se quiere atacar.
Encapsulamiento
Significa reunir todos los elementos que pueden considerarse pertenecientes a una
misma entidad, al mismo nivel de abstraccin. Esto permite aumentar la cohesin
(diseo estructurado) de los componentes del sistema. Algunos autores confunden
este concepto con el principio de ocultacin, principalmente porque se suelen
emplear conjuntamente.
Polimorfismo
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 compilacin") de polimorfismo, 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 clasificacin. Los objetos heredan las propiedades y el
comportamiento de todas las clases a las que pertenecen. La herencia organiza y
facilita el polimorfismo y el encapsulamiento, permitiendo a los objetos ser
definidos 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 enrejadosque reflejan 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 la encapsulacin, los lenguajes soportan la modularidad de


diversas formas.
Principio de ocultacin
Cada objeto est aislado del exterior, es un mdulo natural, y cada tipo de objeto
expone una "interfaz" a otros objetos que especifica cmo pueden interactuar con
los objetos de la clase. El aislamiento protege a las propiedades de un objeto
contra su modificacin por quien no tenga derecho a acceder a ellas; solamente los
propios mtodos 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 abstraccin. La aplicacin
entera se reduce a un agregado o rompecabezas de objetos.
Recoleccin de
basura
La recoleccin de basura (garbage collection) es la tcnica por la cual el entorno
de objetos se encarga de destruir automticamente, y por tanto desvincular la
memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos.
Esto significa que el programador no debe preocuparse por la asignacin o
liberacin de memoria, ya que el entorno la asignar al crear un nuevo objeto y la
liberar cuando nadie lo est usando. En la mayora de los lenguajes hbridos que
se extendieron para soportar el Paradigma de Programacin Orientada a Objetos
como C++ u Object Pascal, esta caracterstica no existe y la memoria debe
desasignarse expresamente.

Resumen[
editar]
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.

Algunos
lenguajes
orientado
sa
objetos[edi
tar]
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.
Entre los
lenguajes
orientados a

objetos se
destacan los
siguientes:

ABAP2

ABL3

ActionScript

ActionScript
3

Ada

C++

C
Sharp (C#)

Clarion

Clipper4

Object
Pascal (Emb
arcadero
Delphi)

Gambas

GObject

Genie

Harbour

Eiffel

Fortran 90/9
5

Java

JavaScript5

Lexico6

Objective-C

Ocaml

Oz

Pauscal (en
espaol)

Perl7 8

PHP9

PowerBuilde
r

Processing.1
0

Python

Ruby

Self

Smalltalk11

Magik (Smal
lWorld)

Vala

VB.NET

Visual
FoxPro12

Visual
Basic 6.0

Visual
DataFlex

Visual
Objects

XBase++

DRP

Scala13 14

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.

INTRODUCCION
Actualmente una de las reas ms candentes en la industria y en el mbito acadmico es la orientacin a
objetos. La orientacin a objetos promete mejoras de amplio alcance en la forma
de diseo, desarrollo y mantenimiento del software ofreciendo una solucin a largo plazo a
los problemas y preocupaciones que han existido desde el comienzo en el desarrollo de software: la falta
de portabilidad del cdigo y reusabilidad, cdigo que es dificil de modificar, ciclos de desarrollo largos y
tecnicas de codificacion no intuituvas.
Un lenguaje orientado a objetos ataca estos problemas. Tiene tres caractersticas basicas: debe estar
basado en objetos, basado en clases y capaz de tener herencia de clases. Muchos lenguajes cumplen
uno o dos de estos puntos; muchos menos cumplen los tres. La barrera ms difcil de sortear es
usualmente la herencia.
El concepto de programacin orientada a objetos (OOP) no es nuevo, lenguajes clsicos como SmallTalk
se basan en ella. Dado que la OOP. se basa en la idea natural de la existencia de un mundo lleno de
objetos y que la resolucin del problema se realiza en trminos de objetos, un lenguaje se dice que est
basado en objetos si soporta objetos como una caracterstica fundamental del mismo.
El elemento fundamental de la OOP es, como su nombre lo indica, el objeto. Podemos definir un objeto
como un conjunto complejo de datos y programas que poseen estructura y forman parte de una
organizacin.
Esta definicin especifica varias propiedades importantes de los objetos. En primer lugar, un objeto no es
un dato simple, sino que contiene en su interior cierto nmero de componentes bin estructurados. En
segundo lugar, cada objeto no es un ente aislado, sino que forma parte de una organizacin jerrquica o
de otro tipo.
ESTRUCTURA DE UN OBJETO
Un objeto puede considerarse como una especie de cpsula dividida en tres partes:
1 - RELACIONES
2 - PROPIEDADES
3 - METODOS
Cada uno de estos componentes desempea un papel totalmente independiente:
Las relaciones permiten que el objeto se insterte en la organizacin y estn formadas esencialmente por
punteros a otros objetos.
Las propiedades distinguen un objeto determinado de los restantes que forman parte de la misma
organizacin y tiene valores que dependen de la propiedad de que se trate. Las propiedades de un objeto
pueden ser heredadas a sus descendientes en la organizacin.
Los mtodos son las operaciones que pueden realizarse sobre el objeto, que normalmente estarn
incorporados en forma de programas (cdigo) que el objeto es capaz de ejecutar y que tambin pone a
disposicin de sus descendientes a travs de la herencia.
Encapsulamiento y ocultacin
Como hemos visto, cada objeto es una estructura compleja en cuyo interior hay datos y programas, todos
ellos relacionados entre s, como si estuvieran encerrados conjuntamente en una cpsula. Esta propiedad
(encapsulamiento), es una de las caractersticas fundamentales en la OOP.
Los objetos son inaccesibles, e impiden que otros objetos, los usuarios, o incluso los programadores
conozcan cmo est distribuda la informacin o qu informacin hay disponible. Esta propiedad de los
objetos se denomina ocultacin de la informacin.
Esto no quiere decir, sin embargo, que sea imposible conocer lo necesario respecto a un objeto y a lo que
contiene. Si as fuera no se podra hacer gran cosa con l. Lo que sucede es que las peticiones de
informacin a un objeto. deben realizarse a travs de mensajes dirigidos a l, con la orden de realizar la
operacin pertinente. La respuesta a estas ordenes ser la informacin requerida, siempre que el objeto
considere que quien enva el mensaje est autorizado para obtenerla.
El hecho de que cada objeto sea una cpsula facilita enormemente que un objeto determinado pueda ser
transportado a otro punto de la organizacin, o incluso a otra organizacin totalmente diferente que
precise de l. Si el objeto ha sido bien construdo, sus mtodos seguirn funcionando en el nuevo entorno
sin problemas. Esta cualidad hace que la OOP sea muy apta para la reutilizacin de programas.
Organizacin de los objetos
En principio, los objetos forman siempre una organizacin jerrquica, en el sentido de que ciertos objetos
son superiores a otros de cierto modo.
Existen varios tipos tipos de jerarquas: sern simples cuando su estructura pueda ser representada por
medio de un "arbol". En otros casos puede ser ms compleja.
En cualquier caso, sea la estructura simple o compleja, podrn distinguirse en ella tres niveles de objetos.
-La raz de la jerarqua. Se trata de un objeto nico y especial. Este se caracterza por estar en el nivel
ms alto de la estructura y suele recibir un nombre muy genrico, que indica su categora especial, como
por ejemplo objeto madre, Raz o Entidad.
-Los objetos intermedios. Son aquellos que descienden directamente de la raz y que a su vez tienen
descendientes. Representan conjuntos o clases de objetos, que pueden ser muy generales o muy
especializados, segn la aplicacin. Normalmente reciben nombres genricos que denotan al conjunto de

objetos que representan, por ejemplo, VENTANA, CUENTA, FICHERO. En un conjunto reciben el nombre
de clases o tipos si descienden de otra clase o subclase.
-Los objetos terminales. Son todos aquellos que descienden de una clase o subclase y no tienen
descendientes. Suelen llamarse casos particulares, instancias o tems porque representan los elementos
del conjunto representado por la clase o subclase a la que pertenecen.
Veamos ahora en detalle los tres elementos mencionados en "Estructura de un Objeto".
1. RELACIONES
Las relaciones entre objetos son, precisamente, los enlaces que permiten a un objeto relacionarse con
aquellos que forman parte de la misma organizacin.
Las hay de dos tipos fundamentales:
-Relaciones jerrquicas. Son esenciales para la existencia misma de la aplicacin porque la construyen.
Son bidireccionales, es decir, un objeto es padre de otro cuando el primer objeto se encuentra situado
inmediatamente encima del segundo en la organizacin en la que ambos forman parte; asimismo, si un
objeto es padre de otro, el segundo es hijo del primero (en la fig. 2, B es padre de D,E y F, es decir, D,E y
F son hijos de B; en la fig. 3, los objetos B y C son padres de F, que a su vez es hijo de ambos).
Una organizacin jerrquica simple puede definirse como aquella en la que un objeto puede tener un solo
padre, mientras que en una organizacion jerrquica compleja un hijo puede tener varios padres).
-Relaciones semnticas. Se refieren a las relaciones que no tienen nada que ver con la organizacin de la
que forman parte los objetos que las establecen. Sus propiedades y consecuencia solo dependen de los
objetos en s mismos (de su significado) y no de su posicin en la organizacin.
Se puede ver mejor con un ejemplo: supongamos que vamos a construir un diccionario informatizado que
permita al usuario obtener la definicin de una palabra cualquiera. Supongamos que, en dicho diccionario,
las palabras son objetos y que la organizacin jerrquica es la que proviene de forma natural de la
estructura de nuestros conocimientos sobre el mundo.
La raz del diccionario podra llamarse TEMAS. De ste trmino genrico descendern tres grandes
ramas de objetos llamadas VIDA, MUNDO y HOMBRE. El primero (vida) comprender
las ciencias biolgicas: Biologa y Medicina. El segundo (mundo), las ciencias de la naturaleza inerte:
las Matemticas, la Fsica, la Qumica y la Geologa. El tercero (hombre) comprender las ciencias
humanas: la Geografa, la Historia, etc.
Veamos un ejemplo: estableceremos la relacin trabajo entre los objetos NEWTON y OPTICA y la
interpretaremos diciendo que significa que Newton trabaj en ptica (vase la fig. 4). La relacin es,
evidentemente, semntica, pus no establece ninguna connotacin jerrquica entre NEWTON y OPTICA
y su interpretacin depende exclusivamente del significado de ambos objetos.
La existencia de esta relacin nos permitir responder a preguntas como:
Quin trabaj en ptica?
En qu trabaj Newton?
Quien trabaj en Fsica?
Las dos primeras se deducen inmediatamente de la existencia de la relacin trabajo. Para la tercera
observamos que si Newton trabaj en ptica automticamente sabemos que trabaj en Fsica, por ser
ptica una rama de la Fsica (en nuestro diccionario, el objeto OPTICA es hijo del objeto FISICA).
Entonces gracias a la OOP podemos responder a la tercera pregunta sin necesidad de establecer una
relacin entre NEWTON y FISICA, apoyandonos slo en la relacin definida entre NEWTON y OPTICA y
en que OPTICA es hijo de FISICA. De este modo se elimina toda redundancia innecesaria y la cantidad
de informacin que tendremos que definir para todo el diccionario ser mnima.
2. PROPIEDADES
Todo objeto puede tener cierto nmero de propiedades, cada una de las cuales tendr, a su vez, uno o
varios valores. En OOP, las propiedades corresponden a las clsicas "variables" de la programacin
estructurada. Son, por lo tanto, datos encapsulados dentro del objeto, junto con los mtodos (programas)
y las relaciones (punteros a otros objetos). Las propiedades de un objeto pueden tener un valor nico o
pueden contener un conjunto de valores mas o menos estructurados (matrices, vectores, listas, etc.).
Adems, los valores pueden ser de cualquier tipo (numrico, alfabtico, etc.) si el sistema de
programacin lo permite.
Pero existe una diferencia con las "variables", y es que las propiedades se pueden heredar de unos
objetos a otros. En consecuencia, un objeto puede tener una propiedad de maneras diferentes:
-Propiedades propias. Estn formadas dentro de la cpsula del objeto.
-Propiedades heredadas. Estan definidas en un objeto diferente, antepasado de ste (padre,"abuelo",
etc.). A veces estas propiedades se llaman propiedades miembro porque el objeto las posee por el mero
hecho de ser miembro de una clase.
3. METODOS
Una operacin que realiza acceso a los datos. Podemos definir mtodo como un programa procedimental
o procedural escrito en cualquier lenguaje, que est asociado a un objeto determinado y cuya ejecucin
slo puede desencadenarse a travs de un mensaje recibido por ste o por sus descendientes.
Son sinnimos de 'mtodo' todos aquellos trminos que se han aplicado tradicionalmente a los
programas, como procedimiento, funcin, rutina, etc. Sin embargo, es conveniente utilizar el trmino
'mtodo' para que se distingan claramente las propiedades especiales que adquiere un programa en el
entorno OOP, que afectan fundamentalmente a la forma de invocarlo (nicamente a travs de un

mensaje) y a su campo de accin, limitado a un objeto y a sus descendientes, aunque posiblemente no a


todos.
Si los mtodos son programas, se deduce que podran tener argumentos, o parmetros. Puesto que los
mtodos pueden heredarse de unos objetos a otros, un objeto puede disponer de un mtodo de dos
maneras diferentes:
-Mtodos propios. Estn includos dentro de la cpsula del objeto.
-Mtodos heredados. Estan definidos en un objeto diferente, antepasado de ste (padre,"abuelo", etc.). A
veces estos mtodos se llaman mtodos miembro porque el objeto los posee por el mero hecho de ser
miembro de una clase.
Polimorfsmo
Una de las caractersticas fundamentales de la OOP es el polimorfsmo, que no es otra cosa que la
posibilidad de construir varios mtodos con el mismo nombre, pero con relacin a la clase a la que
pertenece cada uno, con comportamientos diferentes. Esto conlleva la habilidad de enviar un mismo
mensaje a objetos de clases diferentes. Estos objetos recibiran el mismo mensaje global pero
responderan a l de formas diferentes; por ejemplo, un mensaje "+" a un objeto ENTERO significara
suma, mientras que para un objeto STRING significara concatenacin ("pegar" strings uno seguido al
otro)
Demonios
Es un tipo especial de mtodos, relativamente poco frecuente en los sistemas de OOP, que se activa
automticamente cuando sucede algo especial. Es decir, es un programa, como los mtodos ordinarios,
pero se diferencia de estos porque su ejecucin no se activa con un mensaje, sino que se desencadena
autmticamente cuando ocurre un suceso determinado: la asignacin de un valor a una propiedad de un
objeto, la lectura de un valor determinado, etc.
Los demonios, cuando existen, se diferencian de otros mtodos por que no son heredables y porque a
veces estn ligados a una de las propiedades de un objeto, mas que al objeto entero.
CONSIDERACIONES FINALES
Beneficios que se obtienen del desarrollo con OOP
Da a da los costos del Hardware decrecen. As surgen nuevas reas de aplicacin cotidianamente:
procesamiento de imgenes y sonido, bases de datos multimediales, automatizacin de oficinas,
ambientes de ingeniera de software, etc. An en las aplicaciones tradicionales encontramos que definir
interfases hombre-mquina "a-la-Windows" suele ser bastante conveniente.
Lamentablemente, los costos de produccin de software siguen aumentando; el mantenimiento y la
modificacin de sistemas complejos suele ser una tarea trabajosa; cada aplicacin, (aunque tenga
aspectos similares a otra) suele encararse como un proyecto nuevo, etc.
Todos estos problemas an no han sido solucionados en forma completa. Pero como los objetos son
portables (tericamente) mientras que la herencia permite la reusabilidad del cdigo orientado a objetos,
es ms sencillo modificar cdigo existente porque los objetos no interaccionan excepto a travs de
mensajes; en consecuencia un cambio en la codificacin de un objeto no afectar la operacin con otro
objeto siempre que los mtodos respectivos permanezcan intactos. La introduccin de tecnologa de
objetos como una herramienta concepual para analizar, disear e implementar aplicaciones permite
obtener aplicaciones ms modificables, fcilmente extendibles y a partir de componentes reusables. Esta
reusabilidad del cdigo disminuye el tiempo que se utiliza en el desarrollo y hace que el desarrollo del
software sea mas intuitivo porque la gente piensa naturalmente en trminos de objetos ms que en
trminos de algoritmos de software.
Problemas derivados de la utilizacin de OOP en la actualidad
Un sistema orientado a objetos, por lo visto, puede parecer un paraso virtual. El problema sin embargo
surge en la implementacin de tal sistema. Muchas compaas oyen acerca de los beneficios de un
sistema orientado a objetos e invierten gran cantidad de recursos luego comienzan a darse cuenta que
han impuesto una nueva cultura que es ajena a los programadores actuales. Especficamente los
siguientes temas suelen aparecer repetidamente:
Curvas de aprendizaje largas. Un sistema orientado a objetos ve al mundo en una forma nica. Involucra
la conceptualizacin de todos los elementos de un programa, desde subsistemas a los datos, en la forma
de objetos. Toda la comunicacin entre los objetos debe realizarse en la forma de mensajes. Esta no es la
forma en que estn escritos los programas orientados a objetos actualmente; al hacer la transicin a un
sistema orientado a objetos la mayora de los programadores deben capacitarse nuevamente antes
de poder usarlo.
Dependencia del lenguaje. A pesar de la portabilidad conceptual de los objetos en un sistema orientado a
objetos, en la prctica existen muchas dependencias. Muchos lenguajes orientados a objetos estn
compitiendo actualmente para dominar el mercado. Cambiar el lenguaje de implementacin de un sistema
orientado a objetos no es una tarea sencilla; por ejemplo C++ soporta el concepto de herencia multiple
mientras que SmallTalk no lo soporta; en consecuencia la eleccin de un lenguaje tiene ramificaciones de
diseo muy importamtes.
Determinacion de las clases. Una clase es un molde que se utiliza para crear nuevos objetos. En
consecuencia es importante crear el conjunto de clases adecuado para un proyecto. Desafortunadamente
la definicin de las clases es ms un arte que una ciencia. Si bien hay muchas jerarquas de clase
predefinidas usualmente se deben crear clases especficas para la aplicacin que se este desarrollando.

Luego, en 6 meses 1 ao se da cuenta que las clases que se establecieron no son posibles; en ese
caso ser necesario reestructurar la jerarqua de clases devastando totalmente la planificacin original.
Performance. En un sistema donde todo es un objeto y toda interaccion es a travs de mensajes, el
trfico de mensajes afecta la performance. A medida que la tecnologa avanza y la velocidad de
microprocesamiento, potencia y tamao de la memoria aumentan, la situacion mejorar; pero en la
situacin actual, un diseo de una aplicacin orientada a objetos que no tiene en cuenta la performance
no ser viable comercialmente.
Idealmente, habra una forma de atacar estos problemas eficientemente al mismo tiempo que se obtienen
los beneficios del desarrollo de una estrategia orientada a objetos. Deberia existir una metodologa fcil
de aprender e independiente del lenguaje, y facil de reestructurar que no drene la performance del
sistema .
Bibliografa consultada
Revista COMPU MAGAZINE, Nmero 51, Octubre '92
Revista COMPU MAGAZINE, Nmero 50, Septiembre '92
(y diversos apuntes conseguidos de distintas publicaciones)
Lucas

Leer ms: http://www.monografias.com/trabajos/objetos/objetos.shtml#ixzz4SOfUfJbD

Qu es la programacion
orientada a objetos

Por Miguel Angel Alvarez

24 de julio de 2001

116 Comentarios

Desarrollo

Introducimos para los ms profanos las bases sobre las


que se asienta la Programacin Orientada a Objetos.
La programacin Orientada a objetos (POO) es una forma especial de
programar, ms cercana a como expresaramos las cosas en la vida real que
otros tipos de programacin.
Con la POO tenemos que aprender a pensar las cosas de una manera distinta,
para escribir nuestros programas en trminos de objetos, propiedades,
mtodos y otras cosas que veremos rpidamente para aclarar conceptos y dar
una pequea base que permita soltarnos un poco con este tipo de
programacin.

Motivacin
Durante aos, los programadores se han dedicado a construir aplicaciones muy
parecidas que resolvan una y otra vez los mismos problemas. Para conseguir

que los esfuerzos de los programadores puedan ser utilizados por otras
personas se cre la POO. Que es una serie de normas de realizar las cosas de
manera que otras personas puedan utilizarlas y adelantar su trabajo, de
manera que consigamos que el cdigo se pueda reutilizar.
La POO no es difcil, pero es una manera especial de pensar, a veces subjetiva
de quien la programa, de manera que la forma de hacer las cosas puede ser
diferente segn el programador. Aunque podamos hacer los programas de
formas distintas, no todas ellas son correctas, lo difcil no es programar
orientado a objetos sino programar bien. Programar bien es importante porque
as nos podemos aprovechar de todas las ventajas de la POO.

Cmo se piensa en objetos


Pensar en trminos de objetos es muy parecido a cmo lo haramos en la vida
real. Por ejemplo vamos a pensar en un coche para tratar de modelizarlo en un
esquema de POO. Diramos que el coche es el elemento principal que tiene
una serie de caractersticas, como podran ser el color, el modelo o la marca.
Adems tiene una serie de funcionalidades asociadas, como pueden ser
ponerse en marcha, parar o aparcar.
Pues en un esquema POO el coche sera el objeto, las propiedades seran las
caractersticas como el color o el modelo y los mtodos seran las
funcionalidades asociadas como ponerse en marcha o parar.
Por poner otro ejemplo vamos a ver cmo modelizaramos en un esquema
POO una fraccin, es decir, esa estructura matemtica que tiene un numerador
y un denominador que divide al numerador, por ejemplo 3/2.
La fraccin ser el objeto y tendr dos propiedades, el numerador y el
denominador. Luego podra tener varios mtodos como simplificarse, sumarse
con otra fraccin o nmero, restarse con otra fraccin, etc.
Estos objetos se podrn utilizar en los programas, por ejemplo en un programa
de matemticas hars uso de objetos fraccin y en un programa que gestione
un taller de coches utilizars objetos coche. Los programas Orientados a

objetos utilizan muchos objetos para realizar las acciones que se desean
realizar y ellos mismos tambin son objetos. Es decir, el taller de coches ser
un objeto que utilizar objetos coche, herramienta, mecnico, recambios, etc.

Clases en POO
Las clases son declaraciones de objetos, tambin se podran definir como
abstracciones de objetos. Esto quiere decir que la definicin de un objeto es la
clase. Cuando programamos un objeto y definimos sus caractersticas y
funcionalidades en realidad lo que estamos haciendo es programar una clase.
En los ejemplos anteriores en realidad hablbamos de las clases coche o
fraccin porque slo estuvimos definiendo, aunque por encima, sus formas.
Propiedades en clases

Las propiedades o atributos son las caractersticas de los objetos. Cuando


definimos una propiedad normalmente especificamos su nombre y su tipo. Nos
podemos hacer a la idea de que las propiedades son algo as como variables
donde almacenamos datos relacionados con los objetos.
Mtodos en las clases

Son las funcionalidades asociadas a los objetos. Cuando estamos


programando las clases las llamamos mtodos. Los mtodos son como
funciones que estn asociadas a un objeto.

Objetos en POO

Los objetos son ejemplares de una clase cualquiera. Cuando creamos un


ejemplar tenemos que especificar la clase a partir de la cual se crear. Esta
accin de crear un objeto a partir de una clase se llama instanciar (que viene
de una mala traduccin de la palabra instace que en ingls significa ejemplar).
Por ejemplo, un objeto de la clase fraccin es por ejemplo 3/5. El concepto o
definicin de fraccin sera la clase, pero cuando ya estamos hablando de una
fraccin en concreto 4/7, 8/1000 o cualquier otra, la llamamos objeto.
Para crear un objeto se tiene que escribir una instruccin especial que puede
ser distinta dependiendo el lenguaje de programacin que se emplee, pero ser
algo parecido a esto.
miCoche = new Coche()

Con la palabra new especificamos que se tiene que crear una instancia de la
clase que sigue a continuacin. Dentro de los parntesis podramos colocar
parmetros con los que inicializar el objeto de la clase coche.
Estados en objetos

Cuando tenemos un objeto sus propiedades toman valores. Por ejemplo,


cuando tenemos un coche la propiedad color tomar un valor en concreto,
como por ejemplo rojo o gris metalizado. El valor concreto de una propiedad de
un objeto se llama estado.
Para acceder a un estado de un objeto para ver su valor o cambiarlo se utiliza
el operador punto.
miCoche.color = rojo

El objeto es miCoche, luego colocamos el operador punto y por ltimo el


nombre e la propiedad a la que deseamos acceder. En este ejemplo estamos
cambiando el valor del estado de la propiedad del objeto a rojo con una simple
asignacin.
Mensajes en objetos

Un mensaje en un objeto es la accin de efectuar una llamada a un mtodo.


Por ejemplo, cuando le decimos a un objeto coche que se ponga en marcha
estamos pasndole el mensaje ponte en marcha.
Para mandar mensajes a los objetos utilizamos el operador punto, seguido del
mtodo que deseamos invocar.
miCoche.ponerseEnMarcha()

En este ejemplo pasamos el mensaje ponerseEnMarcha(). Hay que colocar


parntesis igual que cualquier llamada a una funcin, dentro iran los
parmetros.

Otras cosas
Hay mucho todava que conocer de la POO ya que slo hemos hecho
referencia a las cosas ms bsicas. Tambin existen mecanismos como la
herencia y el polimorfismo que son unas de las posibilidades ms potentes de
la POO.

La herencia sirve para crear objetos que incorporen propiedades y mtodos de


otros objetos. As podremos construir unos objetos a partir de otros sin tener
que reescribirlo todo. Puedes encontrar en DesarrolloWeb.com un artculo
completo dedicado a la Herencia.
El polimorfismo sirve para que no tengamos que preocuparnos sobre lo que
estamos trabajando, y abstraernos para definir un cdigo que sea compatible
con objetos de varios tipos. Puedes acceder a otro artculo para saber ms
sobre Polimorfismo.
Son conceptos avanzados que cuesta explicar en las lneas de ese informe. No
hay que olvidar que existen libros enteros dedicados a la POO y aqu solo
pretendemos dar un repaso a algunas cosas para que os suenen cuando
tengis que poneros delante de ellas en los lenguajes de programacin que
debe conocer un desarrollador del web. Sin embargo, si quieres saber ms
tambin puedes continuar leyendo en DesarrolloWeb.com, en el manual de
la teora de la Programacin orientada a objetos.

Ejemplo concreto de programacin


orientada a objetos
Para conseguir un ejemplo concreto de lo que es la programacin orientada a
objetos, podemos entrar en el Manual de PHP 5. Realmente este manual
explica las caractersticas de orientacin a objetos de PHP 5 y ofrece ejemplos
concretos de creacin de clases con caractersticas como herencia,
polimorfismo, etc.

Introduccin
Cuando se escribe un programa en un lenguaje orientado a objetos, definimos
una plantilla o clase que describe las caractersiticas y el comportamiento de
un conjunto de objetos similares. La clase automvil describe las
caractersticas comunes de todos los automviles: sus atributos y su
comportamiento. Los atributos o propiedades se refieren a la marca o
fabricante, el color, las dimensiones, si tienen dos, tres, cuatro o ms puertas,
la potencia, si utiliza como combustible la gasolina o gasoil, etc. El

comportamiento se refiere a la posibilidad de desplazarse por una carretera,


frenar, acelerar, cambiar de marcha, girar, etc.
Luego, tenemos automviles concretos, por ejemplo el automvil propio de
una determinada marca, color, potencia, etc, el automvil del vecino de otra
marca, de otro color, etc, , el automvil de un amigo, etc.
Una clase es por tanto una pantilla implementada en software que describe un
conjunto de objetos con atributos y comportamiento similares.
Una instancia u objeto de una clase es una representacin concreta y
especfica de una clase y que reside en la memoria del ordenador.

Atributos
Los atributos son las caractersiticas individuales que diferencian un objeto de
otro y determinan su apariencia, estado u otras cualidades. Los atributos se
guardan en variables denominadas de instancia, y cada objeto particular puede
tener valores distintos para estas variables.
Las variables de instancia tambin denominados miembros dato, son
declaradas en la clase pero sus valores son fijados y cambiados en el objeto.
Adems de las variables de instancia hay variables de clase, las cuales se
aplican a la clase y a todas sus instancias. Por ejemplo, el nmero de ruedas de
un automvil es el mismo cuatro, para todos los automviles.

Comportamiento
El comportamiento de los objetos de una clase se implementa mediante
funciones miembro o mtodos. Un mtodo es un conjunto de instrucciones
que realizan una determinada tarea y son similares a las funciones de los
lenguajes estructurados.
Del mismo modo que hay variables de instancia y de clase, tambin hay
mtodos de instancia y de clase. En el primer caso, un objeto llama a un
mtodo para realizar una determinada tarea, en el segundo, el mtodo se llama
desde la propia clase.

El proyecto

El proyecto consta de dos archivos, el primero contiene la


clase Rectangulo que se guarda en el archivo Rectangulo.java y no tiene el
mtodo main. La ltima casilla del asistente de creacin de clases New Java
File debe de estar desactivada.
La otra clase, es la que describe la aplicacin RectanguloApp1 y se guarda en
el archivo RectanguloApp1.java, esta clase tiene que tener el mtodo main,
por lo tanto, la ltima casilla del asistente de creacin de clases New Java
File debe de estar activada.
Un proyecto puede constar de varias clases (normalmente se sita cada clase
en un archivo) pero solamente una tiene el mtodo main y representa la
aplicacin. Para distinguir la clase que describe la aplicacin de las dems le
hemos aadido el sufijo App.
rectangulo1: Rectangulo.java, RectanguloApp1.java

La clase
Para crear una clase se utiliza la palabra reservada class y a continuacin el
nombre de la clase. La definicin de la clase se pone entre las llaves de
apertura y cierre. El nombre de la clase empieza por letra mayscula.
class Rectangulo{
//miembros dato
//funciones miembro
}

Los miembros dato


Los valores de los atributos se guardan en los miembros dato o variables de
instancia. Los nombres de dichas variables comienzan por letra minscula.
Vamos a crear una clase denominada Rectangulo, que describa las
caractersticas comunes a estas figuras planas que son las siguientes:
El origen del rectngulo: el origen o posicin de la esquina superior
izquierda del rectngulo en el plano determinado por dos nmeros
enteros x e y.
Las dimensiones del rectngulo: ancho y alto, otros dos nmeros
enteros.

class Rectangulo{
int x;
int y;
int ancho;
int alto;
//faltan las funciones miembro
}

Las funciones miembro


En el lenguaje C++ las funciones miembro se declaran, se definen y se llaman.
En el lenguaje Java las funciones miembro o mtodos solamente se definen y
se llaman.
El nombre de las funciones miembro o mtodos comieza por letra minscula y
deben sugerir acciones (mover, calcular, etc.). La definicin de una funcin
tiene el siguiente formato:
tipo nombreFuncion(tipo parm1, tipo parm2, tipo parm3){
//...sentencias
}

Entre las llaves de apertura y cierre se coloca la definicin de la


funcin. tipo indica el tipo de dato que puede ser predefinido int, double, etc,
o definido por el usuario, una clase cualquiera.
Para llamar a un funcin miembro o mtodo se escribe
retorno=objeto.nombreFuncion(arg1, arg2, arg3);

Cuando se llama a la funcin, los argumentos arg1, arg2, arg3 se copian en


los parmetros parm1, parm2, parm3 y se ejecutan las sentencias dentro de la
funcin. La funcin finaliza cuando se llega al final de su bloque de definicin
o cuando encuentra una sentencia return.
Cuando se llama a la funcin, el valor devuelto mediante la
sentencia return se asigna a la variable retorno.

Cuando una funcin no devuelve nada se dice de tipo void. Para llamar a la
funcin, se escribe
objeto.nombreFuncion(arg1, arg2, arg3);

Estudiaremos ms adelante con ms detalle como se definen las funciones.


Una funcin suele finalizar cuando llega al final del bloque de su definicin
void funcion(....){
//sentencias...
}

Una funcin puede finalizar antes del llegar al final de su definicin


void funcion(....){
//sentencias...
if(condicion) return;
//sentencias..
}

Una funcin puede devolver un valor (un tipo de dato primitivo o un objeto).
double funcion(....){
double suma=0.0;
//sentencias...
return suma;
}

Cualquier variable declarada dentro de la funcin tiene una vida temporal,


existiendo en memoria, mientras la funcin est activa. Se trata de variables
locales a la funcin. Por ejemplo:
void nombreFuncion(int parm){
//...
int i=5;
//...
}

La variable parm, existe desde el comienzo hasta el final de la funcin. La


variable local i, existe desde el punto de su declaracin hasta el final del
bloque de la funcin.
Se ha de tener en cuenta que las funciones miembro tienen acceso a los
miembros dato, por tanto, es importante en el diseo de una clase decidir qu
variables son miembros dato, qu variables son locales a las funciones
miembro, y qu valores les pasamos a dichas funciones. Los ejemplos nos
ayudarn a entender esta distincin.
Hemos definido los atributos o miembros dato de la clase Rectangulo, ahora le
vamos aadir un comportamiento: los objetos de la clase Rectangulo o

rectngulos sabrn calcular su rea, tendrn capacidad para trasladarse a otro


punto del plano, sabrn si contienen en su interior un punto determinado del
plano.
La funcin que calcula el rea realizar la siguiente tarea, calcular el
producto del ancho por el alto del rectngulo y devolver el resultado. La
funcin devuelve un entero es por tanto, de tipo int. No es necasario pasarle
datos ya que tiene acceso a los miembros dato ancho y alto que guardan
la anchura y la altura de un rectngulo concreto.
class Rectangulo{
int x;
int y;
int ancho;
int alto;
int calcularArea(){
return (ancho*alto);
}
}

A la funcin que desplaza el rectngulo horizontalmente en dx, y


verticalmente en dy, le pasamos dichos desplazamientos, y a partir de estos
datos actualizar los valores que guardan sus miembros dato x e y. La funcin
no devuelve nada es de tipo void.
class Rectangulo{
int x;
int y;
int ancho;
int alto;
void desplazar(int dx, int dy){
x+=dx;
y+=dy;
}
}

La funcin que determina si un punto est o no en el interior del rectngulo,


devolver true si el punto se encuentra en el interior del rectngulo y
devolver false si no se encuentra, es decir, ser una funcin del tipo boolean.
La funcin necesitar conocer las coordenadas de dicho punto. Para que un
punto de coordenadas x1 e y1 est dentro de un rectngulo cuyo origen
es x e y, y cuyas dimensiones son ancho y alto, se deber cumplir a la vez
cuatro condiciones
x1>x y a la vez x1<x+ancho
Tambin se debe cumplir
y1>y y a la vez y1<y+alto

Como se tienen que cumplir las cuatro condiciones a la vez, se unen mediante
el operador lgico AND simbolizado por &&.
class Rectangulo{
int x;
int y;
int ancho;
int alto;
boolean estaDentro(int x1, int y1){
if((x1>x)&&(x1<x+ancho)&&(y1>y)&&(y1<y+ancho)){
return true;
}
return false;
}
}

En el lenguaje Java, si la primera condicin es falsa no se evalan las restantes


expresiones ya que el resultado es false. Ahora bien, si la primera es
verdadera true, se pasa a evaluar la segunda, si sta el falsa el resultado
es false, y as sucesivamente.

Los contructores
Un objeto de una clase se crea llamando a una funcin especial denominada
constructor de la clase. El constructor se llama de forma automtica cuando se
crea un objeto, para situarlo en memoria e inicializar los miembros dato
declarados en la clase. El constructor tiene el mismo nombre que la clase. Lo
especfico del constructor es que no tiene tipo de retorno.
class Rectangulo{
int x;
int y;
int ancho;
int alto;
Rectangulo(int x1, int y1, int w, int h){
x=x1;
y=y1;
ancho=w;
alto=h;
}
}

El constructor recibe cuatro nmeros que guardan los


parmetros x1, y1, w y h, y con ellos inicializa los miembros
dato x, y, ancho y alto.
Una clase puede tener ms de un constructor. Por ejemplo, el siguiente
constructor crea un rectngulo cuyo origen est en el punto (0, 0).
class Rectangulo{
int x;

int y;
int ancho;
int alto;
Rectangulo(int w, int h){
x=0;
y=0;
ancho=w;
alto=h;
}
}

Este constructor crea un rectngulo de dimensiones nulas situado en el punto


(0, 0),
class Rectangulo{
int x;
int y;
int ancho;
int alto;
Rectangulo(){
x=0;
y=0;
ancho=0;
alto=0;
}
}

Con estas porciones de cdigo definimos la clase, y la guardamos en un


archivo que tenga el mismo nombre que la clase Rectangulo y con extensin
.java.
public class Rectangulo {
int x;
int y;
int ancho;
int alto;
public Rectangulo() {
x=0;
y=0;
ancho=0;
alto=0;
}
public Rectangulo(int x1, int y1, int w, int h) {
x=x1;
y=y1;
ancho=w;
alto=h;
}
public Rectangulo(int w, int h) {
x=0;
y=0;
ancho=w;
alto=h;
}
int calcularArea(){
return (ancho*alto);
}
void desplazar(int dx, int dy){

x+=dx;
y+=dy;

}
boolean estaDentro(int x1, int y1){
if((x1>x)&&(x1<x+ancho)&&(y1>y)&&(y1<y+ancho)){
return true;
}
return false;
}

Los objetos
Para crear un objeto de una clase se usa la palabra reservada new.
Por ejemplo,
Rectangulo rect1=new Rectangulo(10, 20, 40, 80);

new reserva espacio en memoria para los miembros dato y devuelve una
referencia que se guarda en la variable rect1 del tipo Rectangulo que
denominamos ahora objeto. Dicha sentencia, crea un objeto
denominado rect1 de la clase Rectangulo llamando al segundo constructor en
el listado. El rectngulo estar situado en el punto de coordenadas x=10, y=20;
tendr una anchura de ancho=40 y una altura de alto=80.
Rectangulo rect2=new Rectangulo(40, 80);

Crea un objeto denominado rect2 de la clase Rectangulo llamando al tercer


constructor, dicho rectngulo estar situado en el punto de
coordenadas x=0,y=0; y tendr una anchura de ancho=40 y una altura
de alto=80.
Rectangulo rect3=new Rectangulo();

Crea un objeto denominado rect3 de la clase Rectangulo llamando al primer


constructor, dicho rectngulo estar situado en el punto de
coordenadas x=0,y=0; y tendr una anchura de ancho=0 y una altura
de alto=0.

Acceso a los miembros


Desde un objeto se puede acceder a los miembros mediante la siguiente
sintaxis

objeto.miembro;
Por ejemplo, podemos acceder al miembro dato ancho, para cambiar la
anchura de un objeto rectngulo.
rect1.ancho=100;

El rectngulo rect1 que tena inicialmente una anchura de 40, mediante esta
sentencia se la cambiamos a 100.
Desde un objeto llamamos a las funciones miembro para realizar una
determinada tarea. Por ejemplo, desde el rectngulo rect1 llamamos a la
funcin calcularArea para calcular el rea de dicho rectngulo.
rect1.calcularArea();

La funcin miembro area devuelve un entero, que guardaremos en una


variable entera medidaArea, para luego usar este dato.
int medidaArea=rect1.calcularArea();
System.out.println("El rea del rectngulo es "+medidaArea);

Para desplazar el rectngulo rect2, 10 unidades hacia la derecha y 20 hacia


abajo, escribiremos
rect2.desplazar(10, 20);

Podemos verificar mediante el siguiente cdigo si el punto (20, 30) est en el


interior del rectngulo rect1.
if(rect1.estaDentro(20,30)){
System.out.println("El punto est dentro del
rectngulo");
}else{
System.out.println("El punto est fuera del
rectngulo");
}

rect1.dentro() devuelve true si el punto (20, 30) que se le pasa a dicha funcin
miembro est en el interior del rectngulo rect1, ejecutndose la primera
sentencia, en caso contrario se ejecuta la segunda.
Como veremos ms adelante no siempre es posible acceder a los miembros, si
establecemos controles de acceso a los mismos.
public class RectanguloApp1 {
public static void main(String[] args) {
Rectangulo rect1=new Rectangulo(10, 20, 40, 80);
Rectangulo rect2=new Rectangulo(40, 80);
Rectangulo rect3=new Rectangulo();

int medidaArea=rect1.calcularArea();
System.out.println("El rea del rectngulo es "+medidaArea);
rect2.desplazar(10, 20);
if(rect1.estaDentro(20,30)){
System.out.println("El punto est dentro del
rectngulo");
}else{
System.out.println("El punto est fuera del
rectngulo");
}
}
}

La vida de un objeto
En el lenguaje C++, los objetos que se crean con new se han de eliminar
con delete. new reserva espacio en memoria para el objeto y delete libera
dicha memoria. En el lenguaje Java no es necesario liberar la memoria
reservada, el recolector de basura (garbage collector) se encarga de hacerlo
por nosotros, liberando al programador de una de las tareas que ms
quebraderos de cabeza le producen, olvidarse de liberar la memoria reservada.
Veamos un ejemplo
public class UnaClase {
public static void main(String[] args) {
Image granImagen=creaImagen();
mostrar(graImagen);
while(condicion){
calcular();
}
}
}

El objeto granImagen, continua en memoria hasta que se alcanza el final de la


funcin main, aunque solamente es necesario hasta el bucle while. En C o en
C++ eliminariamos dicho objeto liberando la memoria que ocupa
mediante delete. El equivalente en Java es el de asignar al
objeto granImagen el valor null.
public class UnaClase {
public static void main(String[] args) {
Image granImagen=creaImagen();
mostrar(graImagen);
granImagen=null;
while(condicion){
calcular();
}

A partir de la sentencia marcada en letra negrita el recolector de basura se


encargar de liberar la memoria ocupada por dicha imagen. As pues, se
asignar el valor null a las referencias a objetos temporales que ocupen mucha
memoria tan pronto como no sean necesarios.
Creamos dos objetos de la clase rectngulo, del mismo modo que en el
apartado anterior
Rectangulo rect1=new Rectangulo(10, 20, 40, 80);
Rectangulo rect3=new Rectangulo();

Si escribimos
rect3=rect1;

En rect3 se guarda la referencia al objeto rect1. La referencia al


objeto rect3 se pierde. El recolector se encarga de liberar el espacio en
memoria ocupado por el objeto rect3.
La destruccin de un objeto es una tarea (thread) de baja prioridad que lleva a
cabo la Mquina Virtual Java (JVM). Por tanto, nunca podemos saber cuando
se va a destruir un objeto.
Puede haber situaciones en las que es necesario realizar ciertas operaciones
que no puede realizar el recolector de basura (garbage collector) cuando se
destruye un objeto. Por ejemplo, se han abierto varios archivos durante la vida
de un objeto, y se desea que los archivos estn cerrados cuando dicho objeto
desaparece. Se puede definir en la clase un mtodo denominado finalize que
realice esta tarea. Este mtodo es llamado por el recolector de basura
inmeditamente antes de que el objeto sea destrudo.

Identificadores
Cmo se escriben los nombres de la variables, de las clases, de las funciones,
etc., es un asunto muy importante de cara a la comprensin y el
mantenimiento de cdigo. En la introduccin a los fundamentos del lenguaje
Java hemos tratado ya de los identificadores.
El cdigo debe de ser tanto ms fcil de leer y de entender como sea posible.
Alguien que lea el cdigo, incluso despus de cierto tiempo, debe ser capaz de

entender lo que hace a primera vista, aunque los detalles internos, es decir,
cmo lo hace, precise un estudio detallado.
Vemos primero un ejemplo que muestra un cdigo poco legible y por tanto,
muy difcil de mantener
public class Cuen{
private int ba;

Cuen(int ba){
this.ba=ba;
}
public void dep(int i){
ba+=i;
}
public boolean ret(int i){
if(ba>=i){
ba-=i;
return true;
}
return false;
}
public int get(){
return ba;
}

Las abreviaciones empleadas solamente tienen significado para el


programador en el momento de escribir el cdigo, ya que puede olvidarse de
su significado con el tiempo. Otros programadores del grupo tienen que
descifrar el significado del nombre de cada variable o de cada funcin. El
tiempo extra que se gasta en escribir con claridad el nombre de los diversos
elementos que entran en el programa, se ahorra ms adelante durante su
desarrollo, depuracin, y mejora, es decir, durante todo el ciclo de vida del
programa.
public class CuentaBancaria{
private int balance;
CuentaBancaria(int balance){
this.balance=balance;
}
public void depositar(int cantidad){
balance+=cantidad;
}
public boolean retirar(int cantidad){
if(balance>=cantidad){
balance-=cantidad;
return true;
}
return false;
}
public int obtenerBalance(){
return balance;
}
}

Este es una programa sencillo de una cuenta bancaria. El tipo de dato puede
ser entero (int o long), si la unidad monetaria tiene poco valor como la peseta,
o un nmero decimal (double) si la unidad monetaria es de gran valor como el
Euro y el Dlar.
El cdigo de las funciones miembro es muy sencillo y su significado se hace
evidente al leer el programa. La funcin retirar es de tipo boolean, ya que no
(false) estamos autorizados a retirar una cantidad mayor que la existente en
ese momento en el banco. Sin embargo, si (true) estamos autorizados a retirar
una cantidad menor que la que tenemos en la cuenta.
La programacin orientada a objetos (POO) es una forma de programacin en
computadoras que tiene surge los aos 70 pero tiene un desarrollo sorprendente los aos
90 al utilizarlo en las microcomputadoras. Se diferencia de la programacin clsica o
estructurada en que las instrucciones hacen referencia a los elementos del entorno. Esos
elementos representan "objetos"; y todos los datos y todas las acciones que se hagan con
ellos o sobre ellos, estn encapsuladas u ocultas en el objeto.

Objeto
Un objeto es una entidad provista de un conjunto de propiedades o atributos (datos),
de un comportamiento o funcionalidad (mtodos) y de sus posibles relaciones con otros
objetos.
El concepto de objeto tiene un concepto equivalente al objeto de nuestro mundo real.
En nuestro entorno siempre estamos en constante relacin con objetos: los creamos, los
usamos, los modificamos cambiando sus atributos, caractersticas o propiedades, los
relacionamos con otros objetos, etc.
Por ejemplo tomemos el objeto Automvil.
Un automvil es un objeto bastante pesado que tiene un conjunto de propiedades como
su identificacin (placa), color, marca, modelo, accesorios, etc. Tiene tambin un conjunto
de funciones como la de desplazarse, detenerse, ponerse en marcha. Podemos cambiarle
de color, aumentar o quitar sus accesorios; es decir, podemos modificar sus propiedades.
Tienen de la capacidad de ser activados para poner en accin sus funcionalidades; es
decir, disponemos de un procedimiento para ponerlo en marcha, avanzar en retroceso,
detenerlo, voltear a la izquierda o derecha; es decir, mediante un conjunto de mtodos
podemos darle uso al objeto automvil.
En la POO el objeto es el automvil; las propiedades de este objeto son sus
caractersticas y los mtodos lo constituyen las funcionalidades o procedimientos con los
cuales hacemos uso del objeto y modificamos su estado o contenido.
En el Excel podemos hablar del objeto Celda. Este objeto tiene dimensiones, color de
fondo, tipo de borde, tiene un contenido o valor. Posee algunas funcionalidades que nos
permiten cambiarlo de tamao, de color de fondo, de contenido. El objeto celda pertenece
al objeto Rango y est relacionada con l y tiene otras relaciones con otros objetos como
el objeto Hoja, el objeto Grfico, Libro, etc.

Propiedades
Son variables que describen algunos aspectos o caractersticas del objeto en el que
estn incluidas.

Las propiedades de un objeto toman un valor que puede ser permanente o puede
cambiar. Por ejemplo la propiedad color del objeto coche tomar un valor en concreto:
verde, rojo, etc. El valor concreto de una propiedad de un objeto se llama estado del
objeto. Podemos modificar la propiedad de un objeto accediendo a su estado.
Las propiedades de un objeto pueden tomar uno o varios valores. Estos valores pueden
ser de cualquier tipo de dato (String o cadena de caracteres; entero, etc. ).
Para acceder al estado de un objeto en POO se usa la siguiente sintaxis:
MiAuto.Color = Verde
donde el punto recibe el nombre de operador.
Aqu, MiAuto es una instancia del objeto Automvil; vale decir, es una copia.
Una propiedad de muchos objetos en Excel es Nombre. El objeto celda, rango u hoja
tiene un nombre cuyo valor es asignado por omisin por el Excel o es asignado por el
usuario. Una forma de acceder a la propiedad Nombre del objeto rango ser:
ActiveSheet.Name = "Ingresos"
En este caso el objeto Hoja activa est cambiando de nombre por Ingresos.

Mtodo
Un mtodo es una accin que el objeto "reconoce" y "sabe" cmo ejecutarlo. Es una
accin u operacin que realiza acceso a los datos. Se puede definir como un programa o
procedimiento escrito en algn lenguaje que est asociado a un objeto determinado y
cuya ejecucin slo puede desencadenarse a travs de un mensaje recibido por el objeto
o por sus descendientes.
El objeto automvil reconoce al procedimiento "Frenar" y sabe cmo debe realizar la
accin de frenado.
Del mismo modo, en Excel, el objeto Hoja puede ser declarada como activa. El mtodo
que permite activar la hoja "Ingresos" es
Sheets("Ingresos").Select
La hoja reconoce este mtodo y dicha hoja pasa a ser activa ubicndose en primer
plano y con mayores prioridades que las otras hojas.

Ejemplo de Objeto:
Objeto: Alumno
El objeto alumno tiene un conjunto de atributos o propiedades como: Edad, sexo,
peso, altura, nombre, raza, color de cabello, etc.
Existen un conjunto de acciones o mtodos, que se realizan sobre l: hablar, comer,
dormir, caminar, vestirse, correr, detenerse, etc.
Algunas de estas propiedades son heredadas de sus padres, otros objetos
de jerarqua superior.
El objeto alumno est relacionado con otros objetos como hermano, amigo, vecino.
Varios de estos objetos forman una clase: la clase Persona

Antes de empezar el estudio de las instrucciones del Visual Basic para Aplicaciones,
daremos una breve explicacin del Editor de Visual Basic y los elementos dentro de su
entorno.

El Editor del Visual Basic


El Editor de Visual Basic es un programa cuya ventana principal le permite realizar una
serie de acciones sobre su macro, las propiedades de su libro y hojas, as como el de
crear nuevos mdulos (procedimientos) y formularios. Aqu podemos modificar las macros
y potenciarlas dndole la interactividad que no posee. Para usar el editor, haga uso de la
siguiente secuencia:
<Herramientas> - <Macro> - <Editor de Visual Basic> o tambin usando <ALT> +
<F11>.
Si se desea editar o abrir una macro en particular, seleccione:
<Herramientas> - <Macro> - <Macros> Seleccione la macro - <Modificar>.
Puede usar tambin, <ALT> +<F8>, luego seleccionar la macro y hacer clic en
<Modificar>.

El Editor y la programacin orientada a objetos


Todo lo que se puede hacer en el editor, est relacionada con programas. La filosofa de
programacin usada en este editor, es el de la Programacin Orientada a Objetos (POO),
la que nos permitir hacer modificaciones sobre la programacin subyacente a una macro
y crear nuestros propios programas. Un programa es, en principio, una secuencia de
pasos o instrucciones que escribimos para resolver un problema en particular.
En un lenguaje de programacin orientada a objetos, las instrucciones se basan en
variables, constantes, objetos, propiedades de los objetos, etc., pertenecientes a un
mbito, a un entorno. Todos estos elementos, sean sus componentes o caractersticas,
como sus relaciones entre otros objetos, estn agrupados o "encapsulados" en los
objetos. Los objetos en Excel estn constituidos por Celdas, Rangos, Hojas, Libros,
Grficos, Tablas, archivos externos, etc.
Los objetos, refirindonos a Excel, poseen cuatro caractersticas empleados en la
codificacin
de
un
programa: Propiedades de
los
objetos, Mtodos para
manipularlos, Eventos que causan la manipulacin de los mismos y, Colecciones o
Clases a las que pertenecen los objetos.
Propiedades
Las propiedades son las caractersticas, atributos, formas o aspectos del objeto, a las
que se hace referencia mediante el uso de variables. Una propiedad de objeto comn de
Excel es su Nombre, que nos permitir usarlos en las diferentes usos que hagamos del
objeto. De manera que una celda, un rango de celdas, una hoja, libro, grfico o tabla en
Excel, tendr un nombre con el cual lo identificaremos.

Para hacer referencia a las propiedades mediante los programas en VBA, se usa la
sintaxis:
NombreDelObjeto.Propiedad
Ejemplo:
Range("A5").Name
A5.

Aqu se hace referencia al nombre del objeto Range de la celda

Mtodos
Un mtodo es una accin, un procedimiento (un hilo), que tiene efectos sobre un objeto.
Ejemplo:
Range("A5").Select Aqu se ejecuta el mtodo Select, que permite activar la celda A5
y ponerla en disponible para cualquier otra operacin.
Range("B2:G4").Formato
En este caso, se ejecuta el mtodo Formato sobre el
rango B2:G4. Se supone que el mtodo Formato ya est definido previamente.
Eventos
Un evento es el resultado de una accin, es la forma cmo queda el objeto despus de
alguna accin sobre l. Por lo general estas acciones son producidas por los mtodos que
actan sobre el objeto.

En la versin 2003 del Excel, podemos tener algunos eventos como:

Se seleccion una celda o rango

Se seleccion una hoja (haciendo clic en la pestaa o etiqueta de la misma)

Se ha abierto o cerrado un libro.

Se ha activado o desactivado una hoja de clculo.

Se han calculado de nuevo las frmulas de una hoja de clculo.

Se ha seguido un hipervnculo.

Excel incluye varios controladores de eventos, o rutinas de cdigo, que controlan


acciones determinadas. Cuando ocurre una de dichas acciones, y ha comunicado a Excel
qu desea que haga cuando ocurra el evento, Excel ejecuta el cdigo del controlador de
eventos. Por ejemplo, si despus de crear un nuevo libro desea que Excel muestre todos
los libros abiertos como un conjunto de ventanas en cascada, puede crear el siguiente
controlador de eventos:

Private Sub App_NewWorkbook(ByVal Wb As Workbook)


Application.Windows.Arrange xlArrangeStyleCascade
End Sub
Nota

No se preocupe si no est seguro de qu hace cada uno de los elementos de la rutina


del controlador de eventos. Por ahora, concntrese en la lnea del medio del cdigo, que
comunica a Excel que organice las ventanas utilizando el estilo de cascada. Puede
obtener el mismo resultado utilizando los comandos de men de Excel (men Ventana,
comando Organizar, sub comando Cascada). Sin embargo, si se trata de una accin que
desea que se ejecute cada vez que ocurra un evento determinado, puede utilizar el
lenguaje VBA para que se ejecute automticamente y as ahorrarse el trabajo.
Colecciones
El Una coleccin es un grupo o conjunto de objetos contenidos en otro objeto cuyas
propiedades son comunes a los objetos componentes.
Puesto que un libro contiene una o ms hojas de clculo, podemos decir que un libro es
una coleccin de hojas de clculo. As las cosas, podemos ejecutar algn mtodo sobre
esta coleccin a fin de realizar la misma accin sobre todas ellas. Por ejemplo, seleccionar
tres hojas y darle un determinado formato.
En el siguiente ejemplo, se ha programado la opcin de imprimir la ruta donde se
encuentra el archivo. Como se puede ver (o lo podr comprender cuando desarrollemos la
instruccin FOR NEXT), la operacin de aadir la direccin se realiza sobre tres hojas
del libro.

For i = 1 to 3
Worksheets(i).PageSetup.RightFooter = Path
Next i
En el siguiente ejemplo se realiza sobre la coleccin de hojas del libro.

For Each Wksht in Worksheets


Wksht.PageSetup.RightFooter = Path
Next Wksht
En vez de incrementar el valor en un bucle ForNext, el bucle For EachNext busca
simplemente el siguiente elemento de la coleccin Worksheets (hojas de clculo) y se
detiene cuando no encuentra uno.

Ventanas en el Editor de Visual Basic


El Editor de Visual Basic muestra distinta informacin en distintas ventanas. Estas
ventanas pueden contener a uno o ms mdulos (macros) o pueden hacer referencia a las
propiedades de los objetos contenidos en la hoja o libro.
Estas son: La ventana Explorador del proyecto, de Propiedades y de Cdigo.
Ventana del Explorador del proyecto
Cuando se abre el Editor de Visual Basic directamente, se puede utilizar la ventana
Explorador del proyecto para seleccionar la macro en la que se desea trabajar. El
Explorador del proyecto muestra todos los proyectos en trminos de carpetas, en vista de
rbol. En ella se muestran, adems de los libros que el usuario abre, todos los libros y
complementos que el Excel abra en el momento de ejecutar el Excel.

Un mdulo puede contener las instrucciones de una o varias macros. El contenido de


los libros y complementos del Excel, no se pueden visualizar, excepto si se supiera su
contrasea.
Ventana Propiedades
Generalmente debajo de la ventana del Explorador de proyectos, est la ventana
de Propiedades, que se utiliza para examinar y modificar las distintas propiedades
asociadas al objeto seleccionado. La nica propiedad que suele estar disponible para los
mdulos es el nombre. Las hojas de clculo tienen propiedades adicionales que se
pueden modificar, como StandardWidth y DisplayPageBreaks,entre otras.
Para modificar las propiedades de un libro u hoja, debemos seleccionarlo primero y
luego hacer clic en la propiedad deseada y luego elegir entre las opciones disponibles. Por
ejemplo si se desea ocultar la hoja cuyo nombre es Hoja1, seleccinela primero, luego en
la ventana propiedades, haga clic en la propiedad <Visible> y seleccione la opcin
<xlSheetHidden>
Ventana de Cdigo
La ventana de Cdigo es la ventana que dispone de mayor tamao en el Editor e
incluye en el lado superior, dos cuadros de lista desplegables. El cuadro de lista del lado
izquierdo (cuadro de Objeto) se utiliza para seleccionar el objeto en el que se quiere
trabajar. Cuando se trabaja slo con cdigo, el cuadro muestra el
objeto General predeterminado. El cuadro de lista de la derecha (cuadro de
Procedimiento) se utiliza para seleccionar macros individuales del mdulo actual. Segn
se agreguen o eliminen macros en el mdulo, se agregarn y eliminarn en el cuadro
Procedimiento.

Variables
Puesto que todo lo que se realiza en el computador, debe ser guardado en la memoria,
cada uno de los datos deben tener un lugar en ella a donde guardarlos. Para ello es
necesario el uso de las variables. Mediante el uso de las variables y tambin constantes,
podemos almacenar cada uno de los datos o constantes en una localidad de la memoria.
Esto implica que, para acceder a dichas localidades, es necesario el uso de las
variables. Estas tienen un nombre. El nombre puede estar formado por una letra, seguido
de uno o ms caracteres literales o numricos. Estos nombres son nicos; es decir,
ninguna otra variable puede tener el mismo nombre. Naturalmente, la variable se puede
usar en diferentes mbitos o secciones; en cada una de ellas, el mismo nombre de
variable puede ser usado para propsitos distintos; sin embargo, el nombre de una
variable tambin puede ser definido para ser vlido en todos los mbitos.
Nota:
El nombre de una variable puede estar escrito en minsculas, maysculas o
combinarlas a fin de darle cierto sentido respecto a su contenido.

Sentencia DIM
Para declarar una variable se usa la sentencia DIM. Esta declaracin se coloca al
principio de las secciones o mdulos.
Sintaxis:
DIM NombreDeVariable As TipoDeDatos
DIM NombreVar1, NombreVar2, As TipoDeDatos
Tipos de variable

La tabla siguiente muestra los tipos de datos compatibles, incluyendo el tamao


de almacenamiento en memoria y el intervalo en el cual pueden variar.
Tipo de datos
Byte
Bolean
Integer
Long

Tamao
deIntervalo
almacenamiento
Entero de un byte 0 a 255
Lgico de dosTrue o False
bytes
Entero de dos-32,768 a 32,767
bytes
Entero largo de 4-2,147,483,648 a 2,147,483,647

(entero largo)
bytes
Single
Decimal
(coma flotante/bytes
precisin simple)
Double
Decimal
(coma flotante/bytes
precisin doble)

de

4-3,402823E38 a 1,401298E-45 para


valores negativos; 1,401298E-45 a
3,402823E38 para valores positivos
de 8-1.79769313486231E308
a
-4,94065645841247E-324 para valores
negativos; 4,94065645841247E-324 a
1,79769313486232E308 para valores
positivos
Currency
Entero de 8 bytes -922.337.203.685.477,5808
a
(entero a escala)
922.337.203.685.477,5807
Decimal
Nmeros reales+/con
decimales79.228.162.514.264.337.593.543.950.335
hasta
de
28sin
punto
decimal;
dgitos (14 bytes) +/-7,9228162514264337593543950335
con 28 posiciones a la derecha del signo
decimal; el nmero ms pequeo distinto
de
cero
es
+/-0,0000000000000000000000000001
Date
Usado
para1 de enero de 100 a 31 de diciembre de
fechas de 8 bytes 9999
Object
4 bytes
Cualquier referencia a tipo Object
String
Usado para datosDesde 0 a 2.000 millones
(longitud
de texto de 10
variable)
bytes
String
Como el anteriorDesde 1 a 65.400 aproximadamente
(longitud fija)
pero de longitud
fija
Variant
Usado como tipoCualquier valor numrico hasta el
(con nmeros) de dato genricointervalo de un tipo Double
de 16 bytes
Variant
22
bytes
+El mismo intervalo que para un
(con caracteres) longitud de latipo String de longitud variable
cadena
Definido por elNmero
El intervalo de cada elemento es el mismo
usuario
requerido por losque el intervalo de su tipo de datos.
(utilizando Type) elementos
Ejemplos

DIM A, B As Integer
DIM Xtot, Zdat As Double

A y B sern usados como enteros


Xtot y Zdat sern usados como variables
reales

DIM XTitulo, Nom01, Nom02 As


Usados para contener datos literales
String
Puede contener datos numricos
DIM N, Epsi As Variant
literales
Clases de variables
Las variables pueden ser: Locales, Pblicas o Estticas

Variables Locales

Las variables Locales son aquellas que se declaran dentro de un mdulo o


procedimiento y slo pueden ser utilizadas en ste. stas dejan de existir una vez
que el procedimiento termina su ejecucin. Se pueden usar en otros mdulos o
procedimientos pero sus caractersticas nada tienen que hacer con la declaracin
dada en otro mdulo o procedimiento. Para declararlas se debe usar la
sentencia DIM.
Por ejemplo:

Sub procedimiento()
Dim nDat

As Integer

Dim Cadena

As String

Sentencias ....
End Sub
Variables Pblicas
Si se quiere que una variable est disponible para todos los procedimiento s de todos

los mdulos VBA de un proyecto, se la debe definir a travs de la sentencia


PUBLIC (y no DIM).
Por ejemplo:
Public NTotal As Integer
Las variables pblicas se deben definir antes del primer procedimiento de un mdulo de
VBA; no deben definirse en los mdulos correspondientes a las hojas del Libro de Trabajo
ni en los mdulos correspondientes a UserForms.

Variables Estticas

Si se desea que una variable definida en un procedimiento conserve su valor


una vez terminado ste, e ingresado a otro procedimiento, sta se debe definir a
travs de la sentencia STATIC.
Por ejemplo:
Sub Procedimiento()
Static nDat As Integer
[ Sentencias ...]
End Sub

Option Explicit
La sentencia Option Explicit permite que el programa se detenga cada vez que VBA
encuentre una variable que no ha sido definida. Esto es de gran utilidad cuando se usan

muchas variables ya que nos permite identificar rpidamente errores o uso no deseado en
el nombre de la variable. Esta sentencia se debe escribir al comienzo del mdulo.

Constantes
A diferencia de la variables, cuyo valor cambia al ejecutarse un procedimiento, hay
valores que no cambian durante la ejecucin de un procedimiento, stos valores se
denominan Constantes. Las constantes se definen a travs de la sentencia Const. Por
ejemplo;
Const Nivel As Integer
Las constantes tambin pueden declararse como Pblicas para que estn disponibles
en todos los procedimientos de todos los mdulos, esto se hace a travs de la sentencia
PUBLIC
Public Const TasaActiva As Integer
Esta sentencia debe incluirse en un mdulo antes del primer procedimiento.
Para definir constantes Locales, basta definirlas a travs de la sentencia Const dentro
de un procedimiento o funcin.

Mdulos
Un mdulo es un ambiente, es un entorno de trabajo compuesto por sentencias de
declaracin de variables y por uno o ms procedimientos.
Estando en el Editor del Visual Basic, para disponer de un Mdulo, se debe usar la
siguiente secuencia de comandos: <Insertar> - <Mdulos>, como se indica en la siguiente
imagen.

Luego de esta accin, se podr observar, en la ventana de proyectos y dentro del libro
en uso, una carpeta con el nombre Mdulo. Dentro de ella se insertarn todos los
procedimientos que conforman dicho mdulo.

Procedimientos
Un procedimiento est formado por un conjunto de sentencias que permite resolver un
problema. Un mdulo est formado por uno o ms procedimientos. Un procedimiento se
declara a travs de la sentencia Sub y puede ser Privado, Pblico o Esttico.

Procedimiento Privado

Un procedimiento privado slo es accesible por otros procedimientos dentro del mismo
mdulo. Su sintaxis es:
Private Sub Procedimiento (Argumento1,Argumento2,.....)
[sentencias]
End Sub

Procedimiento Pblico
Un procedimiento pblico es accesible por todos los procedimientos de todos los
mdulos VBA de un proyecto, su sintaxis es:

Public Sub Procedimiento(Argumento1,Argumento2,.....)


[Sentencias]
End Sub

Procedimiento Esttico
Para que las variables de un procedimiento se conserven una vez terminada su
ejecucin, ste debe definirse como Esttico:

Static Sub Procedimiento(Argumento1,Argumento2,.....)


[Sentencias]
End Sub
La sentencia Sub y End Sub son obligatorias al definir cualquier procedimiento. Los
argumentos y las sentencias Private, Public y Static son opcionales. Es importante
mencionar que al definir un procedimiento sin ninguna de las sentencias anteriores, por
defecto ste se define como Pblico, es decir:
Sub Procedimiento(argumento1,argumento2,.....)
[Sentencias]
End Sub
Es equivalente a :
Public Sub Procedimiento(argumento1,argumento2,.....)
[Sentencias]
End Sub
Existe una instruccin que permite terminar la ejecucin de un procedimiento, sta es la
instruccin Exit Sub. Por ejemplo, si tenemos el siguiente procedimiento :
Sub Procedimiento(argumento1,argumento2,.....)
[Sentencias]

Exit Sub
[Sentencias]
End Sub
Llamar a un procedimiento desde otro
Para llamar a un procedimiento desde otro procedimiento, se puede utilizar la
sentencia Call o simplemente el nombre del procedimiento. Por ejemplo:
Sub Proced1 (Argumento1,Argumento2,.....)
[Sentencias]
Proced2
[Sentencias]
End Sub
En este caso, el procedimiento Proced1 llama al procedimiento Proced2.
La sentencia Call se utiliza cuando se requiere llamar a un procedimiento al cual hay
que pasarle un argumento, por ejemplo:
Sub Procedimiento1(argumento1,argumento2,.....)
[Sentencias]

indice= ........
Call Proced2(indice)
[Sentencias]
End Sub
En
este
caso,
el
procedimiento Procedimiento1 llama
al
procedimiento Procedimiento2 al cual se le debe pasar el argumento indice. Es
recomendable utilizar siempre la sentencia Call para llamar a otro procedimiento, aunque
a ste no se le tengan que pasar argumentos, esto permite identificar ms fcilmente las
llamadas a otros procedimientos.

Argumentos
Los argumentos pueden ser pasados a un procedimiento por referencia (por defecto los
argumentos se pasan de esta forma) o por valor. Cuando un argumento es pasado por
referencia, se pasa la variable misma al procedimiento llamado, por lo que los cambios
que se producen en la variable son devueltos al procedimiento principal (al que llam al
otro). En cambio cuando un argumento es pasado por valor, se pasa una copia de la
variable al procedimiento llamado por lo que los cambios que se producen en la variable
no son devueltos al procedimiento principal. Para pasar un argumento por valor, se utiliza
la sentencia ByVal, por ejemplo :
Sub Proced2( ByVal indice)
[Sentencias]
End Sub

Pasar argumentos por valor es til cuando se requiere conservar el valor original de una
variable despus de llamar a otro procedimiento.
Al especificar los argumentos de un procedimiento tambin es posible definir el tipo de
dato, por ejemplo se puede definir un procedimiento de la siguiente forma :

Sub Procedimiento(argumento1 As Integer, argumento2 As String)


[Sentencias]
End Sub

Asignacin de valores o expresiones


La asignacin de valores en el VBA es muy simple:
VariableReceptora = ValorAsignado / ExpresionAsignada
ObjetoReceptor = ValorAsignado / ExpresionAsignada
El "ValorAsignado" o el resultado de ejecutar "ExpresinAsignada" se almacena en la
localidad de memoria definida como "VariableReceptora" u "ObjetoReceptor".
Ejemplo 1
XTot = 120
SumaTot = SumaTot + Num01
XTitulo = "Cuadro de ventas consolidadas"
Ejemplo 2
X1 = "Hola Mundo !!!"
X2 = " Buenos das ."
Salida = X1 + X2 + "Hasta luego "
Ejemplo 3
Tasa = 0.19
Cantidad = 120
PrecioUnit = 25.80
MontoNeto = Cantidad * PrecioUnit Cantidad * PrecioUnit * Tasa
Nota 1:
En los dos ejemplos anteriores, algunas variables reciben un valor dentro del programa.
Toda vez que se ejecute el programa, dichas variables siempre usarn los mismos valores
y, como tal, aquellas que dependen de ellas tambin contendrn los mismos resultados.
Para que dichas variables tomen otros valores, es necesario ingresarlos desde otros
programas o procedimientos, o desde el teclado.

Вам также может понравиться