オブジェクト指向プログラミング - Object Oriented Programming
速記 OOP
01.オブジェクト指向の基本概念
- 私たちは学ぶことをプログラムする前に、 プロセス指向 の
- 顔処理 と 、オブジェクト指向、異なる2つである プログラム
- コントラスト プロセス指向 の機能、あなたが優れているかを理解することができ 、オブジェクト指向
1.1プロシージャと関数(科学)
- プロセスは、 初期のプログラミングの概念であります
- プロセスは、 同様の機能のみを実行することができるされていないが、戻り値
- 関数は 実行するだけでなく、結果を返すことができるだけでなく、
オブジェクト指向のプロセスの基本的な概念の1.2顔と
1) 表面プロセス - どのように行いますか?
- 一つは、完了する必要が
所有步骤
从头到尾
漸進的実現を - 開発ニーズ、いくつかの 独立の機能 コード カプセル化された 別のものに 機能
- コードのファイナライズは、呼び出しの順序で 異なる機能を
機能
- 焦点を当てる プロセスへのステップの役割分担に焦点を当てていません、
- 需要の複雑な場合は、コードは非常に複雑になります
- 複雑なプロジェクトの開発、決まったルーチンが存在しない、開発は非常に困難です!
2) オブジェクト指向 - 何をするつもりされて?
比較関数は、オブジェクト指向で ある 大きな に パッケージによれば、 機能 における 複数のオブジェクトの実装方法
- 一定の要件を完了する前に、最初の決定 の責任を - 観光名所(メソッド)
- デューティ 別の決意 オブジェクトに オブジェクト パッケージ内の異なる 方法(複数可)
- コードのファイナライズを行うためである 異なるオブジェクトを 呼び出すために さまざまな方法で
機能
- 焦点を当てる のオブジェクトと責任、異なるオブジェクトは、異なる責任を引き受けます
- 需要の複雑な変化に対応するために、より適している、一定のルーチンを提供し、複雑なプロジェクトの開発に対処するために設計されています
- これは、プロセス指向の基礎を必要とし、その後、いくつかのオブジェクト指向構文を学びます
02.クラスとオブジェクト
クラス2.1
- クラスが 有する基で 同じ特性 や 挙動 、一般的なものを抽象的で、直接使用することはできません
- 機能が 呼び出された 属性
- 動作が 呼び出された メソッド
- クラスは、 航空機の製造時に相当した図面で、 テンプレートは、ある オブジェクトの作成を担当
2.2オブジェクト
- オブジェクトが された 特定のクラスの存在の外に作成され、直接使用することができます
- うち どのクラス から作成 オブジェクトは、あなたの中に持ってい たクラスが 定義されました:
- プロパティ
- 方法
- オブジェクトは、 と等価である 描画 製造 航空機の
プログラム開発、最初のクラスを持っている必要があり、そのオブジェクトがあります
2.3およびオブジェクトクラス間の関係
- クラスはテンプレートで、オブジェクトが 基づいている クラス 、このテンプレートから作成、あなたがすべき 最初のクラスを持っている、そしてオブジェクトがあります
- クラスは 一つだけで、 オブジェクトは 、多くのことができます
- 異なるオブジェクト 間の 特性が 変化してもよいです
- クラスは、 どのような定義 プロパティとメソッド、オブジェクトの プロパティとメソッドは、どのようなそこに多くのことが、あまり不可能ではないことができます
2.4。デザインクラス
オブジェクト指向開発を使用する前に、分析は、最初のクラスが含まれる必要のあるものをプログラム決定すべきである必要があります!
プログラム開発は、クラスを設計するために、通常は次の3つの要素が必要です。
- クラス名 これらの事の名前、大きなこぶの命名法を満たすために
- プロパティ の特徴のどのようなこれらの事のと
- メソッド のようなものを、どのような行動の
大きなこぶの命名法:
- 大文字の各単語の最初の文字
- 単語の間には、アンダースコアありません
2.5クラス名を決定
名詞抽出方法 の分析 ビジネスプロセス全体の出現 期間は、通常クラスで発見されました
プロパティとメソッドの2.6決意
- で 記述されているオブジェクトの特徴、それは一般的として定義することができる 属性
- オブジェクトは、ビヘイビア有する(動詞)、それは一般的として定義することができる 方法
03.オブジェクト指向の基本的な文法
3.1組み込み関数
で 対象のPythonのほぼ遍在し、すべてが対象ですPython
では Python
、次の2つの方法を使用して検証することができます。
- 識別子 / データ の後に入力
.
プレスTAB
ボタンは、iPython
することができますが、オブジェクトを呼び出すように求めるメッセージが表示されます 方法のリスト - 内蔵使用関数
dir
着信 識別子 / データを、オブジェクトがで見ることができる すべてのプロパティとメソッド
いいえ。 | メソッド名 | タイプ | 効果 |
---|---|---|---|
01 | __new__ |
方法 | オブジェクトを作成し、意志がされ 、自動的 に起動します |
02 | __init__ |
方法 | オブジェクトが初期化され、されるとき に自動的 に起動します |
03 | __del__ |
方法 | オブジェクトがメモリから破棄され、前にされ 、自動的 に起動します |
04 | __str__ |
方法 | 返すオブジェクト記述、print 使用して関数の出力を |
ヒント をうまく利用作る dir()
機能を、研究では、コンテンツの多くを暗記する必要はありません。
3.2。(唯一の方法を含む)単純なクラス定義
オブジェクト指向が ある 以上 の パッケージ、 クラスのパッケージの複数のメソッド、 クラスオブジェクトを介して作成され、あなたはこれらのメソッドを直接呼び出すことができます!
3.2.1のみを含むクラス・メソッドを定義します
Python
のみ含まれているクラスは、次の構文を定義するための方法:
クラスのクラス名: デフ方法1(自己、パラメータリスト): パス デフ方法2(自己、パラメータリスト): パス
- メソッド 定義された形式と、これまでに学ぶには、機能 はほぼ同じ
- 違いは、最初の引数がなければならないということである
self
、私は後に最初に導入したことを覚えていself
注意:クラス名は命名命名大きなこぶに従ってください
3.2.2オブジェクトの作成
- 次のようにクラス定義が完了すると、あなたがオブジェクトを作成するには、このクラスを使用する場合、構文は次のとおりです。
)(変数名=クラスオブジェクト
最初のオブジェクト指向プログラミング3.2.3
需要
- 子猫は 愛する 食べて 、魚を子猫 ために 飲む 水を
分析
- 猫の定義
Cat
- 2つのメソッドを定義し、
eat
そしてdrink
- オンデマンド - なしカスタムプロパティ
クラスキャット: 「」「これは猫のようなものです。」「」 DEF :(セルフ)EAT 印刷(" 猫の愛の魚" ) DEF (自己)ドリンク:。。 印刷(" 水の中の猫を" ) トム = キャット() tom.drink() tom.eat()
self引数3.3の方法
3.3.1ケース改革 - プロパティの件名を高めるために
- では
Python
真ん中、あなたがしたい オブジェクトのプロパティを設定し、非常に簡単で、しかしお勧めできません- パッケージオブジェクトの属性は、クラスの内部にカプセル化する必要がありますので、
- のみを必要とする 外部コード・クラスの 中で直接
.
にプロパティを設定します
この方法は単純ではあるが、しかし、お勧めできません。注意してください!
tom.name = ' トム' ... lazy_cat.name = ' ビッグLanmao '
3.3.2 self
メソッド内の各猫の名前の出力
どのオブジェクト メソッドの呼び出しは、方法で self
ある オブジェクトへの参照います
- メソッドのクラスパッケージ内では、
self
と言う オブジェクト自体を呼び出すの現在の方法は、 - あなたがメソッドを呼び出すと、プログラマは渡す必要はありません
self
パラメータを - メソッド内で
- あなたは、することができ
self.
、オブジェクトのプロパティにアクセスします - あなたもできる
self.
他のオブジェクトのメソッドを呼び出します - コード変換、次のように
クラスキャット: デフ(自己)を食べる: 印刷(" %sの爱吃鱼"%のself.name) トム = キャット() tom.name = " トム" tom.eat() lazy_cat = キャット() lazy_cat.name = " ビッグ怠惰な猫" lazy_cat.eat()
- で 外部クラスを介して、
变量名.
アクセス・オブジェクト・ プロパティとメソッド - 内 包装方法のタイプによって
self.
オブジェクトアクセス プロパティとメソッド
3.4初期化メソッド
3.4.1コードの問題 - クラス属性外対象に増加
- 調整すべきコードの場合メソッドを呼び出す前に、次にプロパティを設定、結果の実装を見
Catクラス:
DEF EAT(セルフ):
印刷( "%Sの愛の魚" %のself.name)
トム=キャット()
tom.eat()
tom.nameは= 'トム' #は、最初のプロパティの設定、メソッドを呼び出します
(印刷をタム)
- 次のように与えられたプログラムの実行:
AttributeError: 'Cat' object has no attribute 'name'
属性错误: ‘Cat’对象没有‘name’属性
提示
- 在日常开发中,不推荐在 类的外部 给对象增加属性
- 如果在运行时,没有找到属性,程序会报错
- 对象应该包含有哪些属性,应该 封装在类的内部
3.4.2 初始化方法