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

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

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

Рассмотрим Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ стСка, Π·Π°Π΄Π°Π½Π½ΡƒΡŽ массивом. Π£ нас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ классы для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ стСков ΠΈ массивов Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (абстрактный STACK ΠΈ эффСктивный ARRAY, см. ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ Π»Π΅ΠΊΡ†ΠΈΠΈ). Π›ΡƒΡ‡ΡˆΠΈΠΉ способ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ класса ARRAYED_STACK (стСк, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ массивом) - ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ наслСдника классов STACK ΠΈ ARRAY. Π­Ρ‚ΠΎ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ Π²Π΅Ρ€Π½ΠΎ: стСк-массив ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ являСтся стСком (с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°) ΠΈ массивом (с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ поставщика). Π’ΠΎΡ‚ описаниС класса:


indexing

description: "Π‘Ρ‚Π΅ΠΊ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ массивом"

class ARRAYED_STACK [G] inherit

STACK [G]

ARRAY [G]

... Π—Π΄Π΅ΡΡŒ Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ прСдлоТСния пСрСимСнования ...

feature

...РСализация ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ класса STACK

Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ класса ARRAY (см. Π½ΠΈΠΆΠ΅)...

end



ARRAYED_STACK ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ‚Ρƒ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈ STACK, дСлая эффСктивными ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹: full, put, count ..., рСализуя ΠΈΡ… ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ массивом.

Π’ΠΎΡ‚ схСма Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²: full, count ΠΈ put. Π’Π°ΠΊ, условиС, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ стСк ΠΏΠΎΠ»ΠΎΠ½, ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄:


full: BOOLEAN is

-- ЯвляСтся Π»ΠΈ стСк (Π΅Π³ΠΎ прСдставлСниС) Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΌ?

do

Result := (count = capacity)

end



ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ capacity унаслСдован ΠΎΡ‚ класса ARRAY ΠΈ Π·Π°Π΄Π°Π΅Ρ‚ Π΅ΠΌΠΊΠΎΡΡ‚ΡŒ стСка, Ρ€Π°Π²Π½ΡƒΡŽ числу элСмСнтов массива. Для count потрСбуСтся ввСсти Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚:


count: INTEGER



Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ эффСктивной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΊΠ°ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°. НаконСц,


put (x: G) is

-- Π’Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒ x Π½Π° Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ.

require

not full

do

count := count + 1

array_put (x, count)

end



ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° array_put унаслСдована ΠΎΡ‚ класса ARRAY. Π•Π΅ Ρ†Π΅Π»ΡŒ - Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ элСмСнт массива.

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ capacity ΠΈ array_put ΠΈΠΌΠ΅Π»ΠΈ Π² классС ARRAY ΠΈΠΌΠ΅Π½Π° count ΠΈ put. Π‘ΠΌΠ΅Π½Ρƒ ΠΏΡ€Π΅ΠΆΠ½ΠΈΡ… ΠΈΠΌΠ΅Π½ ΠΌΡ‹ поясним ΠΏΠΎΠ·Π΄Π½Π΅Π΅.

Класс ARRAYED_STACK Ρ‚ΠΈΠΏΠΈΡ‡Π΅Π½ ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ наслСдования, ΠΎΠ±Ρ€Π°Π·Π½ΠΎ ΠΈΠΌΠ΅Π½ΡƒΠ΅ΠΌΡ‹ΠΉ "Π±Ρ€Π°ΠΊ ΠΏΠΎ расчСту". Оба класса, - абстрактный ΠΈ эффСктивный, - дополняя Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°, ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π΄ΠΎΡΡ‚ΠΎΠΉΠ½ΡƒΡŽ ΠΏΠ°Ρ€Ρƒ.

Помимо эффСктивной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… (deferred) Π² классС STACK, класс ARRAYED_STACK способСн ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ change_top, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π² STACK Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² remove ΠΈ put, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивно:


array_put (x, count)



Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° слСдуСт ввСсти Π² ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ наслСдования:


class ARRAYED_STACK [G] inherit

STACK [G]

redefine change_top end

... ΠžΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ ΠΏΡ€Π΅ΠΆΠ΄Π΅ ...



Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ этого класса ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΈΠ΄


invariant

non_negative_count: count >= 0

bounded: count <= capacity



ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ°Π΅Ρ‚ свойство АВД. ЀактичСски ΠΎΠ½ΠΎ присутствуСт Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ классС STACK ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ являСтся ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ. Π—Π΄Π΅ΡΡŒ ΠΎΠ½ΠΎ приводится Π² пСдагогичСских цСлях. Из ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ вСрсии класса Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΡŠΡΡ‚ΡŒ. Π’Ρ‚ΠΎΡ€ΠΎΠ΅ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π΅ΠΌΠΊΠΎΡΡ‚ΡŒ массива - capacity. Π­Ρ‚ΠΎ - ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π‘Ρ€Π°Π²Π½ΠΈΠ² ARRAYED_STACK с прСдставлСнным Ρ€Π°Π½Π΅Π΅ классом STACK2, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ сильно ΠΎΠ½ упростился благодаря наслСдованию. Π­Ρ‚ΠΎ сравнСниС ΠΌΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΠΏΡ€ΠΈ обсуТдСнии ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ наслСдования, Π² Ρ…ΠΎΠ΄Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠΌ Π½Π° ΠΊΡ€ΠΈΡ‚ΠΈΠΊΡƒ, Π·Π²ΡƒΡ‡Π°Ρ‰ΡƒΡŽ ΠΈΠ½ΠΎΠ³Π΄Π° Π² адрСс наслСдования "ΠΏΠΎ расчСту" ΠΈ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ наслСдования Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½ΠΎΠ΅ наслСдованиС

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ наслСдованиС просто Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ для класса ряд Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… свойств, ΠΏΠΎΠΌΠΈΠΌΠΎ свойств, Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… Π±Π°Π·ΠΎΠ²ΠΎΠΉ абстракциСй.

Рассмотрим ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с постоянной структурой (способных ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒΡΡ Π½Π° Π΄ΠΎΠ»Π³ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… носитСлях). ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ являСтся "сохраняСмым", Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ свойства, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Π΅Π³ΠΎ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись. Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Kernel Π·Π° эти свойства ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ класс STORABLE, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ любого класса. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‚Π°ΠΊΠΎΠΉ класс, ΠΏΠΎΠΌΠΈΠΌΠΎ STORABLE, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, схСма Π½Π΅ смоТСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π½Π΅ Π±ΡƒΠ΄ΡŒ мноТСствСнного наслСдования. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ ΠΈΠ·ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ Π²Ρ‹ΡˆΠ΅ наслСдованиС с родитСлями COMPARABLE ΠΈ NUMERIC. Π€ΠΎΡ€ΠΌΠ° наслСдования, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ Π·Π°Π΄Π°Π΅Ρ‚ ΠΎΠ±Ρ‰Π΅Π΅ структурноС свойство, ΠΈ, Ρ‡Π°Ρ‰Π΅ всСго, ΠΈΠΌΠ΅Π΅Ρ‚ имя, Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅Π΅ΡΡ Π½Π° - ABLE, называСтся схСмой наслСдования структурного Π²ΠΈΠ΄Π°.

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

НаслСдованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй

Π’ΠΎΡ‚ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° типичная ситуация. МногиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ инструмСнты Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ "ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ", Ρ‡Ρ‚ΠΎ позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ:

[x]. ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ список послСдних ΠΊΠΎΠΌΠ°Π½Π΄;

[x]. Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ послСднюю ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ;

[x]. Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π² для этого ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ;

[x]. Π°Π½Π½ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ дСйствиС послСднСй ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, которая Π½Π΅ сумСла Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Π’Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»Π΅Π½ для любой ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ срСды, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΅Π³ΠΎ созданиС Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… усилий. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ лишь Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΠ΅ инструмСнты (ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ряд "ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… ΠΎΠ±ΠΎΠ»ΠΎΡ‡Π΅ΠΊ" Unix ΠΈ Windows), Π΄Π° ΠΈ Ρ‚Π΅ Π½Π΅Ρ€Π΅Π΄ΠΊΠΎ частично. Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΆΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π΅ зависят ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ инструмСнта. Π˜Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² класс, Π° ΠΎΡ‚ Π½Π΅Π³ΠΎ - ΠΏΠΎΡ€ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ класс для управлСния Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ сСссиСй любого инструмСнта. (РСшСниС с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ классов-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² допустимо, Π½ΠΎ Π½Π΅ Ρ‚Π°ΠΊ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.) И снова Π±Π΅Π· мноТСствСнного наслСдования Π½Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ нСдостаточно ΠΈΠΌΠ΅Ρ‚ΡŒ родитСля, Π·Π½Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ.

Набор ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… возмоТностСй прСдоставляСт класс TEST, ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ряд ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² тСстирования класса: ΠΏΡ€ΠΈΠ΅ΠΌ ΠΈ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π²Ρ‹Π²ΠΎΠ΄ ΠΈ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, сравнСниС, рСгрСссноС тСстированиС ΠΈ Ρ‚.Π΄. Π₯отя Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ с использованиСм влоТСния ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ тСстировании класса X ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ класс X_TEST, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚ X ΠΈ TEST.

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ наслСдования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ΄ΠΈΠ½ класс F инкапсулируСт Π½Π°Π±ΠΎΡ€, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ констант ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² матСматичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ, объявляя сСбя ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠΌ F, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

Π›ΡƒΠ½ΠΊΠ° ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ°

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅, Π±Π΅Π· мноТСствСнного наслСдования Π½Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ. ИдСйно ΠΎΠ½ Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ с ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ самолСтом, ΡΠΏΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π²Π°Π³ΠΎΠ½ΠΎΠΌ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ объСдинСния абстракций. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с понятиями ΠΈΠ· ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ программирования.

Π‘Ρ€Π΅Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ISE, описанная Π² Π»Π΅ΠΊΡ†ΠΈΠΈ 19 курса "ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ проСктирования", ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ графичСским прилоТСниям, содСрТит "ΠΊΠ½ΠΎΠΏΠΊΠΈ" для выполнСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… дСйствий. Π’ срСду встроСн ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ "Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ" (pick and throw), Π°Π½Π°Π»ΠΎΠ³ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° буксировки drag-and-drop. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π° экранС; ΠΏΡ€ΠΈ этом курсор ΠΌΡ‹ΡˆΠΈ прСвращаСтся Π² "камСшСк", Ρ„ΠΎΡ€ΠΌΠ° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. КамСшСк ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ ΠΈ ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π² Π»ΡƒΠ½ΠΊΡƒ, Ρ„ΠΎΡ€ΠΌΠ° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ соотвСтствуСт ΠΊΠ°ΠΌΠ΅ΡˆΠΊΡƒ, инициируя Ρ‚Π΅ΠΌ самым ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ дСйствиС. НапримСр, инструмСнтарий Class Tool, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ свойства класса, ΠΈΠΌΠ΅Π΅Ρ‚ "ΠΊΠ»Π°ΡΡΠ½ΡƒΡŽ Π»ΡƒΠ½ΠΊΡƒ", опустив Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ камСшСк Π½ΠΎΠ²ΠΎΠ³ΠΎ класса, Π²Ρ‹ пСрСнастроитС инструмСнт Π½Π° ΠΏΠΎΠΊΠ°Π· Π΅Π³ΠΎ свойств.

Рис. 15.12.  Pick and throw (Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ)

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ниТнюю строку с ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ форматирования. НаТатиС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ классС ARRAY, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΡ€Π°Ρ‚ΠΊΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ класса. Как ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, работая Π² ΠΎΠΊΠ½Π΅ Feature Tool, Π²Ρ‹Π±Ρ€Π°Π» Ρ‰Π΅Π»Ρ‡ΠΊΠΎΠΌ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ класс INTEGER. Он ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠ³Π°Π΅Ρ‚ Π΅Π³ΠΎ Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ "Π»ΡƒΠ½ΠΊΠΈ" класса Π² ΠΎΠΊΠ½Π΅ Class Tool, настроСнного сСйчас Π½Π° ARRAY. ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Ρ‰Π΅Π»Ρ‡ΠΊΠΎΠΌ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π° "Π»ΡƒΠ½ΠΊΠ΅" класса, Ρ„ΠΎΡ€ΠΌΠ° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ соотвСтствуСт Ρ„ΠΎΡ€ΠΌΠ΅ камСшка. Π’Π΅ΠΌ самым Class Tool Π±ΡƒΠ΄Π΅Ρ‚ пСрСнастроСн Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΌ классом INTEGER.