🌟

クラスとインスタンスをガンダムで例えてみた

2024/05/10に公開

本記事は完全に私の趣味が混ざっておりますので、ガンダムを知らない方はスルーしてください。
ただ、私にとってはこの例えが一番楽しめた&理解が早かったので、このような内容となっております。

クラスとは?

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