ホームページ  >  記事  >  Java  >  Java での構成と集計

Java での構成と集計

王林
王林オリジナル
2024-08-30 15:15:151011ブラウズ

Java は、現実世界とプログラミングと見なされるオブジェクト間のさまざまな関係を提供します。場合によっては、関係を実装するのが非常に難しい、または理解することが難しい場合があります。したがって、Java は構成と集計の関係をユーザーに提供します。作曲では、「所属」関係と呼ばれる関係を構築できます。論理的には、あるオブジェクトが他のオブジェクトよりも大きいと言えます。集約では、すべてのオブジェクトが互いに独立して動作する、「has a」関係と呼ばれる関係を構築できます。集合関係は弱い関連性と見なされ、合成は強い関連性と見なされます。

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

合成と集計の構文

合成の構文は次のとおりです:

public class building {
private final Room room;
public building () {
room = new room ();
}
}
class Room { }

説明:

  • 上記の構文では建物の例を考えています。そのため、最初に、建物という名前のクラスを作成します。上記の構文に示されているように、部屋は建物の必須部分です。
  • これは構成関係の構文であり、ここではそれが関係に属していることを示します。

次のような集計の構文:

public class student {
private List students;
public student () {
students = new list_students();
}
}
class student { }

説明:

  • 上記の構文では、学生の例を考えます。この例では、最初に学生という名前でパブリック クラスを作成し、その後、学生のリストを作成します。上記の構文
  • ここでは、オブジェクト間の「ある」関係も示します。

Java では構成と集計はどのように機能しますか?

以下は、Java での合成と集計がどのように機能するかを示しています。

構成は、関係の「所属」を指定するために使用されます。これは、アイテムの 1 つが他のアイテムよりも賢く大きいこと、またはオブジェクトと言い換えることができることを意味します。たとえば、部屋を建物の一部として考えるか、建物には部屋があると言うことができます。したがって、基本的に、それを「に属する」と呼ぶか「持っている」と呼ぶかは、単なる観点の問題です。

基本的に、この構成は、それを含むオブジェクトがそれを主張しているという事実を考慮すると、強い関係です。このように、オブジェクトのライフサイクルを削除すると、親ノードを削除すると、自動的に子ノードも削除されることになります。たとえば、部屋を破壊するときについて考えてみましょう。その後、建物も破壊されます。これは、それを含むオブジェクトがその一部とともに存在できないという意味ではないことに注意してください。たとえば、建物内の仕切りをすべて破壊し、部屋を消滅させることができます。いずれにせよ、構造はいずれにせよ存在するでしょう。カーディナリティに関して言えば、それを含む記事には必要なだけ多くの部分を含めることができます。それにもかかわらず、パーツ全体に正確に 1 つのコンパートメントが必要です。

Java での集約の仕組みは次のとおりです。

私たちは、作曲には「関係がある」ことを知っています。同様に、集計にも「Has a」関係があります。基本的な違いは、集約には親ノードまたは親オブジェクトが含まれていないことです。この関係では、すべてのオブジェクトは互いに独立しています。たとえば、車とそのさまざまなホイールを考えることができます。同じホイールを別の車に取り付けることができ、問題なくファイルが動作します。車輪のない車は役に立たないことはわかっているので、オブジェクトのすべての部分を組み立てるのはこのためです。これが集約関係です。

Java での構成と集計の例

以下に、構成と集計関係の例を示します。

例 #1: 構成

コード:

import java.io.*;
import java.util.*;
class Lib
{
public String name_book;
public String bk_author;
Lib(String name_book, String bk_author)
{
this.name_book = name_book;
this.bk_author = bk_author;
}
}
class Library
{
private final List<Lib> Lib_books;
Library (List<Lib> Lib_books)
{
this.Lib_books =Lib_books;
}
public List<Lib> book_details(){
return Lib_books;
}
}
class composition
{
public static void main (String[] args)
{
Lib book1 = new Lib("Database management", "Rajiv Chopra ");
Lib book2 = new Lib("MySql", "Rajiv Chopra l");
Lib book3 = new Lib("oracle", "Donald Burleson");
List<Lib> Lib_books = new ArrayList<Lib>();
Lib_books.add(book1);
Lib_books.add(book2);
Lib_books.add(book3);
Library library = new Library(Lib_books);
List<Lib> bks = library.book_details();
for(Lib bk : bks){
System.out.println("name_book : " + bk.name_book + " and "
+" bk_author : " + bk.bk_author);
}
}
}

説明:

  • 上記の例では、Java で構成関係を実装しようとしています。
  • 上記のプログラムの最終出力を、次のスナップショットを使用して示します。

出力:

Java での構成と集計

例 #2: 集約関係

コード:

import java.io.*;
import java.util.*;
class stud_class
{
String stud_name;
int roll_no ;
String stud_dept;
stud_class(String stud_name, int roll_no, String stud_dept)
{
this.stud_name = stud_name;
this.roll_no = roll_no;
this.stud_dept = stud_dept;
}
}
class Depofcollege
{
String stud_name;
private List<stud_class> students;
Depofcollege(String stud_name, List<stud_class> students)
{
this.stud_name = stud_name;
this.students = students;
}
public List<stud_class> getStudentsDetails()
{
return students;
}
}
class college
{
String collegeName;
private List<Depofcollege> departments;
college(String collegeName, List<Depofcollege> departments)
{
this.collegeName = collegeName;
this.departments = departments;
}
public int totalstudents()
{
int noOfStudents = 0;
List<stud_class> students;
for(Depofcollege dept : departments)
{
students = dept.getStudentsDetails();
for(stud_class s : students)
{
noOfStudents++;
}
}
return noOfStudents;
}
}
class aggregation
{
public static void main (String[] args)
{
stud_class stud1 = new stud_class("Sameer", 5, "IT");
stud_class stud2 = new stud_class("Pooja", 6, "IT");
stud_class stud3 = new stud_class("Sanddep", 8, "Mech");
stud_class stud4 = new stud_class("Jenny", 2, "Mech");
List <stud_class> i_students = new ArrayList<stud_class>();
i_students.add(stud1);
i_students.add(stud2);
List <stud_class> me_students = new ArrayList<stud_class>();
me_students.add(stud3);
me_students.add(stud4);
Depofcollege IT = new Depofcollege("IT", i_students);
Depofcollege Mech = new Depofcollege("Mech", me_students);
List <Depofcollege> departments = new ArrayList<Depofcollege>();
departments.add(IT);
departments.add(Mech);
college college= new college("MIT", departments);
System.out.print("Count of students: ");
System.out.print(college.totalstudents());
}
}

説明:

  • 上記の例では、Java で集計関係を実装しようとしています。
  • 上記のプログラムの最終出力を、次のスナップショットを使用して示します。

出力:

Java での構成と集計

結論

上記の記事で合成と集計の基本的な構文を説明し、合成と集計のさまざまな例も見てきました。この記事では、Java で合成と集計をいつどのように使用するかを説明しました。

以上がJava での構成と集計の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:Javaリテラル次の記事:Javaリテラル