三角形、長方形、円があります。
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に五角形、六角形の長さを求める関数を追加、
面積、長さの合計を求める関数内に、
五角形、六角形のそれぞれの関数を追加することになります。
関数名も長いですね。
これがオブジェクト指向になるとどうなるか、
次回考えてみたいと思います。