*ブログに戻る →ここ です。


Rubyの学習 free194
スーパークラスとサブクラスの継承

↓Rubyのプログラムを実行すると以下のように表示される。

C:\RubyTest>ruby test_sada14-1.rb
ペダルを踏みました
ベルを鳴らしました
ブレーキを握りました

船の錨を引き上げました
ペダルを踏みました
ブレーキを握りました

おもいっきりペダルをこいでいます

ペダルを踏みました

ペダルを踏みました
おもいっきりペダルをこいでいます
ペダルを踏みました
おもいっきりペダルをこいでいます
ペダルを踏みました
おもいっきりペダルをこいでいます

多くの秒の間、ペダルを踏みました
おもいっきりペダルをこいでいます
120秒の間、ペダルを踏みました
おもいっきりペダルをこいでいます
何度も言わせるな、値を入れろ!
あとスーパークラスに引数のデフォルト値を入れてもエラーだぞ秒の間、ペダルを踏みま
した
おもいっきりペダルをこいでいます

C:\RubyTest>




Monday,October,7,2013

プログラムの表示

=begin Monday,October,7,2013 ○値から謎の多いクラス名を調べてみる。 ルビーの値(オブジェクト)が所属するクラス Numeric (説明はfree171.html)[step]メソッドはNumericクラスである。 [step]メソッドは、任意に決めた浮動小数点の値を繰り返し足していく事ができるメソット。 Float (浮動小数点数) Integer (説明はfree170.html)[times][upto][downto]メソッドはIntegerクラス Numericのサブクラスでもある。 このメソッドは要素などの値の範囲を指定し、for句(演算子)と連動させる事で変数へ繰り返し値を名札 付けしながらブロック内のプログラムを実行させる。 Bignum (大きな整数) Fixnum (整数) Kernel [loop]メソッドはKernelクラスである。無限に繰り返しを行なう。(今回学習した) PHPでの値の型 string (文字句) integer (数字) double (小数点) free147.php ←ここで試した。 謎の多いクラスを調べる方法は下記、またの機会に別のページで試してみます。 #! ruby -Ku print("定近です。".class())←クラスを調べるには、これを使って調べます。 print("\n") #! ruby -Ku ← の「u」とは、UTF-8 のこと(文字化けを回避します)。 s or S Shift_JIS e or E EUC-JP u or U UTF-8 n or N NONE(ASCII) 「require」メソッドで「kconv」ライブラリを読みんで、モジュール関数「Kconv.tosjis()」 を使用することにより表示の時に Shift_JIS に変換している。(メソットというからにはクラスがあるんでしょうね) まだきちんと理解できていません。 保存するときは、文字コードセットを UTF-8 にすること。 サクラエディタを使用しています。 コマンドプロンプトを開きます。 C:Documents and Settings\User> C:Documents and Settings\User>cd C:\rubytest と入力する。「cd」カレントディレクトリの略。現在のフォルダという意味(フォルダは任意の名前で自作した) C:\RubyTest>ruby test_sada14-1.rb そして保存したファイル名を打ち込む。 =end #コメントテスト、ファイル名test_sada14-1テキスト #--------------------------------------------------- #! ruby -Ku require "kconv" #日本語変を換使わないみたいです、いままで使ってきたのに =begin クラスの継承 複数のクラスで重複オブジェクトが存在する場合は、基本となるオブジェクトをスパークラスとして独立させる 今回の場合は「SadaChassis」をそうした役目にした サブクラスは「SadaBicycle」「SadaBoat」 class クラス名 < 継承したいクラス名 end =end class SadaChassis def _sadaAccele print("ペダルを踏みました\n") end def _sadaBrake print("ブレーキを握りました\n") end end class SadaBicycle < SadaChassis def _sadaBell print("ベルを鳴らしました\n") end end class SadaBoat < SadaChassis def _sadaAnchor print("船の錨を引き上げました\n") end end #自転車のケース _sada1 = SadaBicycle.new _sada1._sadaAccele _sada1._sadaBell _sada1._sadaBrake print("\n") #船のケース _sada2 = SadaBoat.new _sada2._sadaAnchor _sada2._sadaAccele _sada2._sadaBrake print("\n") #--------------------------------------- =begin クラスを継承している設定 オーバーライドといってサブクラス側にスーパークラスと同名のオブジェクトを設けた =end class KittaChassis def _kittaAccele print("ペダルを踏みました\n") end def _kittaBrake print("ブレーキを握りました\n") end end #自転車のサブクラス class KittaBicycle < KittaChassis def _kittaBell print("ベルを鳴らしました\n") end def _kittaAccele print("おもいっきりペダルをこいでいます\n") end end #船のサブクラス class KittaBoat < KittaChassis def _kittaAnchor print("船の甲板に錨を引き上げていますn") end end #自転車のオブジェクト _kittaka1 = KittaBicycle.new _kittaka1._kittaAccele #スーパークラスとサブクラスに同名のオブジェクトが存在する print("\n") #ボートのオブジェクト _kittaka2 = KittaBoat.new _kittaka2._kittaAccele #スーパークラスのみにオブジェクトが存在する print("\n") #--------------------------------------- #スーパーメソッド「super」をサブクラスで設定すると、サーパークラスとサブクラスにおける同名の2つのメソッド実行する class KittaChassis2013 def _kittaAccele print("ペダルを踏みました\n") end def _kittaBrake print("ブレーキを握りました\n") end end #自転車のサブクラス class KittaBicycle2000 < KittaChassis2013 def _kittaBell print("ベルを鳴らしました\n") end def _kittaAccele super print("おもいっきりペダルをこいでいます\n") end end #自転車のオブジェクト _kittaka10 = KittaBicycle2000.new _kittaka10._kittaAccele #スーパークラスとサブクラスに同名のオブジェクトが存在する _kittaka10._kittaAccele #スーパークラスとサブクラスに同名のオブジェクトが存在する _kittaka10._kittaAccele #スーパークラスとサブクラスに同名のオブジェクトが存在する #-------------------------------- print("\n") class KittaChassis201309 def _kittaAccele(_sadachika) @name = _sadachika print(@name,"秒の間、ペダルを踏みました\n") end def _kittaBrake print("ブレーキを握りました\n") end end #自転車のサブクラス class KittaBicycle2001 < KittaChassis201309 def _kittaBell print("ベルを鳴らしました\n") end #引数を無記入の場合「値を入れろ・・・」を出力させる、これスーパークラスで設定するとエラーになります、サブで設定すること def _kittaAccele(_sadachika="何度も言わせるな、値を入れろ! あとスーパークラスに引数のデフォルト値を入れてもエラーだぞ") super print("おもいっきりペダルをこいでいます\n") end end #自転車のオブジェクト _kittaka20 = KittaBicycle2001.new _kittaka20._kittaAccele("多くの") #スーパークラスとサブクラスに同名のオブジェクトが存在する _kittaka20._kittaAccele(120) #スーパークラスとサブクラスに同名のオブジェクトが存在する _kittaka20._kittaAccele() #スーパークラスとサブクラスに同名のオブジェクトが存在する


* 参考にしたサイトは→ こちら です。

これは赤色の文字例です。

これは青色の文字例です。