viernes, 22 de mayo de 2015

RECOMENDACIONES PARA TRABAJAR CON POO

RECOMENDACIONES PARA TRABAJAR CON POO
·         Elegir el entorno de Programación depende principalmente del tipo de aplicación a desarrollar.
·         Si la aplicación involucra operaciones con  base de datos, interfaces web u otras tareas de negocio, la opción ideal es Visual Basic.
·         Si tu aplicación demanda algoritmos rápidos y un diseño natural lógico, a la vez de un mantenimiento de una GUI de primera categoría, entonces el enfoque Visual Basic/COM debería ser aplicado.
·         Si usted es el programador que quiere todo bajo control entonces el enfoque API es la elección.
·         El programador debe darse cuenta que, sin embargo, todo se codifica a mano y puede llevarse más tiempo escribirla que una solución diseñada en el enfoque VB o VB/COM.

LA CARACTERÍSTICA  DE LA API
La característica primaria de la API de Windows son las funciones y los mensajes internos / externos de Windows.
Las funciones Windows son el corazón de las aplicaciones Windows. Hay más de 600 funciones dispuestas a ser llamadas por cualquier lenguaje, como C o Visual Basic.
La utilización de esta serie de librerías de funciones API puede solucionar gran cantidad de problemas en la programación, aunque también no podemos desestimar el gran poder destructivo de las mismas.

LIBRERÍAS DINÁMICAS
Casi todas las APIs de Windows se unen formando librerías de enlace dinámico.
Una librería dinámica ( Dynamic Link Libraries, abreviadamente DLLs ) permite que las aplicaciones Windows compartan código y recursos. Una DLL es actualmente un fichero ejecutable que contiene funciones de Windows que pueden ser utilizadas por todas las aplicaciones.

Si bien en DOS estamos acostumbrados a utilizar librerías de enlace estático, es decir, a la hora de compilar incluyen junto con nuestro código, y de esta manera cuando se ejecuta nuestra aplicación, todas las librerías se cargan en memoria esperando a ser invocadas. Sin embargo, cuando trabajamos con DLLs, el enlace con la aplicación es dinámico en tiempo de ejecución. Una DLL no se incluye dentro de nuestro código, sino que en el momento que realizamos la llamada a la función, la DLL se carga en memoria, se utiliza la API, y a continuación se descarga.

HANDLE
En programación de computadoras, se conoce como handle a un tipo particular de punteros "inteligentes". Los handles son utilizados cuando un programa hace referencia a bloques de memoria u objetos controlados por otros sistemas, tales como una base de datos o un sistema operativo.
Mientras que un puntero literalmente contiene la dirección en la memoria de algún "objeto", un handle es una referencia abstracta y controlada de manera independiente por el sistema, permitiendo que la referencia pueda ser reubicada en la memoria por el sistema sin invalidar el handle - imposible de realizar con punteros - y de ahí el nombre en inglés handle, que significa "tirador" o "manija", en el sentido de que mediante él se controla o maniobra.
Como en otros entornos de escritorio, el API de Windows utiliza handles intensamente para representar objetos en el sistema y provee de un canal de comunicaciones entre el sistema operativo y el espacio de usuario. Por ejemplo, una ventana sobre el entorno de escritorio es representada por un handle de tipo HWND.





miércoles, 20 de mayo de 2015

PROGRAMACIÓN BAJO WINDOWS

PROGRAMACIÓN BAJO WINDOWS

Los desarrolladores de software están en busca de herramientas que hagan más fácil la programación de aplicaciones. La POO, Cliente / Servidor, multimedia y sobre todo internet, la gran revolución en el mundo de las comunicaciones por ordenador, son requisitos indispensables para cualquier lenguaje que aspire ocupar un puesto destacado en el mercado de las herramientas de programación.
Uno de los sistemas operativos más populares actualmente, para el que se realizan un gran número de aplicaciones es Windows.  Las opciones propuestas como herramientas para programar en este sistema son en C o C++ y en Visual Basic (VB).  La meta es expresar la lógica de la aplicación con el equilibrio correcto de conveniencia y flexibilidad.
La manera fundamental de programar en Windows es programar directamente la interfaz del sistema operativo utilizando C o C++.  Esta interfaz en comúnmente conocida como Interfaz de Programación de Aplicación (API).  
LA API es un conjunto de llamadas a funciones que el sistema operativo proporciona para el programador para comunicar los programas en ambiente particular.  
VISUAL BASIC, es una herramienta multipropósito, podemos crear programas utilizando este lenguaje para resolver diferente tipos de problemas. VB pertenece a una categoría de sistemas de desarrollo llamado Desarrollo Rápido de Aplicación (RAD). 
Con VB cualquier programador puede crear una interfaz gráfica de usuario (GUI) elaborada en una fracción del tiempo que esto le llevaría hacerlo en C.  Esto proviene el hecho del paradigma de la programación en VB hace que el programador cree objetos de interfaz de usuario y escriba el código perteneciente a esos objetos. Una fortaleza de VB es la manera intuitiva de diseñar ventanas.  

INTERFAZ GRAFICA, es cualquier medio por el cual uno puede interactuar con una computadora a través de un tipo de software gráfico.

Interfaz Gráfica de Usuario (GUI), es un tipo de interfaz de usuario que utiliza  un conjunto de imágenes y objetos gráficos para representar la información y acciones disponibles en la interfaz. Habitualmente las acciones se realizan mediante manipulación directa para facilitar la interacción del usuario con la computadora.
TIPOS DE INTERFACES GRÁFICAS DE USUARIO
GUI's y Zooming user interface, Los tipos de GUIs que se encuentran en juegos de computadora, y los GUIs avanzados basados en realidad virtual, se usan con frecuencia en tareas de investigación.
Muchos grupos de investigación en Norteamérica y Europa están trabajando actualmente en la interfaz de enfoque del usuario o ZUI (Zooming User Interface), que es un adelanto lógico de las GUI, mezclando 3D con 2D. Podría expresarse como "2 dimensiones y media en objetos vectoriales de una dimensión".

Interfaz de usuario de pantalla táctil (TUI), Algunos GUIs son diseñados para cumplir con los rigurosos requisitos de los mercados verticales. Éstos se conocen como "GUIs de uso específico." Un ejemplo de un GUI de uso específico es la ahora familiar Touchscreen User Interfaz  o Pantalla Táctil (pantalla que al ser tocada efectúa los comandos del ratón en el software). Se encuentra actualmente implementado en muchos restaurantes y en muchas tiendas de autoservicio de todo el mundo, el uso en las GUIs de pantalla táctil ha encabezado una revolución mundial en el uso de las computadoras a través de las industrias alimenticias y de bebidas, y en ventas al por menor. Otros ejemplos de GUIs de uso específico, relacionados con la pantalla táctil son los cajeros automáticos, los kioscos de información y las pantallas de monitoreo y control en los usos industriales, que emplean un Sistema Operativo De Tiempo Real (RTOS). Los teléfonos móviles y los sistemas o consolas de juego también emplean las pantallas táctiles.

Interfaz Natural de Usuario, Las NUI naturales son aquellas en las que se interactúa con un sistema, aplicación, etc., sin utilizar dispositivos de entrada como ratón, teclado, lápiz óptico, etc. En lugar de éstos se utilizan las manos o las yemas de los dedos.







martes, 12 de mayo de 2015

ARREGLOS o ARRAYS


Un arreglo se define como un conjunto de datos de un mismo tipo (numérico o alfanumérico) que se referencia utilizando un nombre común; esto significa que, se les asigna un nombre para identificar así al conjunto total de valores. A cada dato partícipe del arreglo se le denomina elemento.
La numeración de los elementos se denomina índice o subíndice de un array y solo determina la posición del elemento dentro del array y no su valor o contenido; entonces decimos que para acceder a cada elemento de un array se usan índices.

TIPOS DE ARREGLOS

ARREGLO UNIDIMENSIONAL O VECTOR: Es un conjunto de celdas, ordenadas en fila, en las que se depositan datos de mismo tipo. Un  arreglo  unidimensional  es  un  conjunto  de  datos  organizados  en  forma  de  lista.
Los  valores  que  se muestran  en  el  siguiente  ejemplo  pueden  considerarse  como  elementos  de  un  arreglo  unidimensional  o vector:
21, 14, 15, 80, 17, 25, 30
Si  a  este  conjunto  (lista)  de  edades  se  le  coloca  un  nombre  como  EDAD,  se  puede  hacer  referencia  a  cualquier elemento del vector agregando un número encerrado entre paréntesis rectos o corchetes [  ], al que se le denomina índice, el cual indica la posición que ocupa dentro del vector un determinado elemento.

EDAD
21
14
15
80
17
25
30
Índice
0
1
2
3
4
5
6

Otro ejemplo:
Sueldo
150,00
500,00
354,50
500,00
840,00
600,00
K
0
1
2
3
4
5
A este vector le llamaremos SUELDO, y la referencia a sus elementos sería de la siguiente manera:
Sueldo[0] = 150,00  
Sueldo[1] = 500,00
...
...
Sueldo[5] = 600,00
Los índices o subíndices pueden representarse por medio de una variable, número o expresión matemática.  Los subíndices deben ser valores enteros y positivos.
Ejemplo:  
Sueldo[K]
Sueldo[1]
Sueldo[K+1]

Los elementos de un vector pueden ser asignados, ingresados, operados, comparados, modificados, y mostrados, como si fueran variables.
Ejemplo:
S = Sueldo[1] + 500
Sueldo[3] = 500
Si Sueldo[2] > 300,00
     Leer Sueldo[X]
     Escribir Sueldo[X]

DECLARACIÓN DE VECTORES
Para declarar una variable arreglo se define el tipo de dato, el nombre que identifica la variable y el tamaño o número de elementos. El formato para declarar un array unidimensional en lenguaje C es:

tipo nombre[n]; 
donde: n >=  1 

Para acceder a un elemento del array:  nombre[i];  donde: 0 <= i < n   
Por ejemplo, la declaración:  
int A[4];

Define un array de tipo entero de dimensión 4. Y ya podríamos acceder al primer componente del array por medio de: A[0], al segundo elemento por: A[1] y al último elemento por A[3].  
En lenguaje C, un array se utiliza básicamente cuando queremos tener, por ejemplo, una secuencia de números reunidos en una sola variable.

INICIALIZAR  UN ARRAY
Para inicializar un array, podemos hacer lo siguiente:  
for (i = 0; i< 4; i++)
    A[i] = 0;  
Otra manera de inicializar un array es asignándole los valores iniciales entre llaves de la siguiente: 
int A[4] = {0, 1, 2, 3};  
Si no se inicializa explícitamente el array no se puede estar seguro del valor que contienen los elementos del mismo.  Por lo general se inicializa un array sin conocer su contenido asignando valores nulos, para los datos numéricos el 0.

ASIGNACIÓN DE VALORES A UN  ARRAY
Una manera de operar con arrays es asignando valores constantes.
Ejemplo:
int digitos[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9,10};
char letras[5] = "ABCD",
 char letras[5] = {'A', 'B', 'C', 'D', \0};
En este ejemplo se debe incluir explícitamente el carácter nulo.  Un string es un array de caracteres alfanuméricos que finaliza con el carácter nulo, y un carácter es el valor de un byte.  

ARREGLO BIDIMENSIONAL O MATRIZ

NOTAS
Índice j (columnas)
0
1
2
Índice i (filas)
0
6.5
7
8.5
1
10
10
9
2
9
8
9.5

Un array en C puede tener una, dos o más dimensiones. Por ejemplo, un array de dos dimensiones también denominado matriz, es interpretado como un array (unidimensional) de dimensión "f" (número de filas), donde cada componente es un array (unidimensional) de dimensión "c" (número de columnas).
Un array de dos dimensiones, contiene, pues, "f *c " componentes.   

DECLARACIÓN DE UNA MATRIZ
El formato para declarar un array bidimensional:  
int nombre[f][c];  
donde: f, c... >= 1; 
Para acceder a un elemento del array multidimensional: 
nombre[i][j];  donde: 0 <= i < f ;  0 <= j < c; 

Ejemplo:
int valor[3] [4]; 
/* arreglo de 3 filas y 4 columnas */
int valor[3] [4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
int valor[3] [4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};


domingo, 10 de mayo de 2015

CARACTERÍSTICAS DE LA POO

Existe un acuerdo acerca de qué características contempla la "orientación a objetos", las características siguientes son las más importantes: 
ABSTRACCIÓN: denota las características esenciales de un objeto, donde se capturan sus comportamientos.
ENCAPSULAMIENTO: 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.
MODULARIDAD: Se denomina a la propiedad que permite subdividir una aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicación en sí y de las restantes partes. Estos módulos que se puedan compilar por separado, pero que tienen conexiones con otros módulos.
PRINCIPIO DE OCULTACIÓN: 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.
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.
HERENCIA: 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.
HERENCIA SIMPLE: consiste en que una clase hereda únicamente de otra. La relación de herencia hace posible utilizar, desde la instancia, los atributos de la clase padre.
HERENCIA MÚLTIPLE: hace referencia a una característica de la POO en la que una clase puede heredar comportamientos y características de más de una superclase.
 RECOLECCIÓN DE BASURA o garbage collection es la técnica por la cual el entorno de objetos se encarga de destruir automáticamente, 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 asignación o liberación de memoria, ya que el entorno la asignará al crear un nuevo objeto y la liberará cuando nadie lo esté usando.
DEMONIOS: Es un tipo especial de métodos que se activa automáticamente cuando sucede algo especial: la asignación de un valor a una propiedad de un objeto, la lectura de un valor determinado, etc. Los demonios, cuando existen, se diferencian de otros métodos por que no son heredables y porque a veces están ligados a una de las propiedades de un objeto, más que al objeto entero.
SOBRECARGA: es la capacidad de un lenguaje de programación, que permite nombrar con el mismo identificador diferentes variables u operaciones. En POO la sobrecarga se refiere a la posibilidad de tener dos o más funciones con el mismo nombre pero funcionalidad diferente.  
COHESION: significa que cada módulo del sistema se refiera a un único proceso o entidad. A mayor cohesión, mejor: el módulo en cuestión. Se logra cohesión cuando cada módulo (función o procedimiento) realiza una única tarea trabajando sobre una sola estructura de datos.
ACOPLAMIENTO: mide el grado de relacionamiento de un módulo con los demás. A menor acoplamiento, mejor: el módulo en cuestión será más sencillo de programar.
Se logra bajo acoplamiento reduciendo las interacciones entre procedimientos y funciones, reduciendo la cantidad y complejidad de los parámetros.
CONSTRUCTOR: el objetivo es el de inicializar un objeto cuando éste es creado. Asignaremos los valores iniciales así como los procesos que ésta clase deba realizar. Se utiliza para crear tablas de métodos virtuales y poder así desarrollar el polimorfismo, 

DESTRUCTOR: en algunos lenguajes de POO es un método de una clase que se llama justo antes de una instancia de esa clase y se elimina de la memoria.

jueves, 7 de mayo de 2015

PROGRAMACIÓN ORIENTADA A OBJETOS


UN PARADIGMA DE PROGRAMACIÓN es una propuesta tecnológica adoptada por una comunidad de programadores cuyo núcleo central trata de resolver uno o varios problemas claramente delimitados.
La PROGRAMACIÓN ORIENTADA A OBJETOS o la POO es un paradigma de programación que usa los objetos en sus interacciones, para diseñar aplicaciones y programas informáticos. 
Los objetos son entidades que tienen un determinado estado, comportamiento (método) e identidad:
·         El ESTADO DE UN OBJETO es la apariencia que el objeto presenta al usuario, y depende del valor que tenga sus propiedades. Un cambio de estado se logra alterando al menos una de las propiedades del objeto.
·         El COMPORTAMIENTO está definido por los métodos 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 análogo al de identificador de una variable o una constante).

CONCEPTOS FUNDAMENTALES
La programación orientada a objetos es una forma de programar que trata de encontrar una solución a estos problemas. Introduce nuevos conceptos, que superan y amplían conceptos antiguos ya conocidos. Entre ellos destacan los siguientes:
CLASE
·         Definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ella.
OBJETO
·         Entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos), 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.
MÉTODO
·         Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema.
EVENTO
·         Es un suceso en el sistema (tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como evento la reacción que puede desencadenar un objeto; es decir, la acción que genera.
MENSAJE
·         Una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros 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 características predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún método.
ESTADO INTERNO
·         Es una variable que se declara privada, que puede ser únicamente accedida y alterada por un método 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.
INSTANCIACIÓN
·         Una instancia se produce con la creación de un objeto perteneciente a una clase (se dice que se instancia la clase). El objeto que se crea tiene los atributos, propiedades y métodos de la clase a la que pertenece.  Los objetos y sus características se usan en la construcción de programas, ya sea como contenedores de datos o como partes funcionales del programa.