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

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

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

Массив, Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΉ representation, ΠΈΠΌΠ΅Π΅Ρ‚ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ 1 ΠΈ capacity: рСализация ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ цСлочислСнный Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ count, ΠΎΡ‚ΠΌΠ΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ стСка. Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ для сСбя наслСдованиС, появится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ классы с ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΠΎΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ нСсколько Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ, Π° Π½Π΅ ΠΎΠ΄Π½Ρƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ. Π”Π°ΠΆΠ΅ для класса c фиксированной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ здСсь Π½Π° Π±Π°Π·Π΅ массива, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса Array. Π’ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ наслСдования ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚.

Π’ΠΎΡ‚ ΠΎΠ½ класс. ΠžΡΡ‚Π°Π΅Ρ‚ΡΡ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ для массива a опСрация, ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‰Π°Ρ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ x Π΅Π³ΠΎ i-ΠΌΡƒ элСмСнту, записываСтся Ρ‚Π°ΠΊ: a.put(x,i). ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ i-ΠΉ элСмСнт ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ: a.item(i) ΠΈΠ»ΠΈ a @ i. Если, ΠΊΠ°ΠΊ здСсь, Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π·Π°Π΄Π°Π½Ρ‹, Ρ‚ΠΎ i Π²ΠΎ всСх случаях Π»Π΅ΠΆΠΈΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ этими Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ: 1<= i <= capacity.


indexing

description: "Π‘Ρ‚Π΅ΠΊΠΈ: Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ с ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΎΠΉ доступа Last-In, First-Out %

% ПослСдний ΠΏΡ€ΠΈΡˆΠ΅Π» - ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΡˆΠ΅Π», ΠΈ с фиксированной Π΅ΠΌΠΊΠΎΡΡ‚ΡŒΡŽ"

class STACK2 [G] creation

make

feature - Initialization (Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ)

make (n: INTEGER) is

-- Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ стСк, содСрТащий максимум n элСмСнтов

require

positive_capacity: n >= 0

do

capacity := n

create representationlmake (1, capacity)

ensure

capacity_set: capacity = n

array_allocated: representation /= Void

stack_empty: empty

end

feature - Access (Доступ)

capacity: INTEGER

-- МаксимальноС число элСмСнтов стСка

count: INTEGER

-- Число элСмСнтов стСка

item: G is

-- Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Π½Π° Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ стСка

require

not_empty: not empty -- i.e. count > 0

do

Result := representation @ count

end

feature -- Status report (ΠžΡ‚Ρ‡Π΅Ρ‚ ΠΎ статусС)

empty: BOOLEAN is

-- ΠŸΡƒΡΡ‚ Π»ΠΈ стСк?

do

Result := (count = 0)

ensure

empty_definition: Result = (count = 0)

end

full: BOOLEAN is

-- Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ Π»ΠΈ стСк?

do

Result := (count = capacity)

ensure

full_definition: Result = (count = capacity)

end

feature -- Element change (ИзмСнСниС элСмСнтов)

put (x: G) is

-- Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ элСмСнт x Π½Π° Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ

require

not_full: not full -- Ρ‚.Π΅. count < capacity Π² этом прСдставлСнии

do

count := count + 1

representation.put (count, x)

ensure

not_empty: not empty

added_to_top: item = x

one_more_item: count = old count + 1

in_top_array_entry: representation @ count = x

end

remove is

-- ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ стСка

require

not_empty: not empty -- i.e. count > 0

do

count := count - 1

ensure

not_full: not full

one_fewer: count = old count - 1

end

feature {NONE} -- Implementation (РСализация)

representation: ARRAY [G]

-- Массив, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для хранСния элСмСнтов стСка

invariant

... Π‘ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ ...

end



ВСкст класса ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ простоту Ρ€Π°Π±ΠΎΡ‚Ρ‹ с утвСрТдСниями. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π½Ρ‹ΠΉ тСкст, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ invariant, Π·Π°Π΄Π°ΡŽΡ‰ΠΈΡ… ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ Π² этой Π»Π΅ΠΊΡ†ΠΈΠΈ. Π”Π°Π²Π°ΠΉΡ‚Π΅ исслСдуСм Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ свойства класса.

Π­Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π½Ρ‹ΠΉ класс этой Π»Π΅ΠΊΡ†ΠΈΠΈ, Π½Π΅ слишком Π΄Π°Π»Π΅ΠΊΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠΉΡΡ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ОО-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Одно Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΎ структурС класса. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ класс ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π΄Π²ΡƒΡ…-Ρ‚Ρ€Π΅Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΡΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ подходящим ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Нотация позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ мноТСства ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ feature. Π­Ρ‚ΠΎ свойство Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ, использовалось Ρ‚Π°ΠΌ, ΠΊΠ°ΠΊ способ задания Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ статуса экспорта ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². И здСсь Π² послСднСй части класса, ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½ΠΎΠΉ Implementation, это свойство ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для указания защищСнности ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° representation. Но прСимущСства группирования ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠΌ статусС экспорта. Π•Π³ΠΎ Ρ†Π΅Π»ΡŒ - ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ класс простым ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ ΠΈ Π»Π΅Π³Ρ‡Π΅ управляСмым, группируя ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠΎ катСгориям. ПослС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова feature появляСтся ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΊ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡŽ Feature (Feature Clause Comment). Он позволяСт Π΄Π°Ρ‚ΡŒ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ описаниС Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ - Ρ€ΠΎΠ»ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π² этот Ρ€Π°Π·Π΄Π΅Π». ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Ρ‚Π΅ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΈ описании класса STACK1 с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π° Initialization с ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ создания (конструктором).

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ feature ΠΈ связанныС с Π½ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊ прСдлоТСниям Feature ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ» ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ классов.

Π˜ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ² ΠΈ Π°ΠΏΠΏΠ»ΠΈΠΊΠ°Ρ‚ΠΈΠ² (ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎΡΡ‚ΡŒ)

УтвСрТдСния ΠΈΠ· STACK2 ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ - Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΈ Π°ΠΏΠΏΠ»ΠΈΠΊΠ°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ Π²ΠΈΠ΄Π΅Π½ΠΈΠ΅ΠΌ.

УтвСрТдСния empty ΠΈ full ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΡƒΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΠ΅. ΠŸΡ€ΠΈΠ²Π΅Π΄Ρƒ Π΅Ρ‰Π΅ Ρ€Π°Π· тСкст full:


full: BOOLEAN is

-- Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ Π»ΠΈ стСк?

do

Result := (count = capacity)

ensure

full_definition: Result = (count = capacity)

end



ΠŸΠΎΡΡ‚ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Result ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ выраТСния (count = capacity). Но ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присваивания ΠΈΠΌΠ΅Π½Π½ΠΎ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ присваиваСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½ΠΎΠΉ Result. Π’ Ρ‡Π΅ΠΌ ΠΆΠ΅ смысл написания постусловия? НС являСтся Π»ΠΈ ΠΎΠ½ΠΎ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ?

ЀактичСски ΠΌΠ΅ΠΆΠ΄Ρƒ двумя конструкциями большая Ρ€Π°Π·Π½ΠΈΡ†Π°. ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ это ΠΊΠΎΠΌΠ°Π½Π΄Π°, отданная Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ состояния. Π£Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚, ΠΎΠ½ΠΎ спСцифицируСт свойство ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ состояния, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ, Π²Ρ‹Π·Π²Π°Π²ΡˆΠΈΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ прСдписываСт (prescriptive), ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ описываСт (descriptive). Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ описываСт "ΠΊΠ°ΠΊ", ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ описываСт "Ρ‡Ρ‚ΠΎ". Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ - элСмСнтом спСцификации.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Π°, ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ - Π°ΠΏΠΏΠ»ΠΈΠΊΠ°Ρ‚ΠΈΠ²Π½ΠΎ. Π­Ρ‚ΠΈ Π΄Π²Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° Π²Ρ‹Ρ€Π°ΠΆΠ°ΡŽΡ‚ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΎΠΉ.

[x]. ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ состояниС Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ Π² языках программирования ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ (ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ конструкции), Π·Π°ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΌΠ°ΡˆΠΈΠ½Ρƒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

[x]. ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ вычислСния Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚. Как ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΎΡΡŒ ΠΏΡ€ΠΈ рассмотрСнии АВД, взятиС ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ корня ΠΎΡ‚ числа 2 Π½Π΅ мСняСт это число. ВмСсто этого ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΠΊΠ°ΠΊ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ свойства ΠΎΠ΄Π½ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², вывСсти свойства Π΄Ρ€ΡƒΠ³ΠΈΡ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ v2, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ (applying - ΠΎΡ‚ΡΡŽΠ΄Π° ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ "Π°ΠΏΠΏΠ»ΠΈΠΊΠ°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ") матСматичСских трансформаций.

Π’ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π²Π΅ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Π°ΠΊ Π±Π»ΠΈΠ·ΠΊΠΈ, - присваиваниС ΠΈ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ - Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π·Π°Ρ‚Π΅ΠΌΠ½ΡΡ‚ΡŒ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅. Π£Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ описываСт ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, инструкция прСдписываСт способ Π΅Π³ΠΎ достиТСния. ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ модуля ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ΡΡ утвСрТдСниями, Π° Π½Π΅ рСализациями.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° близости Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ присваиваниС Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΠΉ ΠΏΡƒΡ‚ΡŒ достиТСния эквивалСнтности. Но ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ ΠΊ Π±ΠΎΠ»Π΅Π΅ слоТным ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ спСцификациСй ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Ρ‚ΡŒ. Π”Π°ΠΆΠ΅ Π² ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ случаС вычислСния ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ корня постусловиС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½ΠΎ Π² Ρ„ΠΎΡ€ΠΌΠ΅: abs(Result^2 -x) <= tolerance, Π³Π΄Π΅ abs - ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° tolerance - допустимоС ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΎΡ‚ Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ значСния. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ, Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΡ€Π΅Π½ΡŒ, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ, рСализуя ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ вычислСния ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ корня.

Π”Π°ΠΆΠ΅ для put Π² классС STACK2 ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ спСцификации ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


if count = capacity then Result := True else Result := False end



ΠΈΠ»ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ:


if count = capacity then Result := True end



Π’ Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ со свойством ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΉ, Π·Π°ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ дальнСйшСй ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠΈ: ΠΎΠ½ΠΎ Π²Π°ΠΆΠ½ΠΎ для Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² клиСнтских классов, Π½Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΡ…ΡΡ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, Π½ΠΎ Π½ΡƒΠΆΠ΄Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π² абстрактном описании Ρ€ΠΎΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Ρ‚Π° идСя ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ нас ΠΊ ΠΏΠΎΠ½ΡΡ‚ΠΈΡŽ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ (short form), обсуТдаСмой Π΄Π°Π»Π΅Π΅ Π² этой Π»Π΅ΠΊΡ†ΠΈΠΈ Π² качСствС основного ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° докумСнтирования класса.