Navegação: MXStudio » Coldfusion » CFML Evolução da Linguagem

CFML Evolução da Linguagem

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:

component
displayname=”Vehicle”
hint=”I am a Vehicle”
output=”false”
{
property Numeric mph;

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 >

= Variables.speedIncrement) {
Variables.mph = Variables.mph – Arguments.mph;
} else {
stop();
}
return 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:

component
displayname=”Vehicle”
hint=”I am a Vehicle”
output=”false”
{
property Numeric mph;

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 >

= Variables.speedIncrement) {
Variables.mph = Variables.mph – Arguments.mph;
} else {
stop();
}
return 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:


<cfscript>
import CF9Demo.com.pcsilva.demo.machine.Car;
myCar = new Car();
myCar.stepOnGas();
myCar.stepOnGas();
myCar.stepOnGas();
myCar.stepOnGas();
myCar.stepOnBrakes();
myCar.stepOnBrakes();
myCar.stepOnBrakes();
myCar.stop();
</cfscript>

Obtendo o seguinte resultado:

Na parte que Hal fala de composição, a classe Address.cfc fica da seguinte forma:

component
displayname=”Address”
hint=”I am an Address”

{
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:

component
displayname=”Person”
hint=”I am a Person”
{
property String firstName;
property String lastName;
property Address address;

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:


<cfscript>
add = new CF9Demo.com.pcsilva.demo.people.Address();
add.setAddress1(form.add1);
add.setAddress2(form.add2);
add.setCity(form.city);
add.setProvince(form.province);
add.setPostalCode(form.postalCode);
user = new CF9Demo.com.pcsilva.demo.people.Person();
user.setFirstName(form.firstName);
user.setLastName(form.lastName);
user.setAddress(add);
<cfscript>

<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

Tags Marcadas: Este artigo não possui tags marcadas.



Deixe um Comentario

You can use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="">

Pedro Claudio

Últimos Artigos do Autor