ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ связи Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π˜ΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ опрСдСляСт интСрфСйс для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ исполнитСля. Он Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ интСрфСйсу Абстракции, Ρ‚. Π΅. ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ. Випичная ситуация, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ прСдоставляСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π° ΠΠ±ΡΡ‚ракция опрСдСляСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ высокого уровня, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Π°Π·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ…. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ опрСдСляСт ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ простых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ связи Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠŸΡ€ΠΈ описании ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ², ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ связи, Π±ΡƒΠ΄Π΅ΠΌ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠŸΠ‘ создаСтся Π² ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ΅ ООП, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠŸΠ‘ прСдставлСн классом с ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, всС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π΅Π»ΠΎ, ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Π½Π΅ Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ простыС манипуляции классами ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ конструкциями ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π―П.

Для рСализация Π²Π°Ρ€ΠΈΠ°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠŸΠ‘ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° опСрация: ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, наслСдования, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², динамичСской Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ классов, рСфлСксии (отобраТСния), шаблонов (ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ²), Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ирования. ΠšΡ€Π°Ρ‚ΠΊΠΎ ΠΎΡ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΈΠ· Π½ΠΈΡ….

1. ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π²Π°Ρ€ΠΈΠ°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ устанавливаСтся Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ связи ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Ρ‚ΠΈΠΏΠ° «part» ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΡ ΠΎΠ±Ρ‰Π΅ΠΉ части Π² Π΄Π΅Π»Π΅Π³ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌ классС, Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ — Π² Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ. На Ρ€ΠΈΡ. 4.2 прСдставлСны UML-схСма ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ описываСт повСдСнис систСмы Π² ΡΠ»ΡƒΡ‡Π°Π΅ измСнСния располоТСния ΠΏΠ°Π½Π΅Π»ΠΈ с ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ управлСния Π² ΠΎΠΊΠ½Π΅.

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

Рис. 4.2. ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ.

Окно Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΈ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ элСмСнты управлСния. Окно Π΄Π΅Π»Π΅Π³ΠΈΡ€ΡƒΠ΅Ρ‚ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠ°Π½Π΅Π»ΠΈ. Команда панСль. Π“ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ = true являСтся ΠΎΠ±Ρ‰Π΅ΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ, которая выполняСтся ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π² Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π° управлСния (Π­Π£). ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ находится Π² ΠΏΠ°Π½Π΅Π»ΠΈ пСрСписанного Π­Π£ ΠΈ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ располоТСния ΠΈ ΠΎΡ‚обраТСния элСмСнта для Ρ€Π°Π·Π½Ρ‹Ρ… Π­Π£.

class Окно {.

List ΠΏΠ°Π½Π΅Π»ΠΈ = new Π«Π‘1: (); public Окно () {.

foreach (ПанСль панСль in ΠΏΠ°Π½Π΅Π»ΠΈ) { панСль. Π“ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ = true; }.

}.

}.

class ПанСль {.

Π«Π·^ЭлСмСнтУправлСния> ЭлСмСнтыУправлСния = new List.

() ;

public bool Π“ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ {.

get { return Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ; }.

set {.

Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ = value;

ΠŸΠ΅Ρ€Π΅Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π­Π£ ();}.

}.

private bool Π“ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ;

private void ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π­Π£ (){/*…*/} }.

class ЭлСмСнтУправлСния {/*…*/.

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±Ρ‰Π΅ΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ являСтся интСрфСйс Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠ»Π°ΡΡΠΎΠΌ ПанСль ΠΈ ΡΠ²ΠΎΠΉΡΡ‚Π²ΠΎΠΌ Π“ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ. ΠŸΠ΅Ρ€Π΅Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π­Π£, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π²ΠΎ Π²ΡΠ΅Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ°Ρ… ПанСлСй ΠΈ Π­Π£ соотвСтствСнно, Π°, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ являСтся содСрТаниС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΡΡ‚ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ ΡΠ²ΠΎΠΉΡΡ‚Π². Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡΡ…: 1Π». Ρ‡1 ЭлСмСнтыУправлСния ΠΈ 1Π»51 ΠΏΠ°Π½Π΅Π»ΠΈ.

На Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ связь ΠΌΠ΅ΠΆΠ΄Ρƒ классами ПанСль ΠΈ Π­Π£ являСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² — панСль ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ нСсколько Π­Π£; связь ΠΌΠ΅ΠΆΠ΄Ρƒ классами Окно ΠΈ ΠŸΠ°Π½Π΅Π»ΡŒ — ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π³Π΄Π΅ ΠΊ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ «part-of» добавляСтся условиС, Ρ‡Ρ‚ΠΎ панСль ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΎΠΊΠ½Ρƒ ΠΈ ΡƒΠ½ΠΈΡ‡Ρ‚оТаСтся вмСстС с Π½ΠΈΠΌ. ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΠΎΠΈΡ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ (Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ) выступаСт ассоциация.

2. НаслСдованиС. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ базируСтся Π½Π° Ρ‚Π°ΠΊΠΎΠΌ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ ООП, ΠΊΠ°ΠΊ наслСдованиС Ρ‡Π΅Ρ€Π΅Π· установлСниС ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ «Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊ — ΠΏΡ€Π΅Π΄ΠΎΠΊ» с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ класс ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ с ΡΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ΠΌ всСх свойств ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса-ΠΏΡ€Π΅Π΄ΠΊΠ°, Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΈ Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, Π½Π΅ ΠΈΠΌΠ΅Ρ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π½ΠΈΡ….

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ раздСляСт ΠΎΠ±Ρ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ классС ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π½ΡƒΡŽ Π² ΠΊΠ»Π°ΡΡΠ΅ наслСдника. НаслСдованиС ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ.

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ наслСдованиС (рис. 4.3). ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π°Ρ€ΠΈΠ°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ класс наслСдуСтся ΠΎΡ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±Π°Π·ΠΎΠ²Ρ‹Ρ….

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ наслСдованиС.

Рис. 4.3. ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ наслСдованиС.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ΅ наслСдованиС (рис. 4.4). ΠŸΡ€Π΅Π΄ΡƒΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π΅Ρ‚ созданиС иСрархичСской структуры ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π° Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ (Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ классС — Π­Π£) для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ использования Π΅Π΅ Π½Π° Π½ΠΈΠΆΠ½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΌ Π²Π°Ρ€ΡŒΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ (классы-наслСдники). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, классы становятся Π±ΠΎΠ»Π΅Π΅ спСциализированными.

НаслСдованиС с Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ стандартному наслСдованию, Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹ классом-наслСдником.

На Π΄Π°Π½Π½ΠΎΠΌ рисункС класс управлСния содСрТит Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки ΠΈ ΠΏΠΎΠΈΡΠΊΠ° ΠΈ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ‚ ΠΎΡ‚ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ², Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ выполняСтся опСрация. Π’Π°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ наслСдования поддСрТиваСтся Π² Π―П: Eiffel, Π‘, Dylan, Python, Perl, Curl, Common Lisp (Ρ‡Π΅Ρ€Π΅Π· CLOS), OCaml.

НаслСдованиС, основанноС Π½Π° ΡΠΌΠ΅ΡΡΡ…. БмСсь (mix) — элСмСнт Π―П (абстрактный подкласс ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ повСдСния Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса ΠΈΠ»ΠΈ модуля. ΠŸΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π°Ρ€ΠΈΠ°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся для уточнСния повСдСния Π΄Ρ€ΡƒΠ³ΠΈΡ… классов ΠΈ Π½Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для пороТдСния ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ЯП, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ смСси, — это: Flavors, Smalltalk, Beta, CLOS, Ruby, D, Python, Scala. На Ρ€ΠΈΡ. 4.5 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° UML-схСма Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ наслСдования со ΡΠΌΠ΅ΡΡŒΡŽ.

На Π΄Π°Π½Π½ΠΎΠΌ рисункС интСрфСйс потрСбности описываСт Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ БмСсь ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΠΊΠ°. Π›ΡŽΠ±ΠΎΠΉ класс, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ БмСсь, Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ интСрфСйса Услуги. ΠšΠ»Π°ΡΡΡ‹ Алгоритмы 1 ΠΈ ΠΠ»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹2 Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΡΠ²Π»ΡΡŽΡ‚ΡΡ примСсями. Π’ ΠΊΠ»Π°ΡΡΠ΅ упорядочСн Бписок смСшивания ΠΎΠ±ΠΎΠΈΡ… классов. НиТС прСдставлСн Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ Ρ‚ΠΈΠΏΠ° БмСсь:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ стандартного наслСдования классов.

Рис. 4.4. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ стандартного наслСдования классов.

Π˜ΠΌΠΈΡ‚Π°Ρ†ΠΈΡ мноТСствСнного наслСдования interface Услуги.

Рис. 4.5. Π˜ΠΌΠΈΡ‚Π°Ρ†ΠΈΡ мноТСствСнного наслСдования interface Услуги.

{.

void Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ (); object Найти (/*элСмСнт*/);

}.

interface ΠŸΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ { object ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ (int Π½ΠΎΠΌΠ΅Ρ€);} class Алгоритмы1: Услуги {.

private readonly ΠŸΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΠΈ список;

public Алгоритмы1(ΠŸΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΠΈ список) { this. список = список; } public void Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ ().

{.

/*Алгоритм упорядочСнности списка, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π² parent*/.

}.

public object Найти (/*элСмСнт*/) {/*Алгоритм поиска Π² ΡΠΏΠΈΡΠΎΠΊ. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ ();*/}.

}.

class Алгоритмы2: Услуги.

{.

private readonly ΠŸΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΠΈ список;

public Алгоритмы2(ΠŸΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ список) {this.список = список; }.

public void Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ () { }.

public object Найти (/*элСмСнт*/) {/*…*/}.

}.

class БписокЭлСмСнтов.

{.

private object[] элСмСнты;

public БписокЭлСмСнтов () {элСмСнты = new object[10]; } public object ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ (int Π½ΠΎΠΌΠ΅Ρ€) {return элСмСнты[Π½ΠΎΠΌΠ΅Ρ€]; }.

public void Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚ (object элСмСнт) {/*Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚.

*/ }.

}.

class УпорядочСнный Бписок: БписокЭлСмСнтов, ΠŸΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΠΈ, Услуги {.

private readonly Услуги mixin; public Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ Бписок () base () {.

if (/*ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ*/) {this.mixin = new Алгоритмы1(this) ;

} else if (/*свободный процСссор*/).

{this.mixin = new Алгоритмы2(this);}.

}.

public void Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ () {mixin.Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ (); } public object Π½Π°ΠΉΡ‚ΠΈ (/*элСмСнт*/) {object элСмСнт = mixin. Найти (/*элСмСнт*/); }.

}.

Π’ ΡΡ‚ΠΎΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΠ° Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ прСдставлСна Π² ΠΊΠΎΠ΄Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ this, mixin = new A.'iropriTMbi2(this).

Если Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сортировки ΠΈΠ»ΠΈ поиска, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² ΠΊΠ»Π°ΡΡΠ΅ Алгоритмы!, достаточно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Алгоритмы1 Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ класс, унаслСдованный ΠΎΡ‚ ΠΈΠ½Ρ‚СрфСйса Услуги. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ прСдставлСна классами Алгоритмы1 ΠΈ ΠΠ»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹2, ΠžΠ±Ρ‰ΠΈΠ΅ — интСрфСйсы ΠŸΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΠΈ ΠΈ Π£ΡΠ»ΡƒΠ³ΠΈ ΠΈ ΠΊΠ»Π°ΡΡΡ‹ Бписок Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½Ρ‹ΠΉ Бписок. Π’Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ сохраняСтся Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ private readonly Услуги mixin, Π° ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π’Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ — это ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if Π² ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Π΅ public УпорядочСнный Бписок.

НаслСдованиС, основанноС Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… ΠΈΠ»ΠΈ шаблонС дСлСгирования {delegation pattern). Π­Ρ‚ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ…, примСняСтся Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π° Π½Π΅ ΠΊΠ»Π°ΡΡΠΎΠ². Π­Ρ‚ΠΎ способ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ внСшнС дСмонстрируСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π½ΠΎ Ρ„актичСски ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ дСйствия Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, ΠΊΠ°ΠΊ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π³Π΄Π΅ ΠŸΡ€ΠΈΠ½Ρ‚Π΅Ρ€ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° ΠŸΡ€ΠΈΠ½Ρ‚Π΅Ρ€.

class ΠŸΡ€ΠΈΠ½Ρ‚Π΅Ρ€ {//Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ void ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ () {/*.*/}}.

class ΠŸΡ€ΠΈΠ½Ρ‚Π΅Ρ€ {// Π΄Π΅Π»Π΅Π³ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠŸΡ€ΠΈΠ½Ρ‚Π΅Ρ€ ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€ = new ΠŸΡ€ΠΈΠ½Ρ‚Π΅Ρ€ (); void print () {ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€.ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ (); }.

}.

  • 3. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·Π°Ρ†ΠΈΡ. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ класс, структура, интСрфСйс ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΅ΡΡ‚ΡŒ ссылка Π½Π° ΠΌΠ΅ΡΡ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ½ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠ»ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ (конструкция Π²Ρ€ΠΎΠ΄Π΅ placeholders (type parameters)). Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ прСдусматриваСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π―Ρ€ΠΊΠΈΠΌΠΈ прСдставитСлями ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹. Они ΡΠ²Π»ΡΡŽΡ‚ΡΡ синтаксичСски ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ, Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ся Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅: List ΠΈ 1Π»Π·1<�ЭлСмСнтУправлСниях Они ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ массивы ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π»ΡŽΠ±Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹Ρ… ΠΎΡ‚ Ρ‚ΠΈΠΏΠΎΠ² ПанСли ΠΈ Π­Π£ соотвСтствСнно. ΠŸΡ€ΠΈ этом Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ остаСтся Π½Π΅ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ.
  • 4. ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ°. Π‘ΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ этого ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ², Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ выполняСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΠ»ΠΈ Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ вызываСтся функция. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π―П прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΈΠΌΠ΅Π½ΠΈ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ. Π’Ρ‹Π±ΠΎΡ€ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° осущСствляСт программная срСда Π―П. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ΡΡ ΠΊ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌ, функциям ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌ. Π―Π·Ρ‹ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΡƒ: Ada, C++, Π‘#, D, Erlang, F#, Groovy, Java, JavaScript, Haskell, Common Lisp, Nemerle, Scala, VB.NET, Delphi, Ocaml. Π―Π·Ρ‹ΠΊ Java Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° «+» для сочСтания строк. Π’ Π‘#, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΡƒΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΈ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.

ИспользованиС этого ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° public object Найти (/*элСмСнт*/). БистСма сама Ρ€Π΅ΡˆΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΉ элСмСнт ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π² ΡΠΏΠΈΡΠΊΠ΅, Ссли Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ‚ΠΎΠ΄ с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ, Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ исходным ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ, public int Найти (/*элсмСнт*/).

  • 5. ДинамичСская Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° классов. Π‘ΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ класс загруТаСтся Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ лишь Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС языка Java. Для управлСния этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ (MainClass.class.getClass Loader ();).
  • 6. ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, основанный Π½Π° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, ΠΈΠΌΠ΅Π΅Ρ‚ собствСнноС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. Π’Π°ΠΊΠΈΠ΅ манипуляции Π΄ΠΎΡΡ‚ΠΈΠ³Π°ΡŽΡ‚ΡΡ благодаря дСлСнию ΠŸΠ‘ Π½Π° Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΠΈ Ρ†Π΅Π»ΡŒ уровня. ЦСль уровня прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΈΠ·Π±Ρ€Π°Π½Π½Ρ‹Ρ… систСмных свойствах, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π½Π° Ρ†Π΅Π»ΡŒ уровня, Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ†Π΅Π»ΠΈ уровня ΠΈ Π²Π»ΠΈΡΠ΅Ρ‚ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ уровня. Π’ Π‘ПБ общая Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ располоТСна Π½Π° Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π° ΡƒΡ€ΠΎΠ²Π½ΡΡ….

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ отобраТСния Π² ΡΠ·Ρ‹ΠΊΠ΅ Π‘#:

//Π‘Π΅Π· отобраТСния УнивСрситСт ΡƒΠ½ΠΈΠ² = new УнивСрситСт ();

ΡƒΠ½ΠΈΠ².Π‘ΠΏΠΈΡΠΎΠΊΠ€Π°ΠΊΡƒΠ»ΡŒΡ‚Π΅Ρ‚ΠΎΠ² () ;

//ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

Type type = Type. GetType (.

«UnivercityNamespace. УнивСрситСт «);

object univ = Activator. Createlnstance (t);

type.InvokeMember («Π‘ΠΏΠΈΡΠΎΠΊΠ€Π°ΠΊΡƒΠ»ΡŒΡ‚Π΅Ρ‚ΠΎΠ² «, Π’indingFIags .

InvokeMethod, null, univ, null);

7. Π¨Π°Π±Π»ΠΎΠ½Ρ‹ (ΠΈΠ»ΠΈ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹) Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ирования {patterns) ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Π‘ПБ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· Π½ΠΈΡ… прСдоставляСт Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для управлСния Π²Π°Ρ€ΠΈΠ°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ (рис. 4.6).

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ шаблонов ΠΏΠΎΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ: агрСгация, ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ризация.

Класс Абстракция опрСдСляСт абстрактный интСрфСйс для ΠšΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ Ρ‚ΠΈΠΏΠ° Π˜ΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡ Абстракции Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ интСрфСйс, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ АбстракциСй.

Π¨Π°Π±Π»ΠΎΠ½.

Рис. 4.6. Π¨Π°Π±Π»ΠΎΠ½.

Π˜ΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ опрСдСляСт интСрфСйс для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ исполнитСля. Он Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ интСрфСйсу Абстракции, Ρ‚. Π΅. ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ. Випичная ситуация, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ прСдоставляСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π° ΠΠ±ΡΡ‚ракция опрСдСляСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ высокого уровня, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Π°Π·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ…. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ опрСдСляСт ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ простых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Налагая этот шаблон Π² ΡΡ…Π΅ΠΌΠ΅ КПИ, ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Абстракция являСтся ΠΎΠ±Ρ‰Π΅ΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ сохраняСт Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ (), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ, Π° ΠšΠ»ΠΈΠ΅Π½Ρ‚ являСтся Π΄Ρ€ΡƒΠ³ΠΈΠΌ КПИ, зависимым ΠΎΡ‚ ΠΎΠ±Ρ‰Π΅ΠΉ части, ΠΈ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ‚ ΠΎΡ‚ ΠΈΠ½Ρ‚СрфСйса ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… исполнитСлСй.

РассмотрСнныС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ Π½Π΅ ΠΏΠΎΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ всю ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ обСспСчСния Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ², Π½ΠΎ ΡΠ²Π»ΡΡŽΡ‚ся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ Π² ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ΅ ООП. Они ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°Ρ…, Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ Π·Π°Π»ΠΎΠΆΠ΅Π½Ρ‹ Π² ΡΡ‚ΠΈ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ инструмСнтами Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ ΠŸΠ‘.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ