三角形、長方形、円があります。
1.それぞれの面積を求める関数を作りなさい
2.それぞれの周辺の長さを求める関数を作りなさい
3.それぞれの面積を合計した関数を作りなさい
4.それぞれの周辺の長さを合計した関数を作りなさい
今回はオブジェクト指向ではなく、
通常の考え方で作ってみます。
●面積を求める関数
●menseki.cfm
<cffunction name="calcMensekiSankaku" returnType="numeric" output="no">
<cfargument name="teihen" type="numeric" required ="yes">
<cfargument name="takasa" type="numeric" required ="yes">
<cfreturn (arguments.teihen * arguments.takasa / 2) >
</cffunction>
<cffunction name="calcMensekiShikaku" returnType="numeric" output="no">
<cfargument name="tate" type="numeric" required ="yes">
<cfargument name="yoko" type="numeric" required ="yes">
<cfreturn (arguments.tate * arguments.yoko) >
</cffunction>
<cffunction name="calcMensekiEn" returnType="numeric" output="no">
<cfargument name="hankei" type="numeric" required ="yes">
<cfreturn (arguments.hankei * arguments.hankei * 3.14) >
</cffunction>
●長さを求める関数
●nagasa.cfm
<cffunction name="calcNagasaSankaku" returnType="numeric" output="no">
<cfargument name="hen1" type="numeric" required ="yes">
<cfargument name="hen2" type="numeric" required ="yes">
<cfargument name="hen3" type="numeric" required ="yes">
<cfreturn (arguments.hen1 + arguments.hen2 + arguments.hen3) >
</cffunction>
<cffunction name="calcNagasaShikaku" returnType="numeric" output="no">
<cfargument name="tate" type="numeric" required ="yes">
<cfargument name="yoko" type="numeric" required ="yes">
<cfreturn ((arguments.tate * 2) + (arguments.yoko * 2)) >
</cffunction>
<cffunction name="calcNagasaEn" returnType="numeric" output="no">
<cfargument name="hankei" type="numeric" required ="yes">
<cfreturn (2 * arguments.hankei * 3.14) >
</cffunction>
●実際の処理
●index.cfm
<cfinclude template="menseki.cfm">
<cfinclude template="nagasa.cfm">
<cfparam name="url.p" default="">
<cfoutput>
<cfif url.p eq "menseki">
menseki gokei = #calcMensekiGokei()#
</cfif>
<cfif url.p eq "nagasa">
nagasa gokei = #calcNagasaGokei()#
</cfif>
</cfoutput>
<cffunction name="calcMensekiGokei" returnType="numeric" output="no">
<cfset var gokei = 0>
<cfset gokei = gokei + calcMensekiSankaku(3,4) * 2>
<cfset gokei = gokei + calcMensekiShikaku(5,6) * 3>
<cfset gokei = gokei + calcMensekiEn(7) * 4>
<cfreturn gokei>
</cffunction>
<cffunction name="calcNagasaGokei" returnType="numeric" output="no">
<cfset var gokei = 0>
<cfset gokei = gokei + calcNagasaSankaku(3,4,5) * 2>
<cfset gokei = gokei + calcNagasaShikaku(5,6) * 3>
<cfset gokei = gokei + calcNagasaEn(7) * 4>
<cfreturn gokei>
</cffunction>
面積の計算を実行する場合は、
index.cfm?p=menseki
長さの計算を実行する場合は、
index.cfm?p=nagasa
関数名としては、
三角の面積を計算する場合、
calcMensekiSankaku
というようにしています。
今回注目する部分は、合計を計算している関数です。
合計を計算している部分で、
それぞれの関数を指定しています。
例えば修正として、五角形、六角形の面積と長さを求める場合は、
menseki.cfmに五角形、六角形の面積を求める関数を追加、
nagasa.cfmに五角形、六角形の長さを求める関数を追加、
面積、長さの合計を求める関数内に、
五角形、六角形のそれぞれの関数を追加することになります。
関数名も長いですね。
これがオブジェクト指向になるとどうなるか、
次回考えてみたいと思います。