Seit der Version 6 ist ColdFusion eine echte Enwicklungsumgebung für und auf Basis von Java.
Im Vergleich zu purem Java stellt ColdFusion eine komplexe Library in Form eines Applikationservers zu Verfügung, was die Java-Entwicklung ganz wesentlich vereinfacht.
Es stellt sich, meiner bescheidenen Meinung nach, daher also nicht die Frage: "ColdFusion oder Java", denn ColdFusion ist eine zusätzliche Erweiterung auf Basis von Java.
Somit stehen einem Java-Entwickler also nicht nur alle Möglichkeiten von purem Java zur Verfügung.
Um die erweiterten Möglichkeiten von Java respektive die von ColdFusion zu nutzen, stellt ColdFusion eine Reihe von gekapselten tagbasierten Funktionen wie zur einfachen Nutzung zur Verfügung.
Mit werden zb. die Java-Klassen und mit die gewünschten Methoden definiert. Hier ein einfaches Beispiel mit 2 Dateien:
address.cfc
name= "address" >
name= "init" returntype= "address" >
variables.instance.Vorname = "" />
variables.instance.Nachname = "" />
this />
name= "getVorname" >
variables.instance.Vorname />
name= "getNachname" >
variables.instance.Nachname />
name= "setVorname" >
name= "Vorname" type= "string" required= "true" />
variables.instance.Vorname = arguments.Vorname />
name= "setNachname" >
name= "Nachname" type= "string" required= "true" />
variables.instance.Nachname = arguments.Nachname />
name= "getRecord" >
var myQuery = queryNew ( ‚Vorname,Nachname‘ ) />
queryAddRow (myQuery) />
collection= "#variables.instance#" item= "myNewQueryField" >
querySetCell (myQuery,myNewQueryField,variables.instance[myNewQueryField]) />
myQuery />
Hier die entsprechende Datei zur Anzeige des Objektes und zur Verwaltung der Daten innerhalb des Objektes:
index.cfm
name= "request.myUser" type= "any" default= "#createObject(‚component‘,’address‘).init()#" />
structKeyExists (form, ‚Vorname‘ ) AND structKeyExists (form, ‚Nachname‘ ) >
request.myUser.setVorname(form.Vorname) />
request.myUser.setNachname(form.Nachname) />
name= "myForm" action= "index.cfm" method= "post" >
Vorname name= "Vorname" value= "" />
/>
Nachname name= "Nachname" value= "" />
/>
type= "submit" >
var= "#request.myUser#" expand= "false" />
var= "#request.myUser.getRecord()#" />
Diese Klasse wird dann eben wie folgt als Object instanziert:
createObject("component","address") oder gleich direkt mit einer Methode zu Initialisierung (als Constructor): createObject("component","address").init()
Und entsprechend den definierten Methoden in einer HTML bzw. CFML-Seite angesprochen: #myUser.getVorname()#
Dieses Beispiel findet ihr LIVE unter http://projekt.landstrasse.ch/OOPmitCF/ und als PowerPoint unter http://projekt.landstrasse.ch/OOPmitCF.ppt .
Ein weitereres einfaches Beispiel unter Verwendung von DesignPattern, Beans, Daos etc. Findet ihr unter casaclara.riaforge.org .