0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

タイトル不明(自分用用語)

Posted at

カプセル化
オブジェクトの情報を隠蔽することによって、不整合を引き起こすような操作をできなくされる仕組み。
カプセル化のイメージ
元々の意味は、オブジェクトやデータをカプセルのように保護するということらしい。
カプセル化のメリット
・オブジェクトのデータが外からチョア苦節変更されることを禁止
・アクセス指定子によってカプセル化するかしないか決められる
・カプセル化されているデータはクラス内の関数によって変更できる
そもそもカプセル化の狙いは・・・「データの保護」
※データの変更をオブジェクト自身に任せることによって、バグ(不整合)を引きお起こさせないようにする。

継承
あるクラスを引継ぎ、新たなクラスを作成できる機能。
※一度使ったオブジェクトの要素と操作を引き継げること

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

(ポリ(多くの)、モーフィズム(変化))⇒直訳で多くの変化が可能になる⇒多様性

モノがそのモノらしく振舞うこと
例:
?は「??」と鳴く。
(犬、猫、カラスがいたとします)
この3匹はどのように鳴くでしょう?

・犬は「わん」
・猫は「にゃー」
・カラスは「カー」
と鳴く。
これをプログラミングに置き換えると・・・
クラス 犬 {鳴く(){ "わん" }};
クラス 猫 {鳴く(){ "にゃー" }};
クラス カラス {鳴く(){ "かー" }};
それぞれの鳴き声をこのように表してみた。

そして上にある「?は??と鳴く」という風に表すための関数に直す
犬.鳴く();
猫.鳴く();
カラス.鳴く();
と書くことが出来る筈。
それを・・・実行すると
犬.鳴く()⇒”わん”
猫.鳴く()⇒”にゃー”
カラス.鳴く()⇒”かー”
と実行されるはず・・・

その際にポリモーフィズムを利用した書き方
動物 = { 犬,猫,カラス};
for (動物) { 動物.鳴く(); }
かな。

動物に犬、猫、カラスが入って、鳴き声という関数を呼ぶ。

ここで、考えるにあたって、どの動物に対しても鳴くという処理が
同じ動作しかできないのであれば、この構文は使えないということ。

その為、「中に入るものによって同じ関数でも違う処理を行える」
という特徴があるそういう多様性が求められる。
ポリモーフィズムのメリット
・コードがきれいになる(場合によっては記述量が減る)
・プログラムの変更に強くなる柔軟性

クラス

オブジェクトを作るための設計図のようなもの。

インスタンス:設計図に求められた実体

インターフェース(何かと何かの間をつなぐ部分)

アプリを使うときの操作画面は、アプリと人を繋ぐ部分なので「ユーザーインターフェース」と呼ばれている。
なので、何かと何かの橋渡しをしてくれる仲介役と理解しよう。
インターフェースでは実装が良く書かれている・・・「機能とかを新しく追加する」でOK!!

・インターフェースを使えばメソッドの実装を強制できる!!
C#でのインターフェースは「クラスを作った人」と「そのクラスを使う人」の間で、使い方の
約束事を決めることができる仕組みの事を言います。

では、抽象クラスとの違い
「抽象クラス」は「抽象メソッド」を1つ以上含むクラスです。
そして、「抽象メソッド」は継承先でのオーバーライドを強制する仕組み。

インターフェースの作り方のルール
・名前の先頭に「I」をつける
・メソッドの中身は何も書いてはいけない。
※返り血の型や、引数は指定しても大丈夫。

メンバ変数
クラスの中で宣言されている変数

メンバ関数
メンバ変数と同様クラスの中で宣言されるメソッド。

コンストラクタ
初期化を行う為の関数またはメソッドの事。
・コンストラクタ名はクラス名と同じにする必要がある。
・コンストラクタに引数を渡すときは、インスタンスを生成する際に値を指定。

静的クラス(static)
インスタンス化できないクラスで、静的メンバーのみを含めることができる。

部分クラス(partial)
1つのクラス定義を複数個所に分けて記述できる仕組み。
クラス定義の一部を自動生成する場合などに、自動生成部分をpartialで分離
することにより、自動生成を再実行しやすくするといった使い方。

ジェネリクス型の型パラメーター
型パラメーターを利用することで、クラスを定義する際にプレースホルダー型を提供し、
そのクラスを利用する際位に実際の型を指定できる。
汎用的に使えるクラス・インターフェース・メソッ度などを定義できるのでジェネリクスと呼ばれ
基本クラスライブラリでもListkるあすなど主にコレクションで多用されている。

型パラメーターはwhereキーワードで制約を課すことが出来る。classもしくはstructで参照型もしくは
構造体である成約を課したり、指定したクラスを継承したクラスという制約を課したりできる。
また、new()制約により「publicな引数なしのコンストラクターを持つ」という制約を課すことで、
型パラメーターに指定したクラスをコンストラクターで呼び出しでインスタンス化することもできる。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?