2011-05-19 41 views
0

有人能夠解釋下列問題要求我做什麼。我不需要知道代碼,就Coldfusion而言,只是一個不同的解釋會很好,所以我可能能夠理解他們要求我編寫的內容。如何將此OOP作爲ColdFusion組件(CFC)來執行?

據我所知,ColdFusion沒有「屬性」,這必須用CFC來模擬。

  1. 創建類具有以下特徵

    • 它應該有三個數據成員(一個整數,字符串,和一個雙)當構造的對象應當在其三個數據成員初始化用下面值分別爲:10,「hello world」和1.234
    • 它應該包含允許使用該類的消費者檢索和修改任何數據成員值的屬性。
    • 它應該有一個方法,允許消費者在一次調用中設置所有3個值。
  2. 創建它創建4個問題中指定的類的新實例的方法:(你沒有寫任何代碼來測試程序)由類 提供

    • 使用性質獲取每個數據成員 的值,並使用全局可用的 WriteToDebugWindow()方法的虛構和 窗口將值輸出到調試 窗口。
      WriteToDebugWindow()取一個字符串 參數的值輸出到 調試窗口。由於這種方法 是虛構因此,將 足夠無論 你選擇什麼樣的語言藉此測試,通過類 提供
    • 使用屬性來修改每個數據成員的值你所選擇的 然後輸出 將 更改爲使用 WriteToDebugWindow()之前的調試窗口的屬性值。
+1

不是真的知道你是問什麼。問題很簡單。您是否要求在Java術語中更多地解釋ColdFusion? – charliegriefer 2011-05-19 03:41:41

+1

http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7e0b.html – Yisroel 2011-05-19 04:35:35

回答

0

所以,你需要的是你的初始化值到範圍的init方法,然後返回這個。返回類型應該像「path.to.yourCFC」。你需要單獨的getter和setter方法,以及一種將所有方法更新的方法。後一種方法應該只是調用個別設置者。

2

這是家庭作業,但需要從沉悶的一天休息。

以下是使用<cfproperty/>隱式獲取器和設置器的ColdFusion 9特定實現。 CFC覆蓋整數和雙精度元素的setter來執行數據類型驗證ColdFusion本身不執行。

BrownPeanut。CFC

<!--- accessors="true" causes CF9 to set data in the "variables" scope ---> 
<cfcomponent output="false" accessors="true"> 
    <cfproperty name="MyDouble" type="numeric" /> 
    <cfproperty name="MyInteger" type="numeric" /> 
    <cfproperty name="MyString" type="string" /> 

    <cffunction name="init" output="false" access="public" returntype="BrownPeanut" hint="Constructor"> 
     <cfargument name="MyDouble" type="numeric" required="false" default="1.234"/> 
     <cfargument name="MyInteger" type="numeric" required="false" default="10"/> 
     <cfargument name="MyString" type="string" required="false" default="hello world"/> 
     <cfset setMyDouble(arguments.myDouble)> 
     <cfset setMyInteger(arguments.MyInteger)> 
     <cfset setMyString(arguments.MyString)> 
     <cfreturn this/> 
    </cffunction> 

    <cffunction name="setMyDouble" output="false" access="public" returntype="void" 
     hint="Overrides default setter"> 
     <cfargument name="MyDouble" type="string" required="true"/> 
     <!--- data type checking because ColdFusion does not natively make the distinction ---> 
     <cfset var jDouble = createObject("java", "java.lang.Double").init(arguments.myDouble)> 
     <cfif jDouble.toString() NEQ arguments.myDouble> 
      <cfthrow type="java.lang.IllegalArgumentException" message="Invalid double value '#arguments.MyDouble#'"> 
     </cfif> 
     <cfset variables.MyDouble = arguments.MyDouble> 
    </cffunction> 

    <cffunction name="setMyInteger" output="false" access="public" returntype="void" 
     hint="Overrides default setter"> 
     <cfargument name="MyInteger" type="string" required="true"/> 
     <!--- data type checking because ColdFusion does not natively make the distinction ---> 
     <cfif NOT isValid("integer",arguments.MyInteger)> 
      <cfthrow type="java.lang.IllegalArgumentException" message="Invalid integer value '#arguments.myInteger#'"> 
     </cfif> 
     <cfset variables.myInteger = arguments.myInteger> 
    </cffunction> 
</cfcomponent> 

BrownPeanut.cfm

<cffunction name="WriteToDebugWindow" output="true" access="public" returntype="void" hint=""> 
    <cfargument name="data" type="string" required="true"/> 
    <cfset var local = structNew()/> 
    <!--- implementation goes here ---> 
    <cfoutput>#arguments.data#<br /></cfoutput> 
</cffunction> 

<cfset BrownPeanut = new BrownPeanut()> 

<cfset writeToDebugWindow(BrownPeanut.getMyDouble())> 
<cfset writeToDebugWindow(BrownPeanut.getMyInteger())> 
<cfset writeToDebugWindow(BrownPeanut.getMyString())> 
+0

這是一種家庭作業的形式,這就是爲什麼我要求不同形式的解釋。無論如何,您發佈的BrownPeanut.cfc與我最初編寫的類似,但是我的版本並不正確。 但是你的代碼讓我走上了正軌。謝謝。 – BrownPeanuts 2011-05-19 17:40:52

相關問題