������������� ������� ������������ Eiffel �� ���������� �������������� �� ��������� (eiffel )
�������� �����: eiffel, (����� ������� ���������)
�����: croster <>
Newsgroups: email
Date: Mon, 4 Mar 2013 17:02:14 +0000 (UTC)
Subject: ������������� ������� ������������ Eiffel �� ���������� �������������� �� ���������
PDF-������ ��������: https://www.opennet.ru/soft/DesignByContract.pdf
������������� ������� ������������ Eiffel �� ���������� ��������������
�� ��������� (Design by Contract)
���������. � ���� ������� ������� ����� ���������� � ������������ ����������,
��� ������ �� ������ ��������� � ��� �������� ������. ���������� � ������������
������������ ����������� ��������� ���������� �� ��������� ����������, �������
������������� ������̣���� ������� �� �������������. ������������ ���� ������
������� � �������� ������ �������������� �� ��������� (Design by Contract),
����������� �� ���������� �����������, ���������� ������������ � ������ �����.
��� ����������� �����:
ޣ���� ������������� ��������������� ����� ������������;
���������� � ������������, � ��������� ��������� ��������������� ������� � ������������� ����������;
���������� � �������������� ���������;
����� � �������������� �����������������.
�������������� �� ��������� ���� � ������ ������ �������� � ���� Eiffel �� ������
������������ ����� ���������������� EiffelStudio, � ���������� �� ���� �����������
�����������, ������������ � ���� ������. ���� ����� ���������� � � ������ �����
����������������, � ��� ����� � ����� ��������������, � ������� ���������� ��� �������
���������. ��������������� ���������� �������������� �� ��������� ��������� ���������
���������� ����������� ������ � �� ��������� �������������, ��������� ����� ���������
������, �������� �������� ���� � ���������� ������������ �����������.
�������������� �� ���������, ����������� � ����������
Design by Contract (tm), Assertions and Exceptions
�������: ��������� ������
�������� ��������: ��������� ���������
����������
1. ������ �������������� �� ���������
2. ��������� �����������
2.1 �����������
2.2 �����������
2.3 ���������� ������
3. ������������� ���������� ��� ����������� ����������
4. ���������� ����������� �� ����� ����������
5. ����������� ����� ������
6. ��������� ����������
7. ���� ���������� �������������� �� ���������
� Eiffel ��������������� ����������� ���� �������������� �� ���������,
���������� ���������� �� � ��������������� ������� ������ ���
������������ ��, ���������������� � ������������, � ����� ��� ���������
���������� � ����������� ������������� ������������.
1. ������ �������������� �� ���������
������� (� ���������, ����������� �������, ������ ���� �����
�����) ������� �� ������������� ���������� ����������������� ���������.
�������������� �� ��������� ���������� ��� ����, ��� �� ��������������
������ ���� �������� �� ������ ������������� - ���������� -
����������� �������� � �������� ������ �������.
�������� � Eiffel ����� �� �������� � �������� ����� �����
����� ������ ��� ����������, ������� ������ �������� � ����� �������,
���������� �������� � ��������. ���������� ������ ����, ��� �����
������� � ����� ������ �������� ����� �������������� � ����������
���������.
|--------------------------------------------------------------------------------------------------
| �������������� | |
| ���������� ����� | ������������� | ������
|--------------------------------------------------------------------------------------------------
| ������ | (�������������� �����������): | (�� �����������):
| | ������ ����� | ��������� ���������� ����� �� ����������
---------------------------------------------------------------------------------------------------
| ��������� | (�������������� �����������): | (�� �����������):
| | �������������� ���������� �����| ��� ������������� � �������������� ����-����
| | | ��� �������� �����
---------------------------------------------------------------------------------------------------
�������� �������� �� ��, ��� ������������� ������ �������
������������ �� ������ ������. ��� ����� ����� ��������.
������������� �������, ������� �������� ����������, ����������
������������. ��� ���������� �� �������, ������� ������ �������������
������ ����� �������� ������������ ��������. ������ �������,
�����������, ��� ��������� ������ ��������� (��������������, ���
����������� �������������), ���������� ������������.
� ���������� � ������������ � ������������ ��������� ������
�������� ���������� ������, ���������� � ������ � �����. ����� �����
����� �������, ��� ���������� ���������� ������ ������ ���� ���������
������ ���������� �������� (��� ��� ������������� �� ���������, ����
��������� �������� �����������) � �������������� ������ ��������������
������������� ������.
2. ��������� �����������
��������� Eiffel ��������� �������� ����������� (require),
����������� (ensure), ���������� ������ (invariant), � ����� ������
�����������, ��������� ����� (��. ������ "���������"): �������� �
���������� �����, ��������� ��������.
���������� ����������� ����� ACCOUNT, ���������� ������ �����������
(�������������� ������ ����� ������ ��. ����� - ����. �����.).
note
description: "������� ���������� �����"
class
ACCOUNT
create
make
feature {NONE} -- �������������
make -- ����������������
do
create all_deposits
end
feature -- ������
balance: INTEGER
-- ������� ������
deposit_count: INTEGER
-- ���������� ��������� ������� � ������� ��������
do
Result := all_deposits.count
end
feature -- ��������� ��������
deposit (sum: INTEGER)
-- �������� `sum' �� ����.
require
non_negative: sum >= 0
do
all_deposits.extend (sum)
balance := balance + sum
ensure
one_more_deposit: deposit_count = old deposit_count + 1
updated: balance = old balance + sum
end
feature {NONE} -- ����������
all_deposits: DEPOSIT_LIST
-- ������ ������� � ������� �������� �����
invariant
consistent_balance: balance = all_deposits.total
zero_if_no_deposits: all_deposits.is_empty implies (balance = 0)
end -- ����� ACCOUNT
����� ����������� ������� �� ������ ��� ����� ������������, ������ ��
������� ������������ ����� ���������� ��������� (� ��������������
������������ old). ������ �� ���������� ������������, ��� � �����������
���������� deposit � ����������, ����� ��, ��� � �� ����������� �� �
������� and. ������� ��������� ����� �������������� �����, ����� ���
consistent_balance � ����������, � ���������; ����� ��������
�������������� � �� ������ �� ��������� �����������, �� �����������
��������� �� ������� (��� ��������� � ��������� �������), ������ ��
��������������� ������������� �������� ��������������� ������.
���������� ��������� a implies b ��������� �������� ������, ��
����������� ������, ����� a ����� �������� ������, � b - ����.
��� ��� ����������� ���������� ����������� ���������� ���������, ���
����� �������� ������ �������. ��� ������ ��������� ��������� �������
������� ���������������, ����� ��� "���� �� �������� ������", �������
�� ����� ���� ����� �������� ����� ������� ��������� ��� ����������
���������� ������� �������, �� ������� ������ ����������� ��� �������
Eiffel, ������������ ���������� ����������� ����.
2.1 �����������
����������� ������������ �������� �������, �������������
������������� �� ����� ��������. ����� deposit �������� ����������
����� � ������ �����, ����� �������� ��������� ��������������.
������������ �� ����������� ������ ��� ������, �� ����������������
�����������. ������ ����������� Eiffel �������� ��� ����, ��� ����
������������ ������� �� ������� ��������� �����������, ��� ��� ���
����������� �������� ������������ �������. ��������� (�.�. �� �����
�������� ������� � ����� ����� ����������) �������� �������������� ��
���������, ���������� � ������ ������ ������ ���������� � ���������
������, ����������� � ���, ��� �������� �������� ����� �������� �� �
������� ����������� ����� �������� � ������ ���������.
2.2 �����������
����������� ������������ �������� ��, ��� ������������
����������� ����� �������� ��� �������, ��������������� �����������.
������ old expression, ���������� ������ � ������������ (���������
ensure), ���������� ��������, ������� ����� ��������� expression ���
����� � ������������.
����������� � ����������� ������������� ������� ��������� �����
������������� � �� ��������� ���������� ����������� ������� ���������
����� ������.
|--------------------------------------------------------------------------------------------------
| deposit | ������������� | ������
|--------------------------------------------------------------------------------------------------
| ������ | (�������������� �����������): | (�� �����������):
| | ������������ ��������������� | ��������� ������������ ������
| | �������� | ������� � ������� �����
---------------------------------------------------------------------------------------------------
| ��������� | (�������������� �����������): | (�� �����������):
| | �������� ������ ������� � ������| ��� ������������� � ��������
| | | ������������� ����������
---------------------------------------------------------------------------------------------------
2.3 ���������� ������
��� ���� ��������, ��������� ������ �������� �� ����
�����������. �� ������ ����������� ��� ������ �� ��������� ��������, �
������ ����������� � ����������� � ����������� ������ ��������������
������������. � ���� ��������� ���� ��� �������, ��� � ������ �������
��� ��������� ������������: ������� ������� ����������� � ���, ���
������������� ������ ����� ���������� � ���������� ���������,
������������ � ������� ������������� �������� ����, ��� ���� ������
all_deposits ��������� � balance; ������ ������� ����������� � ���, ���
������ ������������ ���������, ����������� � ���������� �����������,
������ ������������ ������ ������������ � �������������� ���������� ���
������ �� ���.
���������� ����������� ���������� ����������� � ���, ��� ���
������ ���� ��������, �� ���� �������������� �������� ����������. ���
������������� ������� ���������������: ���� ������������ ��������������
������� (���� ��� ���������), ������ ���������, ����������� � ��
�����������, ����� ������ ���� �������� ����� �������. � ���������
������, ��������, ���� ����������� �������� ������� require n > 0, ���
n - �������� �������, �� ��������� ��� �� ������� ����� ����������,
������� ������� ������ �� ���� �� ���������.
����� ��������, ��� ���������� ����������� ��� ������� ��
�������� ��� ��������. �������, ��� n ��������������, ��������� �����
��������� ����������� � ��������� ������ else:
if x.n > 0 then
x.r
end
������ ���� � ��������� ������ � ���� ������� ���������������,
��� n �������� ������������� (��������, �������������� ����� ��������
n ����� ���������� ������), �� ��� ������������� � if ��� ��������
�����������.
����������. � ��� �������, ����� ������� �������� ��������
������������, ������������� ������������ �������� check (��. ������
"���������").
3. ������������� ���������� ��� ����������� ����������
��� ���� ����� ������������ ���������? ������ �������������
����� ����������������. �������� ��� ����� ����� ����� �������
��������� ���������� �������������, ������� �� ������������ ����������,
�� ������ ���������� ���������� ����������: �� ���������������
������������ � ����������� ������������� ��� ����������� ������������.
��� ������� ����������, ����������� �� ��� ���, ���� �� ��
�������������� � �������������� �� ��������� ��� ���������� ��������
�������, ���ޣ� ������� �� ��������� � �������� ���������������� �
��������, ��� � ��������� ����� ��������� ����������.
4. ���������� ����������� �� ����� ����������
��������� � Eiffel - ��� �� ������ �������� ��������. ��� �����
������������� �� ����� ���������� ��� ����������� ����� ����������.
�� ��������������� �������� ������ ���� ����, ��� ��������� �� ��������
���������� ������������ ����������� �������, �������� ���������� �����
������������. ��� ���� ����� �������� ������� ��������� ����������
(if deposit_sum > 0 then ...), ����������� � ���������� �������
���������� ��������� ����������. ����������� �������� ��������
������������, �������������� ����������� ����� ����� ������������
�������� (�� ����������� ������� � ��������� � �� ����������� ������� �
������� �����������). ���� �������� sum ����������� �� ����� �
������������ deposit, �� ������� � ���� ������ ����������� �������,
����� �������� ��� ������������ ���������� ��� ���������� �������
��������.
�������: ��������� �����������. ��������� ����������� �� �����
���������� �������� ����������� ����������� ������ (�����).
����� �����:
1. ��������� ����������� ������������� � ���� �� ������� �������,
������� �� ��������� ���� ����� ��������;
2. ��������� ����������� (��� ����������) ������������� � ���� ��
������� ���- ������� - ������������ �� ��������� ���� ������.
��� ���������, �������� ��������� �����, ���������, ������ ���������
��������� ��� ���������� ������������ ����������� ����� ���� �����
����� ����������: ��� ���������� ������� ��� ����� ����������� ������
����� �����������, ����� ���������� �� ������ ��������� � ���������
�������.
������ ��� ������������ ������� ��������� �������� ����������� ������
��� �������� ţ ������� �������� ������������ ����������� �� �����
���������� � ������������. �������� ������ ����� ����������, �������
EiffelStudio ��������� ���������� ���������� ��� ������� ������ ��
���������� �� ��������� ��� ���������� ������ � ������ ���������:
1. no - ����������� �� ������������� �� ����� ����������;
2. require - ������������ ������ ����������� �� ����� � ������������;
3. ensure - ������������ ����������� �� �����, ����������� �� ������;
4. invariant - �� ��, ��� � ensure, ���� ��������� ������ �� ����� �
������ ��� ����������������� �������;
5. all - �� ��, ��� � invariant, ���� ��������� check, �������� �
���������� ������.
��������� ����������� �� ����� ���������� ��� ����� �����
����������, �� ����������� ������, ������� ���������� (��. ������
"��������� ����������"). ���� �� �� �������� ����� ����
"�������������", ��� ��������� � ���������� ����������, ���������
�����ģ� � ����������� ���������� � ������� ���������� (��� �
EiffelStudio ������� � ��������� � ������� � ����� ����). ��� ������ �
����������� �������� ����� �������� ����� ����������� ������������,
���� ��� ������������.
��������� ����� ������������ ����������� �� ��������� ��������
require. ��� ������� ���, ��� Eiffel ���������� �� ���������
�������������: ��� ����� ���������, ��� EiffelBase, ����������
������������ ���������� �����������, ���������� ������� �������������.
������ � ���������� �� ����� �������� � ��������� ������ �� ����
�����������, �������� ����� ������������ ��������. ���������
�������������� ����� ����������� � ���, ��� ���� �����������
����������, ������� ��� �� ������� ������ ��������� ���� ����� (��
����������� ����������������, ������, ����������� ��� �������������),
������� ������ �� ������� ���������� � ���� ����� ����������.
�� ����� ���������� � ������������ ���������� �����������
������ ���� ��������� �� ����� ������� ������. ��������� �� �����������
���������� � ����������� ���������������� ���������� "Melting Ice"
(�������� "������ ���" - ����. �����.) ��� ��������� �������� ��������
����������, ���������� � ������� "�������� � ����������������", ���
������� ������ ������������ ��� ������ ����������. �����, ��� ��
����������� ���� ����� � �������� �������, �� ����� �����������, ���
����� ������ ������� ���� ��������; �� ��������� ����� ���������
���������� � ������������, ���������� �� ������ ������, �����
����������� ����ģ�, ��� ��� ������� �� ����� ����.
������������ ������ �������� ����, ��� �� ������ ���������, �
��������� � �������� ���������� ��� (��� �� ������ � ��������� ������),
�������������� �� ��������� ������ �������� �������� �������,
������������ � ���������� ���������.
� �������� ������� ��������� ������ ������� ������ ���������
���������� ��� ������� ��� ������� �� require. ������ ������� �������
�� �������������, ��� ���������� ����� ������������� �������������,
������������� ����� ������, � ����� ��������� ������������ � �������
�������� �������� �������� ��������. ��� ���������� �� �� ������ ������
�������� (����� �� �������� ������������), ��� � ����� ���������� �����
��������.
5. ����������� ����� ������
������ ���������� ����������� - ������������. ��� ������ ��
������ Contract Form (��������) � EiffelStudio ��������� �����
����������� �� ������ ������ ����������� ������, ������� ��������
������ ���������� ����������� ������� ��������. �������� �����������
����� ������ ACCOUNT, �������������� ����.
note
description: "������� ���������� �����"
class interface
ACCOUNT
feature -- ������
balance: INTEGER
-- ������� ������
deposit_count: INTEGER
-- ���������� ��������� ������� � ������� ��������
feature -- ��������� ��������
deposit (sum: INTEGER)
-- �������� `sum' �� ����.
require
non_negative: sum >= 0
ensure
one_more_deposit: deposit_count = old deposit_count + 1
updated: balance = old balance + sum
end -- ��������� ������ ACCOUNT
����� class interface ������������ ������ �������� class ��� ����,
����� �������� �������� � ������� ������� ��������� �� Eiffel, ��� ���
��� ������������, � �� ����������� ��. ���������� ��������
������������� ������������� ������� ����������� ����� � ����
����������� ������. �� ��������� � ������ �������, ����������� �����
������ (����� ���������� "������� ������"), ��������� ��� ��������
����������, ����������� ������� ��������:
1. ����� � ��������� (���������� �� ���������� � ���� ����������) ���
������- �������� �����������;
2. ������������ ����������� ���� �����������, ������� ��������
������������ ����������� �� �������������� (������, ��� �������� �
������� "Hello World", ������� �������� ����������� ���������
���� ������������ � ������������� �� ����������� ���������);
3. ����������� � ����������� ���� ����������� (��� �������
������������, ����- ������ ������ �������������� �������);
4. ��������� ������ (���������� �����������).
��������� �������� �� ������ � ����������� ����� ������: �����
���������� � ���������������� �����������; ���� ���� �����������
(�������� do ��� �������� external � once, ��������� � ��������
"������� ��" �
"����������� ������������ � ����������� �������");
������������ �����������, ���������� ����������������
�������; ��������� �������� �����, �� ������������ � ������������.
� ������������ � ��������� ���������������� ������� (��������� �
������� "�������, ����, �������� � ������") ����������� ����� ��
�������� �������� ����� ���������� � ��������� ��� ����������. �
����������� ������� balance ����� ���� ��� ���, ��� � ������, ��� ���
��� �������� ��� �������, �� �����������, ��������, ������������������.
����������� ����� �������� �������� ������������ ��� �������������
������� ���������� � ������ Eiffel. ��� ��������� ������� ��������
�������� ������������ ����������� �������� ��� ������������� ������ ��
�������� �����. ��� �������� ���������� � ���������������� ������������
�����������.
����������� ����� ������������� ���� �������� ����������� �������
����������� ������������.
1. ��� �������� ��-���������� �����������, ��������� �� �������
���������� ����, ��� ��� ��������� � ������������������ ��
����������������.
2. ������ ����, ����� ��������������� ���������� - ��������������
����������, ������� ������ �������� ������������� ������������� �
������������ �� ��������, ���� �� �������, ��� ������������ �����
���������� ���������� � �������� �������� �� - ������������
����������� ��������������� �� ��. ��� �� �������� ���������
���������, ��� ������ ��� ���� �� ������ ��������. ��� ����������
������� ������� ��������, ������� ����� � ������ ��������� ������
���������� Eiffel (��������� � ������� "����������� ������� � Eiffel").
����������� ����� - ��� ������ ���� �� �������� �������������.
EiffelStudio, ��������, ���������� ����������� ������������� ���������
�������� ��� ����, ����� �������� ������ � �� ����������� - ����
��������, ������������ - � ������������ � ������������ ������� BON (the
Business Object Notation - ������� ������ ��������). � ������������ �
���������� ����������� � �����������, EiffelStudio ���������
������������ �������� � �������, �� ���� ��������� �����������
�������������, ��� �������� ��� ����������� ��������������, ��������
����� �� ����, �� ������ ������� �� ������� ���� �� ���� �������.
�������������� ������� ��������� ���������� �� ������������ ��������,
���������� �� ��������� ������������: ���������������� �������� �������
� ������� ������������������ ���������� �������� CASE, ���������� ��
UML, ����� ���� � �������������� ��������� � ���� "������� � �������"
("bubble-and-arrow"), � ����� � ��������� ������ ����������������
������ ��� ����������. � Eiffel ����� ������������� ���������,
��������� ��������� � ������ �� ����� ����������.
����������� �����, ��� ������� ����������� �����, ������� ���������
������������ (��. ������ "������� � ������� ����������� �����"),
�������� ����������� ������ ������������ ���������, ������ �����������,
��������, � ����� "�������� ������������ ��"
(��. ������ ����������). ����������� ������ ������� ���� � ���� ������������,
������� ������� ���������. ��� ������������������ ������� ������
Ariane-5 � ���� 1996 ���� (��������� ������� 500 ���. ��������),
��������� � ������������ �������������� ������������ ������ �� ������
Ariane-4, ��������� ������������� ��� ����������� ������������ - ���
���� � ����������. ���������� ���������� ������������� � ���� ������
���� �� ����� ����������������.
6. ��������� ����������
��� ���� ���������� �������������� �� ��������� ��������
��������� �������������� ��������. ���������������� ����������� �� ���
���� ������� ��-�� ���������� ������� ����������� ������� "����������".
������������� �������������� �� ��������� ��������� ���� ����� ������.
1. ������ ������������ ����� ��������, ������� ���������� ���������.
2. ���� ������������ ���������� ������ ���������� ��������� -
�������������- ����� �������� ��� ������ �������� ����������,
���������� ��������. ��������� �� ���� �������� ��������
������������ �� ������ �����������, ������ ���� ���������
�������������� �������� ����� ������� ��������, ������������� �
���, ��� ��������� ����� ����� �����������.
3. ������ �� ���� �������� ����� ���� ����, �� ���� �� ��������� ����
��������, ��������, �������������� �������� ����� �������������
������������ (��� �������������� ���������).
4. ���� �������� �������� ����������� � ������������, ���������� ���
�����- ���.
5. ������������ ����� ����� ���� ����, ������� � ���������� �
���������� ������������.
����� �������� ������ ����������� ���� �������� �������: ���� �
����������. �������� �� ��, ��� ���� �������� ����� ������� ��������,
��� ��� �� ��������� ��� ��������� ��������, �� ����������
������������, ����������� �������� ������� ������������, ��� ���
���������� ����� �������� � ���� ������������-����������, � ����
������������ �������� � ���������� � ���������� ������������.
������ ���������� "�����" �������� � ����? �������, ������, ���
����� "������������" ������������ �� ���� � ������ ����������, �������
� ��� �������� � �������� ������ rescue, ��� � ��������� �������:
read_next_character (f: FILE)
-- ��������� ��������� ������ � ���������� last_character.
-- ��� ������������� ��������� ����� ���� failed �������� True.
require
readable: file.readable
local
impossible: BOOLEAN
do
if impossible then
failed := True
else
last_character := low_level_read_function (f)
end
rescue
impossible := True
retry
end
���� ������ �������� ��� �����������, ������� ���������� ���
��������� ����������: rescue � retry. ���������� retry ��������� ������
� ��������� rescue; �� ������ ����������� � ��������� �������
������������ ��� ��������� ������������� ��������� ��������� (�����,
��� impossible � �������, ������� ���� ���������������� ��������� False
��� ������ �����). ��������, ��� ���������� failed �
last_character �������� ���������� ����������� ������.
���� ������ �������� �������� �������������� ����������: � ��������
���������� �������� ��� ��������, ������� �� ������ �����������.
������������ ����� �����������, file.readable, ������� ���������
������������� ����� � ������� ������� ��� ������ ��������. �����
�������, ������� ������ ���������, ��� ��� � ������� ����� �������
������������. �������� �� ��, ��� ��� �������� ����� ������ �����������
�����, ������ ��������� ������������� ����� ��������� ��������
��������� ������� ����� (������ ��� ������������ ��� ������ �������
������������ ������) ����� ��������� readable � �������
low_level_read_function. �������, ��� ��������� ������� ���� ���� � ���
������, ���� ���� ��������, �� ������ ���������� ����������.
������� ��������� �������:
local
attempts: INTEGER
do
if attempts < Max_attempts then
last_character := low_level_read_function (f)
else
failed := True
end
rescue
attempts := attempts + 1
retry
end
� ���� �������� ����� ����������� Max_attempts ������� ����� �������.
������������� ������������ � ����� �������� ������� �� ���� ����: ���
������ ��������� ���� ��������, � ������� �������, ��� ��� ������
�������� ������ ��� ���������� ���� failed � ������ �������������
������� ���. ��� ��������� ���������� ����� �������:
local
attempts: INTEGER
do
last_character := low_level_read_function (f)
rescue
attempts := attempts + 1
if attempts < Max_attempts then
retry
end
end
���� ������� �� �������� ���� failed. � ���� ������ �����
Max_attempts ��������� ������� ������������ �������� ��������� rescue
��� retry (��� ��� if �� ����� ����� else). ��� ����������
���� ������������. ��� ���� ��������, ���������� � ������������ �����
�������� ���������� ������������.
�������� rescue ����� ����������� ������ ������������ ��������� ������,
����� ���������� ������������ �, ��������, retry �� ����� �������
������ ������� �������� ������� � ������������� ���������. ���
���������, ������� ��� �������������� ��������� rescue - ���� ������
��� ������������ ����������� ����������� � ����������� ������ -
������������ ����������:
rescue
default_rescue
��� ��������� default_rescue �������� �� ������ ANY, � ������� ���
������� ��� ������ �� �����������; �� � ��������, ��������������� ��
����������, ������, ������������ ������ ����������������� �����������,
������ �������������� default_rescue (��������, ��������� ���������
�������� � ���� �� ����������� ������������) ����� �������, �����
������ ��������������� ���������.
� ������ ����� ��������� ���������� � Eiffel ����� ��������� �������,
���������� �� ������ ������ ���������, �� ���������� �������
������������� �����������: ������������ ������ ������� ����������� ���
���� ����. ���, � ����, �������, �������� ����������� ���������
�������������� �� ���������: ���������� �������� ���������� ���������,
�������� ����� ������ ��� ���������� retry; ���� - ��� ������ ������,
��� ������� ������ ���� ������� ���������� � ���������� ������������. �
��������� ������ ������������ ����� �� ��������������� ���� �������� �
������� ���������� ������������ ��������� ���������� ���������. ���
��������� ������ ��������� ����������.
���������� ����� ���� ����������� ��������� �������.
1. ���� ������������ (��������� rescue ����������� �� ����� ���
retry), ��� ������ ��� ���� �����������.
2. ��������� �����������, ���� ������ ��������� ���������� �
���������� ��- ����������.
3. ���������� ������������, ��. �����.
4. ������ ��: �������������� ������������, ���������� ��������� ������
��� �������������� �������� ��� ������������, ���� ���� �������
������ ���������� ��� ��������� ��� ������ ���������� �����. � ����
����� �� ���������� ������ ���� "������������ ����� ���������" (���
� ������ C/C++), ��� ��� ��� ������ �� ����������� ����������
������� ����������� ��������� � Eiffel.
��� ��������� ���������� � ��������� rescue ������ ������
�������� �������� ������ ��� ����������, ������� ���������. ��� �����
���������� ����������� �� ������ EXCEPTIONS �� ���������� Kernel,
������� ������������� ����� �������, ��� exception, ������������ ���
���������� ����������, � ���������� ����� (��. ������ "����������� ��������")
��� ���� �����, ����� ��� No_more_memory. ����� �� ������
������������ ��������� ���������� ��-�������, �������� exception ��
������ �����������. ����� ������������ �����������, ����� ����
���������� ���������� ��������; ������� �������� � ���������
rescue �������� ��������� ������������� ������������� ���������
����������. ����� EXCEPTIONS ������������� ��������� �������� ���
������ ��������� ������������ ����������, ����� ��� ��������� raise,
������� ����� ������� �������� "���������� ������������" � �����,
������� ����� ���� ��������� � ���������. ��������� ����������
��������� ������������� �� �� Eiffel, ������� �� ������ ���������, �� �
�������, �������� ������, ������� �� ������ ��������� ��� ����������
��������, ������ ����� ��������� �� ������ ����� (������ ����������
���, ��-�������, ������ �������� - ����. �����.) � ��������� � ���, ���
��� �� ��������� ������� �� �������� � ������������ ��.
7. ���� ���������� �������������� �� ���������
���� �������������� �� ��������� �������� ����� ���� ����� Eiffel. �
���������� � ��� ���������� ����������� ��� ����� ��� ������ ���������:
1. ��� ���� ����������� ������������ Eiffel ��� ������� �
��������������. �� ������� ������ ���������� ����� ����������
��������. �� ����������� BON (Business Object Notation - ����.
�����.), ������ ��������-���������������� ������� � ��������������
����� ��������� � ������������� ���������� ��� ���������. � �������
����������� ����� ����� �������� �������� ������� ("� �����
��������� ������ ������ ������� ���������?") ��� ��������
�����-���� ������������ � ����������. � ���������� ����������
������� (��. ������. "���������� ���������� �������") ��������,
��� ������ ����� ������������, � �� �����������, ������, ���������
��������� ��� ������������ �������� ������� ������� ��� ������-����
������������� ��� ������������ �������.
2. ����������� ������ ����� ��� �������� ����������, ��������� �
�������������, - ��������� �����������, �������������, ������������
�����������, - � ������������ �� ���������� �������������, �������
��������������� ������������� �����������. ����� �������� ��������
������ "������������ � ���������".
| �������� ����������� |
������:
�������: