ΠΠ»Ρ ΠΏΡΠΎΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠΏΠΎΡΡΡΠΌΠ΅Π½ΠΎΠ² Π·Π°Π±ΡΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ ΡΡΠ΄ Π½ΠΎΠΌΠ΅ΡΠΎΠ²: ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΌΡΠΆΡΠΈΠ½, ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π΄Π΅Π²ΡΡΠ΅ΠΊ, ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π΄Π΅Π²ΡΡΠ΅ΠΊ-ΠΏΡΠΈΠ·Π΅ΡΠΎΠ². ΠΠ»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ²: ROOM, GIRL_ROOM ΠΈ RANKED_GIRL_ROOM.
ΠΠΎΡ Π½Π°Π±ΡΠΎΡΠΎΠΊ ΠΊΠ»Π°ΡΡΠ° SKIER:
class SKIER feature
roommate: SKIER
-- Π‘ΠΎΡΠ΅Π΄ ΠΏΠΎ Π½ΠΎΠΌΠ΅ΡΡ.
share (other: SKIER) is
-- ΠΡΠ±ΡΠ°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΎΡΠ΅Π΄Π° other.
require
other /= Void
do
roommate := other
end
... ΠΡΡΠ³ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΠΎΠΏΡΡΠ΅Π½Π½ΡΠ΅ Π² ΡΡΠΎΠΌ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΊΠ»Π°ΡΡΠ°Ρ ...
end
ΠΠ°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡ Π΄Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°: Π°ΡΡΠΈΠ±ΡΡ roommate ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° share, "ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡΠ°Ρ" Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π»ΡΠΆΠ½ΠΈΠΊΠ° Π² ΠΎΠ΄Π½ΠΎΠΌ Π½ΠΎΠΌΠ΅ΡΠ΅ Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ Π»ΡΠΆΠ½ΠΈΠΊΠΎΠΌ:
s1, s2: SKIER
...
s1.share (s2)
ΠΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΡΡΡΠ½ΠΎΡΡΠΈ other ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡ ΡΠΈΠΏΠ° SKIER Π² ΠΏΠΎΠ»ΡΠ·Ρ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° like roommate (ΠΈΠ»ΠΈ like Current Π΄Π»Ρ roommate ΠΈ other ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ). ΠΠΎ Π΄Π°Π²Π°ΠΉΡΠ΅ Π·Π°Π±ΡΠ΄Π΅ΠΌ Π½Π° Π²ΡΠ΅ΠΌΡ ΠΎ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΠΈ ΡΠΈΠΏΠΎΠ² (ΠΌΡ ΠΊ Π½ΠΈΠΌ Π΅ΡΠ΅ Π²Π΅ΡΠ½Π΅ΠΌΡΡ) ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΠΈ Π² Π΅Π΅ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅.
ΠΠ°ΠΊ Π²Π²Π΅ΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ²? ΠΡΠ°Π²ΠΈΠ»Π° ΡΡΠ΅Π±ΡΡΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠ½ΠΎΡΠ΅ΠΉ ΠΈ Π΄Π΅Π²ΡΡΠ΅ΠΊ, ΠΏΡΠΈΠ·Π΅ΡΠΎΠ² ΠΈ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ². ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΡΠΈΠΏ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° roommate, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅ (Π·Π΄Π΅ΡΡ ΠΈ Π΄Π°Π»Π΅Π΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠ½ΡΡΡ).
class GIRL inherit
SKIER
redefine roommate end
feature
roommate: GIRL
-- Π‘ΠΎΡΠ΅Π΄ ΠΏΠΎ Π½ΠΎΠΌΠ΅ΡΡ.
end
ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ share. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΊΠ»Π°ΡΡΠ° ΡΠ΅ΠΏΠ΅ΡΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
class GIRL inherit
SKIER
redefine roommate, share end
feature
roommate: GIRL
-- Π‘ΠΎΡΠ΅Π΄ ΠΏΠΎ Π½ΠΎΠΌΠ΅ΡΡ.
share (other: GIRL) is
-- ΠΡΠ±ΡΠ°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΎΡΠ΅Π΄Π° other.
require
other /= Void
do
roommate := other
end
end
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π²ΡΠ΅ ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½Π½ΡΠ΅ ΠΎΡ SKIER ΠΊΠ»Π°ΡΡΡ (Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² ΠΌΡ ΡΠ΅ΠΉΡΠ°Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ). Π ΠΈΡΠΎΠ³Π΅ ΠΈΠΌΠ΅Π΅ΠΌ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡ:
Π ΠΈΡ. 17.5. ΠΠ΅ΡΠ°ΡΡ ΠΈΡ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ² ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ
Π’Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ, ΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠΈΠΏΠΎΠ² ΡΡΠ΅Π±ΡΡΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ roommate, Π½ΠΎΠ²ΡΠΉ ΡΠΈΠΏ Π±ΡΠ» ΠΏΠΎΡΠΎΠΌΠΊΠΎΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ. Π’ΠΎ ΠΆΠ΅ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΠΏΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° other ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ share. ΠΡΠ° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ, ΠΊΠ°ΠΊ ΠΌΡ Π·Π½Π°Π΅ΠΌ, ΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡΡ, Π³Π΄Π΅ ΠΏΡΠΈΡΡΠ°Π²ΠΊΠ° "ΠΊΠΎ" ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°. ΠΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Π°Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡΡ.
ΠΡΠ΅ Π½Π°ΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠ±Π΅Π΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΠ΅Π»ΡΡΡΠ²ΡΡΡ ΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΠΈ.
[x]. ΠΠ»Π΅ΠΌΠ΅Π½Ρ ΠΎΠ΄Π½ΠΎΡΠ²ΡΠ·Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° LINKABLE Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ²ΡΠ·Π°Π½ Ρ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΡΠ΅Π±Π΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ, Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ BI_LINKABLE - Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΡΠ΅Π±Π΅. ΠΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π² put_right.
[x]. ΠΡΡΠΊΠ°Ρ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π² ΡΠΎΡΡΠ°Π²Π΅ LINKED_LIST Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΡΠΈΠΏΠ° LINKABLE ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π΅ ΠΊ TWO_WAY_LIST ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° BI_LINKABLE.
[x]. ΠΡΠΎΡΠ΅Π΄ΡΡΠ° set_alternate ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ DEVICE-Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π² ΠΊΠ»Π°ΡΡΠ΅ DEVICE ΠΈ PRINTER-Π°ΡΠ³ΡΠΌΠ΅Π½Ρ - Π² ΠΊΠ»Π°ΡΡΠ΅ PRINTER.
ΠΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎ ΠΎΡΠΎΠ±ΠΎΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΡΠΊΡΡΡΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π²Π΅Π΄Π΅Ρ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ Π²ΠΈΠ΄Π°
set_attrib (v: SOME_TYPE) is
-- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ attrib Π² v.
...
Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ attrib ΡΠΈΠΏΠ° SOME_TYPE. ΠΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π»ΡΠ±ΠΎΠΉ ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΈΠΏ Π°ΡΡΠΈΠ±ΡΡΠ°, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ set_attrib. Π₯ΠΎΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ Π² ΠΎΠ΄Π½Ρ ΡΡ Π΅ΠΌΡ, Π½ΠΎ ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π° Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΈΡΠ΅. ΠΠΎΠ΄ΡΠΌΠ°ΠΉΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ΅ΠΉ ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΡ ΠΎΠ΄Π½ΠΎΡΠ²ΡΠ·Π½ΡΡ ΡΠΏΠΈΡΠΊΠΎΠ² (LINKED_LIST). ΠΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊ Π΄Π²ΡΡΠ²ΡΠ·Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ (TWO_ WAY_LIST). Π£Π½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ infix "+" ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ NUMERIC-Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π² ΠΊΠ»Π°ΡΡΠ΅ NUMERIC, REAL - Π² ΠΊΠ»Π°ΡΡΠ΅ REAL ΠΈ INTEGER - Π² ΠΊΠ»Π°ΡΡΠ΅ INTEGER. Π ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΡ ΡΠ΅Π»Π΅ΡΠΎΠ½Π½ΠΎΠΉ ΡΠ»ΡΠΆΠ±Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ start Π² ΠΊΠ»Π°ΡΡΠ΅ PHONE_SERVICE ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ADDRESS, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ Π°Π΄ΡΠ΅Ρ Π°Π±ΠΎΠ½Π΅Π½ΡΠ°, (Π΄Π»Ρ Π²ΡΠΏΠΈΡΠΊΠΈ ΡΡΠ΅ΡΠ°), Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΡΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ Π² ΠΊΠ»Π°ΡΡΠ΅ CORPORATE_SERVICE ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠΈΠΏΠ° CORPORATE_ADDRESS.
Π ΠΈΡ. 17.6. Π‘Π»ΡΠΆΠ±Ρ ΡΠ²ΡΠ·ΠΈ
Π§ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΎ ΠΊΠΎΠ½ΡΡΠ°Π²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠΈ? Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ Π»ΡΠΆΠ½ΠΈΠΊΠ°ΠΌΠΈ ΠΎΠ½ΠΎ ΠΎΠ·Π½Π°ΡΠ°Π»ΠΎ Π±Ρ, ΡΡΠΎ Π΅ΡΠ»ΠΈ, ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Ρ ΠΊ ΠΊΠ»Π°ΡΡΡ RANKED_GIRL, ΡΠΈΠΏ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° roommate ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ RANKED_GIRL, ΡΠΎ Π² ΡΠΈΠ»Ρ ΠΊΠΎΠ½ΡΡΠ°Π²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΠΈ ΡΠΈΠΏ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° share ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½Π° ΡΠΈΠΏ GIRL ΠΈΠ»ΠΈ SKIER. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΈΠΏ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌ ΠΏΡΠΈ ΠΊΠΎΠ½ΡΡΠ°Π²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠΈ, - ΡΡΠΎ RANKED_GIRL! ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ Π²ΠΎΠ·Π±ΡΠ΄ΠΈΡΡ Π½Π°ΠΈΡ ΡΠ΄ΡΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π½ΠΈΡ Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ Π΄Π΅Π²ΡΡΠ΅ΠΊ.
ΠΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ
Π§ΡΠΎΠ±Ρ Π½Π΅ ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΊΠ°ΠΌΠ½Ρ Π½Π° ΠΊΠ°ΠΌΠ½Π΅, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° SKIER Ρ Π΄Π²ΡΠΌΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΌΠΈ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠΌΠΈ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π½Π°ΠΌ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ, ΡΠΆΠ΅ Π²ΡΡΡΠ΅ΡΠ°Π²ΡΡΡΡΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅: TWO_ WAY_LIST > LINKED_LIST ΠΈ BI_LINKABLE > LINKABLE; ΠΈΠ»ΠΈ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡ Ρ ΡΠ΅Π»Π΅ΡΠΎΠ½Π½ΠΎΠΉ ΡΠ»ΡΠΆΠ±ΠΎΠΉ PHONE_SERVICE.
ΠΡΡΡΡ Π΅ΡΡΡ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡ Ρ ΠΊΠ»Π°ΡΡΠΎΠΌ ROOM, ΠΏΠΎΡΠΎΠΌΠΊΠΎΠΌ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ GIRL_ROOM (ΠΊΠ»Π°ΡΡ BOY ΠΎΠΏΡΡΠ΅Π½):
Π ΠΈΡ. 17.7. ΠΡΠΆΠ½ΠΈΠΊΠΈ ΠΈ ΠΊΠΎΠΌΠ½Π°ΡΡ
ΠΠ°ΡΠΈ ΠΊΠ»Π°ΡΡΡ Π»ΡΠΆΠ½ΠΈΠΊΠΎΠ² Π² ΡΡΠΎΠΉ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ Π²ΠΌΠ΅ΡΡΠΎ roommate ΠΈ share Π±ΡΠ΄ΡΡ ΠΈΠΌΠ΅ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ accommodation (ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅) ΠΈ accommodate (ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ):
indexing
description: "ΠΠΎΠ²ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΌΠΈ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠΌΠΈ"
class SKIER1 feature
accommodation: ROOM
accommodate (r: ROOM) is ... require ... do
accommodation:= r
end
end
ΠΠ΄Π΅ΡΡ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ: Π² ΠΊΠ»Π°ΡΡΠ΅ GIRL1 ΠΊΠ°ΠΊ accommodation, ΡΠ°ΠΊ ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ accommodate Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ ΡΠΈΠΏΠΎΠΌ GIRL_ROOM, Π² ΠΊΠ»Π°ΡΡΠ΅ BOY1 - ΡΠΈΠΏΠΎΠΌ BOY_ROOM ΠΈ Ρ.Π΄. (ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅: ΠΌΡ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Π±Π΅Π· Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ².) ΠΠ°ΠΊ ΠΈ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΠΊΠΎΠ½ΡΡΠ°Π²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ Π·Π΄Π΅ΡΡ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½Π°.
Π‘Π²ΠΎΠ΅Π½ΡΠ°Π²ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌΠ°
ΠΠ΅ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π»ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡΠΈΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΠΎΡΡΡ ΠΊΠΎΠ²Π°ΡΠΈΠ°ΡΠΈΠΈ? ΠΠΎΡΠ΅ΠΌΡ ΠΆΠ΅ ΠΊΡΠΎ-ΡΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠ½ΡΡΠ°Π²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΡΡΠΏΠ°Π΅Ρ Π² ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΠ΅ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ (Π΅ΡΠ»ΠΈ Π½Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠ»ΠΎΠ΄ΡΡ Π»ΡΠ΄Π΅ΠΉ)? Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ ΡΡΠΎ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΠ΅ ΠΏΡΠΈ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌΠ° ΠΈ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΠΈ. ΠΡΠΈΠ΄ΡΠΌΠ°ΡΡ Π²ΡΠ΅Π΄ΠΈΡΠ΅Π»ΡΡΠΊΡΡ ΡΡ Π΅ΠΌΡ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΠΎ, ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ ΡΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π΅Π΅ ΡΠ°ΠΌΠΈ:
s: SKIER; b: BOY; g: GIRL
...
create b; create g;-- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² BOY ΠΈ GIRL.
s := b; -- ΠΠΎΠ»ΠΈΠΌΠΎΡΡΠ½ΠΎΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅.
s.share (g)
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ Π²ΡΠ·ΠΎΠ²Π°, Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΡΠ½ΡΠΉ Π΄Π»Ρ ΡΠ½ΠΎΡΠ΅ΠΉ, - ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΎ, ΡΡΠΎ ΠΌΡ ΠΏΡΡΠ°Π»ΠΈΡΡ Π½Π΅ Π΄ΠΎΠΏΡΡΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ². ΠΡΠ·ΠΎΠ² share Π²Π΅Π΄Π΅Ρ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ BOY, ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΠΊΠ°ΠΊ b ΠΈ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠΈΠΉ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ s ΡΠΈΠΏΠ° SKIER, ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠΎΡΠ΅Π΄ΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ° GIRL, ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ g. ΠΠ΄Π½Π°ΠΊΠΎ Π²ΡΠ·ΠΎΠ², Ρ ΠΎΡΡ ΠΈ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ ΠΎΠ±ΡΠ΅ΠΆΠΈΡΠΈΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΏΠΎΠ»Π½Π΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ ΡΠ΅ΠΊΡΡΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ share -ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π² ΡΠΎΡΡΠ°Π²Π΅ SKIER, Π° GIRL, ΡΠΈΠΏ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° g, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ ΡΠΎ SKIER, ΡΠΈΠΏΠΎΠΌ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° share.
Π‘Ρ Π΅ΠΌΠ° Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠ΅ΠΉ ΡΡΠΎΠ»Ρ ΠΆΠ΅ ΠΏΡΠΎΡΡΠ°: Π·Π°ΠΌΠ΅Π½ΠΈΠΌ SKIER Π½Π° SKIER1, Π²ΡΠ·ΠΎΠ² share - Π½Π° Π²ΡΠ·ΠΎΠ² s.accommodate (gr), Π³Π΄Π΅ gr - ΡΡΡΠ½ΠΎΡΡΡ ΡΠΈΠΏΠ° GIRL_ROOM. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ - ΡΠΎΡ ΠΆΠ΅.
ΠΡΠΈ ΠΊΠΎΠ½ΡΡΠ°Π²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΡΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΎ Π±Ρ: ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ΅Π»ΠΈ Π²ΡΠ·ΠΎΠ²Π° (Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ s) ΡΡΠ΅Π±ΠΎΠ²Π°Π»Π° Π±Ρ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. ΠΠΎΠ½ΡΡΠ°Π²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²Π΅Π΄Π΅Ρ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°: Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ - ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ - ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ. ΠΠ°Π½Π½ΡΠΉ ΡΠ°ΠΊΡ ΠΎΠΏΠΈΡΠ°Π½ Π² ΡΡΠ΄Π΅ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ°ΡΠ΅ΠΉ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡΠΈΡ ΡΡΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ. ΠΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠ±Π΅Π΄ΠΈΡΠ΅Π»ΡΠ½Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π°ΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ, ΠΊΠΎΠ½ΡΡΠ°Π²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.