Asistente para generar clases de complements.lib en Xailer 2.7

He creado un pequeño asistente para generar las clases del Modelo de Datos que se usarán con la librería complements.lib desde Xailer 2.7.

CrearClaseEl asistente se usa desde la opción del menú de Xailer “componentes-asistentes”. Es muy sencillo de usar y genera el siguiente código:

/*
* Proyecto: complementsWzd
* Fichero: Module1.prg
* Descripción:
* Autor:
* Fecha: 09/12/2012
*/

#include “Xailer.ch”
//————————————————————————–

CLASS cliente FROM Object

PROTECTED:

DATA id
DATA nombre
DATA apellidos
DATA domicilio
DATA codigoPostal
DATA localidad
DATA provincia
DATA fechaAlta
DATA telefonos
DATA formaPago

EXPORTED:

METHOD new() CONSTRUCTOR

METHOD setId( id )
METHOD getId()

METHOD setNombre( nombre )
METHOD getNombre()

METHOD setApellidos( apellidos )
METHOD getApellidos()

METHOD setDomicilio( domicilio )
METHOD getDomicilio()

METHOD setCodigoPostal( codigoPostal )
METHOD getCodigoPostal()

METHOD setLocalidad( localidad )
METHOD getLocalidad()

METHOD setProvincia( provincia )
METHOD getProvincia()

METHOD setFechaAlta( fechaAlta )
METHOD getFechaAlta()

METHOD setTelefonos( telefonos )
METHOD getTelefonos()

METHOD setFormaPago( formaPago )
METHOD getFormaPago()

METHOD toArray( b )

METHOD toString()

ENDCLASS

//————————————————————————–

METHOD new() CLASS cliente

//ToDo: Tu código aquí
::id := 0
::nombre := string():new()
::apellidos := string():new()
::domicilio := string():new()
::codigoPostal := string():new()
::localidad := string():new()
::provincia := string():new()
::fechaAlta := dtDate():new()
::telefonos := arrayList():new()
::formaPago := formaPago():new()

RETURN Self

//————————————————————————–

METHOD setId( id )
::id := id
RETURN nil

METHOD getId()
RETURN ::id

//————————————————————————–

METHOD setNombre( nombre )
::nombre := nombre
RETURN nil

METHOD getNombre()
RETURN ::nombre

//————————————————————————–

METHOD setApellidos( apellidos )
::apellidos := apellidos
RETURN nil

METHOD getApellidos()
RETURN ::apellidos

//————————————————————————–

METHOD setDomicilio( domicilio )
::domicilio := domicilio
RETURN nil

METHOD getDomicilio()
RETURN ::domicilio

//————————————————————————–

METHOD setCodigoPostal( codigoPostal )
::codigoPostal := codigoPostal
RETURN nil

METHOD getCodigoPostal()
RETURN ::codigoPostal

//————————————————————————–

METHOD setLocalidad( localidad )
::localidad := localidad
RETURN nil

METHOD getLocalidad()
RETURN ::localidad

//————————————————————————–

METHOD setProvincia( provincia )
::provincia := provincia
RETURN nil

METHOD getProvincia()
RETURN ::provincia

//————————————————————————–

METHOD setFechaAlta( fechaAlta )
::fechaAlta := fechaAlta
RETURN nil

METHOD getFechaAlta()
RETURN ::fechaAlta

//————————————————————————–

METHOD setTelefonos( telefonos )
::telefonos := telefonos
RETURN nil

METHOD getTelefonos()
RETURN ::telefonos

//————————————————————————–

METHOD setFormaPago( formaPago )
::formaPago := formaPago
RETURN nil

METHOD getFormaPago()
RETURN ::formaPago

//————————————————————————–

METHOD toArray( b ) CLASS cliente

LOCAL a

IF !Empty( b ) .AND. Valtype( b ) == ‘B’
a := eval( b, self )
ELSE
//ToDo: Tu código aquí
a := { ::getId(),;
::getNombre(),;
::getApellidos(),;
::getDomicilio(),;
::getCodigoPostal(),;
::getLocalidad(),;
::getProvincia(),;
::getFechaAlta(),;
::getTelefonos(),;
::getFormaPago(),;
self }
END IF

RETURN a

//————————————————————————–

METHOD toString() CLASS cliente

LOCAL c := ”

//ToDo: Tu código aquí

RETURN c

//————————————————————————–

Descarga: complementsWdz

Descarga: ejemplo de clase generada con este asistente.

ACTUALIZACION: 2012.12.09 16:05 Acabo de subir una corrección para solucionar que no se generase el nombre de la clase en los métodos get/set. Por favor, descargar de nuevo.

ACTUALIZACION 2012.12.09 19:44: Siguiendo las sugerencias de Manu, he realizado las mejoras que ha propuesto y además he añadido dos nuevos datos: Descripción de la clase y autor, que salen en el comentario inicial junto con el nombre de la clase y la fecha de creación. Descargad el componente de nuevo.

/**
* Clase: cliente
* Descripción: Datos de un cliente
* Autor: José Alfonso Suárez Moreno
* Fecha: 09/12/2012
*/

Anuncios

4 comentarios

  1. Excelente Jose !!!!, ya lo pruebo…

  2. Hola, JA, esto va palante 😉
    Quiero aportar unas ideas, deberías ya que estás documentar los métodos, más o menos así:

    Idea (1)
    /**
    * Metodo: setFechaAlta
    * Parametros: fechaAlta de tipo DTDate
    * Devuelve: Valor antrior de fechaAlta de tipo DTDate
    */
    Y usa esa nomenclatura de comentarios ya que con los generadores de documentacion de Harbour se genera automaticamente la ayuda en formato NG, HTML, etc. o podrías usar el javadoc de java.

    Idea (2)
    Si quieres seguir la tradición xBase los métodos set…() deberían de devolver el valor anterior del atributo privado al que actualizan, por ejemplo, más o menos así:

    METHOD setFechaAlta( fechaAlta ) CLASS cliente
    local ret := ::fechaAlta
    ::fechaAlta := fechaAlta
    RETURN ret

    Pero si lo que quieres es ser like Java y más velocidad usa esto:

    PROCEDURE setFechaAlta( fechaAlta ) CLASS cliente
    ::fechaAlta := fechaAlta
    RETURN

    Así no tiene que meter nada en la pila, ni siquiera nil.

    Idea (3)
    Por cierto ponle a todos los métodos la clase a la que pertenecen con “CLASS …” ya que si algún día metes más de una clase en un mismo prg te va a cantar por peteneras…

    Lo dicho nos tenemos que ver, a ver si maduramos lo de hivernate jejeje

    • Hola Manu,

      Lo de los comentarios lo tengo en el tintero ;-).

      Lo de guardar el valor anterior es buena idea, puede que lo implemente hoy mismo.

      Lo del RETURN, bueno, por aquello de saber que retorna. Tampoco lo veo mal y así no se consume memoria innecesaria.

      Descarga de nuevo el archivo, que ya está arreglado lo de poner el nombre de la clase en los get/set.

      Y sí, tenemos que vernos.

      Un abrazo.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: