Capítulo 4. Generación de código con plantillas

KDevelop usa plantillas para generar archivos de código fuente y para evitar tener que escribir código repetitivo.

Creación de una nueva clase

El uso más común para la generación de código es probablemente la escritura de nuevas clases. Para crear una nueva clase en un proyecto existente, pulse con el botón derecho del ratón en una carpeta del proyecto y elija Crear desde plantilla.... El mismo diálogo se puede iniciar desde el menú pulsando ArchivoNuevo desde plantilla..., aunque si usa una carpeta del proyecto se ahorrará tener que fijar una URL base para los archivos de salida. Elija Clase en el visor de selección de categorías y luego el idioma y la plantilla en las otras dos vistas. Tras seleccionar una plantilla para la clase tendrá que especificar los detalles de la nueva clase.

En primer lugar, tendrá que especificar un identificador para la nueva clase. Puede ser un nombre sencillo (como Bus) o un identificador completo con espacios de nombres (como Transporte::Bus). En el último caso, KDevelop analizará el identificador y separará correctamente los espacios de nombres del nombre real de la clase. En la misma página podrá añadir las clases base para la nueva clase. Es posible que note que algunas plantillas escogen una clase base por sí mismas; si no son de su agrado, puede eliminarlas y/o añadir otras bases. Aquí debe escribir la sentencia de herencia completa, que es dependiente del lenguaje, como public QObject para C++, extends AlgunaClase para PHP, o simplemente el nombre de la clase para Python.

En la siguiente página se le ofrecerá una selección de los métodos virtuales de todas las clases heredadas, así como algunos constructores, destructores y operadores por omisión. Si marca la casilla que hay junto a cada firma de un método se implementará dicho método en la nueva clase.

Si pulsa Siguiente se mostrará una página en la que puede añadir miembros a la clase. Dependiendo de la plantilla seleccionada, pueden aparecer en la nueva clase como variables miembro, o la plantilla puede crear propiedades con sus respectivos «setters» y «getters». En un lenguaje para el que los tipos de variables tienen que estar declarados, como C++, debe especificar tanto el tipo como el nombre del miembro, como int numero o QString nombre. Para otros lenguajes puede olvidarse del tipo, aunque es una buena práctica introducirlo siempre, ya que la plantilla seleccionada puede seguir haciendo uso de él.

En las siguientes páginas podrá elegir una licencia para la nueva clase, fijar cualquier opción personalizada que necesite la plantilla seleccionada y configurar las ubicaciones de salida para todos los archivos generados. Si pulsa Finalizar completará el asistente y se creará la nueva clase. Los archivos generados se abrirán en el editor, por lo que puede comenzar a añadir código fuente en ellos enseguida.

Tras crear una nueva clase de C++ se le ofrecerá la opción de añadir la clase a un proyecto de destino. Elija un destino en la página del diálogo, o descarte la página y añada los archivos a un destino de forma manual.

Si elige la plantilla Objeto de Qt, marca algunos de los métodos por omisión y añade dos variables miembro, la salida debería parecerse a la de la siguiente imagen.

Puede ver que los datos miembros se convierten en propiedades de Qt, con funciones accesoras y las macros Q_PROPERTY. Los argumentos para las funciones «setters» se pasan como referencias a constantes cuando sea apropiado. Además, se declara una clase privada, así como un puntero privado creado con Q_DECLARE_PRIVATE. Todo esto lo hace la plantilla. Si elige una plantilla diferente en el primer paso, la salida puede ser muy distinta.