初心者向けの OOPS の概念の説明

公開: 2022-12-20

コンピュータ プログラムの役割は、現実世界の複雑な要件をコンピュータが理解できる命令にうまくモデル化することです。 これを達成するために、いくつかのプログラミング パラダイムがさまざまな哲学に基づいて機能します。 これらには、関数型プログラミング、手続き型プログラミング、オブジェクト指向プログラミングなどが含まれます。 これらのパラダイムは、その動作方法によって異なるため、言語に依存しません。

この記事では、オブジェクト指向プログラミングについて詳しく説明します。 OOPS の複雑さに入る前に、覚えておくべき Javaの主要なOOP の概念をいくつか示します。これらは、OOPS が機能する 4 つの柱であるためです。

  • 抽象化
  • カプセル化
  • 継承
  • ポリモーフィズム

これらのOOP の概念については、この記事の後の段階で詳しく説明します。 しかし、最初に、オブジェクト指向プログラミングとは正確には何なのかを理解しましょう。

目次

オブジェクト指向プログラミングとは?

オブジェクト指向プログラミング以前は、関数型プログラミングが主要なプログラミング パラダイムでした。 C や COBOL などの言語はこのパラダイムに従っていたため、これらの言語を使用して作成されたプログラムは一連の命令でした。 これらは、サブルーチンまたはプロシージャを使用して、ソース コードをモジュール化し、読みやすくします。 関数型プログラミングのパラダイムは、データよりもロジックに重点を置いており、プログラムはデータとプログラムの両方を組み合わせます。

C++、C#、Java などのプログラミング言語は、C の後、オブジェクト指向プログラミングのアプローチに移行しました。OOP は、単純なロジックベースの命令を上書きするデータを優先しました。 本質的に、オブジェクトは、プログラムでモデル化したいすべてのものです。 それは何でもありえます。 今は漠然としているように聞こえるかもしれませんが、最後まで固執してください。

クラスとオブジェクトとは

オブジェクト指向プログラミングは、クラスとオブジェクトを操作します。 したがって、これら 2 つの用語の意味と、それぞれの違いを理解することが重要です。 簡単に言えば、クラスは、必要なときにオブジェクトを作成するのに役立つ青写真と考えてください。

クラスの役割は、さまざまな属性とさまざまな動作を定義することです。 したがって、プログラムで車両をモデル化する場合、車両のクラスを作成し、車輪の数、色、モデル、年式などの属性を保持します。 一方、動作は、開始、加速、ブレーキなどです。 ご覧のとおり、定義した属性と動作は 1 つの車両に固有のものではありません。 それらは基本的に、さまざまな車両のさまざまな動作と属性を網羅しています。 このようにして、新しい車両オブジェクトをインスタンス化する場合、問題の車両ごとに属性を指定できます。 このように、クラスは、同じ属性と動作を持つ新しいオブジェクトを作成するための完璧な青写真として機能します。

というわけで、これが私たちの Class Vehicle とそのさまざまな属性と動作がどのように見えるかです。 Java の構文を使用してコードを記述しましたが、プログラミング パラダイムは言語に依存しないことを思い出してください。

公共クラス車両{

プライベート文字列 _color;

プライベート int _model;

プライベート文字列 _makeYear;

プライベート文字列 _fuelType;

public void start(){ }

パブリックボイドアクセラレータ() {}

public void stop() {}

}

定義されたクラスを使用して、共通の動作を持ちながら異なる属性を持つさまざまなオブジェクトを作成できます。 例えば:

オブジェクト 1
モデルアルト
燃料CNG
作る2018年
始める()

壊す()

加速する()

オブジェクト 2
モデルワゴンR
燃料ガソリン
作る2017年
始める()

壊す()

加速する()

このように、オブジェクト指向プログラミングのクラスは、現実世界の複雑な動作やシステムのモデリングを簡素化するのに役立ちます。 すべてのデータ、属性、および関数は、任意のクラスのオブジェクトにバインドされています。 このようにして、グローバル データを保持する必要がなくなります。 これは、手続き型プログラミングとオブジェクト指向プログラミングのアプローチの重要な違いです。

基本が決まったら、オブジェクト指向プログラミングの 4 つの柱を詳しく見てみましょう。

世界のトップ大学からデータ サイエンス認定取得します。 エグゼクティブ PG プログラム、上級認定プログラム、または修士プログラムを学んで、キャリアを早めましょう。

抽象化

抽象化とは、タスクがどのように実行されるかではなく、何が行われるかに焦点を当てることです。 抽象化の背後にある全体的な考え方は、相互に依存することなく相互に対話できる独立したモジュールの構築を支援することです。 このようにして、プログラムの保守もより簡単で管理しやすくなります。 抽象化により、OOP は、それらの機能がどのように実装されているか、またはシステムの内部がどのように機能するかを検討することなく、重要な機能のみを表現しようとします。

Python で最も重要なOOPS 概念の 1 つの背後にある考え方は、プログラマーは現在のモジュールにとって直接的に重要なことだけに集中する必要があるということです。 1 つのモジュールを変更しても、他の独立したモジュールに直接影響を与えるべきではありません。 プログラマーは、現在のモジュールとそれが提供するものに関する知識のみを必要とします。 必要なことを達成するために、モジュールのバックグラウンドの動作を理解する必要はあまりありません。 したがって、最良の結果を得るために、その情報は抽象化されています。

抽象化の概念をプログラミングの枠を超えて理解すると、抽象化は本質的にどこにでもあることに気付くでしょう。 私たちが毎日扱うオブジェクトは、さまざまなレベルで私たちから抽象化されています。 たとえば、車のブレーキの内部がどのように機能するかはわかりませんが、カーテンの後ろのメカニズムを抽象化しながらブレーキをかけるためのペダルが提供されています。 そうすれば、それがどのように機能するかについて心配する必要はありません。 ペダルを踏むだけです。

カプセル化

カプセル化の概念は、以前の抽象化の概念と密接に結びついています。 カプセル化とは、本質的に、エンド ユーザーが問題のドメインを完全に理解する必要なく、問題の解決策を提供することです。 これを行うために、カプセル化はすべてのデータと動作を 1 つのユニットとして結び付けます。 このようにして、エンドユーザーは、抽象化が実装されている場所の内部要素について知ることができなくなります。

ユーザーはデータに直接アクセスできず、必要に応じて公開された関数を使用してデータにアクセスします。 オブジェクトの内部を非表示にすることで、OOPS プログラミング パラダイムはモジュールの整合性を保護し、ユーザーが内部データを矛盾した状態に設定することを許可しません。 そうしないと、長期的に多くの問題が発生する可能性があります。 したがって、このように、カプセル化は、複雑さを完全に隠すことではなく、フェイルプルーフな方法で複雑さを公開することを目的としています。

継承

継承は、オブジェクト指向プログラミング パラダイムのもう 1 つの強力な機能です。 継承の役割は、効率的かつ迅速にクラスを階層に配置して編成し、これらのクラスが階層の上位にあるクラスから動作と属性を継承できるようにすることです。 本質的に、継承は「関係である」と理解することができます。これは、現実世界で物事について話す方法と非常によく似ています。

たとえば、「オウムは鳥だ」と言います。 つまり、オウムは鳥クラスのオブジェクトであり、より広いクラスからいくつかの属性と動作を継承します。 しかし、銀行が銀行口座であると言ったら、それは正しくありません。 これが継承の階層のしくみであり、後で特殊化されたクラスに特化できる動作と実装を定義できます。 継承は逆方向には機能しないことに注意してください。 したがって、親クラスは子クラスから何も継承しません。 ただし、子クラスは、属性と動作の性質 (パブリックまたはプライベート) に応じて、親クラスから属性と動作の両方を継承します。 継承は、プログラムを再利用する方法であり、ソース コード全体をより短く、より理解しやすくするのに役立ちます。 ただし、継承のレベルが必要でない場合は、継承のレベルの後にレベルを追加するべきではないことを覚えておく必要があります。

米国をチェック - データサイエンスプログラム

データ サイエンスとビジネス分析のプロフェッショナル認定プログラム データサイエンスの科学のマスター データサイエンスの科学のマスター データサイエンスの高度な証明書プログラム
データサイエンスのエグゼクティブPGプログラム Python プログラミング ブートキャンプ ビジネス上の意思決定のためのデータ サイエンスのプロフェッショナル認定プログラム データサイエンスの高度なプログラム

ポリモーフィズム

ポリモーフィズムは、Python と Java における多くの重要な OOPS 概念の 1 つです。これは基本的に、実行可能ユニットのさまざまな可能な実装と、ユーザーにそれらの変更を気付かせることなくバックグラウンドで進行するすべての微妙な違いを処理します。 ポリモーフィズムにより、コンピューター プログラムは特殊なオブジェクトを使用して簡単に拡張できます。

たとえば、紙にテキストを書きたい場合は、ペン、マーカー、クレヨン、または鉛筆を使用できます。 必要なのは、手に収まるサイズで、紙に押し付けてシンボルを作成するのに役立つものだけです。 したがって、書く行為は紙に記号を作成するのに役立ちますが、必要なツールは選択によって異なります。

この意味で、継承はプログラムがポリモーフィズムを実現する方法であり、メソッドのカスタム実装が継承されたクラスで定義された動作を上書きします。 このプロセスは、ランタイム ポリモーフィズムまたはメソッド オーバーライドとも呼ばれます。 メソッドのオーバーロードとも呼ばれるポリモーフィズムの別の形式があります。 その中で、継承はまったく関係ありません。 メソッドのオーバーロードでは、メソッド名は同じままですが、メソッド内の引数は実行するタスクによって異なります。

結論は

以上で、 Java における OOPS の概念に関する議論は終わりです これまでに説明したことは、何も心配することなくオブジェクト指向プログラミングを始めるために必要なすべての基礎を設定します。 ディスカッションを実装し、実際に試してみる必要があります。 結局のところ、プログラミングは練習と忍耐がすべてです。

OOPS の知識は、OOPS パラダイムに依存する Python などの言語を使用するため、データ サイエンスの旅にも役立ちます。 データ サイエンスは活況を呈している分野であり、適切なスキルと知識を持つ人々の機会が不足することはありません。 アリゾナ大学と共同で、upGrad によるデータ サイエンスの MS をチェックして、業界の専門家から学ぶ機会を得て、卒業生の強力なネットワークを利用して、キャリア全体を支援してください。

OOPS の 4 つの概念とは?

OOPS の 4 つの中心的な概念は、抽象化、カプセル化、継承、ポリモーフィズムです。

クラスとオブジェクトの違い

クラスは、モデル化される現象の青写真です。 一方、オブジェクトは、インスタンス化されたクラスから動作と属性を借用するクラスの特定のインスタンスです。

OOPS はどの言語で動作しますか?

OOPS は、言語に依存しないプログラミング哲学です。 C++、Java、Python、Ruby などの最新のプログラミング言語を使用して OOPS に取り組むことができます。