オブジェクトとは「データ+できること」
これまで学習してきた内容では、
- 変数 → データを入れる箱
- 配列 → たくさん入れられる箱
でした。
オブジェクト指向では、考え方が少し進化します。
オブジェクト = データ(属性)+ 振る舞い(できること)
という考え方になります。
目次
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ができること です。
| オブジェクト | 振る舞い(できること) |
|---|---|
| Book | Print()(自分の情報を表示する) |
つまり、この本は
- 情報を持っているだけでなく
- 自分の情報を表示することもできる
のです。
ここがとても重要です
今までの考え方だと、
変数 → データ
メソッド → 処理
でした。
しかしオブジェクト指向では、
データと処理をひとまとめにする
のです。
これがオブジェクト指向の本質です。
thisとは何か?
this.Title
この this は、
「この本自身」
という意味です。
つまり、
- このBookオブジェクトの
- 自分のTitleを使って
表示している、ということになります。
教科書の表で整理してみましょう
| オブジェクト | データ(属性) | 手続き(振る舞い) |
|---|---|---|
| 車 | 車種名、排気量、ナンバー | 前進する、後退する、停止する |
| テレビ | チャンネル、音量 | 電源を入れる、チャンネルを変える、音量を変える |
| 会議 | 場所、開催日時、議題 | 開催場所を設定する、開催日時を設定する、会議を開催する |
| 銀行口座 | 口座番号、名義人氏名、預金残高 | 入金する、出金する |
| 本(Book) | タイトル、著者名、ページ数、評価 | 情報を表示する(Print) |
教科書では、
- 車 → 前進する
- テレビ → チャンネルを変える
という例がありました。
今回のBookでは、
- 本 → 自分の情報を表示する
という振る舞いになります。
なぜPrintをBookの中に書くのか?
こう書くこともできます。
Console.WriteLine(book.Title);
でもそれだと、
- 本の扱い方を
- 外から毎回書かなければならない
状態になります。
Bookの中にPrintを作ると、
book.Print();
と書くだけで済みます。
つまり、
本の使い方を、本自身が知っている
状態になるのです。
これがオブジェクト指向らしい設計です。
今日のまとめ
オブジェクトとは:
- データを持ち
- 自分でできることを持つ存在
Bookクラスでは:
- 属性 → タイトル、著者、ページ数、評価
- 振る舞い → Print()
になりました。
ここから先、メソッドに
- 引数を持たせる
- 戻り値を持たせる
と発展していきます。
訪問数 10 回, 今日の訪問数 10回


ディスカッション
コメント一覧
まだ、コメントがありません