オブジェクト指向プログラミングと言えば、資格のあるPythonerとして、それは簡単であると言えます。結局のところ、Pythonでは「すべてがオブジェクト」です。オブジェクト指向プログラミングをまったく知らない、またはオブジェクト指向プログラミングをまったく理解していないと他の人が言う場合、あなたは非難される可能性があります。あなたは本当にオブジェクト指向プログラミングを理解していますか?次の質問に答えてみてください。
- オブジェクト指向プログラミングの定義は何ですか?Pythonがオブジェクト指向プログラミング言語であるのはなぜですか?Pythonのすべてをオブジェクトとして具体的に表現するものは何ですか?
- オブジェクト指向の4つの特徴は何ですか?これらの4つのポイントはPythonで利用できますか?それはどのように達成されますか?
- 多くの人がPythonを学び、どこから始めればよいのかわかりません。
多くの人がPythonを学び、基本的な文法を習得した後、どこから始めればよいかわかりません。
事例研究を行った多くの人々は、より高度な知識を学ぶ方法を知りません。
これらの3つのタイプの人々のために、私はあなたに優れた学習プラットフォームを提供し、ビデオチュートリアル、電子書籍、およびコースのソースコードを無料で受け取ることができます!??
¤QQグループ:232030553
ヒント:上記の質問に明確かつ明確に回答されている場合は、この記事をスキップできます。不明な場合は、この記事でコードのヘルプを多かれ少なかれ提供します。
デザインパターンの紹介
オブジェクト指向プログラミングについて説明する前に、デザインパターンを見てみましょう。デザインパターンは、次の図に示すように、主にプログラミングパラダイム、デザイン原則、およびデザインパターンで構成されています。
マップには比較的多くの概念がありますが、事前に把握している場合にのみ、一般的な印象を与える必要があります。
オブジェクト指向について話す
オブジェクト指向の歴史
オブジェクト指向とは何ですか?歴史から、Pythonは1991年に正式にリリースされ、Linuxは1991年に正式にリリースされ、Javaは1995年に正式にリリースされ、Goは2009年に正式にリリースされ 、オブジェクト指向の概念の歴史的発展は:1960 Simulaは、1970年に最初にクラスとオブジェクトの概念を提唱しました。その後、1970年代のプログラミング言語Smalltalkは、最初にオブジェクト指向の概念を使用しました。オブジェクト指向の概念は、初期に、そして開発とともに提唱されたことがわかります。ソフトウェアの、その後のほとんどの言語はオブジェクト指向言語になっています、プロセス指向言語はありますか?はい、C言語は典型的なプロセス指向言語です。
興味のある人は、ウィキペディアを読んで、これらの言語の開発の歴史を理解することができます。
- オブジェクト指向-ウィキペディア
- Python-ウィキペディア
- Java-ウィキペディア
- Linux-ウィキペディア
- 囲碁-ウィキペディア
オブジェクト指向の概念
オブジェクト指向、つまりオブジェクト指向は、オブジェクト指向分析、オブジェクト指向設計、およびオブジェクト指向プログラミング、つまりOOA(分析)、OOD(設計)、およびOOP(プログラミング)に細分されます。
ウィキペディアを読んだ場合、それはまだ非常に曖昧かもしれません。次の図からキーワードを知ることができます。属性とメソッドを含むプログラミングパラダイムは、プログラムの基本単位であるクラスのインスタンスであり、目的は改善することです。ソフトウェアのスケーラビリティと柔軟性。その文は次のとおりです。オブジェクト指向はプログラミングパラダイムであり、クラスとオブジェクトを基本単位として、カプセル化、抽象化、ポリモーフィズム、これら4つの特性の継承(強い要件ではない)を通じてコード設計を実現します。目的はソフトウェアの保守性を向上させることです。 、スケーラビリティ、および再利用性。もちろん、上記は私の個人的な文章であり、専門家ではありませんが、意味はあります。
では、なぜPythonがオブジェクト指向プログラミング言語なのか 。明らかに、Pythonは コードを編成するためのクラスとオブジェクトの特性を提供し、4つの主要な特性も備えています。それは当然のことです。 しかし、それは必ずしも4つの特性を持たないオブジェクト指向プログラミング言語ではありません か?明らかに、これには参照定義がありません。ソフトウェアの開発に伴い、多くの言語が4つの主要な機能から切り離されました。たとえば、Javaは継承をサポートしていますが、多重継承はありません。たとえば、Goは直接放棄します。継承の機能、JavaとGoにはさらに多くの機能があります。インターフェイスのインターフェイス機能はPythonではサポートされていませんが、3つすべてがオブジェクト指向プログラミング言語です。
すべてがオブジェクトです
私たちはPythonについてよく話しますが、すべてがオブジェクトですが、この文をどのように理解しますか?とても簡単です。Pythonでクラスオブジェクトを作成するときは、すべてオブジェクトの継承を前提としているため、「すべて」がオブジェクトであるかどうかを判断するには、オブジェクトに属しているかどうかを判断するだけです。ここでのすべての概念は非常に重要です。広い。、より一般的なものは次のとおりです。数値、文字列、ブール、例としての関数、結果は次のとおりです。
なぜそれらはすべてオブジェクトタイプなのですか?ブール値を例に取ってみましょう。dirを介して、(下の図に示すように)多数のプロパティとメソッドがあることがわかります。これらのメソッドは薄い空気から出ることはできないため、すべて継承されます。変数を使用して数値や文字列などを参照する場合、実際にはオブジェクトを次々に作成します。これらのオブジェクトの魔法のメソッドを使用すると、__ lt__などの一連の操作をサポートできます。 __eq__のように、より小さくして、判断を待つことができるようにします。
オブジェクト指向機能
カプセル化、抽象化、継承、およびポリモーフィズムの4つの主要な特性に関して、以下の要約を見ることができます。
Pythonは当然、4つの主要な機能をサポートします。これまで、カプセル化と抽象化については常に曖昧でした。どちらもカプセル化された抽象的な共通コードであり、他のメソッド呼び出しに提供されることが理解されています。 2つのうちは非常に異なります。カプセル化は、実装を非表示にし、データを保護するために使用されます。たとえば、Pythonでは、外部プログラムが呼び出すクラスにプライベート型を定義することがよくあります(下の図を参照)。ここで、aはのpublicキーワードと同等であることがわかります。 Java。任意の呼び出しを許可します。_aはPythonerの規則によって確立されたプライベートメソッドです。pycharmなどのideを呼び出すと、不正な参照であることを波線でユーザーに促します。__aの場合は、 Javaのプライベートと同等です。外部でideを呼び出すと、黄色として直接マークされます。エラーを示します。
結果は次のとおりです。
抽象化に関しては、広い理解は共通のコードを抽出して対応するメソッドを公開することです。狭い理解はインターフェイスの概念であり、特定の実装を明らかにすることなく、インターフェイスクラスで公開されるメソッドのみが含まれます。プログラミングではなくインターフェースに基づく」。残念ながら、Pythonではインターフェース機能が提供されていません。インターフェースについて漠然としている場合は、インターフェースクラスのインターフェースを検索できます。多くの情報を学ぶことができると思います。ただし、Pythonでは、ダックタイピングと抽象基本クラスを介して抽象化を追加で実装できます。これについては、このフォローアップ記事で詳しく説明します。
また、継承とポリモーフィズムが基本的な構文なので、ここでは詳しく説明しません。
これでこの記事は終わりです。すべて基本的なことですが、読み終えても、ある程度のメリットがあると思います。