ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ классами java

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ассоциация ΠΈ агрСгация Π² Java?

Когда Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Java, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ класс с Π΄Ρ€ΡƒΠ³ΠΈΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΅Π³ΠΎ ссылку, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Aggregation Π² Java. Π˜Ρ‚Π°ΠΊ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΡƒΠ·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ агрСгация Π² Java.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ агрСгация?

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ агрСгация, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΡƒΠ·Π½Π°Π΅ΠΌ ΠΎΠ± ассоциации Π² Java. Ассоциация называСтся ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ классами, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ устанавливаСтся Ρ‡Π΅Ρ€Π΅Π· ΠΈΡ… ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ, ΠΎΠ΄ΠΈΠ½ ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ. Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся Π² ассоциациях Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ….

Π’Ρ‹Π²ΠΎΠ΄: Π’ΠΈΠ°Π½ учится Π² классС Java.

Vian is a student of Java Class.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ агрСгация Π² Java.

АгрСгация Π½Π° самом Π΄Π΅Π»Π΅ являСтся особой Ρ„ΠΎΡ€ΠΌΠΎΠΉ ассоциации. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ это упоминаСтся ΠΊΠ°ΠΊ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя классами, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Ассоциация. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, это направлСнная ассоциация, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° строго слСдуСт одностороннСй ассоциации. Π­Ρ‚ΠΎ прСдставляСт ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ HAS-A.

Π­Ρ‚ΠΎ рассматриваСтся ΠΊΠ°ΠΊ Π±ΠΎΠ»Π΅Π΅ спСциализированная вСрсия ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ Ассоциации. Класс Aggregate содСрТит ссылку Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ класс ΠΈ считаСтся Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅ΠΌ этого класса. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ класс, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅ΡΡ‚ΡŒ ссылка, считаСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ класса Aggregate.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, скаТСм, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли класс A содСрТит ссылку Π½Π° класс B, Π° класс B содСрТит ссылку Π½Π° класс A, Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Ρ‡Π΅Ρ‚ΠΊΠΎΠ΅ Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅, ΠΈ это просто ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ассоциации.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ классами java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ классами java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ классами java. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ классами java. Π€ΠΎΡ‚ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ классами java

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ вопрос: ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΡŽ Π² Java?

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Π°?

Основная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° агрСгация, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΈ возмоТности ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΊΠΎΠ΄Π°. НапримСр, Ссли Π²Ρ‹ создаСтС класс, Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ свСдСния ΠΎ сотрудникС. И Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ снова ΠΈ снова ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄, Π° вмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ссылку Π½Π° класс, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π΅Π³ΠΎ опрСдСляСтС.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ, агрСгация ΠΈ ассоциация Π² Java

Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ свойства ΠΈ прСдставлСниС ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ ΠΈ ассоциации Π² Java.

1. Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ собой, ΠΊΠ°ΠΊ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ, Ρ‚Π°ΠΊ ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Иногда Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΈΠ»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ.

Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ сосрСдоточимся Π½Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ Java ΠΊ Ρ‚Ρ€Π΅ΠΌ ΠΈΠ½ΠΎΠ³Π΄Π° Π»Π΅Π³ΠΊΠΎ ΡΠΌΠ΅ΡˆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ: композиция, агрСгация ΠΈ ассоциация.

2. Бостав

Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹, ΠΌΡ‹ часто Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ это ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ΠΌ β€œΠΈΠΌΠ΅Π΅Ρ‚-а” (Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ β€œΠ΅ΡΡ‚ΡŒ-а”, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ являСтся наслСдованиСм ).

НапримСр, ΠΊΠΎΠΌΠ½Π°Ρ‚Π° ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ зданию, ΠΈΠ»ΠΈ, Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π² Π·Π΄Π°Π½ΠΈΠΈ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ½Π°Ρ‚Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² основном, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ Π»ΠΈ ΠΌΡ‹ это β€œΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚β€ ΠΈΠ»ΠΈ β€œΠΈΠΌΠ΅Π΅Ρ‚β€, это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вопрос Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния.

ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ-это ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²ΠΈΠ΄ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ β€œΠΈΠΌΠ΅Π΅Ρ‚-а”, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ содСрТащий ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π²Π»Π°Π΄Π΅Π΅Ρ‚ ΠΈΠΌ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² связаны. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ссли ΠΌΡ‹ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π°, Π΅Π³ΠΎ Ρ‡Π»Π΅Π½Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½Ρ‹ вмСстС с Π½ΠΈΠΌ. НапримСр, ΠΊΠΎΠΌΠ½Π°Ρ‚Π° Ρ€Π°Π·Ρ€ΡƒΡˆΠ°Π΅Ρ‚ΡΡ вмСстС со Π·Π΄Π°Π½ΠΈΠ΅ΠΌ Π² нашСм ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ это Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ содСрТащий ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ· Π΅Π³ΠΎ частСй. НапримСр, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ снСсти всС стСны Π²Π½ΡƒΡ‚Ρ€ΠΈ здания, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ½Π°Ρ‚Ρ‹. Но Π·Π΄Π°Π½ΠΈΠ΅ всС Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ.

2.1. UML

Π’ UML ΠΌΡ‹ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ символом:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π°Π»ΠΌΠ°Π· находится Π² содСрТащСм Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ ΠΈ являСтся основаниСм Π»ΠΈΠ½ΠΈΠΈ, Π° Π½Π΅ Π½Π°ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΈΠΊΠΎΠΌ стрСлы. Для ясности ΠΌΡ‹ Ρ‚ΠΎΠΆΠ΅ часто рисуСм Π½Π°ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΈΠΊ стрСлы:

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ UML для нашСго ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° здания:

2.2. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄

Π’ Java ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ нСстатичСского Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ класса:

Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ этот класс Π² Ρ‚Π΅Π»Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. НС ΠΈΠΌΠ΅Π΅Ρ‚ значСния, являСтся Π»ΠΈ это ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ класс, Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс ΠΈΠ»ΠΈ лямбда:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ наш Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ класс Π±Ρ‹Π» нСстатичСским, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ связываСт всС свои экзСмпляры с содСрТащим классом.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ содСрТащий ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ своим Ρ‡Π»Π΅Π½Π°ΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΡ… ссылки:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ всС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса хранят Π½Π΅ΡΠ²Π½ΡƒΡŽ ссылку Π½Π° содСрТащийся Π² Π½ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ доступ:

3. АгрСгация

АгрСгация Ρ‚Π°ΠΊΠΆΠ΅ являСтся ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ΠΌ β€œΠ΅ΡΡ‚ΡŒ-Π΅ΡΡ‚ΡŒβ€. Π§Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, Ρ‚Π°ΠΊ это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ владСния. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅ привязан: ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ нСзависимо Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°.

НапримСр, Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ ΠΈ Π΅Π³ΠΎ колСса. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ½ΡΡ‚ΡŒ колСса, ΠΈ ΠΎΠ½ΠΈ всС Π΅Ρ‰Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ (ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅) колСса ΠΈΠ»ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΡ… Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ, ΠΈ всС Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ просто ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ.

3.1. UML

АгрСгация ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ. ЕдинствСнноС логичСскоС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ агрСгация-это Π±ΠΎΠ»Π΅Π΅ слабая связь.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ прСдставлСния UML Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈ. Π Π°Π·Π½ΠΈΡ†Π° лишь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π°Π»ΠΌΠ°Π· пуст:

Π’ΠΎΠ³Π΄Π° для Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ ΠΈ колСс ΠΌΡ‹ Π±Ρ‹ сдСлали:

3.2. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄

Π’ Java ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ простой старой ссылки:

Π§Π»Π΅Π½ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любой Ρ‚ΠΈΠΏ класса, ΠΊΡ€ΠΎΠΌΠ΅ нСстатичСского Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ класса.

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π° ΠΎΠ±Π° класса ΠΈΠΌΠ΅ΡŽΡ‚ свой ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ исходный Ρ„Π°ΠΉΠ». Однако ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ статичСский Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ класс:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Java создаст Π½Π΅ΡΠ²Π½ΡƒΡŽ ссылку Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² нСстатичСских Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… классах. Из-Π·Π° этого ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Ρ‚Π°ΠΌ, Π³Π΄Π΅ Π½Π°ΠΌ это Π½ΡƒΠΆΠ½ΠΎ:

4. Ассоциация

Ассоциация ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ β€œΠ·Π½Π°ΡŽΡ‚β€ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°. НапримСр, ΠΌΠ°Ρ‚ΡŒ ΠΈ Π΅Π΅ Ρ€Π΅Π±Π΅Π½ΠΎΠΊ.

4.1. UML

Π’ UML ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π°ΡΡΠΎΡ†ΠΈΠ°Ρ†ΠΈΡŽ стрСлкой:

Если связь двунаправлСнная, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π΅ стрСлки, стрСлку с Π½Π°ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΈΠΊΠΎΠΌ Π½Π° ΠΎΠ±ΠΎΠΈΡ… ΠΊΠΎΠ½Ρ†Π°Ρ… ΠΈΠ»ΠΈ линию Π±Π΅Π· Π½Π°ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΈΠΊΠΎΠ²:

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΌΠ°Ρ‚ΡŒ ΠΈ Π΅Π΅ Ρ€Π΅Π±Π΅Π½ΠΊΠ° Π² UML, Ρ‚ΠΎΠ³Π΄Π°:

4.2. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄

Π’ Java ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°ΡΡΠΎΡ†ΠΈΠ°Ρ†ΠΈΡŽ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΡŽ:

Но ΠΏΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π»ΠΈ ссылка Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΡŽ ΠΈΠ»ΠΈ Π°ΡΡΠΎΡ†ΠΈΠ°Ρ†ΠΈΡŽ?

Ну, ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ. Π Π°Π·Π½ΠΈΡ†Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π»ΠΎΠ³ΠΈΡ‡Π½Π°: являСтся Π»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‡Π°ΡΡ‚ΡŒΡŽ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ссылки Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π½Π° ΠΎΠ±ΠΎΠΈΡ… ΠΊΠΎΠ½Ρ†Π°Ρ…, ΠΊΠ°ΠΊ ΠΌΡ‹ Π΄Π΅Π»Π°Π»ΠΈ с Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠ΅ΠΉ:

5. UML Sidenote

Для ясности ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ UML. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, записав Π΅Π³ΠΎ Π½Π° ΠΊΠΎΠ½Ρ†Π°Ρ… стрСлки:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ смысла ΠΏΠΈΡΠ°Ρ‚ΡŒ ноль Π² качСствС мощности, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ связи. ЕдинствСнноС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅-это ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ для указания Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ связи:

Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² составС Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π²Π»Π°Π΄Π΅Π»Π΅Ρ†, ΠΌΡ‹ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π΅Π³ΠΎ Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°Ρ….

6. Π‘Π»ΠΎΠΆΠ½Ρ‹ΠΉ ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим (Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ) Π±ΠΎΠ»Π΅Π΅ слоТный ΠΏΡ€ΠΈΠΌΠ΅Ρ€!

ΠœΡ‹ смодСлируСм унивСрситСт, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΅ΡΡ‚ΡŒ свои ΠΊΠ°Ρ„Π΅Π΄Ρ€Ρ‹. На ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ°Ρ„Π΅Π΄Ρ€Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ профСссора, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ·ΡŒΡ Π΄Ρ€ΡƒΠ³ срСди Π΄Ρ€ΡƒΠ³Π°.

Π‘ΡƒΠ΄ΡƒΡ‚ Π»ΠΈ ΠΊΠ°Ρ„Π΅Π΄Ρ€Ρ‹ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ Π·Π°ΠΊΡ€ΠΎΠ΅ΠΌ унивСрситСт? ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅Ρ‚, поэтому это композиция.

Но профСссора всС Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ (надСюсь). ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ: ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π»ΠΈ профСссоров Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΊΠ°Ρ„Π΅Π΄Ρ€ ΠΈΠ»ΠΈ Π½Π΅Ρ‚. ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎ: ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π»ΠΈ ΠΎΠ½ΠΈ Ρ‡Π»Π΅Π½Π°ΠΌΠΈ Π΄Π΅ΠΏΠ°Ρ€Ρ‚Π°ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ Π½Π΅Ρ‚? Π”Π°, это Ρ‚Π°ΠΊ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, это агрСгация. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, профСссор ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠ°Ρ„Π΅Π΄Ρ€Π°Ρ….

ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ профСссорами ΡΠ²Π»ΡΡŽΡ‚ΡΡ ассоциативными, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ смысла Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ профСссор являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠΎΠΉ UML:

И ΠΊΠΎΠ΄ Java выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

7. Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли свойства ΠΈ прСдставлСниС ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ ΠΈ ассоциации. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΊΠ°ΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эти ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Π² UML ΠΈ Java.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

НаслСдованиС, композиция, агрСгация

НСрСдко случаСтся, Ρ‡Ρ‚ΠΎ Ρ€Π΅ΡˆΠΈΠ² Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠΉ Ρ‚Π΅ΠΌΠΎΠΉ, понятиСм, инструмСнтом программирования, я Ρ‡ΠΈΡ‚Π°ΡŽ ΠΎΠ΄Π½Ρƒ Π·Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… сайтах Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅. И, Ссли Ρ‚Π΅ΠΌΠ° слоТная, Ρ‚ΠΎ эти ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ Π½Π° шаг Π½Π΅ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚ΡŒ мСня ΠΊ понимаю. И Π²Π΄Ρ€ΡƒΠ³ встрСчаСтся ΡΡ‚Π°Ρ‚ΡŒΡ, которая ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎ Π΄Π°Π΅Ρ‚ ΠΎΠ·Π°Ρ€Π΅Π½ΠΈΠ΅ ΠΈ всС ΠΏΠ°Π·Π·Π»Ρ‹ ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ. Π’Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ Ρ‚Π°ΠΊΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ…. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Π½Π½Ρ‹Π΅ слова, ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° излоТСния ΠΈΠ»ΠΈ ΠΆΠ΅ просто Π±ΠΎΠ»Π΅Π΅ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π― Π½Π΅ ΠΏΡ€Π΅Ρ‚Π΅Π½Π΄ΡƒΡŽ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ моя ΡΡ‚Π°Ρ‚ΡŒΡΡ окаТСтся Π½ΠΎΠ²Ρ‹ΠΌ словом Π² C# ΠΈΠ»ΠΈ ΠΆΠ΅ Π»ΡƒΡ‡ΡˆΠ΅ΠΉ ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ΠΉ. Но, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ для ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΠΎΠ½Π° станСт ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎΠΉ, которая ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚Π΅ понятия, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ.

Π’ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языках программирования сущСствуСт Ρ‚Ρ€ΠΈ способа ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ классами. НаслСдованиС β€” это ΠΊΠΎΠ³Π΄Π° класс-наслСдник ΠΈΠΌΠ΅Π΅Ρ‚ всС поля ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса, ΠΈ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, добавляСт ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» ΠΈΠ»ΠΈ/ΠΈ поля. НаслСдованиС описываСтся словом «являСтся». Π›Π΅Π³ΠΊΠΎΠ²ΠΎΠΉ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ являСтся Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΌ. Π’ΠΏΠΎΠ»Π½Π΅ СстСствСнно, Ссли ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π΅Π³ΠΎ наслСдником.

Ассоциация – это ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ класс Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π΄Ρ€ΡƒΠ³ΠΎΠΉ класс Π² качСствС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ. Ассоциация описываСтся словом Β«ΠΈΠΌΠ΅Π΅Ρ‚Β». ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ. Π’ΠΏΠΎΠ»Π½Π΅ СстСствСнно, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ наслСдником двигатСля (хотя такая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Ρ‚ΠΎΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ситуациях).

Π’Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ Π΄Π²Π° частных случая ассоциации: ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΡŽ.

ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ – это ΠΊΠΎΠ³Π΄Π° Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ сущСствуСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ автомобиля. Он создаСтся ΠΏΡ€ΠΈ создании автомобиля ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ управляСтся Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΌ. Π’ Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, экзСмпляр двигатСля Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² конструкторС автомобиля.

АгрСгация – это ΠΊΠΎΠ³Π΄Π° экзСмпляр двигатСля создаСтся Π³Π΄Π΅-Ρ‚ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС ΠΊΠΎΠ΄Π°, ΠΈ пСрСдаСтся Π² конструктор автомобиля Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.

Π₯отя вСдутся дискуссии ΠΎ прСимущСствах Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ способа ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ классами, ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ абстрактного ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½Π΅ сущСствуСт. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° элСмСнтарной Π»ΠΎΠ³ΠΈΠΊΠ΅ (β€œΡΠ²Π»ΡΠ΅Ρ‚ΡΡβ€ ΠΈΠ»ΠΈ β€œΠΈΠΌΠ΅Π΅Ρ‚β€), Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ возмоТности ΠΈ ограничСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°ΡŽΡ‚ ΠΈ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ эти способы. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ эти возмоТности ΠΈ ограничСния, я попытался Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Достаточно простой, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ΄ оставался ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΌ, Π½ΠΎ ΠΈ достаточно Ρ€Π°Π·Π²ΠΈΡ‚Ρ‹ΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ всС Ρ‚Ρ€ΠΈ способа. И, Π³Π»Π°Π²Π½ΠΎΠ΅, я попытался ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½Π΅Π΅ абстрактным – всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ экзСмпляры понятны ΠΈ осязаСмы.

НапишСм ΠΏΡ€ΠΎΡΡ‚Π΅Π½ΡŒΠΊΡƒΡŽ ΠΈΠ³Ρ€Ρƒ – Ρ‚Π°Π½ΠΊΠΎΠ²Ρ‹ΠΉ Π±ΠΎΠΉ. Π˜Π³Ρ€Π°ΡŽΡ‚ Π΄Π²Π° Ρ‚Π°Π½ΠΊΠ°. Они ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎ ΡΡ‚Ρ€Π΅Π»ΡΡŽΡ‚ ΠΈ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΡ‚, Π·Π΄ΠΎΡ€ΠΎΠ²ΡŒΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡƒΠΏΠ°Π»ΠΎ Π΄ΠΎ нуля. Π’ ΠΈΠ³Ρ€Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ снарядов ΠΈ Π±Ρ€ΠΎΠ½ΠΈ. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ нанСсти ΡƒΡ€ΠΎΠ½ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ ΠΏΠΎ Ρ‚Π°Π½ΠΊΡƒ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΈΠΊΠ°, Π²ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΏΡ€ΠΎΠ±ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π±Ρ€ΠΎΠ½ΡŽ. Если броня Π½Π΅ ΠΏΡ€ΠΎΠ±ΠΈΡ‚Π°, ΡƒΡ€ΠΎΠ½ Π½Π΅ наносится. Π›ΠΎΠ³ΠΈΠΊΠ° ΠΈΠ³Ρ€Ρ‹ построСна Π½Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ «камСнь-Π½ΠΎΠΆΠ½ΠΈΡ†Ρ‹-Π±ΡƒΠΌΠ°Π³Π°Β»: Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ броня ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Ρ…ΠΎΡ€ΠΎΡˆΠΎ противостоит снарядам ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π½ΠΎ ΠΏΠ»ΠΎΡ…ΠΎ Π΄Π΅Ρ€ΠΆΠΈΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ снаряды. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, снаряды, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΡ€ΠΎΠ±ΠΈΠ²Π°ΡŽΡ‚ Π±Ρ€ΠΎΠ½ΡŽ, наносят ΠΌΠ°Π»Ρ‹ΠΉ Β«Π·Π°Π±Ρ€ΠΎΠ½Π΅Π²ΠΎΠΉΒ» ΡƒΡ€ΠΎΠ½, ΠΈ, Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Β«Π»Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅Β» снаряды ΠΈΠΌΠ΅ΡŽΡ‚ мСньшС шансов ΠΏΡ€ΠΎΠ±ΠΈΡ‚ΡŒ Π±Ρ€ΠΎΠ½ΡŽ.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΡ€ΠΎΡΡ‚Π΅Π½ΡŒΠΊΠΈΠΉ класс для ΠΏΡƒΡˆΠΊΠΈ. Он Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π²Π° ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Ρ… поля: ΠΊΠ°Π»ΠΈΠ±Ρ€ ΠΈ Π΄Π»ΠΈΠ½Ρƒ ствола. ΠžΡ‚ ΠΊΠ°Π»ΠΈΠ±Ρ€Π° зависит ΡƒΡ€ΠΎΠ½, ΠΈ, частично, ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΊ ΠΏΡ€ΠΎΠ±ΠΈΡ‚ΠΈΡŽ Π±Ρ€ΠΎΠ½ΠΈ. ΠžΡ‚ Π΄Π»ΠΈΠ½Ρ‹ ствола – Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΡΡ‚Ρ€Π΅Π»ΡŒΠ±Ρ‹.

Π‘Π΄Π΅Π»Π°Π΅ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ конструктор для ΠΏΡƒΡˆΠΊΠΈ:

Π‘Π΄Π΅Π»Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ для получСния ΠΊΠ°Π»ΠΈΠ±Ρ€Π° ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… классов:

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ для пораТСния Ρ†Π΅Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ Π΄Π²Π΅ Π²Π΅Ρ‰ΠΈ: ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅ Π² Ρ†Π΅Π»ΡŒ ΠΈ ΠΏΡ€ΠΎΠ±ΠΈΡ‚ΠΈΠ΅ Π±Ρ€ΠΎΠ½ΠΈ? Π’Π°ΠΊ Π²ΠΎΡ‚, ΠΏΡƒΡˆΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π·Π° ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΈΠ· Π½ΠΈΡ…: ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π΄Π΅Π»Π°Π΅ΠΌ Π±ΡƒΠ»Π΅Π²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ IsOnTarget, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΡΠ»ΡƒΡ‡Π°ΠΉΠ½ΡƒΡŽ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ (dice) ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: ΠΏΠΎΠΏΠ°Π»ΠΈ ΠΈΠ»ΠΈ Π½Π΅Ρ‚:

Π¦Π΅Π»ΠΈΠΊΠΎΠΌ класс ΠΏΡƒΡˆΠΊΠΈ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΡŽ. Π“Π΄Π΅-Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ создана ΠΏΡƒΡˆΠΊΠ°. ΠŸΠΎΡ‚ΠΎΠΌ ΠΊ этой ΠΏΡƒΡˆΠΊΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ снаряды, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΡƒΡˆΠΊΡƒ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ сдСлаСм Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ снарядов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ абстрактный снаряд: фугасный, кумулятивный, ΠΏΠΎΠ΄ΠΊΠ°Π»ΠΈΠ±Π΅Ρ€Π½Ρ‹ΠΉ. Ѐугасный наносит самый большой ΡƒΡ€ΠΎΠ½, кумулятивный – мСньшС, ΠΏΠΎΠ΄ΠΊΠ°Π»ΠΈΠ±Π΅Ρ€Π½Ρ‹ΠΉ – Π΅Ρ‰Π΅ мСньшС. Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ классы Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΠΎΠ»Π΅ΠΉ ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ конструктор Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ снаряда, пСрСдавая Π΅ΠΌΡƒ ΠΏΡƒΡˆΠΊΡƒ, ΠΈ строковый Ρ‚ΠΈΠΏ. Π’ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌ классС пСрСопрСдСляСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ GetDamage() – вносятся коэффициСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Ρ‚ ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ ΡƒΡ€ΠΎΠ½ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹ΠΌ.

Ѐугасный (Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ½):

ΠšΡƒΠΌΡƒΠ»ΡΡ‚ΠΈΠ²Π½Ρ‹ΠΉ (Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ½ Ρ… 0.6):

ΠŸΠΎΠ΄ΠΊΠ°Π»ΠΈΠ±Π΅Ρ€Π½Ρ‹ΠΉ (Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ½ Ρ… 0.3):

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ GetDamage вызываСтся ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса. Π’ΠΎ Π΅ΡΡ‚ΡŒ, ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ сохраняСм Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΠΎΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ, использовав ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово base).

Π˜Ρ‚Π°ΠΊ, для снарядов ΠΌΡ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΡŽ (ΠΏΡƒΡˆΠΊΠ° Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ классС), ΠΈ наслСдованиС.
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π±Ρ€ΠΎΠ½ΡŽ для Ρ‚Π°Π½ΠΊΠ°. Π—Π΄Π΅ΡΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ наслСдованиС. Π›ΡŽΠ±Π°Ρ броня ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Ρƒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ абстрактный класс Π±Ρ€ΠΎΠ½ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠΎΠ»Π΅ thickness, ΠΈ строковоС ΠΏΠΎΠ»Π΅ type, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ опрСдСлятся ΠΏΡ€ΠΈ создании Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… классов.

Броня Π±ΡƒΠ΄Π΅Ρ‚ Π² нашСй ΠΈΠ³Ρ€Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±ΠΈΡ‚Π° ΠΎΠ½ΠΈ ΠΈΠ»ΠΈ Π½Π΅Ρ‚. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ρƒ Π½Π΅Π΅ Π±ΡƒΠ΄Π΅Ρ‚ лишь ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ Π² Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ…, Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° Π±Ρ€ΠΎΠ½ΠΈ.

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ конструктор Ρ‚Π°Π½ΠΊΠ° остался Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΌ, сдСлаСм Π΄Π²Π° Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ° Π±Ρ€ΠΎΠ½ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Ρ‹, ΠΈ Π½Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π±ΠΎΠ΅ΡƒΠΊΠ»Π°Π΄ΠΊΡƒ 10 снарядами ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… Ρ‚ΠΈΠΏΠΎΠ²:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ конструктор Ρ‚Π°Π½ΠΊΠ° выглядит Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс Ρ‚Π°Π½ΠΊΠ° состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²: Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π±Ρ€ΠΎΠ½ΡŽ, Π·Π°Ρ€ΡΠ΄ΠΈΡ‚ΡŒ ΠΏΡƒΡˆΠΊΡƒ, Π²Ρ‹ΡΡ‚Ρ€Π΅Π»ΠΈΡ‚ΡŒ.

Как я упомянул Π² Π½Π°Ρ‡Π°Π»Π΅, Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ я старался максимально ΡƒΠΉΡ‚ΠΈ ΠΎΡ‚ абстрактных понятий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ всС врСмя Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² Π³ΠΎΠ»ΠΎΠ²Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ экзСмпляр снаряда Ρƒ нас Ρ€Π°Π²Π΅Π½ физичСскому снаряду, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»ΠΎΠΆΠΈΠ»ΠΈ Π² Π±ΠΎΠ΅ΡƒΠΊΠ»Π°Π΄ΠΊΡƒ ΠΏΠ΅Ρ€Π΅Π΄ Π±ΠΎΠ΅ΠΌ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, снаряды ΠΌΠΎΠ³ΡƒΡ‚ закончится Π² самый нСподходящий ΠΌΠΎΠΌΠ΅Π½Ρ‚!

Π­Ρ‚ΠΎΡ‚ интСрфСйс Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Clone(). Π’ΠΎΡ‚ ΠΎΠ½Π°:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ всС супСр рСалистично: ΠΏΡ€ΠΈ выстрСлС гСнСрируСтся dice, ΠΏΡƒΡˆΠΊΠ° рассчитываСт ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅ своим ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ IsOnTarget, ΠΈ, Ссли ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅ Π΅ΡΡ‚ΡŒ, Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Shoot Π²Π΅Ρ€Π½Π΅Ρ‚ экзСмпляр снаряда, Π° Ссли ΠΏΡ€ΠΎΠΌΠ°Ρ… – Ρ‚ΠΎ Π²Π΅Ρ€Π½Π΅Ρ‚ null.

ПослСдний ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚Π°Π½ΠΊΠ° – Π΅Π³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠΈ враТСского снаряда:

ВсС Π³ΠΎΡ‚ΠΎΠ²ΠΎ. ΠžΡΡ‚Π°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ (ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ) Π²Ρ‹Π²ΠΎΠ΄, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ обСспСчСн ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс ΠΈ Π² Ρ†ΠΈΠΊΠ»Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½Ρ‹Π΅ Ρ…ΠΎΠ΄Ρ‹ ΠΈΠ³Ρ€ΠΎΠΊΠΎΠ².

ПодвСдСм ΠΈΡ‚ΠΎΠ³ΠΈ. ΠœΡ‹ написали ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ использовали наслСдованиС, ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΡŽ, надСюсь, поняли ΠΈ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΠ»ΠΈ различия. Активно задСйствовали возмоТности ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ°, Π²ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΊΠΎΠ³Π΄Π° Π»ΡŽΠ±Ρ‹Π΅ экзСмпляры Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… классов ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π² список, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ, Π° Π²ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, создавая ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ экзСмпляр, Π½ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ. По Ρ…ΠΎΠ΄Ρƒ тСкста я ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π» Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ – Π·Π°ΠΌΠ΅Π½Ρƒ наслСдования Π½Π° Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΡŽ, ΠΈ, ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅Ρ†Π΅ΠΏΡ‚Π° Ρ‚ΡƒΡ‚ Π½Π΅Ρ‚. Π’ нашСй Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ наслСдованиС Π΄Π°Π»ΠΎ Π½Π°ΠΌ Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒ добавлСния Π½ΠΎΠ²Ρ‹Ρ… Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ Π² ΠΈΠ³Ρ€Ρƒ. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ снаряда Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ лишь:

НиТС – ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° Π½Π°ΡˆΠΈΡ… классов.

ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ классами java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ классами java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ классами java. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ классами java. Π€ΠΎΡ‚ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ классами java

Π’ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΈΠ³Ρ€Ρ‹ всС «магичСскиС числа», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ использовались Π² тСкстС, вынСсСны Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ статичСский класс Config. К ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌ полям статичСского класса ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΈΠ· любого Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° нашСго ΠΊΠΎΠ΄Π° ΠΈ Π΅Π³ΠΎ экзСмпляр Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ (ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ) ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ. Π’ΠΎΡ‚ Ρ‚Π°ΠΊ ΠΎΠ½ выглядит:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

BestProg

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Поиск Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… рСсурсах:

1. Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΠΊΠΎΠ΄Π° примСняСтся Π² классах?

Π‘ΡƒΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΊΠΎΠ΄Π° состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π΅Ρ‰Π΅ Ρ€Π°Π·. Намного эффСктивнСС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π½Π΅Π΅ созданный ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ (протСстированный) ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄. Для этого Π»ΡƒΡ‡ΡˆΠ΅ всСго подходят классы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ±Ρ€Π°Π»ΠΈ Π² сСбя всС прСимущСства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ.

Π”ΠΎ появлСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования сущСствовало ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π’ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, использовался ΠΌΠ΅Ρ‚ΠΎΠ΄ копирования этого ΠΊΠΎΠ΄Π°. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π½Π΅ Π±Ρ‹Π» достаточно эффСктивСн ΠΈ, ΠΏΡ€ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ систСмы, Π²Ρ‹Π·Ρ‹Π²Π°Π» ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ рост ошибок.

2. КакиС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ способы (ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹) построСния классов для эффСктивного обСспСчСния ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΊΠΎΠ΄Π°?

Если Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, Ρ‚ΠΎ классы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ (ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈΡ‚ΡŒ) этот ΠΊΠΎΠ΄.

Π’ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языках программирования (Java, C++, C# ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ…) ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Ρ€ΠΈ способа построСния классов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄:

Π­Ρ‚ΠΈ способы Π΅Ρ‰Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ классами. Π’ΠΎ всСх способах строятся Π½ΠΎΠ²Ρ‹Π΅ классы (Ρ‚ΠΈΠΏΡ‹) Π½Π° Π±Π°Π·Π΅ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… классов (Ρ‚ΠΈΠΏΠΎΠ²).

3. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π² классах
4. Какая общая Ρ„ΠΎΡ€ΠΌΠ° ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π³ΠΎ наслСдования классом Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово extends
5. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ наслСдования Π² классах
6. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ объСдинСния ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΈ наслСдования

На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ объявлСния Ρ‚Ρ€Π΅Ρ… классов дСмонстрируСтся объСдинСниС ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΈ наслСдования.

ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ классами java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ классами java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ классами java. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ классами java. Π€ΠΎΡ‚ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ классами java

Рисунок. Π‘Ρ…Π΅ΠΌΠ° объСдинСния ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΈ наслСдования для Ρ‚Ρ€Π΅Ρ… классов

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ модуля с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΌΠΈ классами.

7. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ дСлСгирования ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с наслСдованиСм ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠ΅ΠΉ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π”Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΌ Π·Π²Π΅Π½ΠΎΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½Π°ΡΠ»Π΅Π΄ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠ΅ΠΉ. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ ΡΡƒΡ‚ΡŒ дСлСгирования.

ПослС Ρ‚Π°ΠΊΠΎΠ³ΠΎ пСрСопрСдСлСния ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ MethodA() класса B Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ Ссли Π±Ρ‹ MethodA() Π±Ρ‹Π» унаслСдован:

Вакая организация ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ классами называСтся Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. ΠœΠ΅Ρ‚ΠΎΠ΄ MethodA() класса B называСтся Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ.

8. КакиС отличия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠ΅ΠΉ ΠΈ наслСдованиСм?

И композиция, ΠΈ наслСдованиС Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‚ возмоТности класса. И композиция, ΠΈ наслСдованиС ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса Π²Π½ΡƒΡ‚Ρ€ΠΈ новосозданного класса.

Однако, ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠ΅ΠΉ ΠΈ наслСдованиСм ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ различия с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π²Ρ‹Π±ΠΎΡ€Π° способа создания Π½ΠΎΠ²ΠΎΠ³ΠΎ класса.

НаслСдованиС позволяСт Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ возмоТности Π½ΠΎΠ²ΠΎΠ³ΠΎ класса с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π΅Π³ΠΎ спСциализации. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ создаСтся спСциализированная вСрсия ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ класса. Π’ΠΎ Π΅ΡΡ‚ΡŒ, бСрСтся ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ класс (Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс) ΠΈ создаСтся Π΅Π³ΠΎ новая спСциализированная вСрсия. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π² Ρ€ΠΎΠ»ΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса выступаСт Π½Π΅ΠΊΠΈΠΉ класс ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹Π΄Π΅Π»Π΅Π½Ρ‹ ΠΎΠ±Ρ‰ΠΈΠ΅ Ρ‡Π΅Ρ€Ρ‚Ρ‹ Π·Π°Π΄Π°Ρ‡ΠΈ. НаслСдованиСм Π²Ρ‹Ρ€Π°ΠΆΠ°Π΅Ρ‚ взаимосвязь is-a (Β«Π΅ΡΡ‚ΡŒΒ» ΠΈΠ»ΠΈ «являСтся»).

ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ класса Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ (новосозданном) классС. Π’ этом случаС Π² новосозданном классС ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π²ΠΈΠ΄ΠΎΠ² взаимосвязи has-a (клас «содСрТит»).

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ класса Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ классС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ скрытым ( private ), ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ( public ) ΠΈΠ»ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΌ ( protected ).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ ΠΈ ассоциации Π² JavaScript

Данная нСбольшая Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ° ΠΎ Ρ‚ΠΈΠΏΠ°Ρ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π² ООП. МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΡƒ, Ссли ΠΊΡ‚ΠΎ Π·Π½Π°Π», Π½ΠΎ ΠΏΠΎΠ΄Π·Π°Π±Ρ‹Π» ΠΈΠ»ΠΈ, Ссли для ΠΊΠΎΠ³ΠΎ эти Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π² Π½ΠΎΠ²ΠΈΠ½ΠΊΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ шаг Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ основ ООП.

ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ, агрСгация ΠΈ ассоциация β€” всС эти Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ ΠΈΠ»ΠΈ Ρ‚ΠΎΡ‡Π½Π΅Π΅ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹ ООП ΠΏΡ€ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈΠ»ΠΈ классами ΠΌΠ΅ΠΆΠ΄Ρƒ собой. ВсСго сущСствуСт ΠΏΡΡ‚ΡŒ основных Ρ‚ΠΈΠΏΠΎΠ² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ:
β€” Ассоциация
β€” АгрСгарция
β€” ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ
ΠΈ Π΅Ρ‰Π΅ Π΄Π²Π° Ρ‚ΠΈΠΏΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ:
β€” НаслСдования (ΠΈΠ½ΠΎΠ³Π΄Π° этот Ρ‚ΠΈΠΏ Π΅Ρ‰Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π³Π΅Π½Π΅Ρ€Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ)
β€” РСализация (это Ρ‚ΠΈΠΏ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ базируСтся Π½Π° интСрфСйсах. Π’ΠΎ Π΅ΡΡ‚ΡŒ создаСтся интСрфСйсы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ основной класс Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ.)

ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ, агрСгация ΠΈ ассоциация эти Ρ‚Ρ€ΠΈ понятия ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π΄Ρ€ΡƒΠ³ Π½Π° Π΄Ρ€ΡƒΠ³Π°. ВсС ΠΎΠ½ΠΈ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Ρ‡Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Π‘Π°ΠΌΡ‹ΠΉ простой способ ΠΏΠΎΠ½ΡΡ‚ΡŒ эти Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ аналогию ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π°. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ сСбС Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ класс ΠΊΠΎΠΌΠ½Π°Ρ‚Π° ΠΈ Π΅ΡΡ‚ΡŒ Π΄Π²Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… класса мСбСль ΠΈ стСна. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ Ρƒ ΠΊΠΎΠΌΠ½Π°Ρ‚Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ какая Ρ‚Π° мСбСль ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΎ стСны. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠΎΠΌΠ½Π°Ρ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ стСны ΠΈ мСбСль ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости. Но Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Π° Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠ½Π°Ρ‚Π° β€” стСны ΠΈ ΠΊΠΎΠΌΠ½Π°Ρ‚Π° β€” мСбСль. Π Π°Π·Π½ΠΈΡ†Π° Π² Ρ‚ΠΎΠΌ Ρ‡Ρ‚ΠΎ стСны Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²Ρ‹ΠΉΠ΄ΡƒΡ‚ ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΊΠΎΠΌΠ½Π°Ρ‚Π°. Π‘Ρ‚Π΅Π½Ρ‹ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π²Π½Π΅ ΠΊΠΎΠΌΠ½Π°Ρ‚Ρ‹. Π’ΠΎ Π΅ΡΡ‚ΡŒ стСна всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΊΠΎΠΌΠ½Π°Ρ‚Π°. Вакая связь называСтся композиция. И эта связь Π±ΡƒΠ΄Π΅Ρ‚ ТСсткой. Π—Π°Ρ‚ΠΎ мСбСль ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΊΠΎΠΌΠ½Π°Ρ‚Ρ‹. Один экзСмпляр ΠΌΠ΅Π±Π΅Π»ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ΡŒ с Π½Π°Ρ‡Π°Π»ΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ½Π°Ρ‚Π΅ ΠΏΠΎΡ‚ΠΎΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Вакая связь называСтся ассоциациСй ΠΈΠ»ΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠ΅ΠΉ. И такая связь Π±ΡƒΠ΄Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎΠΉ. О Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ассоциациСй ΠΈΠ»ΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠ΅ΠΉ Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅.

Рассмотрим эти связи ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅.

Ассоциация

Ассоциация это Ρ‚Π°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ Π½Π° Π΄Ρ€ΡƒΠ³Π°. ΠŸΡ€ΠΈ этом ΠΎΠ½ΠΈ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ нСзависимыми Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ассоциации

Π’ΡƒΡ‚ Ρƒ нас Π΅ΡΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ stream, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ссылка Π½Π° ΠΏΠΎΡ‚ΠΎΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΡƒΠ΄Π° Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ сообщСниС. ΠœΠ΅Ρ‚ΠΎΠ΄ log провСряСт Ρ‡Ρ‚ΠΎ Π² классС Π·Π°Π΄Π°Π½ stream ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСния. Π’ΠΎ Π΅ΡΡ‚ΡŒ ассоциация это ΠΊΠΎΠ³Π΄Π° Ρƒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса Π΅ΡΡ‚ΡŒ ссылка Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ класс. Π­Ρ‚ΠΎ создаСт Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΡ… ΠΌΠ΅ΠΆΠ΄Ρƒ классами. НапримСр Ρƒ нас Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ смСны ΠΏΠΎΡ‚ΠΎΠΊΠ° Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

АгрСгация

АгрСгация это Ρ‚ΠΈΠΏ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. АгрСгация ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΡΠ»Π°Π±ΡƒΡŽ связь ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. ВсС зависимыС классы ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π²Π½Π΅ основного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ:

ΠŸΡ€ΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ Ρƒ нас получаСтся Π±ΠΎΠ»Π΅Π΅ прочная связь, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈ ассоциации. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС связь образуСтся ΠΏΡ€ΠΈ созданиС экзСмпляра класса Logger, Π² конструктор ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠΉ класс.

ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ

ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ это Ρ‚ΠΈΠΏ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΠΈ Π½ΠΈΠΊΠΎΠΌΡƒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. ΠŸΡ€ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ образуСтся сильная связь ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ Ρ‚ΠΈΠΏΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ основной ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ обСспСчиваСт ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ зависит. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ. Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ ΠΌΠ°ΡˆΠΈΠ½Ρƒ ΠΈ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ. Машина ΠΈ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ Π±Π΅Π· Π΄Ρ€ΡƒΠ³Π°, Π½ΠΎ ΡΡƒΡ‚ΡŒ Π½Π΅ Π² этом. А Π² Ρ‚ΠΎΠΌ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, ΠΎΠ΄ΠΈΠ½ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΉ машинС, поэтому для Ρ‚Π°ΠΊΠΎΠΉ связи Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π²Π½ΡƒΡ‚Ρ€ΠΈ конструктора создаСтся экзСмпляр Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса. ΠŸΡ€ΠΈ этом создаСтся Π±ΠΎΠ»Π΅Π΅ крСпкая ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ этих Π΄Π²ΡƒΡ… классов. Π’ΠΎ Π΅ΡΡ‚ΡŒ класс Logger ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π½Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ сущСствуСт Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° fs, Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ класс fs ΠΈ Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ createWriteStream ΠΈ Ρ‚. Π΄. Он ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π½Π°Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса.

Π’ΠΎ Π΅ΡΡ‚ΡŒ Π² ассоциации ΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»ΠΎΡΡŒ Ρ‡Ρ‚ΠΎ эти Π΄Π²Π° класса создаСтся нСзависимо, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ссылками, Π² ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΎΠ½ΠΈ создаСтся вмСстС Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° конструктора.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *