print "Hello! My name is Kougei Taro. \n"と書いた場合、
"Hello! My name is Kougei Taro. \n"の部分がオブジェクトになり、``print'' は、メ ソッドという。 この例では、、
"Hello! My name is Kougei Taro. \n"が printと言うメソッドの引数になっている。 オブジェクトは変数として別のオブジェクトに代入できる。
testobj = "Hello! My name is Kougei Taro. \n" print testobj実行結果は同じになる。
print testobj, "\n"
それにたいして、例えばこの文字列の 長さを知りたいときは
print testobj.length print "文字列の長さは" print testobj.length, "です。\n"
``オブジェクト.メソッド''
という形式になっている。
これを「オブジェクトにメソッドを作用させた」という。
------------------------------------------------- testobj = "Hello! My favorite food is fruit. \n" print testobj p testobj print "文字数は", testobj.length, "です。", "\n" -------------------------------------------------
class Name クラス定義 end上記がクラスの文法形式であるが、``クラス定義''の部分には ``メソッド'' が入る。
class Name
def method1
aaaaaaaaa
end
def method2
bbbbbbbbb
end
def method3
ccccc
end
end
形式的にはこのようになる。
メソッド名は小文字ではじめる(ここでは wasan)。
class Number # ==> 必ず大文字ではじめる
def wasan(a,b)
sum = 0
for n in a..b do
sum = sum + n
# print sum, "\n"
end
print "合計は ", sum, "です。\n"
end
end
どのように実行するのか。
クラス定義の終わりは ``end''になるが、その下(外側)に次の2行を加える。
a = Number.new a.wasan(1,100)
1行目は``Number''のインスタンスを生成して、それを ``a''に代入している。 ``Number オブジェクトの生成''という言い方をしてもよい。 2行目は生成したインスタンス中のメソッド ``wasan''を実行している。
できあがったプログラムをもう一度書くと、
------------------------------------------
class Number
def wasan(a,b)
sum = 0
for n in a..b do
sum = sum + n
# print sum, "\n"
end
print "合計は ", sum, "です。\n"
end
end
a = Number.new #新しいインスタンスの定義
a.wasan(1,100) #インスタンスの中の "wasan"の実行
a.wasan(1,10)
------------------------------------------
の様になる。
解答
------------------------------------------
class Number
def wasan(a,b)
sum = 0
for n in a..b do
sum = sum + n
end
print "合計は ", sum, "です。\n"
end
def kaijo(a)
kai = 1
for n in 1..a do
kai = kai * n
end
print a,"の階乗は ", kai, "です。\n"
end
end
a = Number.new
a.wasan(1,100)
a.wasan(1,10)
a.kaijo(5)
a.kaijo(10)
------------------------------------------
もう一度以下のプログラムを見てもらいたい。
------------------------------------------
class Number
def wasan(a,b)
sum = 0
for n in a..b do
sum = sum + n
end
# print "合計は ", sum, "です。\n"
return sum
end
def kaijo(a)
kai = 1
for n in 1..a do
kai = kai * n
end
# print a,"の階乗は ", kai, "です。\n"
return kai
end
end
a = Number.new
print "合計は ", a.wasan(1,100),"です。\n"
print "合計は ", a.wasan(1,10),"です。\n"
print a.wasan(1,100) + a.wasan(1,10), "は、合計の合計です。 \n"
a.kaijo(5)
a.kaijo(10)
------------------------------------------
print文をコメントアウトして、``return''文により返り値を設定している。
これにより、計算結果がクラス定義の外に取り出せるようになった。