オブジェクトとは「データ+できること」

これまで学習してきた内容では、

  • 変数 → データを入れる箱
  • 配列 → たくさん入れられる箱

でした。

オブジェクト指向では、考え方が少し進化します。

オブジェクト = データ(属性)+ 振る舞い(できること)

という考え方になります。


Bookクラスを見てみましょう

class Book
{
    public string Title { get; set; }
    public string Author { get; set; }
    public int Pages { get; set; }
    public int Rating { get; set; }

    public void Print()
    {
        Console.WriteLine($"■{this.Title}");
        Console.WriteLine($"  {this.Author}  {this.Pages}ページ  評価: {this.Rating}");
    }
}

データ(属性)とは?

まずはこの部分です。

public string Title { get; set; }
public string Author { get; set; }
public int Pages { get; set; }
public int Rating { get; set; }

これは Bookが持っている情報 です。

表にするとこうなります。

オブジェクト属性(持っているデータ)
Book(本)Title(書籍名)Author(著者名)Pages(ページ数)Rating(評価)

これは「本の情報」です。


振る舞い(できること)とは?

次にこの部分です。

public void Print()
{
    Console.WriteLine($"■{this.Title}");
    Console.WriteLine($"  {this.Author}  {this.Pages}ページ  評価: {this.Rating}");
}

これは Bookができること です。

オブジェクト振る舞い(できること)
BookPrint()(自分の情報を表示する)

つまり、この本は

  • 情報を持っているだけでなく
  • 自分の情報を表示することもできる

のです。


ここがとても重要です

今までの考え方だと、

変数 → データ
メソッド → 処理

でした。

しかしオブジェクト指向では、

データと処理をひとまとめにする

のです。

これがオブジェクト指向の本質です。


thisとは何か?

this.Title

この this は、

「この本自身」

という意味です。

つまり、

  • このBookオブジェクトの
  • 自分のTitleを使って

表示している、ということになります。


教科書の表で整理してみましょう

オブジェクトデータ(属性)手続き(振る舞い)
車種名、排気量、ナンバー前進する、後退する、停止する
テレビチャンネル、音量電源を入れる、チャンネルを変える、音量を変える
会議場所、開催日時、議題開催場所を設定する、開催日時を設定する、会議を開催する
銀行口座口座番号、名義人氏名、預金残高入金する、出金する
本(Book)タイトル、著者名、ページ数、評価情報を表示する(Print)

教科書では、

  • 車 → 前進する
  • テレビ → チャンネルを変える

という例がありました。

今回のBookでは、

  • 本 → 自分の情報を表示する

という振る舞いになります。


なぜPrintをBookの中に書くのか?

こう書くこともできます。

Console.WriteLine(book.Title);

でもそれだと、

  • 本の扱い方を
  • 外から毎回書かなければならない

状態になります。

Bookの中にPrintを作ると、

book.Print();

と書くだけで済みます。

つまり、

本の使い方を、本自身が知っている

状態になるのです。

これがオブジェクト指向らしい設計です。


今日のまとめ

オブジェクトとは:

  • データを持ち
  • 自分でできることを持つ存在

Bookクラスでは:

  • 属性 → タイトル、著者、ページ数、評価
  • 振る舞い → Print()

になりました。

ここから先、メソッドに

  • 引数を持たせる
  • 戻り値を持たせる

と発展していきます。


訪問数 10 回, 今日の訪問数 10回