1. TOP
  2. プログラム
  3. ソフト
  4. python
  5. Python-オブジェクトの4大要素

Python-オブジェクトの4大要素

2018-06-09_115224_GX1

1:カプセル化

2つの概念で成り立っている。一つは、オブジェクト指向プログラミングにおいて、オブジェクトの複数の変数(状態)とメソッド(状態を変更したり状態を使って計算する)をまとめること

二つ目は、データをクラス内に隠蔽して外から見えないようにすること。

client:とはクラスの外側からオブジェクトを操作するコード

クラスDataは、整数のリストをイスタンス変数numsに持っています。Dataのインスタンスを作成したあと、numsを変更するには2つの方法がある。 一つは,change_dataメソッドを使う方法で、もうひとつは、インスタンス変数を直接変更する方法です。

多くのプログラミング言語は、この問題をプライベート変数やプライベートメソッドといった。オブジェクトの外から参照や操作ができない属性をプログラマーが定義できるようにして、解決しています。

Pythonにプラベート変数はありません。

Pythonでは、clientからアクセスしてほしくない変数やメソッドには、名前の前にアンダースコアーを一つ付けます。Pythonプログラマーは、変数やメソッドがアンダースコアで始まっていたら、触っていけないと知っています。

2:抽象化

抽象化とは、対象から細部や具体性を取り去り、本質的に重要な要素や、着目している側面のみを取り出して、一つの概念として定義すること。また、異なる複数の対象に共通する性質や要素を見出し、共通点を組み合わせて汎用的な概念を構成すること。

ソフトウェアの設計・開発やプログラミングで特に多用される概念で、プログラミング言語がメモリの番地に名前をつけて変数として扱えるようにすることや、複数のプログラムモジュール(部品)から共通する機能を抜き出して一つのモジュールにまとめること、同じ呼び出し規約で複数の異なるプログラムを呼び出せることなどがこれに当たる。

3:ポリモーフェズム

同じインターフェースでありながらデータ型に合わせて異なる動作をする機能

print関数は、文字列、整数、浮動小数点数のどれで同じインターフェースで動作さする。

PythonやRubyのような動的型言語では、厳密なポリモーフィズムにこだわらず、ダック・タイピングを活用したプログラミングが一般的に行われている。

実行してみて期待どうりに動作するならそれで良い、という考え方がダックタイピングというプログラムの作法です。「それがアヒルのように歩き、アヒルのように鳴くのなら、それはアヒルだ」という比喩から名付けられました

4:継承

プログラミングにおける継承は、遺伝的継承に似ています。遺伝的継承では、目の色などの属性を両親から受け継ぎます。これと同様に、クラスを作るときにほかのクラスからメソッドや変数を受け継ぎます。継承元となるクラスのことを親クラスと言い、継承先ケラスのことを子クラスと言います。

番外:コンポジション

「has-a関係」を表し、別クラスのオブジェクトを変数として持たせます。たとえば、犬とその飼い主という関係を表すのにコンポジションを使い、犬は一人の飼い主を持つ、と表現します。