野球部にオブジェクト指向プログラミングを説明したい

2023/08/07に公開

おはようございます!
今日からはオブジェクト指向プログラミングについて説明します!
ただ、まだ私自身の理解が正確ではないところが多いので、今日から3回か4回に分けて説明していきたいと思います!

初回の今日は「オブジェクトとは?」というテーマの記事を書いていきます。

オブジェクトとは一言で言うと
「プロパティとメソッドから構成される、現実世界の物体や概念をコード内で表す構造」
です。

この記事を読み終わった時にオブジェクト・プロパティ・メソッドという3つの言葉の意味が分かるということを目指します!

パワプロで考える「オブジェクト」「プロパティ」「メソッド」

まずは、この3つの言葉の意味を説明します。
- オブジェクト: その「もの」の特性(プロパティ)と振る舞い(メソッド)を一つにまとめたものです。
- プロパティ: オブジェクトの特性や属性を表します。
- メソッド: オブジェクトの動作を表します。

これらをパワプロに当てはめて考えていきましょう。
パワプロではそのゲーム内で使える選手に対して、パラメータが振られていますよね。
例えばイチロー選手は、パワーがBでそれ以外は全てAだったと記憶しています。

これを「イチローオブジェクト」と考えてみると、
「プロパティ」は"選手名、ミート、パワー、走力、肩力、守備力"にあたり、
「メソッド」は実際にゲームで使った時の能力にあたります。
例えば、ミートカーソルの大きさはミートの値によって変化したり、打った時の打球の強さがパワーの値によって変化するといったことです。

これをコードで書くとこんな感じになります。

// イチローオブジェクトを定義
const イチロー = {
    // 以下がプロパティ
    ミート : 7;,
    パワー : 120;,
    走力 : 14;,
    肩力 : 15;,
    守備力 : 15;,
        // 以下がメソッド
    バッティング : function() {
        ミートカーソルの大きさが${this.ミート}で、打球の強さは${this.パワー}に比例する。;
    },
    守備 : function() {
        ${走力}の速さで操作できて、投げる強さは${肩力}に比例して、エラーするかどうかは${守備力}に比例する;
    },
};

イチロー選手の能力値が「プロパティ」にあたり、それによってゲーム内の動きがどのように変わるのかという処理が「メソッド」にあたります。そして、これらを合わせたものが「オブジェクト」になります。

なんとなくイメージは掴めたでしょうか?

他の例も見てみる

他にも野球に関連するオブジェクトを考えてみました。

  1. プレイヤーオブジェクト
    プロパティ:名前、ポジション(ピッチャー、キャッチャーなど)、打率、守備率
    メソッド:投げる、打つ、守る
  2. チームオブジェクト
    プロパティ:チーム名、所属リーグ、勝敗記録、メンバー(プレイヤーオブジェクトのリスト)
    メソッド:試合をする、練習をする、メンバーを追加する
  3. 試合オブジェクト
    プロパティ:ホームチーム、アウェイチーム、スコア、試合日、天気
    メソッド:試合を開始する、スコアを更新する、試合を終了する

こう考えると、あらゆることをオブジェクトとして捉えることができそうですよね!

実際のコードを見てみる

それでは、実際のコードを見てみましょう。このコードは、人物を表すオブジェクトを作成しています。

const person = {
  name: ["Mannami", "Nomura"],
  age: 23,
  bio: function () {
    console.log(`${this.name[0]} ${this.name[1]} is ${this.age} years old.`);
  },
  introduceSelf: function () {
    console.log(`Hi! I'm ${this.name[0]}.`);
  },
};

このコードでは、nameageなどのプロパティと、biointroduceSelfなどのメソッドが定義されています。
先ほど説明した通り、プロパティは、オブジェクトの特徴を表し、メソッドは、オブジェクトができる動作を表します。
このコードは名前や年齢などの情報と、自己紹介する動作などが一緒になっています。

オブジェクト指向プログラミングでは、このように現実世界のオブジェクトを模倣してプログラムを構造化します。
パワプロで各選手の名前や能力が設定されているように、プログラムでも人物や物の特徴と動作を一緒にしたオブジェクトを作ります。

この概念を理解すると、プログラミングがより直感的になり、現実世界の問題を効率的に解決できるようになる、、そうです、、!。

まとめ

今回のブログで学んだ要点を3つにまとめます。

  1. オブジェクト: 野球のプレイヤーやチームのように、特徴と動作を一緒にしたもの。プログラミングでも、人物や物の特徴と動作を一緒にしたオブジェクトを作ります。
  2. プロパティ: オブジェクトの特徴。名前や年齢など。これらの特徴は、オブジェクトが何であるかを定義します。
  3. メソッド: オブジェクトの動作。バットで打つ、キャッチするなど。これらの動作は、オブジェクトが何をするかを定義します。

オブジェクト指向プログラミングは、プログラミングの中でも特に重要な概念だと昨日学習したサイトに書いてありました。
この記事を通して理解を深めるきっかけになれば嬉しいです。明日以降もオブジェクト指向プログラミングシリーズとして、記事を更新していきます。この記事がもしも役立ったらいいねやフォローをお願いします!

それでは今日も学習をスタートします!

Discussion