Enviar pesquisa
Carregar
Ruby 初級者向けレッスン 49回───クラス
•
0 gostou
•
683 visualizações
higaki
Seguir
Ruby初級者向けレッスン───クラス
Leia menos
Leia mais
Tecnologia
Educação
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 29
Baixar agora
Baixar para ler offline
Recomendados
Ruby初級者向けレッスン 54回 ─── クラス
Ruby初級者向けレッスン 54回 ─── クラス
higaki
HaskellDB
HaskellDB
Kei Hibino
Haskell と Elm と JSON の話
Haskell と Elm と JSON の話
Nobutada Matsubara
JavaScriptの正規表現
JavaScriptの正規表現
yaju88
Perl RDBMS Programming(DBI/DBIx::Sunnyのはなし)
Perl RDBMS Programming(DBI/DBIx::Sunnyのはなし)
karupanerura
Sq lvs sql
Sq lvs sql
hafuu
Sawachinのプログラミング講座初級 Ruby
Sawachinのプログラミング講座初級 Ruby
Tomoki Sawada
初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)
Masahiro Hayashi
Recomendados
Ruby初級者向けレッスン 54回 ─── クラス
Ruby初級者向けレッスン 54回 ─── クラス
higaki
HaskellDB
HaskellDB
Kei Hibino
Haskell と Elm と JSON の話
Haskell と Elm と JSON の話
Nobutada Matsubara
JavaScriptの正規表現
JavaScriptの正規表現
yaju88
Perl RDBMS Programming(DBI/DBIx::Sunnyのはなし)
Perl RDBMS Programming(DBI/DBIx::Sunnyのはなし)
karupanerura
Sq lvs sql
Sq lvs sql
hafuu
Sawachinのプログラミング講座初級 Ruby
Sawachinのプログラミング講座初級 Ruby
Tomoki Sawada
初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)
Masahiro Hayashi
R6パッケージの紹介―機能と実装
R6パッケージの紹介―機能と実装
__nakamichi__
defjs をひも解く
defjs をひも解く
Masafumi Oyamada
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
Haruka Ozaki
すごいHaskell読書会#1 in 大阪
すごいHaskell読書会#1 in 大阪
yashigani
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
Hiromi Ishii
初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)
Masahiro Hayashi
Ruby初級者向けレッスン 56回 ─── ブロック
Ruby初級者向けレッスン 56回 ─── ブロック
higaki
Ruby初級者向けレッスン KOF2015 出張版
Ruby初級者向けレッスン KOF2015 出張版
higaki
Ruby初級者向けレッスン 55回 ─── 例外
Ruby初級者向けレッスン 55回 ─── 例外
higaki
Ruby初級者向けレッスン 53回 ─── Array と Hash
Ruby初級者向けレッスン 53回 ─── Array と Hash
higaki
初級者向けレッスン 52回 ─── 文字列
初級者向けレッスン 52回 ─── 文字列
higaki
初級者向けレッスン 51回 ─── 例外
初級者向けレッスン 51回 ─── 例外
higaki
Ruby初級者向けレッスン 50回 ─── ブロック
Ruby初級者向けレッスン 50回 ─── ブロック
higaki
PHPer のための Ruby 教室
PHPer のための Ruby 教室
higaki
Ruby初級者向けレッスン 48回 ─── Array と Hash
Ruby初級者向けレッスン 48回 ─── Array と Hash
higaki
Ruby初級者向けレッスン 47回 ─── 文字列
Ruby初級者向けレッスン 47回 ─── 文字列
higaki
Ruby初級者向けレッスン 第46回 ─── Test::Unit
Ruby初級者向けレッスン 第46回 ─── Test::Unit
higaki
ジュンク堂書店の方から来ました
ジュンク堂書店の方から来ました
higaki
Ruby初級者向けレッスン 45回 ─── 例外
Ruby初級者向けレッスン 45回 ─── 例外
higaki
Mais conteúdo relacionado
Semelhante a Ruby 初級者向けレッスン 49回───クラス
R6パッケージの紹介―機能と実装
R6パッケージの紹介―機能と実装
__nakamichi__
defjs をひも解く
defjs をひも解く
Masafumi Oyamada
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
Haruka Ozaki
すごいHaskell読書会#1 in 大阪
すごいHaskell読書会#1 in 大阪
yashigani
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
Hiromi Ishii
初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)
Masahiro Hayashi
Semelhante a Ruby 初級者向けレッスン 49回───クラス
(6)
R6パッケージの紹介―機能と実装
R6パッケージの紹介―機能と実装
defjs をひも解く
defjs をひも解く
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
すごいHaskell読書会#1 in 大阪
すごいHaskell読書会#1 in 大阪
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)
Mais de higaki
Ruby初級者向けレッスン 56回 ─── ブロック
Ruby初級者向けレッスン 56回 ─── ブロック
higaki
Ruby初級者向けレッスン KOF2015 出張版
Ruby初級者向けレッスン KOF2015 出張版
higaki
Ruby初級者向けレッスン 55回 ─── 例外
Ruby初級者向けレッスン 55回 ─── 例外
higaki
Ruby初級者向けレッスン 53回 ─── Array と Hash
Ruby初級者向けレッスン 53回 ─── Array と Hash
higaki
初級者向けレッスン 52回 ─── 文字列
初級者向けレッスン 52回 ─── 文字列
higaki
初級者向けレッスン 51回 ─── 例外
初級者向けレッスン 51回 ─── 例外
higaki
Ruby初級者向けレッスン 50回 ─── ブロック
Ruby初級者向けレッスン 50回 ─── ブロック
higaki
PHPer のための Ruby 教室
PHPer のための Ruby 教室
higaki
Ruby初級者向けレッスン 48回 ─── Array と Hash
Ruby初級者向けレッスン 48回 ─── Array と Hash
higaki
Ruby初級者向けレッスン 47回 ─── 文字列
Ruby初級者向けレッスン 47回 ─── 文字列
higaki
Ruby初級者向けレッスン 第46回 ─── Test::Unit
Ruby初級者向けレッスン 第46回 ─── Test::Unit
higaki
ジュンク堂書店の方から来ました
ジュンク堂書店の方から来ました
higaki
Ruby初級者向けレッスン 45回 ─── 例外
Ruby初級者向けレッスン 45回 ─── 例外
higaki
Mais de higaki
(13)
Ruby初級者向けレッスン 56回 ─── ブロック
Ruby初級者向けレッスン 56回 ─── ブロック
Ruby初級者向けレッスン KOF2015 出張版
Ruby初級者向けレッスン KOF2015 出張版
Ruby初級者向けレッスン 55回 ─── 例外
Ruby初級者向けレッスン 55回 ─── 例外
Ruby初級者向けレッスン 53回 ─── Array と Hash
Ruby初級者向けレッスン 53回 ─── Array と Hash
初級者向けレッスン 52回 ─── 文字列
初級者向けレッスン 52回 ─── 文字列
初級者向けレッスン 51回 ─── 例外
初級者向けレッスン 51回 ─── 例外
Ruby初級者向けレッスン 50回 ─── ブロック
Ruby初級者向けレッスン 50回 ─── ブロック
PHPer のための Ruby 教室
PHPer のための Ruby 教室
Ruby初級者向けレッスン 48回 ─── Array と Hash
Ruby初級者向けレッスン 48回 ─── Array と Hash
Ruby初級者向けレッスン 47回 ─── 文字列
Ruby初級者向けレッスン 47回 ─── 文字列
Ruby初級者向けレッスン 第46回 ─── Test::Unit
Ruby初級者向けレッスン 第46回 ─── Test::Unit
ジュンク堂書店の方から来ました
ジュンク堂書店の方から来ました
Ruby初級者向けレッスン 45回 ─── 例外
Ruby初級者向けレッスン 45回 ─── 例外
Ruby 初級者向けレッスン 49回───クラス
1.
2014年5月31日 Ruby初級者向けレッスン 49回 — クラス
— ひがき @ Ruby関西
2.
クラスとは • オブジェクトの雛形 • 属性と振舞いを定義 –
カプセル化 (データ・実装の隠蔽) • Rubyはクラスベースのオブジェクト指向言語
3.
クラスを作ってみよう class Person; end obj
= Person.new # => #<Person:0x10102718> obj.class # => Person Person.superclass # => Object
4.
属性を持たせてみよう class Person def initialize
name @name = name end end matz = Person.new(’matz’) # => #<Person:0x10138598 @name="matz">
5.
属性にアクセスしてみよう • インスタンス変数は外から見えない class Person attr_reader
:name end matz.name # => "matz"
6.
変数・定数のおさらい ローカル変数 person インスタンス変数 @person クラス変数
@@person グローバル変数 $person 定数 Person
7.
属性を増やしてみよう class Person def initialize
name, born = nil @name, @born = name, born end attr_accessor :born end matz.methods.map(&:to_s).grep(/born/) # => ["born", "born="]
8.
属性を増やしてみよう (2) matz.born =
Time.local(1965, 4, 14) dhh = Person.new(’dhh’, Time.local(1979, 10, 15)) matz.born # => 1965-04-14 00:00:00 +0900 dhh.born # => 1979-10-15 00:00:00 +0900
9.
メソッドを作ってみよう class Person def age (Time.now.strftime(’%Y%m%d’).to_i
- @born.strftime(’%Y%m%d’).to_i) / 10000 end end matz.age # => 49 dhh.age # => 34
10.
メソッドを上書きしてみよう matz.to_s # =>
"#<Person:0x10138598>" class Person def to_s "#{@name}(#{age})" end end matz.to_s # => "matz(49)" dhh.to_s # => "dhh(34)"
11.
インスタンスを比較してみると… person = Marshal.load(Marshal.dump
matz) person == dhh # => false person == matz # => false # おかしい
12.
順序を決めよう class Person include Comparable def
<=> o @name <=> o.name end end person == matz # => true person == dhh # => false matz > dhh # => true
13.
Array#sort してみよう people =
[matz, dhh] people.sort # => [dhh(34), matz(49)]
14.
年齢順に sort してみよう #
若い順 people.sort_by(&:age) # => [dhh(34), matz(49)] # 年功序列 people.sort_by{|p| -p.age} # => [matz(49), dhh(34)]
15.
Hash のキーにしてみると…… h =
{matz => "Ruby", dhh => "Rails"} h[matz] # => "Ruby" h[dhh] # => "Rails" key = Marshal.load(Marshal.dump matz) key == matz # => true h[key] # => nil # おかしい
16.
hash 値を計算しよう class Person def
hash [@name, @born].hash end end matz.hash # => 4034621147130047717 dhh.hash # => 157915441237661087
17.
eql? を上書きしよう class Person def
eql? o [@name, @born].eql? [o.name, o.born] end end key.eql? matz # => true key.eql? dhh # => false
18.
Hash にアクセスしてみよう h.rehash h[matz] #
=> "Ruby" h[dhh] # => "Rails" h[key] # => "Ruby"
19.
等値性のおさらい == 内容が等しいか? === case
式で使用 eql? Hash クラスが使用 equal? 同一オブジェクトか?
20.
アクセス制御してみよう • public • protected •
private class Person protected :born end matz.born # ~> protected method ‘born’ called for ma
21.
今日 話さなかったこと • 委譲と継承 •
モジュール • クラス変数・クラスメソッド • Range の始点と終点
22.
まとめ • クラスの作り方 – 属性・アクセサ –
メソッド • オブジェクトの等値性
23.
演習問題 0 今日のレッスンで分からなかったこと、疑問に 思ったことをグループで話し合ってみよう。
24.
演習問題 1 属性として身長と体重を追加しよう。体重は秘密 にしよう。
25.
演習問題 2 BMI を計算するメソッドを追加しよう。 BMI
= w t2 w = 体重[kg] t = 身長[m]
26.
演習問題 3 Person#<=> を書き直そう。 その妥当な仕様は? p0
= Person.new(’matz’) p1 = Person.new(’Matz’, Time.local(1965, 4, 14)) p0 <=> p1 # => ?
27.
演習問題 4 Person#=== を定義しよう。 その妥当な仕様は? p0
= Person.new(’matz’) p1 = Person.new(’Matz’, Time.local(1965, 4, 14)) p0 === p1 # => ?
28.
自己紹介 • 名前 (ニックネーム) •
普段の仕事・研究内容・代表作 • Ruby歴・コンピュータ歴 • 勉強会に来た目的 • などなど
29.
参考 • 公式サイト https://www.ruby-lang.org/ • るりま http://docs.ruby-lang.org/ja/ •
解答例 https://github.com/higaki/ learn ruby kansai 61
Baixar agora