class D inherit
B
C
select f end
feature
...
end
Π ΡΡΠΎΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ΄Π°Π΅ΡΡΡ Π²Π΅ΡΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° B:
class D inherit
B
select bf end
C
feature
...
end
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ select ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ rename, undefine ΠΈ redefine, Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ²ΡΠ΅ ΠΈΠΌΠ΅ΡΡΡΡ (Π²ΡΠ±ΠΎΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ). ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΡΠ΅Π³Π»Π°ΠΌΠ΅Π½ΡΠΈΡΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ:
ΠΡΠ°Π²ΠΈΠ»ΠΎ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ
ΠΠ»Π°ΡΡ, Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π²ΡΠΈΠΉ Π΄Π²Π΅ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π΄ΡΠ±Π»ΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΊΠ° ΠΈ Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ²ΡΠΈΠΉ ΠΈΡ , Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΎΠ΄Π½Ρ ΠΈΠ· Π½ΠΈΡ Π² ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ select.
ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ select ΡΡΡΡΠ°Π½ΡΠ΅Ρ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΡ ΡΠ°Π· ΠΈ Π½Π°Π²ΡΠ΅Π³Π΄Π°. ΠΠΎΡΠΎΠΌΠΊΠ°ΠΌ ΠΊΠ»Π°ΡΡΠ° Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ (ΠΈ ΠΎΠ½ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ) ΠΏΠΎΠ²ΡΠΎΡΡΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅.
ΠΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²
ΠΡΠ±ΠΎΠΉ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ select. ΠΡΠ»ΠΈ, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡ Π΄Π²Π° ΠΊΠ»Π°ΡΡΠ°, Π²Ρ Π½Π°ΡΠΎΠ»ΠΊΠ½ΡΠ»ΠΈΡΡ Π½Π° ΡΡΠ΄ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ², Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ Π·Π°Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠ»Π°ΡΡΠΎΠ² "ΠΎΠ΄Π΅ΡΠΆΠ°Π» Π²Π΅ΡΡ " (ΠΏΠΎΡΡΠΈ) Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· Π½ΠΈΡ . Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΠ°ΠΊ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΌΠ΅ΡΠ°ΡΠΎΡΠΈΡΠ½ΠΎ Π½Π°Π·Π²Π°Π½Π½ΠΎΠΉ "Π±ΡΠ°ΠΊ ΠΏΠΎ ΡΠ°ΡΡΠ΅ΡΡ" (Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ARRAYED_STACK - ΠΏΠΎΡΠΎΠΌΠΎΠΊ STACK ΠΈ ARRAY), Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΊΠ»Π°ΡΡΡ-ΡΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ ΠΈΠΌΠ΅ΡΡ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΏΡΠ΅Π΄ΠΊΠ°. (Π Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ Base ΠΎΠ±Π° ΠΊΠ»Π°ΡΡΠ° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²Π»ΡΡΡΡΡ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΌΠΈ (distant) ΠΏΠΎΡΠΎΠΌΠΊΠ°ΠΌΠΈ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ° CONTAINER.) Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ (STACK) ΡΠ»ΡΠΆΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ, ΠΈ Π²Π°ΠΌ, Π±ΡΡΡ ΠΌΠΎΠΆΠ΅Ρ, Π·Π°Ρ ΠΎΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ (ΠΏΠΎΡΡΠΈ) Π²ΡΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ Π±ΡΠ»ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Π΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·Ρ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ Π·Π°ΠΏΠΈΡΡ, Π΄Π°ΡΡΠ°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΡΡ Π²ΡΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ. ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ inherit ΠΊΠ»Π°ΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ°ΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ (Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ) ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ:
SOME_PARENT
select all end
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΡΠ΅Π²ΠΈΠ΄Π΅Π½: Π²ΡΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ, - ΡΠΎΡΠ½Π΅Π΅ ΡΠ΅ ΠΈΠ· Π½ΠΈΡ , ΡΡΠΎ ΠΎΡΡΠ°Π½ΡΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄ΡΡΠ³ΠΈΡ select, - ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΡ Π² ΠΏΠΎΠ»ΡΠ·Ρ SOME_PARENT. ΠΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΡΡΠΎΡΠ½Π΅Π½ΠΈΠ΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Ρ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π²ΠΏΡΠ°Π²Π΅ ΠΎΡΠ΄Π°ΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠΌ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΌ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ².
Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ
(ΠΡΠΎΡ ΡΠ°Π·Π΄Π΅Π» ΠΏΠΎΡΠ²ΡΡΠ΅Π½ Π²Π΅ΡΡΠΌΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΎΠΌΡ Π²ΠΎΠΏΡΠΎΡΡ, ΠΈ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΡΠ΅Π½ΠΈΠΈ ΠΊΠ½ΠΈΠ³ΠΈ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ.)
ΠΡΠΈΡΡΡΠΏΠ°Ρ ΠΊ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, ΠΌΡ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈΡΡ Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ Precursor, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²ΡΠ΅ΠΉ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ. ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π΄ΡΠ±Π»ΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠΌΡ (Ρ ΠΎΡΡ ΠΈ Π±ΠΎΠ»Π΅Π΅ "ΡΡΠΆΠ΅Π»ΠΎΠ²Π΅ΡΠ½ΠΎΠΌΡ") ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΠΎΠΌΡ Π² ΡΠ΅Ρ ΡΠ΅Π΄ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° Π±Π°Π·ΠΎΠ²ΡΡ ΡΡΠ΅Π΄ΡΡΠ² Π½Π΅ Ρ Π²Π°ΡΠ°Π΅Ρ.
ΠΠ΅ΡΠ½Π΅ΠΌΡΡ ΠΊ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠΌΡ Π½Π°ΠΌ ΠΊΠ»Π°ΡΡΡ BUTTON - ΠΏΠΎΡΠΎΠΌΠΊΡ WINDOW, ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ΅ΠΌΡ display:
display is
-- ΠΠΎΠΊΠ°Π· ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π° ΡΠΊΡΠ°Π½Π΅.
do
window_display
special_button_actions
end
Π³Π΄Π΅ window_display Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, Π° special_button_actions Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π»Ρ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅Π΅ Π³ΡΠ°Π½ΠΈΡΡ. ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ window_display Π² ΡΠΎΡΠ½ΠΎΡΡΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ WINDOW-Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ display.
ΠΡ ΡΠΆΠ΅ Π·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°ΡΡ window_display, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Precursor. ΠΡΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ display ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΊΠ»Π°ΡΡΠ°Ρ , ΡΠΎ ΠΆΠ΅Π»Π°Π΅ΠΌΡΠΉ ΠΊΠ»Π°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π² ΡΠΈΠ³ΡΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ : Precursor {WINDOW}. Π’ΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡΠΈΡΡ, ΠΏΡΠΈΠ±Π΅Π³Π½ΡΠ² ΠΊ Π΄ΡΠ±Π»ΠΈΡΡΠ΅ΠΌΠΎΠΌΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, Π·Π°ΡΡΠ°Π²ΠΈΠ² ΠΊΠ»Π°ΡΡ Button Π±ΡΡΡ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠΌ Π΄Π²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² Window:
indexing
WARNING: "ΠΡΠΎ ΠΏΠ΅ΡΠ²Π°Ρ ΠΏΠΎΠΏΡΡΠΊΠ° - Π΄Π°Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½Π°!"
class BUTTON inherit
WINDOW
redefine display end
WINDOW
rename display as window_display end
feature
...
end
ΠΠ΄Π½Π° ΠΈΠ· Π²Π΅ΡΠ²Π΅ΠΉ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅Π½ΡΠ΅Ρ ΠΈΠΌΡ display, Π° ΠΏΠΎΡΠΎΠΌΡ, ΠΏΠΎ ΠΏΡΠ°Π²ΠΈΠ»Ρ Π΄ΡΠ±Π»ΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ BUTTON, Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. ΠΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠ΅ΠΆΠ½Π΅Π΅ ΠΈΠΌΡ; Π²ΡΠΎΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π½Π΅ Π±ΡΠ», Π½ΠΎ ΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠ΅ΠΏΠ΅ΡΡ window_display.
ΠΡΠΎΡ Π²Π°ΡΠΈΠ°Π½Ρ ΠΊΠΎΠ΄Π° ΠΏΠΎΡΡΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ΅Π½, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² Π½Π΅ΠΌ Π½Π΅ Ρ Π²Π°ΡΠ°Π΅Ρ ΠΏΠΎΠ΄Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ select. ΠΡΠ»ΠΈ, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ Π±ΡΠ²Π°Π΅Ρ, ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π²ΡΠ±ΡΠ°ΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ, ΡΠΎ Π·Π°ΠΏΠΈΡΠ΅ΠΌ:
indexing
note: "ΠΡΠΎ (ΠΊΠΎΡΡΠ΅ΠΊΡΠ½Π°Ρ!)ΡΡ Π΅ΠΌΠ° Π΄ΡΠ±Π»ΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ,%
% ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ°Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°"
class BUTTON inherit
WINDOW
redefine
display
select
display
end
WINDOW
rename
display as window_display
export
{NONE} window_display
end
feature
...
end
ΠΡΠ»ΠΈ ΡΠ°ΠΊΠ°Ρ ΡΡ Π΅ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ ΡΠ΅Π»ΠΎΠΌΡ ΡΡΠ΄Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΡ Π²ΠΌΠ΅ΡΡΠ΅. ΠΡΠΈ ΡΡΠΎΠΌ Π½Π΅ΡΠ΅Π΄ΠΊΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ Π²ΡΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² ΠΏΠΎΠ»ΡΠ·Ρ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ select all.
ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ export (ΡΠΌ. Π»Π΅ΠΊΡΠΈΡ 16) ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΠ°ΡΡΡ ΡΠΊΡΠΏΠΎΡΡΠ° Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΠΌΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ°. Π’Π°ΠΊ, WINDOW ΠΌΠΎΠΆΠ΅Ρ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ display, Π° BUTTON ΡΠ΄Π΅Π»Π°ΡΡ window_display ΡΠΊΡΡΡΡΠΌ (ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡ Π² Π½Π΅ΠΌ Π½Π΅ Π½ΡΠΆΠ΄Π°ΡΡΡΡ). ΠΠΊΡΠΏΠΎΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠ»Π°ΡΡ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌ, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π½ΠΎΠ²ΠΎΠΌΡ ΠΈΠ½Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΊΠ»Π°ΡΡΠ°.ΠΠ»Ρ ΡΠΊΡΡΡΠΈΡ Π²ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ "Π² Π½Π°ΡΠ»Π΅Π΄ΡΡΠ²ΠΎ" ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π²Π΅ΡΠ²Π΅ΠΉ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ, ΡΠ»ΡΠΆΠΈΡ Π·Π°ΠΏΠΈΡΡ export {NONE} all.
Π’Π°ΠΊΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠΊΡΠΏΠΎΡΡΠ° ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΈ ΡΠΊΡΡΡΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΏΠΎΠ΄ Π½ΠΎΠ²ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Π²Π΅ΡΡΠΌΠ° ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½, Π½ΠΎ ΠΎΡΠ½ΡΠ΄Ρ Π½Π΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π΅Π½. ΠΠ΅ΡΠ΅Π΄ΠΊΠΎ ΠΊΠ»Π°ΡΡΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΡΡΠ²Π°ΡΡ ΠΈΠ»ΠΈ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° (Π΅ΡΠ»ΠΈ ΠΈΡΡ ΠΎΠ΄Π½Π°Ρ Π²Π΅ΡΡΠΈΡ Π½Π΅ Π½Π°ΡΡΡΠ°Π΅Ρ ΠΈΠ½Π²Π°ΡΠΈΠ°Π½Ρ ΠΊΠ»Π°ΡΡΠ°).
ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π° ΡΠ°ΠΊΠ°Ρ ΡΠ΅Ρ Π½ΠΈΠΊΠ° Π΄ΡΠ±Π»ΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ? ΠΠ±ΡΡΠ½ΠΎ Π² Π½Π΅ΠΉ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ Precursor. ΠΠΎΡΡΠΎΠΌΡ ΡΡΠΎΡ ΡΠΏΠΎΡΠΎΠ± ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ°ΡΠ°Ρ Π²Π΅ΡΡΠΈΡ Π½ΡΠΆΠ½Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ΅Π»ΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ, Π½ΠΎ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°.
ΠΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½Π½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ
ΠΠΎΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°Π·Π½ΡΡ Π°ΡΠΏΠ΅ΠΊΡΠΎΠ² Π΄ΡΠ±Π»ΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ°, Π±Π»ΠΈΠ·ΠΊΠ°Ρ ΠΏΠΎ Π΄ΡΡ Ρ Π½Π°ΡΠ΅ΠΌΡ ΠΏΡΠΈΠΌΠ΅ΡΡ, Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΈΠ· ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ ΠΏΠΎ C++ [Stroustrup 1991].
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ»Π°ΡΡ WINDOW Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΎΠΉ display ΠΈ Π΄Π²ΡΠΌΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°ΠΌΠΈ: WINDOW_WITH_BORDER ΠΈ WINDOW_WITH_MENU. ΠΡΠΈ ΠΊΠ»Π°ΡΡΡ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ ΠΎΠΊΠ½Π°, ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΈΠ· Π½ΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ°ΠΌΠΊΡ, Π° Π²ΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠ΅Π½Ρ. ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ display, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ»Π°ΡΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π½Π° ΡΠΊΡΠ°Π½ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, Π° Π·Π°ΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΊ Π½Π΅ΠΌΡ ΡΠ°ΠΌΠΊΡ (Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅) ΠΈ ΠΌΠ΅Π½Ρ (Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ).
ΠΠΏΠΈΡΠ΅ΠΌ ΠΎΠΊΠ½ΠΎ Ρ ΡΠ°ΠΌΠΊΠΎΠΉ ΠΈ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΠΌΠ΅Π½Ρ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΌΡ ΠΏΠΎΡΠΎΠ΄ΠΈΠΌ ΠΊΠ»Π°ΡΡ WINDOW_WITH_BORDER_AND_MENU.
Π ΠΈΡ. 15.24. ΠΠ°ΡΠΈΠ°Π½ΡΡ ΠΎΠΊΠ½Π°
ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ display Π² Π½ΠΎΠ²ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅; Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Π²Π½Π°ΡΠ°Π»Π΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ, Π·Π°ΡΠ΅ΠΌ ΡΡΡΠΎΠΈΡ ΡΠ°ΠΌΠΊΡ, Π° ΠΏΠΎΡΠΎΠΌ ΡΡΡΠΎΠΈΡ ΠΌΠ΅Π½Ρ. ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠ»Π°ΡΡ WINDOW ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄:
class WINDOW feature
display is
-- ΠΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΠΎΠΊΠ½ΠΎ (ΠΎΠ±ΡΠΈΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ)
do
...
end
... ΠΡΡΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ...
end
ΠΠ°ΡΠ»Π΅Π΄Π½ΠΈΠΊ WINDOW_WITH_BORDER ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ Π²ΡΠ·ΠΎΠ² ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ display ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΡΠ°ΠΌΠΊΡ. Π Π΄ΡΠ±Π»ΠΈΡΡΠ΅ΠΌΠΎΠΌ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠΌ Precursor:
class WINDOW_WITH_BORDER inherit
WINDOW
redefine display end
feature -- Output
display is
-- Π ΠΈΡΡΠ΅Ρ ΠΎΠΊΠ½ΠΎ ΠΈ Π΅Π³ΠΎ ΡΠ°ΠΌΠΊΡ.
do
Precursor
draw_border
end
feature {NONE} -- Implementation
draw_border is do ... end
...
end
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ draw_border, ΡΠΈΡΡΡΡΡΡ ΡΠ°ΠΌΠΊΡ ΠΎΠΊΠ½Π°. ΠΠ½Π° ΡΠΊΡΡΡΠ° ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ° WINDOW_WITH_BORDER (ΡΠΊΡΠΏΠΎΡΡ ΠΊΠ»Π°ΡΡΡ NONE), ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π»Ρ Π½ΠΈΡ Π²ΡΠ·ΠΎΠ² draw_border Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ»Π°. ΠΠ»Π°ΡΡ WINDOW_WITH_MENU Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½:
class WINDOW_WITH_MENU inherit