ジョギング
- 香椎浜 x 2 周
- 右足の太ももの前に痛み
- ちょっと休むかな...
日課
- (腕立て x 50 + 腹筋 x 50) x 3
体調
- 先週末から体調がイマイチ
- ずーっと眠気がひどい
今日のるびぃ ~ Ruby 技術者認定試験合格教本 (Silver/Gold 対応) Ruby 公式資格教科書 模擬試験 (2) オブジェクト指向系問題 (1) ~
irb に動作確認環境は以下の通り.
$ ruby --version ruby 2.1.10p492 (2016-04-01 revision 54464) [x86_64-linux] $ irb --version irb 0.9.6(09/06/30)
オブジェクト指向 (1)
以下のコードを実行するとどうなるか.
class A private def foo puts 'A' end end class B < A public :foo end B.new.foo
以下, 解答.
- A と表示される
以下, irb による確認.
irb(main):001:0> class A irb(main):002:1> private irb(main):003:1> def foo irb(main):004:2> puts 'A' irb(main):005:2> end irb(main):006:1> end => :foo irb(main):007:0> irb(main):008:0* class B < A irb(main):009:1> public :foo irb(main):010:1> end => B irb(main):011:0> irb(main):012:0* B.new.foo A => nil
以下, 解説より抜粋.
- A クラスの private メソッド foo は, サブクラス B で public に再定義されている
オブジェクト指向 (2)
以下の実行結果になるように, [ x ] に記述する適切なコードを全て選ぶ.
# コード class X [ x ] def initialize @x = 0 end end a = X.new a.x = 10 puts a.x # 実行結果 10
以下, 解答.
# 解答 1 attr_reader :x attr_writer :x # 解答 2 attr_accessor :x # 解答 3 def x @x end def x=(x) @x = x end
以下, irb にて確認.
irb(main):001:0> class X irb(main):002:1> attr_reader :x irb(main):003:1> attr_writer :x irb(main):004:1> irb(main):005:1* def initialize irb(main):006:2> @x = 0 irb(main):007:2> end irb(main):008:1> end => :initialize irb(main):009:0> irb(main):010:0* a = X.new => #<X:0x0056354d43f2f0 @x=0> irb(main):011:0> a.x = 10 => 10 irb(main):012:0> puts a.x 10 => nil irb(main):013:0> a = X.new => #<X:0x0056354d429090 @x=0> irb(main):014:0> a.x = 10 => 10 irb(main):015:0> puts a.x 10 => nil irb(main):016:0> irb(main):017:0* class X irb(main):018:1> attr_accessor :x irb(main):019:1> irb(main):020:1* def initialize irb(main):021:2> @x = 0 irb(main):022:2> end irb(main):023:1> end => :initialize irb(main):024:0> irb(main):025:0* a = X.new => #<X:0x0056354d3e04f8 @x=0> irb(main):026:0> a.x = 10 => 10 irb(main):027:0> puts a.x 10 => nil irb(main):028:0> class X irb(main):029:1> def x irb(main):030:2> @x irb(main):031:2> end irb(main):032:1> def x=(x) irb(main):033:2> @x = x irb(main):034:2> end irb(main):035:1> irb(main):036:1* def initialize irb(main):037:2> @x = 0 irb(main):038:2> end irb(main):039:1> end => :initialize irb(main):040:0> irb(main):041:0* a = X.new => #<X:0x0056354d2c5780 @x=0> irb(main):042:0> a.x = 10 => 10 irb(main):043:0> puts a.x 10 => nil
オブジェクト指向 (3)
以下の実行結果になるように, [ x ] に記述する適切なコードを選ぶ.
class Hoge def fuga(o = nil) [ x ] end private def hoge puts 'Hoge' end end
以下, 解答.
以下, irb による確認.
irb(main):001:0> class Hoge irb(main):002:1> def fuga(o = nil) irb(main):003:2> hoge irb(main):004:2> end irb(main):005:1> irb(main):006:1* private irb(main):007:1> irb(main):008:1* def hoge irb(main):009:2> puts 'Hoge' irb(main):010:2> end irb(main):011:1> end => :hoge
以下, 解説より抜粋.
- private メソッドは, レシーバを指定した呼び出しは出来ない
フムフム.