0
0

More than 1 year has passed since last update.

【OOP】01_オブジェクト・クラス・インスタンス

Last updated at Posted at 2022-01-10

こんにちは、コイキングです。

本記事では OOP(Object Oriented Programming == オブジェクト指向プログラミング)の説明のうち、オブジェクト・クラス・インスタンスについて、説明したいと思います。


1. オブジェクトとは?

まず一般的なオブジェクトの概念について探してみると**現実世界に存在する'物体'、'対象'になります。

※ 参考
https://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88

具体的に例えてみると人間・犬のような動物も、スマートフォン・PC・箱のような物も、ポケモン・デジモンのようなゲームのキャラクターもオブジェクトと言えると思います。

ではOOPでのオブジェクトは何でしょう?
私は現実世界のオブジェクトから重要で核心的な所を抽象化してクラス化し、クラスを元にしてメモリー上にロードされたデータだと思います。

オブジェクト指向では上記の説明通りメモリー上にロードされたオブジェクトの相互作用を通してプログラムを実装します。

2. クラスとは?

クラスは'OOPのオブジェクトを作るための一種の設計図'です。
クラスを作るためには現実世界のオブジェクトから重要で核心的なもの・共通点・特徴などを洗出し、1) 属性と 2)行為に定義します。

こちらで属性はクラスのメンバー変数、行為はクラスのメソッドになります。

※ クラスの宣言文法

[アクセス制御子] class クラス名 {
    //...メンバー変数・メソッド
}
Person.java
public class Person {

    // メンバー変数
    String eye;
    String nose;
    String mouth;
    String hand;
    String foot;

    // メソッド
    public void eat() {
        System.out.println("eat");
    }

    public void sleep() {
        System.out.println("sleep");
    }

    public void defecate() {
        System.out.println("defecate");
    }   
}

上記のPersonクラスは人間をクラス化したものです。
人間がもつ目・鼻・口・手足などの属性はメンバー変数に
食べる・寝る・トイレに行くなどの行為をメソッド化しました。

3. インスタンスとは?

インスタンスとはクラスを元にしてメモリー上にロードされたデータを意味します。
OOPで言っているオブジェクトと言えます。
コードを解析する際に'オブジェクト'という単語と'インスタンス'という単語を同じ意味でよく混用して使ったりします。

※ インスタンスを作る方法は以下となります。

[クラス名] [インスタンス変数名] = new [コンストラクター()];

※ インスタンスのメソッド及びメンバー変数の値にアクセスする方法は以下となります。

[インスタンス変数名].[メソッド() 又は メンバー変数];
public static void main(String[] args) {
    Person person = new Person();
    person.eat();
    String eye = person.eye;
    System.out.println(eye);
}

※ 例示コード
https://github.com/leeyoungseung/algorithmBasic/blob/master/algorithm/src/objective/basic01/Person.java

※ 韓国語のポストは以下のURLで確認できます。
https://koiking.tistory.com/87

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0