【#100DaysOfCode】8日目 「作りながら学ぶRuby入門」11章 アプリケーションの働きをするクラス
今日は仕事でも新しい言語を結構さわれて良かった。
そして本日の内容は、これまでの総まとめ的なコードでもある。
依存関係に注意!!
Day 8
・「作りながら学ぶRUby入門」第11章
内部に、「手続き化された操作」を持つクラス
アプリケーションの働きを持つクラス
今までは
[以前]
<クラス側>
- クラスを定義する
- インスタンスを作成する
<アプリケーション側>
- クラスを呼び出して、変数に適用する
- 実行処理を行う
だったが、上記の「手続き全てをクラスの中に押し込めよう」としたのが今回のコード
[今回]
<クラス側>
- 大クラスを定義する (入れ物の型宣言)
- アプリケーション用のクラスを内部に定義する
- アプリケーションクラスにインスタンスを複数作成する : ハッシュを使う
- アプリケーション処理(インスタンスを表示する操作など)を[手続き]として、定義する
<アプリケーション側>
- 上記 大クラスを呼び出す
- 大クラスの中の操作メソッドを指定して、実行する
終わり!という凄さ
以下そのコード
# 「作りながら学ぶRuby入門」 第11章 アプリケーションの働きをするクラス ## クラスの中に、インスタンスを実行する操作が入っている # Studentクラスを作る class Student def initialize(name, age) @name = name @age = age end # Studentクラスのインスタンスの文字列表現を返す def to_s "#@name, #@age" end end # StudentBookアプリケーションのクラスを作る class StudentBook def initialize @students ={} end # ハッシュにStudentクラスのインスタンスを複数作成する # 作成する処理を手続きにする def setUpstudents $students = { #studentsをインスタンス変数に変更 :shin => Student.new("Shin Kuboaki", 45), :shinichiro => Student.new("Shinichiro Ooba", 35), :shingo => Student.new("Shingo Katori", 30), } end # 全てのインスタンスの名前と年齢を表示する def printStudents $students.each { |key, value| puts "#{key} #{value.to_s}" } end # StudentBookかデータをリストする def listAllStudents # Studentクラスのインスタンスの作成 setUpstudents # Studentクラスのインスタンスの表示 printStudents end end ######## main処理:アプリケーション化したクラスを呼びだし、操作 ########## # StudentBookクラスのインスタンスを作成する student_book = StudentBook.new # Studentクラスのインスタンスの表示 # ---> StudentBookクラスの操作を呼び出す student_book.listAllStudents
まとまってる!!
しかもこれだけの処置を60行くらいで書けるって、
いい意味で動的型付け言語は、雑。
あと、コードを直す際「クラス側だけ直せばいい」から保守性も高そうなイメージ。
Cで構造体へのポインタを振り回していた時を考えると、
感動〜〜〜〜。