Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 149

Автор Π‘Π΅Ρ€Ρ‚Ρ€Π°Π½ ΠœΠ΅ΠΉΠ΅Ρ€

По-настоящСму распространСнныС случаи мноТСствСнного наслСдования Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π’ ΠΈΡ… основС - Π½Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΠΎΠ΄Π½ΠΎΠΉ, Π° сочСтаниС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… абстракций. ИмСнно это Ρ‡Π°Ρ‰Π΅ всСго ΠΈ трСбуСтся ΠΏΡ€ΠΈ построСнии структур наслСдования, ΠΈΠΌΠ΅Π½Π½ΠΎ это ΠΈ слСдуСт ΠΎΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ знакомствС с ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠΌ. Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ - ΠΈΠ· этой сСрии.

ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ самолСт Π±Ρ‹Ρ‚ΡŒ имущСством?

Наш ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ подходящий ΠΏΡ€ΠΈΠΌΠ΅Ρ€ относится скорСС ΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ систСм, Ρ‡Π΅ΠΌ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ². Однако ΠΎΠ½ наглядно ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ мноТСствСнноС наслСдованиС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

ΠŸΡƒΡΡ‚ΡŒ класс AIRPLANE описываСт самолСт. Π‘Ρ€Π΅Π΄ΠΈ запросов ΠΊ Π½Π΅ΠΌΡƒ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ число пассаТиров (passenger_count), высота (altitude), ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (position), ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ (speed); срСди ΠΊΠΎΠΌΠ°Π½Π΄ - Π²Π·Π»Π΅Ρ‚Π΅Ρ‚ΡŒ (take_off), ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»ΠΈΡ‚ΡŒΡΡ (land), Π½Π°Π±Ρ€Π°Ρ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ (set_speed).

НСзависимо ΠΎΡ‚ Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒΡΡ класс ASSET, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ понятиС имущСства. К Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ отнСсти Ρ‚Π°ΠΊΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠ°ΠΊ Ρ†Π΅Π½Π° ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ (purchase_price), Ρ†Π΅Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ (resale_value), ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π² Ρ†Π΅Π½Π΅ (depreciate), ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΠ΄Π°Ρ‚ΡŒ (resell), внСсти ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Π΅ΠΆ (pay_installment).

НавСрноС, Π²Ρ‹ догадались, ΠΊ Ρ‡Π΅ΠΌΡƒ ΠΌΡ‹ ΠΊΠ»ΠΎΠ½ΠΈΠΌ: компания вСдь ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π»Π°Π΄Π΅Ρ‚ΡŒ самолСтом! И для ΠΏΠΈΠ»ΠΎΡ‚Π° самолСт ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ это просто машина, способная Π²Π·Π»Π΅Ρ‚Π°Ρ‚ΡŒ, ΡΠ°Π΄ΠΈΡ‚ΡŒΡΡ, Π½Π°Π±ΠΈΡ€Π°Ρ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ. Для финансиста это имущСство, ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π΅ (ΠΎΡ‡Π΅Π½ΡŒ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ) Ρ†Π΅Π½Ρƒ ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ, (слишком Π½ΠΈΠ·ΠΊΡƒΡŽ) Ρ†Π΅Π½Ρƒ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ, ΠΈ Π²Ρ‹Π½ΡƒΠΆΠ΄Π°ΡŽΡ‰Π΅Π΅ компанию СТСмСсячно ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎ ΠΊΡ€Π΅Π΄ΠΈΡ‚Ρƒ.

Для модСлирования понятия "самолСт ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ" ΠΏΡ€ΠΈΠ±Π΅Π³Π½Π΅ΠΌ ΠΊ мноТСствСнному наслСдованию:

Рис. 15.3.  Π‘Π°ΠΌΠΎΠ»Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ


class COMPANY_PLANE inherit

PLANE

ASSET

feature

... Π›ΡŽΠ±ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹ΠΉ для самолСтов ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ,

(ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠΉΡΡ ΠΎΡ‚ наслСдуСмых ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ) ...

end



Π ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ класса достаточно ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π² ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ inherit. (Как ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ ΠΈΡ… ΠΈΠΌΠ΅Π½Π° Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ с запятой, хотя это Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.) ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ пСрСчислСния классов Π½Π΅ ΠΈΠ³Ρ€Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Ρ€ΠΎΠ»ΠΈ.

Π’ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ систСм найдСтся Π΅Ρ‰Π΅ Π½Π΅ΠΌΠ°Π»ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… COMPANY_PLANE.

[x]. НаручныС часы-ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ мноТСствСнного наслСдования. Один Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ позволяСт ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ врСмя ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° Ρ‚Π°ΠΊΠΈΠ΅ запросы, ΠΊΠ°ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ врСмя ΠΈ тСкущая Π΄Π°Ρ‚Π°. Π”Ρ€ΡƒΠ³ΠΎΠΉ - элСктронный ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ - ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

[x]. НаслСдником классов судно ΠΈ Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊ являСтся амфибия (AMPHIBIOUS_VEHICLE). НаслСдник классов: судно, самолСт - гидросамолСт (HYDROPLANE). (Как ΠΈ с TEACHING_ASSISTANT, здСсь Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ наслСдованиС, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· классов-Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ являСтся ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠΌ срСдства пСрСдвиТСния VEHICLE.)

[x]. Π£ΠΆΠΈΠ½ Π² рСсторанС; ΠΏΠΎΠ΅Π·Π΄ΠΊΠ° Π² Π²Π°Π³ΠΎΠ½Π΅ ΠΏΠΎΠ΅Π·Π΄Π° - Π²Π°Π³ΠΎΠ½-рСсторан (EATING_CAR). Π’Π°Ρ€ΠΈΠ°Π½Ρ‚: ΡΠΏΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Π³ΠΎΠ½ (SLEEPING_CAR).

[x]. Π”ΠΈΠ²Π°Π½-ΠΊΡ€ΠΎΠ²Π°Ρ‚ΡŒ (SOFA_BED), Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Π½ΠΎ ΠΈ ΡΠΏΠ°Ρ‚ΡŒ.

[x]. "Π”ΠΎΠΌ Π½Π° колСсах" (MOBILE_HOME) - Π²ΠΈΠ΄ транспорта (VEHICLE) ΠΈ ΠΆΠΈΠ»ΠΈΡ‰Π΅ (HOUSE) ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ; ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния программиста эти ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ акадСмичСский интСрСс - Π½Π°ΠΌ платят Π·Π° построСниС систСм, Π° Π½Π΅ Π·Π° построСниС ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠΈΡ€Π°. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… практичСских прилоТСниях с Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌΠΈ комбинациями абстрактных понятий Π²Ρ‹ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΡ‚ΠΎΠ»ΠΊΠ½Π΅Ρ‚Π΅ΡΡŒ. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· графичСской срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ISE ΠΌΡ‹ ΠΈΠ·Π»ΠΎΠΆΠΈΠΌ Ρ‡ΡƒΡ‚ΡŒ Π½ΠΈΠΆΠ΅.

ЧисловыС ΠΈ сравнимыС значСния

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ относится ΠΊ повсСднСвной ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ОО-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Π½Π΅Ρ€Π°Π·Ρ€Ρ‹Π²Π½ΠΎ связан с построСниСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Kernel.

Ряд классов Kernel, ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… всСм прилоТСниям, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ‚Π°ΠΊΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠΈ, ΠΊΠ°ΠΊ infix "+", infix "-", infix "*", prefix "-", Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ zero (Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹ΠΉ элСмСнт Π³Ρ€ΡƒΠΏΠΏΡ‹ с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ "+") ΠΈ one (Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹ΠΉ элСмСнт Π³Ρ€ΡƒΠΏΠΏΡ‹ с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ "*"). Π­Ρ‚ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ классы Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Kernel: INTEGER, REAL ΠΈ DOUBLE. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ, Π·Π°Ρ€Π°Π½Π΅Π΅ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ классам, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, классу MATRIX, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ описываСт ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ абстракции умСстно ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π² ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ классС NUMERIC, ΡΠ²Π»ΡΡŽΡ‰Π΅ΠΌΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Kernel:


deferred class NUMERIC feature

... infix "+", infix "-", infix "*", prefix "-", zero, one...

end



NUMERIC ΠΈΠΌΠ΅Π΅Ρ‚ строгоС матСматичСскоС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅. Π•Π³ΠΎ экзСмпляры слуТат для прСдставлСния элСмСнтов ΠΊΠΎΠ»ΡŒΡ†Π° (мноТСства с двумя опСрациями, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ½Π΄ΡƒΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° Π½Π΅ΠΌ Π³Ρ€ΡƒΠΏΠΏΡƒ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΈΠ²Π½Π°, Π° вторая дистрибутивна ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ).

Многим классам Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ порядка с опСрациями сравнСния элСмСнтов. Вакая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Π° для классов Kernel, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ STRING, ΠΈ для ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… классов. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² состав Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ класс COMPARABLE:


deferred class COMPARABLE feature

... infix "<", infix "<=", infix ">", infix ">="...

end



ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈ Π΅Π³ΠΎ экзСмпляры - это ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ упорядочСнныС мноТСства с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ΠΌ порядком.

НС всС ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΈ COMPARABLE Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°ΠΌΠΈ NUMERIC. Π’ классС STRING Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠ° Π½Π΅ Π½ΡƒΠΆΠ½Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½ΡƒΠΆΠ΅Π½ порядок. ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎ, Π½Π΅ всС ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΈ NUMERIC Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°ΠΌΠΈ COMPARABLE. Π’Π°ΠΊ, Π½Π° мноТСствС ΠΌΠ°Ρ‚Ρ€ΠΈΡ† с Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ коэффициСнтами Π΅ΡΡ‚ΡŒ слоТСниС, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π΅Π΄ΠΈΠ½ΠΈΡ†Π°, Π½ΡƒΠ»ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ΄Π°Π΅Ρ‚ Π΅ΠΉ свойства ΠΊΠΎΠ»ΡŒΡ†Π°, Π½ΠΎ Π½Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ порядка. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ COMPARABLE ΠΈ NUMERIC Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ классами, ΠΈ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‡ΠΈΡΠ»ΠΎΠ²ΡƒΡŽ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ сравнСниС. (Π’Π°ΠΊΠΈΠ΅ классы ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΡŽΡ‚ Π²ΠΏΠΎΠ»Π½Π΅ упорядочСнныС ΠΊΠΎΠ»ΡŒΡ†Π°.) ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ‚Π°ΠΊΠΈΡ… классов - REAL ΠΈ INTEGER. Π¦Π΅Π»Ρ‹Π΅ ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚, ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ ΠΈ ΡƒΠΌΠ½ΠΎΠΆΠ°ΡŽΡ‚. Π˜Ρ… описаниС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π½Π° мноТСствСнном наслСдовании:


expanded class REAL inherit

NUMERIC

COMPARABLE

feature

...

end



Рис. 15.4.  Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° мноТСствСнного ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΎΠ³ΠΎ наслСдования

Окна - это Π΄Π΅Ρ€Π΅Π²ΡŒΡ ΠΈ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ

Рассмотрим ΠΎΠΊΠΎΠ½Π½ΡƒΡŽ систСму с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ Π³Π»ΡƒΠ±ΠΈΠ½ΠΎΠΉ влоТСния ΠΎΠΊΠΎΠ½:

Рис. 15.5.  ΠžΠΊΠ½Π° ΠΈ ΠΏΠΎΠ΄ΠΎΠΊΠ½Π°

Π’ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ классС WINDOW ΠΌΡ‹ Π½Π°ΠΉΠ΄Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π΄Π²ΡƒΡ… основных Π²ΠΈΠ΄ΠΎΠ²:

[x]. Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ ΠΎΠΊΠ½ΠΎ ΠΊΠ°ΠΊ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ структуру (список ΠΏΠΎΠ΄ΠΎΠΊΠΎΠ½, Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, число ΠΏΠΎΠ΄ΠΎΠΊΠΎΠ½, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠΊΠ½ΠΎ);

[x]. Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ ΠΎΠΊΠ½ΠΎ ΠΊΠ°ΠΊ графичСский ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (высота, ΡˆΠΈΡ€ΠΈΠ½Π°, ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ, ΡΠΏΡ€ΡΡ‚Π°Ρ‚ΡŒ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΎΠΊΠ½ΠΎ).

Π­Ρ‚ΠΎΡ‚ класс ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅, смСшав всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹. Однако Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ самым ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΌ. Класс WINDOW слСдуСт Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ сочСтаниС Π΄Π²ΡƒΡ… абстракций:

[x]. иСрархичСской структуры, прСдставлСнной классом TREE;

[x]. ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ экранного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, прСдставлСнного классом RECTANGLE.

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ класс Π±ΡƒΠ΄Π΅Ρ‚ описан Ρ‚Π°ΠΊ:


class WINDOW inherit

TREE [WINDOW]

RECTANGLE

feature

... Π₯Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΎΠΊΠ½Π° ...

end



ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, класс TREE являСтся Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹ΠΌ (generic) классом, Π° ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ указания фактичСского Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, здСсь - самого класса WINDOW. РСкурсивная ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π° опрСдСлСния ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ, ΠΏΡ€ΠΈΡΡƒΡ‰ΡƒΡŽ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ситуации, - ΠΎΠΊΠ½ΠΎ являСтся ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ ΠΎΠΊΠΎΠ½.

Π”Π°Π»Π΅Π΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΊΠ½Π° Π½Π΅ содСрТат Π½ΠΈΡ‡Π΅Π³ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ тСкста. Π­Ρ‚Ρƒ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΎΠΊΠΎΠ½ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, прСдставив класс TEXT_WINDOW ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° класса STRING, ввСдя Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚


text: STRING



ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅ΠΌ, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ тСкстовоС ΠΎΠΊΠ½ΠΎ являСтся ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ строкой. Π’ этом случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ мноТСствСнноС наслСдованиС с родитСлями WINDOW ΠΈ STRING. (Если ΠΆΠ΅ всС наши ΠΎΠΊΠ½Π° содСрТат лишь тСкст, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ прямыми ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°ΠΌΠΈ TREE, RECTANGLE ΠΈ STRING, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΈ здСсь Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ "Π² Π΄Π²Π° Ρ…ΠΎΠ΄Π°" Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.)