Beruflich Dokumente
Kultur Dokumente
objetos}} ~~~~
1 Introduccin
2 Origen
3 Conceptos fundamentales
4 Caractersticas de la POO
5 Resumen
7 Vase tambin
8 Notas y referencias
9 Enlaces externos
Introduccin[editar]
Los objetos son entidades que tienen un determinado estado, 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).
El comportamiento est definido por los mtodos o mensajes a los que sabe responder
dicho objeto, es decir, qu operaciones se pueden realizar con l.
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 programacin orientado a
objetos.
La POO 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 programacin orientada a objetos, en cambio, primero definen
objetos para luego enviarles mensajes solicitndoles que realicen sus mtodos por s mismos.
Origen[editar]
Los conceptos de la programacin orientada a objetos 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 programacin orientada a objetos se fue convirtiendo en el estilo de programacin
dominante a mediados de los aos ochenta, 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 programacin orientada a objetos 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 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 de Java en la mayora
de navegadores. 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 programacin orientada a objetos 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. 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). Es una
instancia a una clase.
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:
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
Polimorfismo en Programacin
Orientada a Objetos
20 de mayo de 2014
23 Comentarios
Desarrollo, Programacin
que una referencia a una clase (atributo, parmetro o declaracin local o elemento
de un vector) acepta direcciones de objetos de dicha clase y de sus clases
derivadas (hijas, nietas, ).
Nota: Esta es la definicin acadmica que nos ofrece el profesor de la UPM Luis Fernndez, del que fui
alumno en la universidad y en EscuelaIT.
Lo que nunca podr hacer es guardar en esa variable, declarada como tipo Coche,
otra cosa que no sea un objeto de la clase Coche.
//si miCoche fue declarada como tipo Coche, no puedo guardar un
objeto de la clase Moto
miCoche = new Moto("Yamaha YBR");
//la lnea anterior nos dara un error en tiempo de compilacin
habra problema en cambiar el tipo de una variable, asignando cualquier otra cosa,
dado que no se declaran los tipos al crear las variables.
Entendida esa premisa, pensemos en el concepto de funcin y su uso en
lenguajes de tipado esttico.
Nota: A veces, a los lenguajes fuertemente tipados se les llama de "tipado esttico" y a los dbilmente
tipados se les llama "tipado dinmico". Si quieres saber ms sobre lenguajes tipados y no tipados, te
recomiendo ver el #programadorIO tipados Vs no tipados.
A esta funcin, tal como est declarada, no le podremos pasar como parmetros
otra cosa que no sean variables -o literales- con valores de nmero entero. En
caso de pasar otros datos con otros tipos, el compilador te alertar. Osea, si
intentas invocar sumaDosNumeros("algo", "otro"), el compilador no te dejar
compilar el programa porque no ha encontrado los tipos esperados en los
parmetros de la funcin.
Esto mismo de los parmetros en las funciones te ocurre tambin con los atributos
de las clases, cuyos tipos tambin se declaran, con los datos que se insertan en
un array, etc. Como ves, en estos lenguajes como Java el tipado se lleva a todas
partes.
Polimorfismo en objetos
Ahora prate a pensar en clases y objetos. Qudate con esto: Tal como funcionan
los lenguajes fuertemente tipados, una variable siempre deber apuntar a un objeto de
la clase que se indic en el momento de su declaracin. Una funcin cuyo parmetro
se haya declarado de una clase, slo te aceptar recibir objetos de esa clase. Un
array que se ha declarado que es de elementos de una clase determinada, solo
aceptar que rellenemos sus casillas con objetos de esa clase declarada.
Vehiculo[] misVehiculos = new Vehiculo[3];
Por tanto, la "relajacin" del sistema de tipos no es total, sino que tiene que ver
con las clasificaciones de herencia que tengas en tus sistemas de clases. Si
defines un array con casillas de una determinada clase, el compilador tambin te
aceptar que metas en esas casillas objetos de una clase hija de la que fue
declarada. Si declaras que una funcin recibe como parmetros objetos de una
determinada clase, el compilador tambin te aceptar que le enves en la
invocacin objetos de una clase derivada de aquella que fue declarada.
En concreto, en nuestro array de vehculos, gracias al polimorfismo podrs
contener en los elementos del array no solo vehculos genricos, sino tambin
todos los objetos de clases hijas o derivadas de la clase "Vehiculo", osea objetos
de la clase "Coche", "Moto", "Bus" o cualquier hija que se haya definido.
reproducir(Pelicula peliculaParaReproducir)
En fin, esto es lo que significa polimorfismo. A partir de aqu puede haber otra
serie de consideraciones y recomendaciones, as como caractersticas
implementadas en otros lenguajes, pero explicar todo eso no es el objetivo de este
artculo. Esperamos que con lo que has aprendido puedas orientar mejor tus
estudios de Programacin Orientada a Objetos. Si quieres ms informacin sobre
el tema lee el artculo Qu es Programacin Orientada a Objetos, que seguro te
ser de gran utilidad.
Polimorfismo (informtica)
Existen desacuerdos sobre la exactitud de la informacin en este artculo o seccin.
En la pgina de discusin puedes consultar el debate al respecto.
1 Descripcin
2 Clasificacin
3 Ejemplo de polimorfismo
6 Referencias
Descripcin[editar]
En lenguajes basados en clases y con un sistema de tipos de datos fuerte
(independientemente de si la verificacin se realiza en tiempo de compilacin o de ejecucin),
es posible que el nico modo de poder utilizar objetos de manera polimrfica sea que
compartan una raz comn, es decir, una jerarqua de clases, ya que esto proporciona la
compatibilidad de tipos de datos necesaria para que sea posible utilizar una misma variable de
referencia (que podr apuntar a objetos de diversas subclases de dicha jerarqua) para enviar
el mismo mensaje (o un grupo de mensajes) al grupo de objetos que se tratan de manera
polimrfica.
No obstante, algunos lenguajes de programacin (Java, C++) permiten que dos objetos de
distintas jerarquas de clases respondan a los mismos mensajes, a travs de las
denominadas interfaces (esta tcnica se conoce como composicin de objetos). Dos objetos
que implementen la misma interfaz podrn ser tratados de forma idntica, como un mismo tipo
de objeto, el tipo definido por la interfaz. As, distintos objetos podrn intercambiarse en tiempo
de ejecucin siempre que sean del mismo tipo, y adems con dependencias mnimas entre
ellos. Por estos motivos se considera un buen principio de diseo en programacin orientada
a objetos el favorecer la composicin de objetos frente a la herencia de clases. 1
En Java las interfaces se declaran mediante la palabra clave Interface. Estas se utilizan
para lograr la necesaria concordancia de tipos que hace posible el polimorfismo, tambin
como un contrato que debe cumplir cualquier clase que implemente una cierta interfaz, y como
una forma de documentacin para los desarrolladores. A veces, en la literatura especfica
sobre Java se habla de "herencia y polimorfismo de interfaces", lo que no concuerda con los
conceptos de la programacin orientada a objetos porque una clase que implementa una
interfaz slo obtiene su tipo de datos y la obligacin de implementar sus mtodos, no copia
comportamiento ni atributos. Esta terminologa puede llevar a confusin, puesto que en Java a
menudo se utiliza la mal llamada "herencia de interfaces" para dotar a una clase de uno o
varios tipos adicionales, lo que unido a la composicin, evite la necesidad de la herencia
mltiple y favorezca una utilizacin ms amplia del polimorfismo.
No obstante, el uso de una jerarqua de clases como paso previo, es muy habitual incluso en
aquellos lenguajes en los que es posible prescindir de tal jerarqua, ya que, desde una
perspectiva conceptual, se puede decir que al pertenecer los "objetos polimrficos" a
subclases de una misma jerarqua, se asegura la equivalencia semntica de los mensajes que
se invocarn de modo polimrfico. Por esto, en programacin orientada a objetos a veces se
denomina al polimorfismo como "polimorfismo de subclase (o de subtipo)".
En resumen, en la programacin orientada a objetos, la esencia del polimorfismo no atae a la
clase o prototipo de la que provienen los objetos. Aun as, en los lenguajes basados en clases,
es habitual (y en algunos tal vez sea el nico modo) que dichos objetos pertenezcan a
subclases pertenecientes a una misma jerarqua. Entonces, el polimorfismo debe verse como
una forma flexible de usar un grupo de objetos (como si fueran slo uno). Podra decirse
que el polimorfismo en esencia refiere al comportamiento de los objetos, no a su
pertenencia a una jerarqua de clases (o a sus tipos de datos).
Lo anterior se hace an ms evidente en lenguajes de programacin orientada a objetos
basados en prototipos, como Self, en los que las clases no existen.
Adems, es importante remarcar que si un cierto grupo de objetos pueden utilizarse de
manera polimrfica es porque, en ltima instancia, todos ellos saben responder a un cierto
mensaje (o a varios), pero dado que esos mismos objetos generalmente contendrn otros
mtodos (que otros objetos en dicho grupo no contienen), difcilmente se pueda decir lisa y
llanamente que los objetos son polimrficos; lo correcto es decir que esos objetos se pueden
utilizar de modo polimrfico para un cierto conjunto de mensajes.
Un ejemplo. Podemos crear dos clases distintas: Pez y Ave que heredan de
la superclaseAnimal. La clase Animal tiene el mtodo abstracto mover que se implementa de
forma distinta en cada una de las subclases (peces y aves se mueven de forma distinta).
Entonces, un tercer objeto puede enviar el mensaje mover a un grupo de objetos Pezy Avepor
medio de una variable de referencia de clase Animal, haciendo as un uso polimrfico de
dichos objetos respecto del mensaje mover.
El concepto de polimorfismo, desde una perspectiva ms general, se puede aplicar tanto a
funciones como a tipos de datos. As nacen los conceptos de funciones polimrficas ytipos
polimrficos. Las primeras son aquellas funciones que pueden evaluarse o ser aplicadas a
diferentes tipos de datos de forma indistinta; los tipos polimrficos, por su parte, son aquellos
tipos de datos que contienen al menos un elemento cuyo tipo no est especificado.
Clasificacin[editar]
Se puede clasificar el polimorfismo en dos grandes clases:
Ejemplo de polimorfismo[editar]
En el siguiente ejemplo hacemos uso del lenguaje C++ para ilustrar el polimorfismo. Se
observa a la vez el uso de las funciones virtuales puras, como se les conoce en C++, estas
funciones constituyen una interfaz ms consistente cuando se trabaja con una jerarqua de
clases, puesto que hacen posible el enlace durante la ejecucin. Sin embargo como se ver,
para que el polimorfismo funcione no es una condicin obligatoria que todas las funciones en
la clase base sean declaradas como virtuales.
Diagrama de clases UML, que describe grficamente la relacin entre la clase base Figura y sus
posibles clases derivadas, y la entidad que utiliza esta estructura: la Aplicacin, tambin identificado
como objeto Cliente.
#include<iostream>
using namespace std;
class Figura {
private:
float base;
float altura;
public:
void captura();
virtual unsigned float perimetro()=0;
virtual unsigned float area()=0;
};
class Rectangulo: public Figura {
public:
void imprime();
unsigned float perimetro(){return 2*(base+altura);}
unsigned float area(){return base*altura;}
};
class Triangulo: public Figura {
public:
void muestra();
unsigned float perimetro(){return 2*altura+base}
unsigned float area(){return (base*altura)/2;}
};
void Figura::captura()
{
cout << "CALCULO DEL AREA Y PERIMETRO DE UN TRIANGULO ISSCELES Y UN
RECTANGULO:" << endl;
cout << "escribe la altura: ";
cin >> altura;
cout << "escribe la base: ";
cin >> base;
cout << "EL PERIMETRO ES: " << perimetro();
cout << "EL AREA ES: " << area();
getchar();
return 0;
}
Class Restar
Implements IOperar
Private Function Operar(valor1 as Integer, valor2 as Integer) as
Long Implements IOperar.Operar
Return valor1 - valor2
End Function
Function Calcular() as Long
op as New operacion
Return op.Calcular(Me) ' se est llamando a la funcin 'Calcular'
de la clase 'Operacin'
End Function
End Class
Analicemos ahora el cdigo para entender el polimorfismo expuesto en la interfaz: La interfaz
expone un mtodo que puede ser implementado por las diferentes clases, normalmente
relacionadas entre si. Las clases Sumar y Restar implementan la interfaz pero el mtodo de la
interfaz lo declaramos privado para evitar ser accedido libremente y adems tienen un mtodo
llamado Calcularque llama a la clase Operacin donde tenemos otro mtodo con el mismo
nombre. Es esta clase ltima la que realiza el polimorfismo y debe fijarse como es a travs de
una instancia de la interfaz que llama al mtodo operar. La interfaz sabe a qu mtodo de qu
clase llamar desde el momento que asignamos un valor a la variable OP en el
mtodo Calcular de la clase Operacin, que a su vez recibi la referencia del
mtodo Calcular desde la clase que la llama, sea sta cual sea, se identifica a s misma,
mediante la referencia Me This segn el lenguaje empleado. Debe notarse que la instancia
de la interfaz accede a sus mtodos aunque en sus clases se hayan declarado privadas.
Qu es la abstraccin?
La abstraccin, una de las herramientas que ms nos ayuda a la hora de solucionar un problema,
es un mecanismo fundamental para la comprensin de problemas y fenmenos con una gran
cantidad de detalles, su idea principal consiste en manejar un problema, fenmeno, objeto, tema o
idea como un concepto general, sin considerar la gran cantidad de detalles que estos puedan
tener.
De modo general podemos decir que la abstraccin permite establecer un nivel jerrquico en el
estudio de los fenmenos, el cual se establece por niveles sucesivos de detalles. Generalmente, se
sigue un sentido descendente de detalles, desde los niveles ms generales a los niveles ms
concretos.
Por ejemplo: los lenguajes de programacin permiten al programador abstraerse del sin fin de
detalles del lenguaje de la computadora (ceros y unos). Otro ejemplo, la memoria de la
computadora es una estructura unidimensional formada por celdas y sin embargo trabajamos como
si fuera nica.
La abstraccin nos brinda la posibilidad de ir definiendo una serie de refinamientos sucesivos
refirindose a la estrategia que se utiliza para descomponer un problema en subproblemas.
Conforme evoluciona el diseo de software a cada nivel de mdulos se representa un refinamiento
en el nivel de abstraccin. Esto es, incluir detalles que fueron obviados en un nivel superior, en un
nivel ms bajo de la jerarqua.
En resumen la abstraccin oculta la forma en que pensamos al resolver un problema, presentado
solamente la parte general para resolverlo, si pudiramos entrar al cerebro de diferentes personas
al resolver un problema encontraramos muchas maneras para llegar a esa solucin, lo que nos
importa es la solucin sin entrar en tantos detalles.
Abstraccin
El concepto de abstraccin
La complejidad de un procedimiento es aproximadamente
proporcional a su tamao (nmero de lneas) multiplicado por el
nmero de variables que se declaran en l. Esto significa que la
complejidad de un procedimiento puede crecer rpidamente
hasta niveles inmanejables por una persona. A modo de
ejemplo, una solucin para la tarea 4 de este curso consiste en
un procedimiento de unas 50 lneas con 14 variables. Un
procedimiento con el doble de la lneas y el doble de variables
sera 4 veces ms complejo.
De hecho, pocas personas son capaces de manejar la complejidad de un
procedimiento de ms de 200 lneas. Esto se traduce en que a pesar de lograr
escribir el procedimiento, nunca se llega a hacerlo a andar correctamente (no se
logra eliminar todos los errores de programacin) Significa esto que existe un
cota para el tamao de los programas que puede escribir una persona?
Afortunadamente no. En la prctica esta cota existe para el tamao de los
procedimientos, pero no los programas. Se pueden escribir programas de
millones de lneas, en base a funciones o procedimientos de 20 a 50 lneas.
La clave para poder escribir programas complejos es descomponer el problema a
resolver en subproblemas ms pequeos y luego resolverlos en forma
independiente. Esto significa que hay que elegir uno de estos subproblemas y
programar una solucin de l abstrayndose completamente de los detalles sobre
como programar una solucin para el resto de los subproblemas. Luego, se elige
otro subproblema y se resuelve abstrayndose de los detalles de implementacin
del primer subproblema u otros subproblemas an no resueltos. As, hasta
resolver todos los subproblemas.
Diseo:
El proceso de descomposicin de un problema en partes ms simples se
denomina diseo. El diseo comienza con un problema que puede ser complejo
de resolver. Su resultado es un conjunto de subproblemas que constituyen las
partes del problema. Estas partes se pueden resolver independientemente unas de
otras.
Abstraccin:
La abstraccin es una estrategia de resolucin de problemas en la cual el
programador se concentra en resolver una parte del
problema ignorando completamente los detalles sobre cmo se resuelven el resto
de las partes. En este proceso de abstraccin se considera que el resto de las
partes ya han sido resueltas y por lo tanto pueden servir de apoyo para resolver la
parte que recibe la atencin.
Una vez hecha la descomposicin en subproblemas, resulta natural resolver cada
uno de ellos en una funcin o un procedimiento. Como los subproblemas son ms
sencillos que el problema original, su complejidad (dada por su tamao y nmero
de variables) ser inferior a la complejidad del mismo problema resuelto por
medio de un solo procedimiento.
La abstraccin es la estrategia de programacin ms importante en computacin.
Sin abstraccin las personas seran incapaces de abordar los problemas
complejos. La pericia de un programador no est en ser veloz para escribir lneas
de programa, si no que en saber descubrir, en el proceso de diseo, cules son las
partes del problema, y luego resolver cada una de ellas abstrayndose de las
otras.
Un ejemplo de abstraccin es el hecho de que uno pueda conducir un automvil
sin ser un mecnico (lo cual probablemente no era cierto con los primeros
vehculos). Al conducir, uno se abstrae de cmo funciona la combustin en el
motor. Slo se requiere saber cmo se maneja el volante y los pedales, y cuales
son las reglas del trnsito.
Ejemplo:
Supongamos que se necesita un programa que calcule los impuestos que deben
pagar un grupo de personas. El impuesto vara de acuerdo al sueldo que percibe
cada persona. Para ello se establecen varios tramos de sueldo. Estos tramos se
encuentran en un archivo de nombre impuestos.txt. Su contenido podra ser por
ejemplo:
10000
2000
500
30
20
10
Problemas tipo
Aprender a descomponer convenientemente un problema en sus
partes toma bastante tiempo. No elegir adecuadamente las
Introduccin.
Visual Basic es uno de los tantos lenguajes de programacin que podemos encontrar hoy en da.
Dicho lenguaje nace del BASIC (Beginners All-purpose Symbolic Instruction Code) que fue creado en su
versin original en el Dartmouth College, con el propsito de servir a aquellas personas que estaban
interesadas en iniciarse en algn lenguaje de programacin. Luego de sufrir varias modificaciones, en el ao
1978 se estableci el BASIC estndar. La sencillez del lenguaje gan el desprecio de los programadores
avanzados por considerarlo "un lenguaje para principiantes".
Primero fue GW-BASIC, luego se transform en QuickBASIC y actualmente se lo conoce como Visual Basic y
la versin ms reciente es la 6 que se incluye en el paquete Visual Studio 6 de Microsoft. Esta versin
combina la sencillez del BASIC con un poderoso lenguaje de programacin Visual que juntos permiten
desarrollar robustos programas de 32 bits para Windows. Esta fusin de sencillez y la esttica permiti
ampliar mucho ms el monopolio de Microsoft, ya que el lenguaje slo es compatible con Windows,
un sistema operativo de la misma empresa.
Visual Basic ya no es ms "un lenguaje para principiantes" sino que es una perfecta alternativa para los
programadores de cualquier nivel que deseen desarrollar aplicaciones compatibles con Windows.
En este informe explicaremos algunos trminos y/o caractersticas de mismo con la finalidad de aprender mas
sobre este Programa y manejarlo con facilidad
1.
1.
2.
3.
Diseador de entorno de datos: Es posible generar, de manera automtica, conectividad entre controles y
datos mediante la accin de arrastrar y colocar sobre formularios o informes.
Los Objetos Actives son una nueva tecnologa de acceso a datos mediante la accin de arrastrar y
colocar sobre formularios o informes.
Asistente para formularios: Sirve para generar de manera automtica formularios que
administran registros de tablas o consultas pertenecientes a una base de datos, hoja de calculo u objeto
(ADO-ACTIVE DATA OBJECT)
Asistente para barras de herramientas es factible incluir barras de herramientas es factible incluir barra de
herramientas personalizada, donde el usuario selecciona los botones que desea visualizar durante la
ejecucin.
En las aplicaciones HTML: Se combinan instrucciones de Visual Basic con cdigo HTML para controlar
los eventos que se realizan con frecuencia en una pagina web.
La Ventana de Vista de datos proporciona acceso a la estructura de una base de datos. Desde esta
tambin acceso al Diseador de Consultas y diseador de Base de datos para administrar y registros.
Caractersticas de Visual Basic.
Barra de titulo: muestra el nombre del proyecto y del formulario q se est diseando actualmente
Barra de mens: agrupa los mens despegables que contienes todas las operaciones que pueden
llevarse a cabo con Visual Basic 6.0.
Barra de herramientas estndar: contienen los botones que se utilizan con mayor frecuencia cuando se
trabaja con un proyecto. Simplifica la eleccin de opciones de los mens Archivo, Edicin, Ver y Ejecutar;
adems, en el rea derecha presenta la ubicacin (coordenadas) y el tamao del objeto seleccionado
Ventana de formulario: es el rea donde se disea la interfaz grfica, es decir, es donde se inserta
electo grficos, como botones, imgenes, casilla de verificacin, cuadros de listas, etc.
Cuadro de herramientas: presenta todos los controles necesarios para disear una aplicacin, como
cuadros de texto, etiquetas, cuadros de listas, botones de comandos, etc.
Ventana de proyecto: muestra los elementos involucrados en el proyecto, como formularios, mdulos,
controles oxc, etc. Cada elemento puede seleccionarse en forma independiente para su edicin.
Ventana de posicin del formulario: muestra la ubicacin que tendr el formulario en la pantalla, cuando
ejecute la aplicacin. Esta ubicacin puede cambiarse si se hace clic con el botn izquierdo del mouse.
La Ventana propiedades muestra todas las propiedades del control actualmente seleccionado, en este caso
muestra las propiedades del Form1, luego podemos ver que abajo dice "Form1 Form", lo que est en negrita
es el nombre del objeto, y lo que le sigue es el tipo de objeto, en este caso es un Formulario (Form)
Mediante este control podremos realizar tanto la entrada como la salida de datos en nuestras aplicaciones.
No hace falta que indiquemos las coordenadas de la situacin del formulario en pantalla, simplemente
tendremos que marcar sobre el control de la caja de herramientas y dibujarlo con el tamao que queramos en
nuestro formulario
Label
Este control es tambin uno de los ms utilizados, aunque su utilidad queda restringida a la visualizacin de
datos en el mismo, no permitiendo la introduccin de datos por parte del usuario.
CommandButton
Este control es el tpico botn que aparece en todas las aplicaciones y que al hacer click sobre l nos permite
realizar alguna operacin concreta, normalmente Aceptar o Cancelar. Aunque segn el cdigo que le
asociemos podremos realizar las operaciones que queramos.
OptionButton
Este control nos permite elegir una opcin entre varias de las que se nos plantean. Cada opcin ser un
control optionbutton diferente.
Bloquear los Controles
Cuando estn situados los controles en el formulario se pueden bloquear para que no puedan moverse de
forma accidental.
Para esto deberemos pulsar en la barra de herramientas:
Cuando actives este botn y mientras no desbloquees los controles utilizando la misma opcin no se podrn
mover ninguno de los controles del formulario activo.
Sin embargo en si abres otro formulario que no tenga los controles bloqueados si se podrn mover. Si aades
ms controles a un formulario bloqueado estos quedan bloqueados automticamente
Un control Frame proporciona un agrupamiento identificable para controles. Tambin puede utilizar un Frame
para subdividir un formulario funcionalmente por ejemplo, para separar grupos de controles OptionButton.
CHECK BUTTON Y OPTION BUTTON (BOTONES DE ELECCION Y OPCION)
Se obtienen directamente de la caja de herramientas.
OptionButton en un Frame o PictureBox, dibuje en primer lugar el Frame o PictureBox y, a continuacin, dibuje
dentro los controles OptionButton. Todos los controles OptionButton que estn dentro del mismo contenedor
actan como un solo grupo, e independientes de los controles OptionButton de otros grupos distintos.
Aunque puede parecer que los controles OptionButton y CheckBox funcionan de forma similar, hay una
diferencia importante: Cuando un usuario selecciona un OptionButton, los otros controles del mismo grupo
OptionButton dejan de estas disponibles automticamente. Por contraste, se puede seleccionar cualquier
nmero de controles CheckBox.
LIST BOX Y COMBO BOX
Estos dos controles, debido a su similitud, se estudian conjuntamente.
Se obtienen directamente de la caja de herramientas:
Un control ListBox muestra una lista de elementos en la que el usuario puede seleccionar uno o ms. Si el
nmero de elementos supera el nmero que puede mostrarse, se agregar automticamente una barra de
desplazamiento al control ListBox.
Un control ComboBox combina las caractersticas de un control TextBox y un control ListBox. Los usuarios
pueden introducir informacin en la parte del cuadro de texto y seleccionar un elemento en la parte de cuadro
de lista del control. En resumen, un ComboBox es la combinacin de un ListBox, que se comporta como si de
un ListBox se tratase, y de un TextBox, con comportamiento anlogo a un TextBox sencillo, con la
particularidad aqu de que el texto se le puede introducir por teclado, o elegir uno de los que figuran en la
parte ListBox del Combo.
CONTROLES HScrollBar y VScrollBar
Son dos controles similares, para introducir un dato cuasi-analgico en una aplicacin. Se toman directamente
de la caja de herramientas, y tienen un aspecto parecido al de un control de volumen de un equipo de msica.
El HScrollBar est en posicin horizontal, y el VScrollBar en posicin vertical.
Mediante estos controles se pueden introducir datos variando la posicin del cursor.
TIMER TEMPORIZADOR
Este objeto permite establecer temporizaciones. Presenta una novedad respecto a los controles estudiados
hasta ahora. El control Timer solamente se ve durante el tiempo de diseo. En tiempo de ejecucin, el control
permanece invisible.
La temporizacin producida por el Timer es independiente de la velocidad de trabajo del ordenador. (Casi
independiente. El timer no es un reloj exacto, pero se le parece)
Se toma directamente de la caja de herramientas, y tiene el aspecto siguiente:
SHAPE
Se toma directamente de la caja de herramientas:
Shape es un control grfico que se muestra como un rectngulo, un cuadrado, una elipse, un crculo, un
rectngulo redondeado o un cuadrado redondeado.
Utilice controles Shape en tiempo de diseo en lugar o adems de invocar los mtodos Circle y Line en
tiempo de ejecucin. Puede dibujar un control Shape en un contenedor, pero no puede actuar como
contenedor. (Esto quiere decir que un control Shape nunca le servir, por ejemplo, para albergar varios
OptionButton y pretender que sean independientes de otros controles OptionButton que se encuentren fuera
del control Shape.
Este control no tiene Procedimientos. En realidad, solamente sirve para mostrar un determinado grfico,
envolver grficamente a otros controles, pero no tiene ninguna aplicacin en cuanto a programa. Es un
"adorno" para sus aplicaciones.
LINE
Se toma directamente de la caja de herramientas
Line, al igual que Shape, es un control grfico que solamente sirve para poner una lnea en un formulario. Del
mismo modo, no tiene procedimientos, por lo que no sirve para aportar cdigo al programa. Solo sirve para
aportar una caracterstica grfica, es un adorno.
CONTROL GAUGE
Este control presenta una informacin numrica de forma grfica, bien como un display lineal (tpico por
ejemplo en ecualizadores de audio), o como una aguja. No est normalmente en la caja de herramientas, por
lo que hay que traerla desde los Controles Personalizados (Men desplegable de Herramientas) Se denomina
MicroHelp Gauge Control. El archivo que lo contiene se denomina GAUGE16.OCX, 16 bits
Mediante este control, podemos presentar una magnitud numrica de una forma cuasi-analgica. Podramos
decir que es un control similar al HScrollBar, que en vez de meter informacin a la aplicacin, la presenta.
Este control puede servir, por ejemplo, para presentar el tanto por ciento de ejecucin de una tarea, como
elemento tranquilizante. Puede presentar el nivel de un depsito de agua, etc.
Presenta las dos formas siguientes:
En la figura puede verse un Gauge de aguja, uno de barra horizontal y otro de barra vertical. Para mejorar la
presentacin, el Gauge permite poner un grfico como fondo, cambiar el color de la barra, color de fondo, etc.
El control Gauge crea medidores definidos por el usuario, que puede elegir entre los estilos lineales (relleno) o
de aguja.
Nota para la distribucin Cuando cree y distribuya aplicaciones con controles Gauge, tendr que instalar el
archivo apropiado en el subdirectorio SYSTEM de Windows del cliente. El Kit para instalacin que
incluye Visual Basic, le proporciona herramientas para escribir los programas que instalan las aplicaciones
correctamente.
El CommonDialog es un control del que se libran muy pocas aplicaciones. Dada la importancia de este
control, se le dedica un capitulo nico en esta Gua del Estudiante.
CUADRO DE DIALOGO CommonDialog
Normalmente se encuentra en la caja de herramientas
Este control no se presenta en tiempo de diseo mas que con un simple icono:
Seleccionar Fuentes
7.
Eventos: es una accin como hacer clic, doble clic, presionar una tecla, mover el puntero del
mouse, etc. Que el usuario debe realizar para que un objeto ejecute una accin determinada cada control
responde a diferentes eventos, algunos de ellos tienen caractersticas comunes. Los eventos pueden
Visualizarse en la ventana de cdigo.
Mtodos: Son procedimientos definidos en Visual Basic para realizar operaciones especificas sobre los
objetos (Controles o Formularios)
Controles: Son los objetos que conforman la interfaz grafica de un programa;
a travs de ellos, un usuario interacta con la aplicacin. Sus caractersticas
pueden cambiarse por medio de la ventana propiedades
Proyecto:
Propiedades: Son los datos que hacen referencia a un objeto o formulario.
Ejemplo : Color de fondo del formulario, Fuente de texto de un TextBox.
Objetos: Un objeto es una entidad que tiene asociado un conjunto de mtodos, eventos y propiedades.
Hay muchas clases de objetos, y por tanto, puede llegar a haber tantos mtodos, eventos y propiedades
distintas como objetos diferentes.
Ejemplo : Una caja de texto (TextBox) en la cual podemos escribir cualquier lnea es un objeto.
Clases: Una clase no es nada mas que un Objeto, este objeto, tiene propiedades, funciones y
mtodos. Para empezar ahora la creacin de propiedades si se utiliza Property Let y Property Get; la
diferencia es casi nada, inclusive podra decir que una clase en visual basic, es casi lo mismo que un
control, pero ahora nace una nueva pregunta, cuando utilizar un control y cuando utilizar una clase, bueno
la opinin que voy a dar es desde mi perspectiva.
Mdulo: Un proyecto Visual Basic no slo est compuesto de Formularios, sino tambin de lo que se
denominan mdulos.
Un mdulo es un fichero Visual Basic donde escribimos parte del cdigo de nuestro programa, y digo
parte, porque puede haber cdigo en el formulario tambin.
De los fundamentos de programacin explique:
Mdulos de Control:
Mdulos de Formularios:
Mdulos de Clases
Mdulos Estndar
Editor de Cdigos:
Variable: Dim: Al declarar una variable con esta palabra estamos diciendo que la variable sea local al
mbito en que se declara. Puede ser dentro de un procedimiento o dentro de un formulario, de esta forma no
sera accesible desde los dems procedimientos o formularios.
Public: Las variables declaradas sern publicas y podrn estar accesibles desde todos los formularios de la
aplicacin. Para conseguirlo tendremos que declararlas en un mdulo de cdigo, no en la seccin declarations
de cualquier formulario de los que conste la aplicacin. Para crear un mdulo de cdigo en el men principal
de Visual Basic marcamos en INSERT/MODULE y aparecer junto a los dems formularios de la ventana de
proyecto aunque con un icono distinto indicando que se trata de un mdulo de cdigo.
Static: Con esta forma de declarar variables conseguiremos que las variables locales no se creen y se
destruyan al entrar y salir de los procedimientos donde fueron declaradas sino que se mantenga su valor
durante todo el periodo de ejecucin de la aplicacin. De esta forma a entrar en algn procedimiento las
variables recuerdan el valor que tenan cuando se sali de l.
TIPOS DE VARIABLES
TIPO
BOOLEAN
BYTE
INTEGER
LONG
SINGLE
DOUBLE
CURRENCY
STRING
DATE
Constante: Declaracin de constantes que pueden ser usadas en cualquier punto en lugar de su valor,
permitiendo cambiarlo cuando sea necesario, sin tener que cambiarlo en todos los sitios en que se utiliza. La
expresin no puede utilizar llamadas a funciones, pues la constante se calcula en tiempo de compilacin, no
en tiempo de ejecucin.