🌟
クラスとインスタンスをガンダムで例えてみた
本記事は完全に私の趣味が混ざっておりますので、ガンダムを知らない方はスルーしてください。
ただ、私にとってはこの例えが一番楽しめた&理解が早かったので、このような内容となっております。
クラスとは?
RubyやJavaScriptなどのプログラミングにおけるクラスとは何か?クラスは属性(プロパティ)とメソッドを定義しますが、これは設計図のようなもので、再利用ができる共通情報をまとめたデータのことです。
インスタンスとは?
その設計図(クラス)を元に実態として生成されるのがインスタンス。クラスの共通情報をベースにして生成された個別のオブジェクトのことです。
ガンダムで例えてみる
私がガンダム好きなので(SEED世代)、今回はザクとストライクフリーダムガンダムで例えさせて頂きます。笑
クラス:モビルスーツの設計図
プロパティ(属性)
- 基本構造
- 武装
- 装甲
- 動力
大体こんな感じでしょうか。
インスタンス:実際に生産されたモビルスーツ
モビルスーツとは、次に出てくるような人型ロボットのことです。
インスタンス1:ザク
- 基本構造:空中戦不可。武装換装可。
- 武装:ビームライフル、ビームアックス
- 装甲:通常装甲
- 動力:バッテリー
インスタンス2:ストライクフリーダムガンダム
- 基本構造:高い運動性と汎用性を持ち、空中戦にも優れている。
- 武装:ビームライフル、スーパードラグーン
- 装甲:トランスフェイズ装甲(実弾無効)
- 動力:核エンジン
ソースコード化してみた
コード化するとこんな感じでしょうか
example.rb
class MobileSuit
attr_accessor :structure, :weaponry, :armor, :power_source
def initialize(structure, weaponry, armor, power_source)
@structure = structure
@weaponry = weaponry
@armor = armor
@power_source = power_source
end
def display_features
puts "基本構造: #{@structure}"
puts "武装: #{@weaponry}"
puts "装甲: #{@armor}"
puts "動力源: #{@power_source}"
end
end
# インスタンス1: ザク
zaku = MobileSuit.new("空中戦不可。武装換装可。", "ビームライフル、ビームアックス", "通常装甲", "バッテリー")
zaku.display_features
# インスタンス2: ストライクフリーダムガンダム
strike_freedom = MobileSuit.new("高い運動性と汎用性を持ち、空中戦にも優れている。", "ビームライフル、スーパードラグーン", "トランスフェイズ装甲(実弾無効)", "核エンジン")
strike_freedom.display_features
Discussion