domingo, 15 de julio de 2018

Entorno de Trabajo de Visual Basic

Entorno de Trabajo de Visual Basic 


BARRA DE TITULO:
En la barra de Titulo, aparece el nombre del proyecto y el modo en que se encuentra trabajando Visual Basic en ese momento. Así, si estamos trabajando en Modo de Diseño (o también llamado Tiempo de Diseño) aparecerá la palabra desing en la barra de titulo encerrada entre corchetes

BARRA DE MENUS:
La barra de menús de Visual Basic incluye los nombres de los menús que puede utilizar en la ventana activa. La Barra de Menus no se puede eliminar. En las barras de menús tenemos todas las opciones, utilidades y comandos de los que podemos disponer en Visual Basic: Archivo (File), Edición (Edit), Ver (View), etc.

BARRA DE HERRAMIENTAS:
La barra de herramientas proporciona un acceso rápido a los comandos más utilizados en el entorno de la programación. Haga click en un botón de la barra de herramientas para realizar la acción que representa ese botón.. Al iniciar Visual Basic aparece una barra de herramientas estándar. Nosotros podemos ocultar o mostrar otras barras de herramientas, las cuales ya veremos. Para visualizar la Barra de herramientas estándar debemos ir a la opción Barra de Herramientas (Toolbars) dentro de la opción Ver (View) de la Barra de Menus. Allí podremos encontrar diferentes Barras de herramientas, para que se active una de ellas solo deberás hacer un click sobre el nombre deseado. En este caso haríamos un click sobre Estándar (Standard).

MENUS CONTEXTUALES:
Contienen accesos directos a acciones que se realizan con frecuencia. Para abrir un menú contextual, haga click con el botón secundario del mouse en el objeto que está usando. La lista específica de opciones disponibles en el menú contextual depende de la parte del entorno en la que se hace click con el botón secundario del mouse. Por ejemplo, el menú contextual que aparece cuando hace click con el botón secundario del mouse en el cuadro de herramientas le permite mostrar el cuadro de diálogo Componentes (Components…), ocultar el cuadro de herramientas (Hide), acoplar o desacoplar el cuadro de herramientas (Dockable), o agregar una ficha personalizada al cuadro de herramientas (Add Tab…).

 CUADRO DE HERRAMIENTAS:
En este cuadro encontramos las herramientas que podemos utilizar para diseñar nuestro proyecto. El cuadro de herramientas que presentamos a continuación es el estándar, el cual contiene los elementos básicos. Más adelante veremos como podemos agregar elementos a este cuadro de herramientas. A continuación vamos a nombrar las herramientas básicas, para así poder empezar a crear una pequeña aplicación.

DISEÑADOR DE FORMULARIOS:
Funciona como una ventana en la que se personaliza el diseño de la interfaz de su aplicación. Agregue controles, gráficos e imágenes a un formulario para crear la apariencia que desee. Cada formulario de la aplicación tiene su propia ventana diseñador de formulario.

EXPLORADOR DE PROYECTOS:
Enumera los formularios y módulos del proyecto actual. Un proyecto es la colección de archivos que usa para generar una aplicación. Para poder visualizar el Explorador de Proyectos debemos ir a Ver/Explorador de Proyectos (View/Project Explorer), pulsar la combinación de teclas Ctrl+R o pulsar el icono  en la Barra de Herramientas.


VENTANA PROPIEDADES:
Enumera los valores de las propiedades del control o formulario seleccionado. Una propiedad es una característica de un objeto, como su tamaño, título o color. Para cambiar una propiedad de un objeto cuando estamos en modo diseño, sólo tenemos que seleccionar el objeto, ir a la ventana de propiedades y cambiar la propiedad que nos interese.



Formularios y Controles


Los elementos gráficos que forman parte de las aplicaciones en Visual Basic son controles que están contenidos en formularios (ventanas), y tanto los controles como los formularios tienen propiedades.

Ejemplos de controles son:

Botones, cajas de texto, cajas de selección desplegables, etiquetas, menús, etc.

Los controles y los formularios son entidades genéricas de las que puede haber varios ejemplares concretos en cada programa, estas entidades genéricas son las clases mientras que cada ejemplar de una clase son los objetos.

Cada formulario y cada control tiene un conjunto de propiedades que define su aspecto (color, tamaño, tipo de letra, etc.), como responde a las acciones del usuario (si está activo o no lo está), etc.

Cada objeto tiene un nombre que lo identifica, por medio del cual se hace referencia al mismo, estos nombres son definidos por defecto por Visual Basic en el momento de ser creados, pero no son en principio adecuados y deben ser renombrados por el programador para permitir una mejor identificación de cada uno de ellos. Para establecer el nombre de los objetos existe una convención muy aceptada que consiste en usar tres letras minúsculas que identifican al control, seguidas por otras letras (la primera mayúscula), libremente elegidas por el usuario teniendo en cuenta el uso que se le va a dar al objeto. Algunas abreviaturas usuales para nombrar los controles son:

cmd  > Command button
frm    > Form
lbl     > Label
opt    > Option button
mnu  > Menu
fra     > Frame.

Una vez creado el objeto, se puede acceder a sus propiedades pulsando en el botón derecho del "mouse" y seleccionando la opción "Propiedades" o bien, pulsando la tecla F4.


Metodos y eventos

Métodos

Los métodos son un conjunto de procedimientos que permiten que un objeto ejecute una acción o tarea sobre sí mismo. Por ejemplo, para un formulario tenemos el método Hide que hará que el formulario se oculte; o el método Show que hará que el formulario se vuelva a mostrar.

Eventos

Un evento es una acción que es reconocida por el objeto. Un evento ocurre (se dispara) como
resultado de la interacción del usuario con el objeto. También puede dispararse debido a la ejecución de código (sentencias) o como resultado de la interacción de otro objeto con el objeto de poseedor del
evento. Para un formulario tenemos por ejemplo; el evento Load que se dispara cuando se carga el
formulario; o el evento Click para un botón de comando, se dispara cuando se hace clic sobre él.

Los eventos son acciones que se pueden realizar en cualquier control: click, doble click, movimiento del ratón. A estos eventos se les puede asociar código para que se ejecute al producir el evento.

MouseMove: al mover el raton por encima del control.

Mousedown: al pulsar cualquier boton del raton

Change: al cambiar el contenido del control

Click: al hacer click con el botón izquierdo del ratón sobre el control

Doubleclick: al hacer doble click con el con el botón izquierdo del ratón sobre el control

Getfocus: este evento se activa cuando el control recibe el enfoque, es decir, cuando se activa el control en tiempo de ejecución para introducir datos en él o realizar alguna operación.

Lostfocus: Es el contrario del anterior evento, se activa cuando el control pierde el enfoque, es decir, se pasa a otro control para seguir introduciendo datos.




Visual Basic 6.0

Visual Basic 6.0

¿Qué es visual Basic?

Visual Basic (VB) es un entorno de programación de Microsoft en el que un programador utiliza una interfaz gráfica de usuario ( GUI ) para elegir y modificar secciones preseleccionadas de código escritas en el lenguaje de programación BASIC .

VB o Visual Basic es un lenguaje de programación desarrollado por Microsoft con la ayuda de Alan Cooper y lanzado por primera vez en mayo de 1991. Visual Basic se diseñó pensando en el programador principiante y para los programadores que necesitaban desarrollar elementos visuales en sus programas. En Visual Basic, los usuarios pueden arrastrar y cambiar la posición de los elementos visuales, como ventanas, botones y formularios, y luego crear eventos y desencadenantes para esos elementos.

Visual Basic es, en general, un sistema habilitado para programación de computadoras y entorno de desarrollo integrado (IDE) desarrollado por Microsoft. El objetivo principal de Visual Basic es proporcionar una plataforma sencilla para escribir programas basados principalmente en Windows.

Visual Basic 6.0

 Visual Basic 6.0  es un lenguaje de programación y entorno de desarrollo integrado (IDE). Se deriva del lenguaje de programación BASIC más antiguo, y por lo tanto se considera un lenguaje de programación útil y relativamente fácil de aprender para los principiantes. Visual Basic (VB) está ahora integrado en muchas aplicaciones de software diferentes y también aplicaciones web. Visual Basic 6.0 fue la última edición de Visual Basic, sin embargo, fue seguida por Visual Basic. NET. 

Características

  • Visual Basic 6.0 soporta la abstracción, la encapsulación, el poliformismo y la reutilización del código.
  •             Los objetos de Visual Basic están encapsulados; es decir, contienen su propio código y sus propios datos.
  •             Los objetos de Visual Basic tienen propiedades, métodos y eventos. Las propiedades son los datos que describen un objeto. Los eventos son hechos que pueden ocurrir sobre un objeto (un clic sobre un botón es un evento que produce un mensaje). Un método agrupa el código que se ejecuta en respuesta a un evento.
  •              Al conjunto de propiedades y métodos se le llama interfaz. Además de su interfaz predeterminada, los objetos pueden implementar interfaces adicionales para proporcionar poliformismo. El poliformismo le permite manipular muchos tipos diferentes de objetos sin preocuparse de su tipo.
  •              Las interfaces múltiples son una característica del modelo de objetos componente (COM) y permiten que los programas evolucionen con el tiempo, agregando nueva funcionalidad sin afectar al código existente.
  •              La reutilización del código es la capacidad de trasladar características de un objeto a otro, lo que se logra con alguna forma de herencia. Existen principalmente dos formas de reutilización del código: binario y fuente. La reutilización del código: binario y fuente. La reutilización de código fuente se consigue mediante la creación y uso de un objeto, mientras que la reutilización de código fuente se consigue por herencia, lo que no se permite en Visual Basic. En una jerarquía de clases, la herencia muestra cómo los objetos que se derivan de otros objetos más simples heredan su comportamiento. Por el contrario, los modelos de objetos son jerarquías que describen la contención. Es decir, muestran cómo objetos complejos como una hoja de cálculo, contienen colecciones de otros objetos, como botones o imágenes. Un control activo normalmente opera como un componente software reutilizable, que se incorpora en una aplicación como Microsoft Excel, en una página Web, o en cualquier otra aplicación Visual Basic o visual C++
  • Código nativo: Ediciones profesional y empresarial. Puede compilar un proyecto de Visual Basic con código nativo para una ejecución más rápida. También puede personalizar el código nativo con las nuevas opciones del compilador y depurar el código nativo con el entorno de Visual C++.
  • Creación de sus propios controles Active X: Ediciones profesional y empresarial. Puede combinar los controles existentes o crear el suyo desde cero. Los controles Active X creados con Visual Basic tienen eventos, compatibilidad con enlace a datos, soporte de licencias, páginas de propiedades, características para Internet y mucho más.
  • Múltiples proyectos: Todas las ediciones. Puede abrir múltiples proyectos en la misma instancia de Visual Basic. Se utiliza para depurar los controles Active X.
  • Creación de documentos Active X: Ediciones profesional y empresarial. Los documentos Active X, tan fáciles e intuitivos como diseñar las aplicaciones tradicionales de Visual Basic, despliegan sus aplicaciones de Visual Basic en las ventanas de Internet e Intranet.
  • Asistentes: Todas las ediciones. En la Edición de aprendizaje, el Asistente para aplicaciones es nuevo y se ha mejorado el Asistente para instalar con el fin de permitir la creación de archivos de dependencias para un proyecto estándar. Ediciones profesional  y empresarial. En la edición profesional, son nuevos el Asistente para interfaz de controles Active  X, el Asistente para la migración de documentos Active X, el Asistente para formularios de datos y el Asistente de páginas de propiedades. El asistente para instalar se ha mejorado de modo que sea compatible con la distribución a través de Internet, la instalación de componentes remotos de servidor mediante  COM distribuido (DCOM) y Automatización remota, y la posibilidad de crear archivos de dependencias para proyectos y componentes creados con Visual Basic. La  Edición profesional también incluye la barra de herramientas Asistente y el Administrador de asistentes.
  • Modelo de extensibilidad: Ediciones profesional y empresarial. El nuevo modelo le permite extender por programa el entorno de desarrollo y controlar proyectos, eventos, código y elementos visuales.
  • Declaración, desencadenamiento y tratamiento de sus propios eventos: Todas las ediciones. Los objetos proporcionados por sus componentes pueden desencadenar eventos que otras aplicaciones pueden tratar. Puede tratar los eventos desencadenados por otras aplicaciones, o por sus propios objetos, mediante variables  WithEvents. Los eventos son una alternativa simple a las devoluciones de llamadas asíncronas.
  • Mejoras en el editor de código: Todas las ediciones. Bloque con comentarios y Bloque sin comentarios agregan y quitan el carácter de comentario de cada línea de un bloque de texto seleccionado. Lista de  propiedades y métodos presenta una lista desplegable con las propiedades disponibles para cada control. Información rápida automática muestra la sintaxis de instrucciones y funciones. Los indicadores de margen marcan los puntos de interrupción y la instrucción actual; el indicador  Siguiente instrucción se puede arrastrar. Los nuevos botones Ver procedimiento y Ver  módulo completo facilitan ver tanto el procedimiento seleccionado como el código completo de un módulo. Puede arrastrar y colocar desde la ventana de código a la ventana Inspección. La inspección instantánea en el modo de depuración le permite ver los valores actuales como información sobre herramientas.
  • Transferencia de componentes por Internet: Ediciones profesional y empresarial. Puede utilizar el Asistente para instalar con  el fin de empaquetar sus componentes de forma específica para su despliegue en el Web.
  • Enumeraciones: Todas las ediciones. Con la Edición de aprendizaje, ahora puede definir constantes con nombre relacionadas al agruparlas en un enumerador o Enum. Ediciones profesional y empresarial  Con la edición profesional, es posible incluir tipos enumerados en la biblioteca de tipos de los componentes Active X para su uso por parte de cualquier programador que utilice el componente.
  • Arrastrar y colocar OLE: Todas las ediciones. La mayoría de los controles ahora son compatibles con operaciones de arrastrar y colocar entre aplicaciones OLE; por ejemplo, puede arrastrar el contenido de un documento de Word a un control TextBox.
Ventajas

  1. Tiene acceso a la API multimedia de DirectX (versiones 7 y 8). También está disponible, de forma no oficial, un componente para trabajar con OpenGL 1.1. 
  2. Si bien permite desarrollar grandes y complejas aplicaciones, también provee un entorno adecuado para realizar pequeños prototipos rápidos.
  3. Posee una curva de aprendizaje muy rápida. 
  4. Posibilita añadir soporte para ejecución de scripts, VBScript o JScript, en las aplicaciones mediante Microsoft Script Control. 
  5.  Integra el diseño e implementación de formularios de Windows. 
  6.  Permite usar con facilidad la plataforma de los sistemas Windows, dado que tiene acceso prácticamente total a la API de Windows, incluidas librerías actuales. 
  7.  Es uno de los lenguajes de uso más extendido, por lo que resulta fácil encontrar información, documentación y fuentes para los proyectos. 
  8. Fácilmente extensible mediante librerías DLL y componentes ActiveX de otros lenguajes. 
  9. Existe una versión, VBA integrada en las aplicaciones de Micro Office, tanto Windows como Mac, que permite programar macros para extender y automatizar funcionalidades en documentos, hojas de cálculo y bases de datos 
Requisitos de instalación 

Personal
  • PC multimedia con un procesador 486DX/66-MHz o superior (procesador Pentium o superior recomendado)
  • Microsoft Windows 95 o posterior sistema operativo o del sistema operativo versión 4.0 con Service Pack 3 o posterior (se incluye el Service Pack 3) de Windows NT
  • 16 MB de RAM para Windows 95; 24 MB para Windows NT 4.0
  • Microsoft Internet Explorer 4.01 Service Pack 1 (incluido)
  • Espacio de disco duro:
  • Instalación típica: 52 MB
  • Instalación máxima: 65 MB
  • Espacio adicional en el disco duro puede ser necesario para los productos siguientes:
  • Internet Explorer: 43 MB típica, 59 MB máximo
  • Microsoft Developer Network (MSDN): 57 MB típica, 493 MB máximo
  • Aprender Visual Basic ahora: 16 MB incluyendo laboratorios
  • Unidad de CD-ROM
  • Monitor VGA o resolución superior; se recomienda Super VGA
  • Microsoft mouse o dispositivo señalador compatible


Professional
  • PC con procesador 486DX/66-MHz o superior (procesador Pentium o superior recomendado)
  • Microsoft Windows 95 o posterior sistema operativo o del sistema operativo versión 4.0 con Service Pack 3 o posterior (se incluye el Service Pack 3) de Windows NT
  • 16 MB de RAM para Windows 95 (se recomienda 32 MB); 24 MB para Windows NT 4.0 (se recomiendan 32 MB)
  • Microsoft Internet Explorer 4.01 Service Pack 1 (incluido)
  • Espacio de disco duro:
  • Instalación típica: 76 MB
  • Instalación máxima: 94 MB
  • Espacio adicional en el disco duro puede ser necesario para los productos siguientes:
  • Internet Explorer: 43 MB típica, 59 MB máximo
  • MSDN: 57 MB típica, 493 MB máximo
  • Windows NT Option Pack: 20 MB para Windows 95; 200 MB para Windows NT 4.0
  • Unidad de CD-ROM
  • Monitor VGA o resolución superior; se recomienda Super VGA
  • Microsoft mouse o dispositivo señalador compatible


Enterprise Edition
  • PC con procesador Pentium, Pentium a 90 o procesador superior recomendado
  • Microsoft Windows 95 o posterior sistema operativo o del sistema operativo versión 4.0 con Service Pack 3 o posterior (se incluye el Service Pack 3) de Windows NT
  • 24 MB de RAM para Windows 95 (se recomienda 32 MB); 24 MB para Windows NT 4.0 (se recomiendan 32 MB)
  • Microsoft Internet Explorer 4.01 Service Pack 1 (incluido)
  • Espacio de disco duro:
  • Instalación típica: 116 MB
  • Instalación máxima: 135 MB
  • Espacio adicional en el disco duro puede ser necesario para los productos siguientes:
  • Internet Explorer: 43 MB típica, 59 MB máximo
  • MSDN: 57 MB típica, 493 MB máximo
  • Windows NT Option Pack: 20 MB para Windows 95; 200 MB para Windows NT 4.0
  • Microsoft SQL Server 6.5, se ejecutan en Windows NT 4.0 sólo y se requieren el siguiente espacio adicional en el disco duro: SQL Server: 80 MB típica, 95 MB máximo
  • Unidad de CD-ROM
  • Monitor VGA o resolución superior; se recomienda Super VGA





Lenguajes Orientados a Objetos

Lenguajes Orientados a Objetos

Los lenguajes de programación orientados a objetos tratan a los programas como conjuntos de objetos que se ayudan entre ellos para realizar acciones. Entendiendo como objeto al entidades que contienen datos. Permitiendo que los programas sean más fáciles de escribir, mantener y reutilizar.

Lenguajes orientados a objetos:
  • ActionScript
  • Ada
  • C++
  • C#
  • VB.NET
  • Visual FoxPro
  • Clarion
  • Delphi
  • Harbour
  • Eiffel
  • Java
  • JavaScript
  • Lexico (en castellano)
  • Objective-C
  • Ocaml
  • Oz
  • Perl (soporta herencia múltiple)
  • PHP (en su versión 5)
  • Python
  • Ruby
  • Smalltalk
  • Magik (SmallWorld)


Caracteristicas Asociadas a la Programación Orientada a Objetos

Abstracción:

 Abstracción es el proceso de implementación de las características esenciales y eliminación de información innecesaria. La abstracción es una característica importante en la que el programador oculta los detalles irrelevantes que, a su vez, reducirán el tamaño del código y la complejidad del código. La abstracción hace que las cosas sean más generales, simples y abstractas.

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 cómo se implementan estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos y cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción.




Encapsulamiento:

Es la cualidad de unificar los datos y la forma de manipularlos, de esta forma podemos ocultar el funcionamiento de una clase y exponer solo los datos que manipula (mediante propiedades), así como proveer de medios para poder manipular dichos datos (mediante métodos). De esta forma, solo exponemos al mundo exterior la información y la forma de manipularla, ocultando los detalles usados para manejar esos datos y, lo que es más importante, evitando que nadie manipule, de forma inapropiada, esta información.

Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.



Modularidad:

Es la propiedad que permite tener independencia entre las diferentes partes de un sistema. La modularidad consiste en dividir un programa en módulos o partes, que pueden ser compilados separadamente, pero que tienen conexiones con otros módulos.

Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una interfaz a otros objetos que específica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos.


Polimorfismo:

Es una característica que permite utilizar una interfaz para una clase general de acciones. La acción específica está determinada por la naturaleza exacta de la situación. En general, el polimorfismo significa "una interfaz, múltiples métodos". Esto significa que es posible diseñar una interfaz genérica para un grupo de actividades relacionadas. Esto ayuda a reducir la complejidad al permitir que se use la misma interfaz para especificar una clase de acción general. 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 invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o asignación dinámica. 

Ocultamiento:

Esta característica, tiene que ver con la capacidad que tiene cada objeto de ocultar algunos métodos a otros objetos y mantener la privacidad de estos, permitiendo ver y obtener los resultados de estos, sólo a otros objetos que los requieran.




El Modelo Orientado a Objetos

El Modelo Orientado a Objetos

El Modelo de Datos Orientado a Objetos (OODM) es la base del Modelo de Base de Datos Orientada a Objetos (OODBM) y el cual es manejado por un Sistema de Administración de Bases de Datos Orientado a Objetos (OODBMS). Aunque todos los autores coinciden en considerar como idea fundamental del paradigma orientado a objetos la integración de datos y procesos, no existe un modelo estándar como en el caso del modelo relacional.

 En la orientación a objetos, un sistema se concibe como un conjunto de objetos que se comunican entre sí mediante mensajes. Tradicionalmente los datos y procedimientos  se almacenan por separado, los datos y sus relaciones en la Base de Datos, y los procedimientos en los programas de aplicación; la orientación a objetos, sin embargo, combina procedimientos de una entidad con sus datos, es decir,  el comportamiento es parte de la entidad en sí, por lo que en cualquier lugar en que se utilice, se comporta de un modo predecible y conocido.


Para entender este modelo vamos a revisar 4 conceptos básicos:

Objeto:

Es una entidad que almacena atributos, variables o propiedades; que pueden realizar acciones, que se denominan métodos, servicios, funciones, procedimientos u operaciones.

Los objetos son las entidades básicas en tiempo de ejecución en un sistema orientado a objetos. El problema de programación se analiza en términos de los objetos y la naturaleza de la comunicación entre ellos. Cuando se ejecuta un programa, los objetos interactúan entre sí enviando mensajes. Los diferentes objetos también pueden interactuar entre sí sin conocer los detalles de sus datos o códigos.
Un objeto es una instancia de una clase. Una clase debe ser instanciada en un objeto antes de que pueda ser utilizada en el software. Más de una instancia de la misma clase puede existir en cualquier momento.



Los objetos solo dan información sobre sí mismos a través de los métodos que poseen para compartir su información; y aunque ocultan la implementación de sus procedimientos se les puede pedir que los ejecuten. De esta manera, tanto usuarios como aplicaciones no pueden ver que hay dentro de los métodos, solo pueden ver los resultados de ejecutarlos, lo que también se conoce como ocultación de información o encapsulamiento. Para pedir datos a un objeto o que éste realice una acción, se le debe enviar un mensaje.

Es decir, un programa orientado a objetos es un conjunto de objetos que tienen atributos y métodos y que interactúan entre si enviándose mensajes.

Clases:

Una clase es simplemente una representación de un tipo de objeto. Es el plan, o plan, o plantilla, que describe los detalles de un objeto. Una clase es el plano a partir del cual se crean los objetos individuales. La clase se compone de tres cosas: un nombre, atributos y operaciones.


Una clase es una colección de objetos de un tipo similar. Una vez que se define una clase, se puede crear cualquier cantidad de objetos que pertenezcan a esa clase. Una clase es un plano, o prototipo, que define las variables y los métodos comunes a todos los objetos de cierto tipo.

Herencia:

Es la cualidad de poder crear nuevas clases (o tipos) basadas en otras clases, de forma que la nueva clase obtenga todas las características de la clase que ha heredado, tanto los datos que contiene como la forma de manipularlos, pudiendo añadir nuevas características e incluso cambiar el comportamiento de algunas de las incluidas en la clase base (siempre que así se haya previsto). 



Las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. 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 enrejados que reflejan un comportamiento común. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple.

Paso de Mensajes:

Aunque los objetos se han de diferenciar claramente en una aplicación, estos se han de poder comunicar para poder trabajar en conjunto y construir así aplicaciones.

Esto se hace posible a través de lo que se denomina paso de mensajes. Cuando un objeto quiere comunicarse con otro lo que hace es enviarle un mensaje con los datos que desea transmitir.
En el simil del coche, al apretar el claxon, el objeto claxon envía un mensaje a la bocina indicándole que haga sonar cierto sonido.


La potencia de este sistema radica en que el objeto emisor no necesita saber la forma en que el objeto receptor va a realizar la acción. Simplemente este la ejecuta y el emisor se desentiende del como; de hecho ni le importa, solo tiene conocimiento de que se está realizando.
Para que todo esto sea posible es necesario una buena programación de los eventos y de los métodos de cada objeto.

El conjunto de mensajes a los que un objeto puede responder se denomina protocolo del objeto.



Programación orientada a objetos

Programación orientada a objetos


La programación orientada a objetos (OOP) es un modelo de programación de software construido alrededor de objetos. Este modelo divide los datos en objetos (campos de datos) y describe el contenido y el comportamiento de los objetos a través de la declaración de clases (métodos).

Es un modelo de lenguaje de programación organizado en torno a objetos en lugar de "acciones" y datos en lugar de lógica. Históricamente, un programa ha sido visto como un procedimiento lógico que toma datos de entrada, los procesa y produce datos de salida.


Historia de la programación orientada a objetos



Tecnología orientada a objetos 


La tecnología orientada a objetos se define como una metodología de diseño de software que modela las características de objetos reales o abstractos por medio del uso de clases y objetos.  La tecnología de Objetos data de los años 60, cuando surge la necesidad de describir y simular fenómenos como sistemas de comunicación, sistemas administrativos, etc. En 1961 Krystin Nygaard SIMULA I. Los usuarios descubrieron que también proveía de nuevas y poderosas facilidades cuando era usado para otros propósitos, aparte de la simulación, tales como el prototipeo y aplicaciones. En 1967 se creó SIMULA 67, y en él se implementaron por primera vez los conceptos de clase, objeto y herencia, que en adelante serían elementos centrales en los Lenguajes Orientados A Objetos. En 1970 se crea el SMALLTALK, éste fue el mayor desarrollo de los lenguajes orientado a objetos.1980 evoluciona el SMALLTALK y se crea ADA, lo que hizo crecer el interés en el Diseño Orientado a Objetos.



Ventajas de los leguajes orientados a objetos 


Los lenguajes orientados a objetos presentan las siguientes ventajas:

1.  Mejora de la eficiencia y la productividad del desarrollo de software:
OOP es un modular, ya que da una partición de obligaciones en programas de desarrollo basado en objetos. Es adicionalmente extensible, ya que los elementos pueden estirarse para incorporar nuevos rasgos, atributos y prácticas. Los objetos también pueden reutilizarse dentro de una aplicación cruzada. Como resultado de estos tres elementos (reutilización, extensibilidad y modularidad), la programación orientada a objetos proporciona una mayor eficacia de desarrollo de software y productividad a través de estrategias de programación basadas en el sistema tradicional.

2.  Mantenimiento de software de programación mejorado:
Para los detalles mencionados anteriormente, el software de programación orientado a objetos es, además, menos exigente para mantenerse al día. Como el esquema de diseño es modular, parte de la estructura del sistema se puede actualizar y actualizar si surge una incidencia de problemas privados de la necesidad de implementar mejoras sustanciales de la escala.

3.  Mejora y desarrollo más rápidos:
La reutilización permite un crecimiento y desarrollo más rápidos. Los lenguajes de programación de computadora orientados a objetos acompañan a las bibliotecas ricas de los objetos, así como el código creado en medio de proyectos, es adicionalmente reutilizable en los planes del futuro.

4.  Menor costo de avance y desarrollo:
La reutilización del software de programación también reduce el valor de la mejora y el desarrollo. Comúnmente, se hace un mayor esfuerzo en el diseño y análisis orientado a objetos, lo que reduce el costo general de desarrollo y mejora.

5.  Software de programación de mayor calidad:
La mejora y el desarrollo más rápidos del software de programación, así como el menor costo de avance y desarrollo, permiten que se utilicen tiempo y recursos adicionales como parte de la confirmación del software. Aunque la calidad depende del conocimiento y la experiencia de los grupos, la programación orientada a objetos tiende a producir un software de programación de alta calidad.

6.  Reciclaje y reutilización del código: 
Los objetos que se hacen para los proyectos y programas orientados a objetos pueden ser reutilizados sin mucha dificultad en diferentes proyectos y programas.

7.  Ventajas del diseño:
Los extensos programas y proyectos son difíciles de escribir y componer. Los programas orientados a objetos limitan a los creadores a experimentar una etapa de planificación significativa, que mejora los diseños mejorados con menos defectos. Además, tan pronto como un programa alcanza un tamaño específico, los programas orientados a objetos son menos exigentes de programar en comparación con los no orientados a objetos.

8.  Mantenimiento del software:
Los programas orientados a objetos no son prescindibles. El código de herencia se debe administrar todos los días, ya sea para mejorarlo (para otra versión de un software existente de programación) y estar preparado para trabajar con PC más actualizadas y software de programación. Un Programa Orientado a Objetos es sustancialmente menos exigente para cambiar y mantenerse al día en comparación con un Programa no Orientado a Objetos. Por lo tanto, a pesar del hecho de que se ha gastado una gran cantidad de trabajo antes de que se forme el programa, se espera que haya menos trabajo para mantenerlo después de un tiempo. 


La programación

La programación

Programación es la acción y efecto de programar. Este verbo tiene varios usos: se refiere a idear y ordenar las acciones que se realizarán en el marco de un proyecto; al anuncio de las partes que componen un acto o espectáculo; a la preparación de máquinas para cumplan con una cierta tarea en un momento determinado; a la elaboración de programas para la resolución de problemas mediante computadoras; y a la preparación de los datos necesarios para obtener una solución de un problema.


En la actualidad, la noción de programación se encuentra muy asociada a la programación en informática. Este es el proceso por el cual un programador escribe, en un lenguaje de programación, el código fuente de un software. Este código le indicará al programa informático qué tiene que hacer y cómo realizarlo.

Historia 

A pesar de que muchos usuarios pueden creer que la programación y el desarrollo son ciencias nuevas, lo cierto es que no es así. De hecho, el algoritmo considerado primer programa fue creado entre 1842 y 1843 por Ada Lovelace. Años después, el departamento de defensa estadounidense nombró un lenguaje de programación, Ada, en su honor. Pero quien realmente influyó en el diseño de los primeros computadores fue Charles Babbage (1793-1871). Con la colaboración de la hija de Lord Byron, Lady Ada Countess of Lovelace (1815-1852), a la que debe su nombre el lenguaje ADA creado por el DoD (Departamento de defensa de Estados Unidos) en los años 70. Babbage diseñó y construyó la "máquina diferencial" para el cálculo de polinomios. Más tarde diseñó la "máquina analítica" de propósito general, capaz de resolver cualquier operación matemática. Murió sin poder terminarla, debido al escepticismo de sus patrocinadores y a que la tecnología de la época no era lo suficientemente avanzada. Un equipo del Museo de las Ciencias de Londres, en 1991, consiguió construir la máquina analítica de Babbage, totalmente funcional, siguiendo sus dibujos y especificaciones.

Un hito importante en la historia de la informática fueron las tarjetas perforadas como medio para "alimentar" los computadores. Lady Ada Lovelace propuso la utilización de las tarjetas perforadas en la máquina de Babbage. Un asistente de la oficina del censo llamado Herman Hollerit (1860-1929) desarrolló un sistema para automatizar la pesada tarea del censo. Mediante tarjetas perforadas y un sistema de circuitos eléctricos, capaz de leer unas 60 tarjetas por minuto realizó el censo de 1890 en 3 años ahorrando tiempo y dinero. Más tarde fundó la Tabulating Machine Company y en 1924 tras alguna que otra fusión nació la Internacional Bussines Machines, IBM. Maquina analítica de Babbage
 Alan Mathison Turing (1912-1954) diseñó una calculadora universal para resolver cualquier problema, la "máquina de Turing". Tuvo mucha influencia en el desarrollo de la lógica matemática. En 1937 hizo una de sus primeras contribuciones a la lógica matemática y en 1943 plasmó sus ideas en una computadora que utilizaba tubos de vacío. George Boole (1815-1864) también contribuyó al algebra binaria y a los sistemas de circuitos de computadora, de hecho, en su honor fue bautizada el álgebra booleana.

La primera computadora digital electrónica patentada fue obra de John Vincent Atanasoff (1903-1995). Conocedor de las inventos de Pascal y Babbage, y ayudado por Clifford Berry (1918-1963), construyó el Atanasoff Berry Computer (ABC). El ABC se desarrolló entre 1937 y 1942. Consistía en una calculadora electrónica que utilizaba tubos de vacío y estaba basada en el sistema binario (sistema numérico en el que se combinan los valores verdadero y falso, o 0 y 1).

Junto a John Presper Eckert (1919-1995), Mauchly desarrolló una computadora electrónica completamente operacional a gran escala, para acelerar los complicados cálculos del proyecto mi-litar de la universidad Moore. Se terminó en 1946 y se llamó Electronic Numerical Integrator And Computer (ENIAC). Su capacidad de cálculo era de 5.000 operaciones por segundo, aunque tenía que programarse manualmente conectándola a 3 tableros que contenían más de 6000 interruptores. Cargar un programa podía ser una tarea de varios días. El calor disipado por semejante monstruo debía ser importante, y se necesitaba una instalación de aire acondicionado. 

En cuanto a la aparición de los lenguajes de programación, el archiconocido COBOL, que tantos problemas causó con el "efecto 2000", fue el primer lenguaje en el que no había que programar directamente en código binario, y fue Grace Murray Hoper en 1952, una oficial de la Marina de Estados Unidos desarrolló el primer compilador, un programa que puede traducir enunciados parecidos al inglés en un código binario comprensible para la maquina llamado COBOL (COmmon Business- Oriented Languaje). 

 Primera Generación: Al desarrollarse las primeras computadoras electrónicas, se vio la necesidad de programarlas, es decir, de almacenar en memoria la información sobre la tarea que iban a ejecutar. Las primeras se usaban como calculadoras simples; se les indicaban los pasos de cálculo, uno por uno. John Von Neumann desarrolló el modelo que lleva su nombre, para describir este concepto de "programa almacenado". En este modelo, se tiene una abstracción de la memoria como un conjunto de celdas, que almacenan simplemente números. Estos números pueden re-presentar dos cosas: los datos, sobre los que va a trabajar el programa; o bien, el programa en sí. Se tenía el problema de representar las acciones que iba a realizar la computadora, y que la memoria, al estar compuesta por switches correspondientes al concepto de bit, solamente nos permitía almacenar números binarios. La solución que se tomó fue la siguiente: a cada acción que sea capaz de realizar nuestra computadora, asociarle un número, que será su código de operación (opcode) . Por ejemplo, una calculadora programable simple podría asignar los opcodes: 1 = SUMA, 2 = RESTA, 3 = MULTIPLICA, 4 = DIVIDE.

La descripción y uso de los opcodes es lo que llamamos lenguaje de máquina. Es decir, la lista de códigos que la máquina va a interpretar como instrucciones, describe las capacidades de programación que tenemos de ella; es el lenguaje más primitivo, depende directamente del hardware, y requiere del programador que conozca el funcionamiento de la máquina al más bajo nivel. Los lenguajes más primitivos fueron los lenguajes de máquina. Esto, ya que el hardware se desarrolló antes del software, y además cualquier software finalmente tiene que expresarse en el lenguaje que maneja el hardware. La programación en esos momentos era sumamente tediosa, pues el programador tenía que "bajarse" al nivel de la máquina y decirle, paso a pasito, cada punto de la tarea que tenía que realizar. Además, debía expresarlo en forma numérica; y por supuesto, este proceso era propenso a errores, con lo que la productividad del programador era muy limitada. Sin embargo, hay que recordar que en estos momentos, simplemente aún no existía alternativa.

Segunda Generación: El primer gran avance que se dio fue la abstracción dada por el Lenguaje Ensamblador, y con él, el nacimiento de las primeras herramientas automáticas para generar el código máquina. Esto redujo los errores triviales, como podía ser el número que correspondía a una operación, que son sumamente engorrosos y difíciles de detectar, pero fáciles de cometer. Sin embargo, aún aquí es fácil para el programador perderse y cometer errores de lógica, pues debe bajar al nivel de la forma en que trabaja el CPU, y entender bien todo lo que sucede dentro de él.

Tercera Generación: Con el desarrollo en los 50s y 60s de algoritmos de más elevado nivel, y el aumento de poder del hardware, empezaron a entrar al uso de computadoras científicos de otras ramas; ellos conocían mucho de Física, Química y otras ramas similares, pero no de Computación, y por supuesto, les era sumamente complicado trabajar con lenguaje Ensamblador en vez de fórmulas. Así, nació el concepto de Lenguaje de Alto Nivel, con el primer compilador de FORTRAN (Formula TRANslation), que, como su nombre indica, inició como un "simple" esfuerzo de traducir un lenguaje de fórmulas, al lenguaje ensamblador y por consiguiente al lenguaje de máquina. A partir de FORTRAN, se han desarrollado innumerables lenguajes, que siguen el mismo concepto: buscar la mayor abstracción posible, y facilitar la vida al programador, aumentando la productividad, encargándose los compiladores o intérpretes de traducir el lenguaje de alto nivel, al lenguaje de computadora. Hay que notar la existencia de lenguajes que combinan características de los de alto nivel y los de bajo nivel (es decir, Ensamblador). Mi ejemplo favorito es C: contiene estructuras de programación de alto nivel, y la facilidad de usar librerías que también son características de alto nivel; sin embargo, fue diseñado con muy pocas instrucciones, las cuales son sumamente sencillas, fáciles de traducir al lenguaje de la máquina; y requiere de un entendimiento apropiado de cómo funciona la máquina, el uso de la memoria, etcétera. Por ello, muchas personas consideramos a lenguajes como C (que fue diseñado para hacer sistemas operativos), lenguajes de nivel medio.

Cuarta Generación: Los idiomas de la cuarta generación parecen según las instrucciones a las de la tercera generación. Lo nuevo de estos lenguajes son conceptos como clases, objetos y eventos que permiten soluciones más fáciles y lógicos. Lenguajes como C++, java y C# se llaman lenguajes orientadas al objeto. Los idiomas modernos, tal como C++ y Java, no sólo permite las abstracciones, pero permite la implementación impuesta de restricciones en abstracciones.

Quinta Generación: Como la quinta generación están conocidos los Lenguajes de inteligencia artificial. Han sido muy valorados al principio de las noventa  mientras ahora el desarrollo de software toma otros caminos. Lo que veremos en el futuro es menos dependencia en el idioma, y más en el modelando herramientas, tal como el Unificado Modelando el Idioma (UML). La salida del modelando herramienta producirá mucho de nuestro código para nosotros; en el muy menos, producirá arquitectónico y los modelos del diseño y la estructura de nuestro código. Esto producirá un diseño (y posiblemente código) eso puede ser validado por el cliente antes de completar la implementación y probar. Cuando los problemas diarios que resolvemos llegan a ser más grande, nosotros tenemos cada vez menos tiempo "volver a hacer" el código. Los días de decir, "acabamos de escribir una versión de Beta y el cliente entonces pueden decir nosotros lo que ellos quieren realmente," son pasados. Las organizaciones que fallan de obtener completa y corrige los requisitos de cliente antes de escribir el código saldrá del negocio. ¿Por qué? Porque toma demasiado largo, y cuesta también mucho, para escribir código dos o más vez. Las organizaciones que tienen un compromiso a la comprobación y la validación antes de producir código prosperarán  los otros fallarán.