ΠΠ½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΡΠ²ΡΠ·ΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ²
ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ. ΠΠ½ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠ²Π΅ΡΠ°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΠ±ΡΡΡΠ°ΠΊΡΠΈΠΈ, Ρ. Π΅. ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠ»ΠΈΡΠ½ΡΠΌ. Π’ΠΈΠΏΠΈΡΠ½Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Π° ΠΠ±ΡΡΡΠ°ΠΊΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±Π°Π·ΠΈΡΡΡΡΡΡ Π½Π° ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΡ . ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΠ½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΡΠ²ΡΠ·ΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ², ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΡ Π΄Π»Ρ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΡΠ²ΡΠ·ΠΈ, Π±ΡΠ΄Π΅ΠΌ ΡΡΠΈΡΠ°ΡΡ, ΡΡΠΎ ΠΠ‘ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π² ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ΅ ΠΠΠ, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΠ‘ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΠΊΠ»Π°ΡΡΠΎΠΌ Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ, Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π²ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠΌΠ΅Π΅Ρ Π΄Π΅Π»ΠΎ, ΠΏΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ Π½Π΅ ΡΡΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ ΠΏΡΠΎΡΡΡΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π―Π.
ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π²Π°ΡΠΈΠ°Π±Π΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΠ‘ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ: ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΈ, Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠ΅ΡΠ»Π΅ΠΊΡΠΈΠΈ (ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ), ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² (ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ²), Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠ°ΡΠΊΠΎ ΠΎΡ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΠ·ΡΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡΡ ΠΈΠ· Π½ΠΈΡ .
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. ΠΡΠΈΠΌΠ΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ².
Π ΠΈΡ. 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. Π¨Π°Π±Π»ΠΎΠ½.
ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ. ΠΠ½ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠ²Π΅ΡΠ°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΠ±ΡΡΡΠ°ΠΊΡΠΈΠΈ, Ρ. Π΅. ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠ»ΠΈΡΠ½ΡΠΌ. Π’ΠΈΠΏΠΈΡΠ½Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Π° ΠΠ±ΡΡΡΠ°ΠΊΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±Π°Π·ΠΈΡΡΡΡΡΡ Π½Π° ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΡ . ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. ΠΠ°Π»Π°Π³Π°Ρ ΡΡΠΎΡ ΡΠ°Π±Π»ΠΎΠ½ Π² ΡΡ Π΅ΠΌΠ΅ ΠΠΠ, ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ ΠΠ±ΡΡΡΠ°ΠΊΡΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΉ ΡΠ°ΡΡΡΡ. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π²Π°ΡΠΈΠ°Π½Ρ Π² ΡΡΠ½ΠΊΡΠΈΠΈ ΠΠΏΠ΅ΡΠ°ΡΠΈΡ (), Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π²Π°ΡΠΈΠ°ΡΠΈΠΈ, Π° ΠΠ»ΠΈΠ΅Π½Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΠΠΠ, Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌ ΠΎΡ ΠΎΠ±ΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ, ΠΈ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π΅ΠΉ.
Π Π°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ Π²Π°ΡΠΈΠ°ΡΠΈΠΈ Π½Π΅ ΠΏΠΎΠΊΡΡΠ²Π°ΡΡ Π²ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ², Π½ΠΎ ΡΠ²Π»ΡΡΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌΠΈ Π² ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ΅ ΠΠΠ. ΠΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Ρ Π² Π΄ΡΡΠ³ΠΈΡ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ°Ρ , Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΠΎ Π·Π°Π»ΠΎΠΆΠ΅Π½Ρ Π² ΡΡΠΈ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΡ ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ»ΡΠΆΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π²Π°ΡΠΈΠ°ΡΠΈΠΈ ΠΠ‘.