LoginSignup
5
1

More than 5 years have passed since last update.

オブジェクト指向の3大要素

Posted at

授業でした内容を自分のメモとして書き残します。


2018/05/16(水)の授業内容

■ 学校に関するもの

・ 今授業で使用している教室PCの追加メモリが届かない
・ sambaサーバからのコピーが異常に遅い
・就活での公欠は2ページ分カウント宣言


オブジェクト指向の3大要素

オブジェクト指向の3大要素とは、以下の3つである

  1. カプセル化(隠ぺい)
  2. 継承(インヘリタンス)
  3. 多態性(ポリモーフィズム)

1. カプセル化(隠ぺい)

⇒ オブジェクトの持つ任意のメンバーを隠ぺいすること

ex1
    class Years
    {
        private short _item;
        public short Item
        {
                (中略)
        }
        private short[] _items;
        public short[] Items
        {
                (中略)
        }

        private short[] CreateItems()
        {
                (中略)
        }
    }

〇 YearsインスタンスのメンバーにYearsクラス以外からアクセス
⇒ ItemプロパティとItemsプロパティのみアクセスできる
※ その他のメンバーは、Yearsクラス内からのみアクセスできる

アクセス修飾子
カプセル化を実現するためのキーワード
ex) public(公開), private(非公開)...

■ 公開レベル
⇒ アクセス修飾子を必要に応じて使い分ける
※ いくつかを以下にあげる

  • private
    最小の公開レベル、自身のメンバーからのみアクセスできる
  • protected
    privateのアクセスに加え、この型を継承したクラスからアクセスできる
  • public
    最大の公開レベル、この型のメンバーはすべてに対し公開されている

2. 継承(インヘリタンス)

⇒ 基本クラスを継承し、新しいクラス(派生クラス)を作成できる機能

〇 継承の規則
単一継承
派生クラスは複数の基本クラスを持つことができない

■ Objectクラス ?
.NET Frameworkのクラス階層の基本クラスであり、型階層のルートである

class Section : object
{
        ...クラスの実装
}

すべてのクラスは例外なく、Objectクラスを継承している

3. 多態性(ポリモーフィズム)

⇒ 型変換という、オブジェクトのデータ型を変換する機能(?)

〇 型変換には、二つのものがある

  1. 暗黙のうちに実行できるもの
    ⇒ 代入演算子を使用

  2. 明示的に実行しなければならないもの
    ⇒ キャスト演算子かas演算子を使用し、変換した結果を代入

■ as演算子とキャスト演算子

as演算子

  • 参照型の変数のみ使用可能
  • 型変換に失敗するとNULLを返す

キャスト演算子

  • 値型、参照型どちらにも使用可能
  • 型変換に失敗すると例外エラーが発生する

!! 例外エラーは処理コストがかかるとともに、処理の流れに大きく影響する !!
⇒ 可能ならas演算子を使用する

■ ボックス化 ?
値型を参照型にすること
ボックス化 ⇔ ボックス化解除

ex
int i = 1;
Object o = i;
int j = (int)o;

※ 高速に処理をさせたい場合、使用を避けると良い


最後までお読みいただきありがとうございました。

5
1
0

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
5
1