logo

Java OOPの概念

  1. オブジェクト指向プログラミング
  2. 手続き指向プログラミング言語に対する OOP の利点
  3. オブジェクト指向とオブジェクトベースのプログラミング言語の違い。

このページでは、OOP の基本について学びます。オブジェクト指向プログラミングは、次のような多くの概念を提供するパラダイムです。 継承データバインディング多態性 、など。

始まり 最初のオブジェクト指向プログラミング言語とみなされます。すべてがオブジェクトとして表現されるプログラミング パラダイムは、真のオブジェクト指向プログラミング言語として知られています。

雑談 は、最初の真のオブジェクト指向プログラミング言語とみなされます。

人気のあるオブジェクト指向言語は次のとおりです。 ジャワC#PHPパイソンC++ 、など。

オブジェクト指向プログラミングの主な目的は、オブジェクト、クラス、抽象化、継承、ポリモーフィズムなどの実世界のエンティティを実装することです。

ストラセプ

OOP (オブジェクト指向プログラミング システム)

物体 ペン、椅子、テーブル、コンピュータ、時計などの現実世界の実体を意味します。 オブジェクト指向プログラミング クラスとオブジェクトを使用してプログラムを設計するための方法論またはパラダイムです。いくつかの概念を提供することで、ソフトウェアの開発とメンテナンスを簡素化します。

これらの概念とは別に、オブジェクト指向設計で使用される用語がいくつかあります。

  • カップリング
  • 凝集
  • 協会
  • 集計
  • 構成
Java OOPの概念

物体

Javaオブジェクト

状態と動作を持つエンティティはすべてオブジェクトと呼ばれます。たとえば、椅子、ペン、テーブル、キーボード、自転車などです。それは物理的なものでも論理的なものでも構いません。

オブジェクトはクラスのインスタンスとして定義できます。オブジェクトにはアドレスが含まれており、メモリ内である程度のスペースを占有します。オブジェクトは、互いのデータやコードの詳細を知らなくても通信できます。必要なのは、受け入れられるメッセージのタイプと、オブジェクトによって返される応答のタイプだけです。

例: 犬は、色、名前、品種などの状態と、尻尾を振る、吠える、食べるなどの動作を持っているため、オブジェクトです。

クラス

オブジェクトのコレクション クラスと呼ばれます。それは論理的な実体です。

クラスは、個別のオブジェクトを作成できるブループリントとして定義することもできます。クラスはスペースを消費しません。

継承

1 つのオブジェクトが親オブジェクトのすべてのプロパティと動作を取得する場合 、それは継承として知られています。コードの再利用性が提供されます。実行時のポリモーフィズムを実現するために使用されます。

Javaのポリモーフィズム

ポリモーフィズム

もし 1 つのタスクがさまざまな方法で実行される 、それはポリモーフィズムとして知られています。例: 顧客を別の方法で説得するため、形状、三角形、長方形などの何かを描きます。

Java では、メソッドのオーバーロードとメソッドのオーバーライドを使用してポリモーフィズムを実現します。

別の例としては、何かを話すことが挙げられます。たとえば、猫はニャーと話し、犬はワンワンと吠えます。

抽象化

内部の詳細を隠して機能を表示する 抽象化として知られています。たとえば電話の場合、内部処理はわかりません。

Java では、抽象化を実現するために抽象クラスとインターフェイスを使用します。

Java OOP のカプセル化の概念

カプセル化

コードとデータを単一のユニットに結合 (またはラップ) することは、カプセル化として知られています。 。たとえば、カプセルにはさまざまな薬が包まれています。

Java クラスはカプセル化の例です。ここではすべてのデータ メンバーがプライベートであるため、Java Bean は完全にカプセル化されたクラスです。

カップリング

結合とは、別のクラスの知識、情報、または依存関係を指します。それはクラスがお互いを認識しているときに起こります。クラスが別のクラスの詳細情報を持っている場合、強い結合が存在します。 Java では、private、protected、および public 修飾子を使用して、クラス、メソッド、およびフィールドの可視性レベルを表示します。具体的な実装がないため、弱い結合にはインターフェイスを使用できます。

凝集

凝集度は、明確に定義された単一のタスクを実行するコンポーネントのレベルを指します。明確に定義された単一のタスクは、一貫性の高い方法で実行されます。結合力が弱い方法では、タスクが別々の部分に分割されます。 java.io パッケージは、I/O 関連のクラスとインターフェイスを備えているため、非常に凝集性の高いパッケージです。ただし、java.util パッケージには関連性のないクラスとインターフェイスが含まれているため、結合力が弱いパッケージです。

協会

アソシエーションはオブジェクト間の関係を表します。ここで、1 つのオブジェクトを 1 つのオブジェクトまたは複数のオブジェクトに関連付けることができます。オブジェクト間の関連付けには次の 4 種類があります。

  • 1対1
  • 1対多
  • 多対一、そして
  • 多対多

リアルタイムの例との関係を理解し​​ましょう。たとえば、1 つの国に 1 人の首相 (1 対 1) を置くこともできますし、1 つの首相に複数の大臣 (1 対多) を置くこともできます。また、多くの議員は 1 人の首相を持つことができ (多対 1)、多くの大臣は複数の省庁を持つことができます (多対多)。

アソシエーションは、一方向または双方向にすることができます。

マウススクロールが機能しない

集計

集約は関連付けを実現する方法です。集約は、1 つのオブジェクトがその状態の一部として他のオブジェクトを含む関係を表します。オブジェクト間の弱い関係を表します。とも呼ばれます があります Java での関係。同様に、継承は は、です 関係。これはオブジェクトを再利用するもう 1 つの方法です。

構成

構成は連想を達成するための方法でもあります。構成は、1 つのオブジェクトがその状態の一部として他のオブジェクトを含む関係を表します。包含オブジェクトと依存オブジェクトの間には強い関係があります。含まれるオブジェクトが独立した存在を持たない状態です。親オブジェクトを削除すると、すべての子オブジェクトが自動的に削除されます。


手続き指向プログラミング言語に対する OOP の利点

1) OOP を使用すると開発とメンテナンスが容易になりますが、手続き指向プログラミング言語では、プロジェクトのサイズが大きくなるにつれてコードが大きくなる場合、管理が容易ではありません。

2) OOP はデータの隠蔽を提供しますが、プロシージャ指向プログラミング言語ではグローバル データにどこからでもアクセスできます。

グローバルデータ

図: 手続き指向プログラミングにおけるデータ表現


オブジェクトデータ

図: オブジェクト指向プログラミングにおけるデータ表現

3) OOP は、現実世界のイベントをより効果的にシミュレートする機能を提供します。オブジェクト指向プログラミング言語を使用している場合、実際の問題の解決策を提供できます。


オブジェクト指向プログラミング言語とオブジェクトベース プログラミング言語の違いは何ですか?

オブジェクトベースのプログラミング言語は、継承を除く OOP のすべての機能に従います。 JavaScript と VBScript は、オブジェクトベースのプログラミング言語の例です。



あなたは知っていますか?
  • main メソッドをオーバーロードできますか?
  • Java コンストラクターは値を返しますが、それは何でしょうか?
  • mainメソッドを使わずにプログラムを作成することはできますか?
  • このキーワードを使用する 6 つの方法は何ですか?
  • Java では多重継承がサポートされていないのはなぜですか?
  • なぜ集計を使用するのでしょうか?
  • 静的メソッドをオーバーライドできますか?
  • 共変の戻り値の型とは何ですか?
  • Java スーパーキーワードの 3 つの使用法は何ですか?
  • インスタンス初期化ブロックを使用する理由
  • 空白の最終変数はどのように使用されますか?
  • マーカーまたはタグ付きインターフェイスとは何ですか?
  • ランタイムポリモーフィズムまたは動的メソッドディスパッチとは何ですか?
  • 静的バインディングと動的バインディングの違いは何ですか?
  • Java ではどのようにダウンキャストが可能ですか?
  • 民間建設業者の目的は何ですか?
  • オブジェクトのクローン作成とは何ですか?
OOP の概念では何を学ぶのでしょうか?
  • OOP の利点
  • 命名規則
  • オブジェクトとクラス
  • メソッドのオーバーロード
  • コンストラクタ
  • 静的キーワード
  • このキーワードには 6 つの用法があります
  • 継承
  • 集計
  • メソッドのオーバーライド
  • 共変の戻り値の型
  • スーパーキーワード
  • インスタンス初期化ブロック
  • 最後のキーワード
  • 抽象クラス
  • インターフェース
  • ランタイムポリモーフィズム
  • 静的バインディングと動的バインディング
  • instanceof 演算子を使用したダウンキャスト
  • パッケージ
  • アクセス修飾子
  • カプセル化
  • オブジェクトのクローン作成