例を使用したJavaのコンポジションとは

公開: 2022-11-19

Java プログラミング言語の汎用性により、クラス間の重複を減らしながらコードを再利用できます。 Java は、クラス間の関係を構築することによってコードの再利用を容易にします。これらの関係には、継承と関連付けの 2 つのタイプがあります。 継承によって is-a 関係を実装して既存のクラスから新しいクラスを作成できますが、関連または has-a 関係によってコードの再利用性が保証されます。

has-a 関係はさらに 2 つのカテゴリに分けられます。Java では集約と合成です この記事では、Java でのコンポジションの概念を探り、例を使用してその基本を理解できるようにします。

目次

Java におけるリレーションシップの概要

Java での関係とは、クラスが関連するさまざまな方法を指します。 大まかに言って、Java には 2 種類の関係があります。

  • 関係です
  • 関係あり

Java での合成

ソース

Is-a 関係 (継承)

Java の継承機能により、is-a 関係を実装できます。 この場合、1 つのクラスが別のクラスを継承します。 たとえば、クラス 'Flower' が別のクラス 'Lily' を継承する場合、クラス 'Lily' は 'Flower' と is-a 関係にあると言えます。 また、ユリが花であることも暗示しています。

例: ユリは「花」であり、コンピューターは「デバイス」などです。

関係あり(協会)

has-a 関係は、あるクラスが別のクラスのインスタンスを使用することを意味し、Java ではこのような関係を関連と呼びます。 たとえば、クラス P が別のクラス Q の参照を保持している場合、P はクラス Q のすべてのプロパティにアクセスできることを意味します。

例: コンピュータにはプロセッサが「あります」、ミツバチには「刺された」などがあります。

Java での関連付けは、オブジェクトを使用した 2 つの個別のクラス間の関係です。 関係には、次のタイプがあります。

  • 一対多: 1 つのオブジェクトが複数のオブジェクトに関連付けられます。
  • 1 対 1: 1 つのオブジェクトが 1 つのオブジェクトに関連付けられます。
  • 多対多: 多くのオブジェクトが他の複数のオブジェクトに関連付けられます。
  • 多対一: 多くのオブジェクトが 1 つのオブジェクトに関連付けられます。

アソシエーションには、集約と合成の 2 種類があります。

Java での合成

Java におけるコンポジションは、クラス間の has-a 関係を実装するための設計手法です。 この関連付けでは、1 つのクラスに別のクラスが含まれます。 さらに、包含クラスは包含クラスに依存しており、独立して存在することはできません。 つまり、あるクラスには、相互に依存する機能を持つ別のクラスが含まれています。

たとえば、クラス「Car」にはクラス「Engine」と「Battery」が含まれています。 このように、「車」は「エンジン」と「バッテリー」と有有の関係にあり、後者の 2 つは「車」なしでは独立して存在することはできません。

別の実際の例を考えてみましょう。 人間の体には腎臓があり、人間の体がなければ器官は存在できません。 したがって、「Human」を「Kidneys」というクラスと has-a 関係にあるクラスと考えると、 Java の例では、腎臓は人間の体がなければ独立して存在することができないため、合成です。

upGrad の独占的なソフトウェア開発ウェビナー –

SAAS ビジネス – 何がそんなに違うのか?

Java の例でコンポジションを実装する

ここで、Java での合成の概念を示す次のプログラムについて考えてみましょう 理解を深めるために、ステップに分けて説明します。

ステップ 1:最初のステップでは、クラス 'Car' を作成し、メソッドとデータ メンバーを宣言および定義します。

クラスカー

{

// データ メンバーとメソッドの宣言

プライベート文字列の色。

プライベート int 速度;

public void carFeatures()

{

System.out.println(“Car Color= “+color + ” 最高速度= ” + speed);

}

public void setColor(文字列の色)

{

this.color = 色;

}

public void setspeed(int 速度)

{

this.speed = 速度;

}

}

ステップ 2:次に、上記のクラス「Car」を拡張したクラス「Fiat」を作成します。 クラス「Fiat」は、構成を通じて FiatEngine クラス オブジェクトの start() メソッドを使用します。これは、「Fiat」クラスが「FiatEngine を持っている」ことを意味します。 Fiat は車なので、クラス「Car」から拡張されます。

クラスフィアットは車を拡張します

{

//Car クラスのすべてのプロパティを継承します

public void setStart()

{

FiatEngine e = new FiatEngine();

e.start();

}

}

ステップ 3: Java 合成プログラムの次のステップでは、クラス FiatEngine を作成します。このクラスを通じて、上記のクラス「Fiat」のクラス オブジェクトを使用します。

クラス FiatEngine

{

public void start()

{

System.out.println(“エンジンが始動しました。”);

}

public void stop()

{

System.out.println(“エンジンが停止しました。”);

}

}

ステップ 4:プログラムの最後のステップでは、CompositionExample クラスを作成し、「Fiat」クラスのオブジェクトを作成して初期化します。

クラス構成例

{

public static void main(String[] args)

{

フィアット f = 新しいフィアット();

f.setColor(“黒”);

f.setspeed(175);

f.carFeatures();

h.setStart();

}

}

出力:

車の色= 黒 最高速度= 175

エンジンが始動しました。

世界トップクラスの大学が提供するソフトウェア開発コースをオンラインで学びましょう。 エグゼクティブ PG プログラム、上級認定プログラム、または修士プログラムを取得して、キャリアを加速させましょう。

Java での集計と合成

Java における集約と合成は、2 種類の has-a 関係であり、クラス間の依存関係が異なります。 集約では、コンテナ クラスと参照クラスは独立して存在しますが、コンポジション参照クラスはコンテナ クラスなしでは存在しなくなります。 したがって、参照クラスは構成においてそのコンテナ クラスに依存します。

Java での集計と構成の違いを理解するための実際の例を次に示します 車には、エンジン、ブレーキ、バッテリー、ヘッドライト、音楽プレーヤーなど、さまざまな部品が搭載されています。音楽プレーヤーがなくても車は動きますが、エンジンやバッテリーなどの重要な部品がなければ走ることはできません。 したがって、車と音楽プレーヤーは集合関係にあり、エンジンと車は合成関係にあると言えます。

Javaでコンポジションを使用する利点は何ですか?

Java でのコンポジションの概念を基本的に理解したので、この手法の利点の概要を次に示します。

  • Java での構成により、コードの再利用が容易になります。
  • Java でのコンポジションにより、クライアント クラスに対する他のオブジェクトの可視性を制御し、必要なものを再利用できます。
  • Java は多重継承をサポートしていませんが、コンポジションを使用して回避できます。
  • Java のコンポジションは柔軟で、実行時にメンバー オブジェクトを変更してプログラムの動作を変更できます。
  • Java コンポジションは、クラスのテスト容易性を向上させます。これは、テスト駆動型開発で特に役立つ機能です。
  • 構成ベースの設計では、クラスが少なくなります。

ソフトウェア エンジニアリングに関する人気のコースと記事

人気番組
ソフトウェア開発のエグゼクティブ PG プログラム - IIIT B ブロックチェーン証明書プログラム - PURDUE サイバーセキュリティ証明書プログラム - PURDUE コンピューター サイエンスの MSC - IIIT B
その他の人気記事
米国のクラウド エンジニアの給与 2021-22 米国でのAWSソリューションアーキテクトの給与 米国のバックエンド開発者の給与 米国のフロントエンド開発者の給与
アメリカのウェブ開発者の給与 2022年のスクラムマスターインタビューの質問. 2022年にサイバーセキュリティのキャリアを始めるには? 工学部学生のための米国でのキャリアオプション

結論

Javaでのコンポジションは、クラス間の関係が複雑で、コードの再利用を検討している場合に優れた手法です。 要約すると、Java でのコンポジションについて覚えておく必要がある重要なポイントがいくつかあります。

  • Java でのコンポジションは、has-a 関係を表します。
  • コンポジションでは、あるクラスに別のクラスが含まれ、含まれるクラスは含まれるクラスに依存し、独立して存在することはできません。
  • コンポジション アソシエーション内の両方のエンティティは、相互に依存しています。
  • 他のオブジェクトを参照するインスタンス変数を使用して、Java で構成を実現できます。

upGrad のソフトウェア開発エグゼクティブ PG プログラムでキャリアを向上させましょう

ソフトウェア開発は、若い専門家にとって最も有利なキャリア オプションの 1 つです。 すでにこの業界にいる場合、またはこれから始めようとしている場合は、ソフトウェア開発の upGrad のExecutive PG Program に登録する必要があります このプログラムでは、需要の高いスキルと、最も報酬の高い 10 のコーディング言語とツールを学習できます。 ブロックチェーン開発、フルスタック開発、DevOps、クラウド バックエンド開発の 4 つの専門分野から選択できます。

高額のプログラミング言語を学ぶだけでなく、30 以上のケース スタディやプロジェクトに取り組むことができます。 世界クラスの教員が、コースのライブ講義とオンライン セッションを受講します。 学生サポートは 24 時間体制で利用できます。

今すぐ申し込んで、コースへの入学をいち早く手に入れましょう!

Javaの構成と継承とは?

Java における構成と継承は、オブジェクトとクラス間の関係を確立するための 2 つのプログラミング手法です。 コンポジションは、別のクラスを含む 1 つのクラスとの has-a 関係を表します。 一方、継承は、あるクラスが別のクラスのプロパティと動作を取得するという is-a 関係を示します。

Javaでの構成の目的は何ですか?

Java での合成により、コードの再利用が可能になり、クラスのテスト容易性が向上します。 Java は多重継承をサポートしていませんが、構成はそれを行う方法を提供します。

コンポジションは OOP ですか?

コンポジションは、オブジェクト指向プログラミングの基本概念です。 これは、1 つのクラスがインスタンス変数を介して他のクラスの 1 つ以上のオブジェクトを参照する has-a 関係を表します。