Capítulo 4. Geração de código com modelos

O KDevelop usa modelos para gerar ficheiros de código-fonte e para evitar escrever código repetido.

Criar uma nova classe

O uso mais comum para a geração de código é provavelmente a criação de classes novas. Para criar uma classe nova num projecto existente, carregue com o botão direito sobre a pasta de um projecto e escolha Criar a Partir de um Modelo.... A mesma janela poderá ser acedida se carregar em FicheiroNovo a Partir do Modelo..., mas usar uma pasta de projecto terá a vantagem de definir um URL de base para os ficheiros de saída. Escolha Classe na área de selecção da categoria e a linguagem de programação e modelo nas duas outras áreas. Depois de ter seleccionado um modelo de classes, terá de indicar os detalhes da nova classe.

Primeiro tem de indicar um identificador para a nova classe. Poderá ser um nome simples (como Autocarro) ou um identificador completo com espaços de nomes (do tipo Transporte::Autocarro). No último caso, o KDevelop irá processar o identificador e irá separar os espaços de nomes do nome propriamente dito. Na mesma página, poderá adicionar classes de base para a classe nova. Poderá ver que alguns modelos escolhem uma classe de base própria, estando à vontade para removê-la e/ou adicionar outras. Deverá escrever aqui toda a instrução de herança, a qual depende da linguagem, como por exemplo public ClasseBase no C++, extends ClasseBase no PHP ou simplesmente o nome da classe no Python.

Na página seguinte, é-lhe oferecida uma selecção dos métodos virtuais de todas as classes herdadas, assim como os construtores, destrutores e operadores predefinidos. Se assinalar a opção associada à assinatura de um dado método, irá implementar esse método na nova classe.

Se carregar em Seguinte, irá aparecer uma página onde poderá adicionar membros a uma classe. Dependendo do modelo escolhido, estas poderão aparecer na classe nova como variáveis-membro, ou então o modelo poderá criar propriedades com métodos 'get' e 'set' para elas. Numa linguagem em que os tipos de variáveis tenham de ser declarados, como o C++, terá de indicar tanto o tipo como o nome do membro, como por exemplo int idade ou QString nome. Noutras linguagens, poderá ignorar o tipo, mas é uma boa prática defini-lo à mesma, dado que o modelo seleccionado poderá à mesma tirar partido dele.

Nas páginas seguintes, poderá escolher uma licença para a sua nova classe, definir quaisquer opções personalizadas que sejam necessárias para o modelo seleccionado e configurar os locais de saída de todos os ficheiros gerados. Ao carregar em Terminar, irá terminar o assistente e irá criar a nova classe. Os ficheiros gerados serão abertos no editor, para que possa logo começar a adicionar código.

Depois de criar uma nova classe em C++, ser-lhe-á dada a opção para adicionar a classe a um dado alvo do projecto. Escolha um alvo na página da janela ou feche a mesma e adicione manualmente os ficheiros a um dado alvo.

Se escolheu o modelo Qt Object, assinalou alguns métodos predefinidos e tiver adicionado duas variáveis-membro, o resultado deverá ser algo semelhante à imagem seguinte.

Poderá ver que os membros de dados são convertidos em propriedades do Qt, com funções de acesso e as macros Q_PROPERTY. Os argumentos das funções 'set' são até passados por referência constante onde for apropriado. Para além disso, é declarada uma classe privada e um ponteiro privado, criado através do Q_DECLARE_PRIVATE. Tudo isto é feito pelo modelo; se escolher outro modelo no primeiro passo, poderá mudar o resultado por completo.