オブジェクト向けプログラミングおよびPythonオブジェクト向け
2640 ワード
一、オブジェクト向けプログラミング
オブジェクト向けプログラミング(OOP)は,プロセス向けよりも人間の思考習慣に近い方式である.
オブジェクト向けは、1つの全体的な問題をいくつかのモジュールに分け、ブロックと高速の間の交流を通じて問題を解決する.プロセス向けプログラミングは、1つの問題を解決するステップに従って1、2、3、4の1つの方法で解決します.
オブジェクト向けには、マルチステート、パッケージング、継承の3つの特徴があります.2つの主要な概念:クラス、オブジェクト.
個人的にオブジェクトに向かうのは1つの総得点の構造であることを理解して、1つのモジュールの中から共通の部分を抽出してクラスで、このクラスは方法があって、メンバーの変数があって、このクラスがAであると仮定します.
このとき,クラスBがAクラスのすべてのメンバ変数とメソッドを備えるとともに,いくつかのAクラスにはないメソッドと属性を備えている場合,Bを実装するにはextends Aクラスのみを必要とし,Bクラスでこれらのメソッドと属性を単独で実装すればよい.C,D,E…などのクラスがBクラスと類似している場合,これらのクラスはAクラスを同時に継承し,多態性の体現(不十分)である.
例えばCatというクラスがあります
class Cat{
足=力強い;
目=明るい;
耳=「かわいい」
走る();
ジャンプ();
}
ChineseWhiteCatというクラスがあります.明らかに中国の白猫は猫の一種で、猫のすべての属性を持っていますが、同時に自分の特徴もあります.
class ChineseWhiteCat extends Cat {
体型=「雄健」;
目=「茶色、青」
}
その中で体型はCat類にはない属性で、ChineseWhiteCat類自身であり、目にはCatよりも具体的な特徴がある.属性と方法の書き換えも多態の体現である.
オブジェクト向けの利点は多いが,オブジェクト向けに欠点がないという意味ではない.
オブジェクト向けのオーバーパッケージングの問題が発生する可能性があり,他の分野で発生するオーバーデザイン,オーバーサービスなどが考えられる.
二、Pythonオブジェクト向けプログラミング
Pythonは解釈言語であるため、スクリプト言語と呼ばれることが多いが、Pythonは完全なオブジェクト向け言語であり、Pythonではすべてオブジェクトである.
オブジェクトがあればクラスがあり、Pythonはclassキーワードを使用してクラスをマークします.クラス内のメソッドはdefキーワードを使用し、クラス内のメソッドには少なくとも1つのパラメータselfが必要です.例:
class Cat:
name=「明ちゃん」
def jump(self):
print self.name
selfはJava言語のオブジェクトのthisキーワードにほぼ相当する.
オブジェクトのインスタンス化式は、c=Cat()
これはJavaの式とは異なり、Javaのインスタンス化方法はCat c=new Cat()であるが、両者は本質的に同じである.
すなわち、オブジェクトCat()を作成し、オブジェクトCat()のメモリアドレスにcを指します.
Pythonにはpublic,privateのように公有属性と私有属性を区別するキーワードはなく,Pythonは2つの下線""を用いる.に表示されます.
Pythonクラスには、次の方法が組み込まれています.
構築方法_init__(self,....)オブジェクトの生成時に呼び出すと、呼び出しを表示する必要がなく、デフォルトで実行される初期化操作に使用できます.コンストラクションメソッドはリロードをサポートし、ユーザー自身がコンストラクションメソッドを再定義していない場合、デフォルトのコンストラクションメソッドが自動的に実行されます.
プロファイルメソッド_del__(self)オブジェクトを解放するときに呼び出され、リロードがサポートされ、呼び出しを表示する必要がなく、リソースを解放する操作を行うことができます.
他にもいくつかの組み込み方法があります.
例えば_cmp__( ), __len( )__など、具体的な使い方はこのブログを参考にすることができます.
http://www.cnblogs.com/simayixin/archive/2011/05/04/2036295.html
コンテンツの一部:
http://www.cnblogs.com/dolphin0520/
オブジェクト向けプログラミング(OOP)は,プロセス向けよりも人間の思考習慣に近い方式である.
オブジェクト向けは、1つの全体的な問題をいくつかのモジュールに分け、ブロックと高速の間の交流を通じて問題を解決する.プロセス向けプログラミングは、1つの問題を解決するステップに従って1、2、3、4の1つの方法で解決します.
オブジェクト向けには、マルチステート、パッケージング、継承の3つの特徴があります.2つの主要な概念:クラス、オブジェクト.
個人的にオブジェクトに向かうのは1つの総得点の構造であることを理解して、1つのモジュールの中から共通の部分を抽出してクラスで、このクラスは方法があって、メンバーの変数があって、このクラスがAであると仮定します.
このとき,クラスBがAクラスのすべてのメンバ変数とメソッドを備えるとともに,いくつかのAクラスにはないメソッドと属性を備えている場合,Bを実装するにはextends Aクラスのみを必要とし,Bクラスでこれらのメソッドと属性を単独で実装すればよい.C,D,E…などのクラスがBクラスと類似している場合,これらのクラスはAクラスを同時に継承し,多態性の体現(不十分)である.
例えばCatというクラスがあります
class Cat{
足=力強い;
目=明るい;
耳=「かわいい」
走る();
ジャンプ();
}
ChineseWhiteCatというクラスがあります.明らかに中国の白猫は猫の一種で、猫のすべての属性を持っていますが、同時に自分の特徴もあります.
class ChineseWhiteCat extends Cat {
体型=「雄健」;
目=「茶色、青」
}
その中で体型はCat類にはない属性で、ChineseWhiteCat類自身であり、目にはCatよりも具体的な特徴がある.属性と方法の書き換えも多態の体現である.
オブジェクト向けの利点は多いが,オブジェクト向けに欠点がないという意味ではない.
オブジェクト向けのオーバーパッケージングの問題が発生する可能性があり,他の分野で発生するオーバーデザイン,オーバーサービスなどが考えられる.
二、Pythonオブジェクト向けプログラミング
Pythonは解釈言語であるため、スクリプト言語と呼ばれることが多いが、Pythonは完全なオブジェクト向け言語であり、Pythonではすべてオブジェクトである.
オブジェクトがあればクラスがあり、Pythonはclassキーワードを使用してクラスをマークします.クラス内のメソッドはdefキーワードを使用し、クラス内のメソッドには少なくとも1つのパラメータselfが必要です.例:
class Cat:
name=「明ちゃん」
def jump(self):
print self.name
selfはJava言語のオブジェクトのthisキーワードにほぼ相当する.
オブジェクトのインスタンス化式は、c=Cat()
これはJavaの式とは異なり、Javaのインスタンス化方法はCat c=new Cat()であるが、両者は本質的に同じである.
すなわち、オブジェクトCat()を作成し、オブジェクトCat()のメモリアドレスにcを指します.
Pythonにはpublic,privateのように公有属性と私有属性を区別するキーワードはなく,Pythonは2つの下線""を用いる.に表示されます.
Pythonクラスには、次の方法が組み込まれています.
構築方法_init__(self,....)オブジェクトの生成時に呼び出すと、呼び出しを表示する必要がなく、デフォルトで実行される初期化操作に使用できます.コンストラクションメソッドはリロードをサポートし、ユーザー自身がコンストラクションメソッドを再定義していない場合、デフォルトのコンストラクションメソッドが自動的に実行されます.
プロファイルメソッド_del__(self)オブジェクトを解放するときに呼び出され、リロードがサポートされ、呼び出しを表示する必要がなく、リソースを解放する操作を行うことができます.
他にもいくつかの組み込み方法があります.
例えば_cmp__( ), __len( )__など、具体的な使い方はこのブログを参考にすることができます.
http://www.cnblogs.com/simayixin/archive/2011/05/04/2036295.html
class people:
name = 'jack' #
__age = 12 #
p = people()
print p.name #
print people.name #
print p.__age # ,
print people.__age # ,
Python Javaではなく、Pythonインスタンスのプロパティはクラスに定義を表示する必要はありません.たとえば、次のような興味深い点があります.class people:
name = 'jack'
p = people()
p.age =12
print p.name #
print p.age #
print people.name #
print people.age #
コンテンツの一部:
http://www.cnblogs.com/dolphin0520/