jueves, 17 de enero de 2013

Programación orientada a objetos POO


El paradigma de la programación orienta a objetos, a incorporado nuevas estrategias de desarrollo en la industria de la ingeniera del software. Paradigma, Modo de Pensar expresado en breve. 

Ejemplos de paradigma

  • Metáfora
  • Esquema-Mental
  • Visión del Mundo -> ¿Cómo pensaba la gente que era la Tierra antes de 1492?
Paradigma de Programación:
  •  ¿Estilo de Programación? 
  • Manera de Visualizar y Resolver Problemas de Programación
Primeros Lenguajes Orientados a Objetos
  • Simula: Dahl & Nygaard, Noruega, 1967
  • Smalltalk: Alan Kay, Dynabook, Xerox PARC, USA, 1980
Conceptos Básicos de la POO

a) Clase

En la programación orientada a objetos, las clases proporcionan una especie de plantilla para crear objetos. Se puede considerar que una clase es un tipo de objeto; se usa una clase para crear un objeto y luego se puede llamar a los métodos del objeto desde este código. Ejemplo: A continuación presentamos la estructura de la clase Alumno, usando la notación de UML.
b) Objeto
En java, a un Objeto se le llama instancia de una clase. Para crear un objeto, se llama al constructor de una clase, que tiene el mismo nombre que la clase. Ejemplo: En este ejemplo podemos observar el uso de la clase String.





c) Mensaje: Solicitud que recibe un objeto de efectuar una tarea

d) Método: Algoritmo o subprograma que efectúa la tarea solicitada por medio de un mensaje.


e) Abstracción; Una clase es una abstracción o una entidad esencial del problema ó la solución. Es decir La abstracción es el proceso en el cual separamos las propiedades más importantes de un objeto, de las que no lo son. Es decir, por medio de la abstracción definimos las características esenciales de un objeto del mundo real, los atributos y comportamientos que lo definen como tal, para después modelarlo en un objeto de software.  





f) Herencia de clases; Permite reusar código-conocimiento-funcionalidad en una clase-padre que hereda sus atributos y métodos a sus clases-hijas, subclases o clases-tipos derivados Ejemplos:


g) Polimorfismo; El polimorfismo es la propiedad por la cual una entidad puede tomar diferentes formas. Generalmente está entidad es una clase, y la forma en que se consigue que tome diferentes formas es por medio de nombrar a los métodos de dicha clase con un mismo nombre pero con diferentes implementaciones.

h) Encapsulamiento; También referido como ocultación de la información, el encapsulamiento es la propiedad de la orientación a objetos que nos permite asegurar que la información de un objeto le es desconocida a los demás objetos en la aplicación.



Vistas: La modularidad y ocultación de datos que permite deslindar los cambios de la representación interna del mundo exterior se basa en dos vistas para una clase-objeto. La visibilidad que se manejan son:

  • Pública (public)
  • Privada (private)
  • Protegida (protected)

miércoles, 16 de enero de 2013

Diseño y programación de la ventana de Mantenimiento

Vamos a realizar un siguiente Ejemplo sobre mantenimiento de un tabla de nuestra base de datos, para el ejemplo he tomado una BD cualquiera (lo importante en este momento es saber como programar la ventana de mantenimiento) mi tabla se llama "Cliente" y haremos la siguiente ventana en Power Builder.



Usamos los siguientes controles:

Tab Control: Contenedor de paginas, ayuda al espacio en la ventana. 

CommandButton: Botones de acción para nuestros eventos: Nuevo, Modificar, Eliminar, Buscar, Grabar, Cancelar.

Data Window Control: La data que enlazaremos al objeto Datawindow para manipular los datos en inserción, consultas.

SingleLineEdit: Caja de texto para hacer la consulta a nuestro listado.

StaticText: Etiqueta de texto.


Cambiamos los siguientes controles:

Control
Propiedad
Valor
Tab_1
Name
tab_1

TabPosition 
tabsontop!

tabpage_1


TabText
LISTADO

PictureName
ArrangeIcons!

tabpage_2


TabText
REGISTRO

PictureName
Project!
St_1
Name
st_1

Text
Buscar por Nombre:
St_2
Name
st_total
Cb_1
Name
cb_nuevo

Text
Nuevo
Cb_2
Name
cb_modificar

Text
Modificar
Cb_3
Name
cb_eliminar

Text
Eliminar
Cb_4
Name
cb_cerrar

Text
Cerrar
Cb_5
Name
cb_grabar

Text
Grabar
Cb_6
Name
cb_cancelar

Text
cancelar
Cb_7
Name
cb_buscar

Text
Buscar
Dw_1
Name
dw_listado

Dataobject
d_mtto_cliente_listado

HScrollBar
True

VScrollBar
True
Dw_2
Name
dw_registro

Dataobject
d_mtto_cliente_registro

Border
False



Programamos los siguientes Controles:

Evento Open de la Ventana principal:

La 1º linea de código realiza la conexión del datawindow para las transaciones, la conexión se realiza en el evento open del proyecto: "connect using sqlca", la 2º linea realiza la recuperación de datos del datawindow (aunque esto no deberia hacerse porque retorna toda la data en el listado, imaginate si hubiera 1000 filas esto haria lento el proceso de listado pero por ejemplo pondremos retrieve en el open), la 3º linea activa el sólo lectura del datawindow listado, y la 4º linea retorna la cantidad de filas recuperadas en el datawindow.

Evento Open del proyecto

Este código realiza la conexión con la Base de datos SQL Server, para ello tenemos que haber creado el DSN en el ODBC, creado el perfil de conexión. Connect using sqlca nos permite activar la conexión para ser usado en todo el proyecto, luego validamos si la conexión tubo errores, si no es asi abrimos la ventana principal.

 Evento Clicked del Boton Nuevo

Cuando damos click en Nuevo, cambiaremos el siguiente tabpage y lo seleccionamos, luego llamamos la funcion insertRow para insertar una nueva fila en el datawindow registro, recordemos que usaremos un datawindow de tipo FreeForm. SetFocus enfoca el control, setcolumn(1) establece la columna 1 del dw_registro. y la variable: is_opcion = 'N' es para poder saber que acción se hace cuando validemos el boton grabar.

Evento Clicked del Boton Modificar


 Validamos si existen filas en nuestro listado, si no hay datos, detenemos la ejecución con "RETURN", luego asignamos en la variable is_codigo el valor obtenido del listado: GetItemString es una función del datawindow  que nos permite obtener un dato de una determinada FILA, y COLUMNA del datawindow. Hacemos algo parecido al Nuevo, cambiamos el tabpage y asignamos un valor M a la variable is_opcion para validar en nuestro boton grabar.

Evento Clicked en el botón Eliminar

 
Validamos si hay filas en el dw_listado, obtenemos un valor determinado de la fila seleccionada con getrow y la columna 1. Con messagebox realizamos la pregunta el cual si podemos eliminar o no, de acuerdo al valor elegido lo asignaremos en li_r, si es 1 (ok) eliminamos la fila y actualizamos el datawindow, si el valor es 0 (cancelar) No hacemos nada.

Evento Clicked para el Botón Buscar

 El boton Buscar nos permitira filtrar el datawindow, primero asignamos en la variable ls_cadena lo que capturamos del control sle_buscar, con upper transformamos en mayuscula los datos de la caja de texto. Luego asignamos el filtro como si fuera el where de una consulta SQL, aplicamos el filtro con filter y usamos un retrieve para retornar los datos. Luego retornamos la cantidad de filas que se recupero.

 Evento Clicked para el Botón Cerrar

 Close nos permite cerrar la ventana.

Evento de Usuario: ue_keydown

En la caja de texto creamos luego un evento de usuario: Donde dice Event ID seleccionamos pbm_keydown para activar las acción por teclado, la variable key toma el valor del enter, Si presionamos Enter de nuestro teclado se activara este evento, y tambien llamaremos el evento click del boton buscar. TriggerEvent es el que realiza este proceso de llamar el evento clicked! del botón buscar.


Evento Clicked del datawindow Listado

Este código nos permite ordenar las columnas cada vez que damos clic en las cabeceras de nuestro listado. Usamos la función setSort para definir nuestro ordenamiento y Sort para activar el ordenamiento. SetRedRaw nos permite refrescar la parte video para poder visualizar los datos en el dw_listado.

Evento RowFocusChanged del datawindow Listado

 
Estas 2 lineas de código nos permitira sombrear la fila seleccionada. setrowfocusindicator(hand!) nos permite ver una mano en el lado izquierdo de nuestra fila.

Evento Clicked del botón Grabar

Este botón es quien se encarga de registrar o actualizar datos en la base de datos, esto es mediante la función Update del datawindow registro, con is_opcion mandaremos mensajes diferentes de acuerdo al boton. Cuando queramos grabar o actualizar los datos nos saldra una pregunta, si le damos Ok grabamos o actualizamos y retornamos a nuestro listado.

Evento Clicked del botón Cancelar

Lo que hacemos aquí es reiniciar el datawindow registro, recuperamos los datos del datawindow listado, enfocamos el control de caja de texto, y cambiamos el tabpage, regresandolo como estaba en un inicio.

VARIABLES DE INSTANCIA
 

Escribimo las variables de instancia que usaremos en el formulario o ventana, is_codigo para capturar el código a modificar del datawindow listado, is_name para capturar el nombre del campo en el momento de ordenar por columna, is_opcion para poder saber que acción estamos realizando si es Nuevo o Modificar, y ib_activa un boolean para activar o desactivar en nuestra logica de ordenamiento de campos por columna.

jueves, 10 de enero de 2013

4º Crear una tabla en nuestra Base de Datos

Si llegamos a este paso fundamental, quiero aclararles que el ejemplo de tabla que haremos es del mundo real, campos que realmente necesitaremos para nuestra primera demostración de MANTENIMIENTO en Power Builder y poder programar como debe ser. El caso es un sistema de Ventas y necesitamos Clientes, productos, Categorias de Productos, Facturas, etc. En nuestro caso crearemos una Tabla llamada: VENTA_CLIENTE el cual VENTA por el modulo de nuestra BD, y CLIENTE por el nombre de la tabla.

Ahora vamos a ver como podemos crear una Tabla en el SQL Anywhere 11. Abrimos nuestro gestor de base de datos: Sybase Central, hacemos la conexión con nuestro servidor alojado nuestra Base de datos (Citados en los Pasos 1º, 2º y 3º) y nos saldra la siguiente pantalla.


Seleccionamos "Table" y luego le damos clic derecho al espacio en blanco y escogemos New / Table

Nos saldra un asistente, le ponemos el siguiente nombre a nuestra tabla: VENTA_CLIENTE, por ser una tabla del Módulo Ventas. Y de inmediato le damos en Finish.


Una vez terminado esto, nos saldra una ventana donde tendremos que llenar los campos de la tabla. Por defecto el primer campo es la Llave primaria, y vemos lo siguiente en la imagen.


Crearemos nuestro primer campo llamado: CLIEN_CODIGO, tomando los 5 primeros caracteres de nuestra tabla Clientes para reconocer de donde proviene. Escogemos su tipo de dato Integer. Bien, como tenemos por construmbre que el código sea autogenerado desde SQL Server, aqui tambien podemos hacerlo y tenemos que ir a la siguientes opciones, al dar clic en tipo de datos nos saldra un boton le damos clic.


Nos saldra la siguiente ventana.Debemos ir a la pestaña Value, y cambiar como se muestra en la pantalla. Luego damos en Ok. Y los cambios seran hechos.


Bien, intentemos diseñar la Tabla con los siguientes campos, si deseamos grabar le damos clic en donde esta el circulo rojo en la imagen:


Una vez grabado, nos debe salir en el listado principal nuestra primera tabla de ejemplo creada.


Bien entramos otra vez para ver nuestros campos, y agregamos los nuevos campos y comentarios para terminar nuestro ejemplo. 


Tambien podriamos poner un campo llamado DNI con tipo de datos: Char(8), eso es al criterio de cada uno. Pero lo que me interesa mostrarles es los campos que tienen comentarios.

Con todo esto descrito podremos pasar ahora a nuestro primer demo de Mantenimiento de Clientes en Power Builder 12.1, nos vemos ahi. Que Dios les bendiga.

Ing. Daniel Saúl Mendoza Ponce

miércoles, 9 de enero de 2013

3º Conectar en ASA nuestra Base de datos.

Una vez ejecutado el acceso directo, lo que hemos echo es abrir un servidor que conecte a nuestra base de datos creada en el paso 1º Ahora tenemos que enlazarnos a nuestro gestor de base de datos: Sybase central.

Abrimos nuestro gestor de base de datos y presionamos la tecla: F11 o sino nos vamos donde dice: Connect ... como esta en la imagen.


Bien, nos saldra la siguiente ventana, aqui tenemos que hacer las siguientes configuraciones. Primero, debemos de ponerle el usuario y contraseña que pusimos a la base de datos en el paso 1º. Yo puse User Id: DBA y Password: SQL.

Nos vamos a la pestaña de Database, y le damos clic al boton Find (Buscar) para poder localizar nuestra base de datos ejecutada (Visto en el Paso 2º) Ahi nos muestra el nombre del Servidor tal como pusimos en el acceso directo (El de color anaranjado en el Paso 2º) Escogemos el servidor.




Bien ahora solo nos keda dar Ok para poder finalizar nuestra conexion a nuestra base de datos. Y poder comenzar a crear nuestras tablas.


Continua Parte 4º...

martes, 8 de enero de 2013

2º Crear conexion en ASA

Una vez creado nuestra Base de datos: BDEjemplo.db tenemos que tener en cuenta lo siguiente:
  • Esta BD no funcionara por si sola, necesita del Gestor de Base de datos: Sybase Central.
  • Para que se use en el Gestor de Base de datos tenemos que crear una conexión.
  • Esta BD que hemos creado por defecto esta vacio, es decir no tiene ninguna tabla ni procedimiento almacenado, nada. esta en blanco.
Bien entonces vamos a los pasos para poder crear esta famosa conexión y proceguir con nuestro ejemplo de aplicación en el mundo real.

Nos vamos al Menu Inicio / Todos los programas / SQL Anywhere 11 / SQL Anywhere  y creamos un acceso directo al archivo: Network Server Sample.


En esta parte debemos de copiar el acceso directo y ponerlo cerca de nuestra BD creada. Debemos de tener estos dos archivos en nuestra carpeta.


Una vez aquí, le damos clic derecho al acceso directo y nos vamos a propiedades.


Nos saldra la siguiente ventana:




En la parte roja de la imagen tenemos el trabajo a realizar. En donde dice "Destino", nos saldra lo siguiente:

"C:\Archivos de programa\SQL Anywhere 11\Bin32\dbsrv11.exe" -c 8m -n demo11 "C:\Documents and Settings\All Users\Documentos\SQL Anywhere 11\Samples\demo.db"


Debemos cambiar lo siguiente de ese enlace:

"C:\Archivos de programa\SQL Anywhere 11\Bin32\dbsrv11.exe" -c 8m -n EjemploASA "D:\BD_Ejemplo\BDEjemplo.db"


Cambiamos: demo11 por EjemploASA. y toda esa dirección por la dirección donde se encuentra nuestro archivo de Base de datos.


Si queremos cambiarle un nombre a nuestra conexion hacemos lo siguiente:
Una vez listo todo los cambios, ejecutamos ese acceso directo y debe salirnos la siguiente ventana.


Si todo marcha bien, tendras dos cosas que tienes que revisar, uno se habra creado un archivo .log cerca de tu archivo bd, ese archivo log es fundamental siempre tienes que llevarlo porque ahi se guardan los datos de conexion. Y en tu barra de tareas saldra un icono de tu servidor activa.

En caso que salga error, revisa el destino de tu acceso directo tal vez falta un espacio, tienes que respetar todos los espacios y comillas.



Nos vemos en la 3º parte...