O ColdFusion 9 traz uma grande implementação na linguagem, quanto a OOP, os componentes ColdFusion agora podem ser escritos inteiramente SEM TAGS, e a invocação destes componentes são realizadas através dos operadores NEW e IMPORT, onde o método init é reconhecido como construtor, e com o métodos getters e settres implícitos, ou seja, você não precisa escrever.
Para exemplificar, peço licença a Hal Helms, mas fiz uma releitura do artigo de Using Inheritance and Composition in ColdFusion Components. Não vou reescreve-lo por completo, vou refazer apenas as classes, todo o restante do texto ainda é atual, então leia o artigo do Hal.
Na parte que fala de herança, a classes Vehicle.cfc fica da seguinte forma:
public Vehicle function init()
output=”false”
hint=”I am constructor”
{
Variables.mph = 0;
return this;
}
public Numeric function increaseSpeed(Numeric mph)
output=”false”
hint=”I increase speed”
{
Variables.mph = Variables.mph + Arguments.mph;
return Variables.mph;
}
public Numeric function decreaseSpeed(Numeric mph)
output=”true”
hint=”I decrease speed”
{
if(Variables.mph >
public void function stop()
output=”true”
{
Variables.mph = 0;
writeoutput(“Your vehicle has stopped.
“);
}
}
E a classe Car.cfc que extende de Vehicle, fica assim:
public Vehicle function init()
output=”false”
hint=”I am constructor”
{
Variables.mph = 0;
return this;
}
public Numeric function increaseSpeed(Numeric mph)
output=”false”
hint=”I increase speed”
{
Variables.mph = Variables.mph + Arguments.mph;
return Variables.mph;
}
public Numeric function decreaseSpeed(Numeric mph)
e output=”true”
hint=”I decrease speed”
{
if(Variables.mph >
public void function stop()
output=”true”
{
Variables.mph = 0;
writeoutput(“Your vehicle has stopped.
“);
}
}
d#
“);
return local.currentSpeed;
}
public void function stop()
output=”true”
{
super.stop();
}
}
e o teste das classes, TestCar.cfm, da seguinte forma:
Obtendo o seguinte resultado:
Na parte que Hal fala de composição, a classe Address.cfc fica da seguinte forma:
{
property String address1;
property String address2;
property String city;
property String province;
property String postalCode;
public Address function init()
output=”false”
hint=”I am constructor”
{
return this;
}
}
A classe Person.cfc, assim:
public Person function init()
output=”false”
hint=”I am constructor”
{
return this;
}
}
O formulário de teste é o mesmo, a pagina de processamento do formulário é que deve ser alterada:
<cfdump var=”#user#”>
Onde obtemos o seguinte print na tela.
Estas são algumas das novidades do ColdFusion 9, acompanhem esta semana estarei mostrando mais.
–
Pedro Claudio
Adobe User Group Manager – CFUG-BR
Adobe Certified Expert
Adobe Certified Professional
http://blog.pcsilva.com/en
http://twitter.com/pcsilva
Últimos Comentários