The OpenNET Project / Index page

[ ������� /+++ | ����� | ���� | ]

������������� ������� ������������ Eiffel �� ���������� ������������ void safety (eiffel security)


<< ���������� ������ ��������� src / ������ ��������� >>
�������� �����: eiffel, security,  (����� ������� ���������)
�����: croster <> Newsgroups: email Date: Mon, 13 Feb 2012 17:02:14 +0000 (UTC) Subject: ������������� ������� ������������ Eiffel �� ���������� ������������ void safety ����� ������������ ������ �� ����������: http://doc.eiffel.com/isedoc/uuid/689f62b2-5675-5ab6-cd47-d891cf3d484d PDF-������ ��������: https://www.opennet.ru/soft/VoidSafety.pdf (���������� �� 25 ���� 2012 �.) ������� �������� ��������: attached - ������������� detachable - ������������ generic parameter - ������������� (�������� ������) void safety - ������������ void - �������������� CAP - ����������������� ������� ������������ (���) ���������. ��� �������������� �������� ������ � �� ����� ���������� ����� ���� � ��������������� �������� (null � ������������ C/C++, Void � ������������ Eiffel). ���������������� ��������� ��� ���� �������� ������������� ������� ���������, ��� �������� � ������� ������� ����������. � ������ ����������� ������� ������������ ��, � ����� ������� ���� �������� � ����� Eiffel �� ������ ������� ������������� � ������������ �����, � ����� ����������������� �������� ������������. ������������ ������� ���������� � ��� ������������ ����������� �����, �� ���������� ����������, � ����� ��������� ����������� � ���������� ���������� � ����������� ����� Eiffel. ������������ - �����������, �����������, ����������� ���������� 1. ����������� 1.1 ����������� ��������� 1.2 ��, �� ���������� ���������� 1.3 ���������� �� 2. �������� ��������� ������������ 2.1 ����������������� ������� ������������ (���) 2.2 ��������� ������������ (���� �������) 2.3 ������������� � ������������ ���� 2.3.1 ������������ � ��������������� 2.4 ������� ������������� 2.5 �������������������� �������� 2.6 ������� ��������������� 2.7 ���������� �������� 2.8 ������� ��� ���������� ������� 2.9 ������� ��� ���� ARRAY 1. ����������� � Eiffel �������� �������� ������� �������� ��. ���������� ������������, ��� � ����������� ���������, - ��� ��� ���� ����������� ��� ��������� �������� ��. ���������� �� �������� �� ������ ������� ���������� �� �������������� �������, � ������������� ����� �������, ��� ��, � ������� ����� ������ �����������. ����� �������� �������� �� ����������� ����������. ����������� ������������ ����� ��������������� ��� ���������� ������� ����� � ��� ��������� ��� ����������� ���������, ��� ��� �������� ��� ����������� ������������ ������������ � ������� �����. 1.1 ����������� ��������� ��������, ��� ����������� ��������� ��������� ����� ����� ������ ��. ��� ����������� ����� �������� �� ����� ���������� ������� ���� x.f(a) ����� ����� ���������� �������� ���������� �� ����� ����������, ���� ��� x �������� ��������� f, � ����� ���������, ������������ ����� a, ��������� �� ���������� � ����������� ����������� f, � ����� ���������� �� ����� � ����������� �����������. � ���������� �������������� ������, ����� ��� Eiffel, ���������� ����������� ������������� ������������� ��������, ��� ������� ��������� f �� �������� � �������, �������������� � x. ���� �� �����-���� ��������������� �� ����� Smalltalk, �� ������ ���� ������� � ������� ��������� ����, ������� ����������� ��� "��������� �� ����������". ��� ���������� ������, ��� Smalltalk �� �������� ���������� �������������� ������. 1.2 ��, �� ���������� ���������� ����������� ��������� ��������� ��������������, ��� � ������������� ������� ���������� ������������ ��������� f, ������� ����� ���� �������� �� ����� ���������� � x. �� ��� �� ��������� ���������, ��� � ����� ����� ���������� x.f(a) ����� ������������ ������, � �������� ����������� x. ��� �������� �� ��������� ��� Eiffel. ������ �����, ������� ������������ ��������� ������ �� �������, ����� ��������� ������������ ������ ������� ����������. ���� �� �������� � Java � .NET, �� ����� ��������� ���������� NullReferenceException. ������ ��� ������ �������� � ����� ������������ ���������: "������ �� ������ �� ����������� �� ��������� �������". � Eiffel �� ������� ��������� "����� ���������� ��� �������������� ����". ��� ������� ������ ������� ���������� ��, �� ����������� ����������. ����������: ���� ��� ����� ����� �������� ����� ���������� � ������������ ������, �������� ����� �� ����������� Eiffel, ������������ ������ ���������� Eiffel. �������, ��� �� �������� ��������� ��� ����������� ����������� (expanded) �����, ��� ��� ��� ���������� "���������������" ������ ������������ ��������. ������ ���������� ��������� ��� �� ������ �� ����������� �����. ������ �������� ������� � ����� ������ ������������������, � ����� ����� �������������. ��������, ���������� ����������, ������� ����� ��������� � �������������. ����� �� ���������� ����������, ��� ���������� ����� ���� ���������� ������������� ����������� �����, ��� ��� ������ ���������� ����� ���� ���������. � ������ ������� ��������� ����������� ����� ��������� ������ ������������� ����������� ������. ������� ������ ����������, �� �� ������ ��������� �������. 1.3 ���������� �� ���������� �� - ��� ����� ��, � ������� ����������, ��������� ����������� ������ ����, ����� ���� �������� ����, ��� �� ����� ���������� ��� ���������� ���������� � ������, ��� ������ ����� ����� ������������� � ��� ������. ��� ��������, ��� ����� ���������� x.f(a) �������� ���������� ������ � ������, ���� �� �������������, ��� x ����� ����������� � �������, ����� ���������� ���������� ������. ����������. ��� ������� ���������� �������� ����, ��� �������� ������� �������� ������������. � ����������� ���������� ���������� � ������ �������. ���������� ����������� ���� ������ ������������ ����� ���������� � ��������� ISO/ECMA, ��������� ������. ���� �� ��������� ��� �������, �� ������ ����� ��������� ��� ���������� � �������������� ����� �������. 2. �������� ��������� ������������ ���������� ����������� ��� �������� ����������� ��. ������ �� ��� ����� �������� ������ �����. �������� ���� ��������� ������� ����������� ������ � ����� ������ �����������, �� �������� �� ������� �������� ����, ��� ��� �������� ����������. ��� ������ ���������� ��������� ������������ ��������. ����� ������������� ������� ������������ ������� ����, ���� ��������� ��������� �������������� ������. ������ ��� ��������� �� ��������. Void - ��� �������� ����������, �������� �� ������ ���������, ����� ��� void ������ � ����������. ������� �� ������ ��������� void, �� ������� ������������. ��� ���� ��������� ���� - ��������� ���������� ������� ��� ������ �� ���. � ���� ������ ����������� ����������� ����������� ������� ��������� ������� ��� ����, ����� ���������������� ��� ������������� ���� ���������� � ����������� ������� � ���������, ��� ������ ������������ ��������� ����� ���������� ��� ������ �� ������������� ������. �ӣ �������� � ����, ��� ���������� ����������� ������������ �������� ��� ������ �����������. �� ���� ������ ���� � ��������� ��������. 2.1 ����������������� ������� ������������ (���) ��������, ��� � ��������� ������������ �������� ���� ������ �� ����� ��������� �������� void. ��� ������� ��� ��������, �� �������� �� ��� - ����������������� ������� ������������ (Certified Attachment Patterns). ���������� ������� ������, ��������� �������� ������ ���� ������������� �� ����� Eiffel. if x /= Void then -- ... ����� ���������, �� ���������� ������������ ������ x x.f (a) end �������������� �������� �����������, ��� x �� ����� void. �� ��� ���, ���� ��� ������������ ������ x, ��������� f ����� ���� �������� � x � ��������� ����, ��� x �ӣ ����� �����������. �����, ��� ��� ����� ���������� �� ����� ����������. ����� ��������, ��� ���� ������ ���� �������� ��� ��� x. ������� ��������, ��� � ���� ������� (� ����� � ������� ���) x ����� ���� ������ ��������� ���������� ��� ���������� ����������. x �� ����� ���� ��������� ��� ���������� (�� ����������� ������ ������, �������������� �����). ���������������� ������ � ��������� ������ �� ����� ���� �������� ����� ��� ���������� ����, ��� �� ����� ���� ��������� void ����� ���������� ������������, ��������� �������������� ������������ ��� ���� ������ �������. � ������� 2.3 ����� ��������, ��� ��� �� �������� ������������, ��� ����� ���������� �������. ����������. �������������� ���������� � ��� ����� ����� � ������� "�������������� ���������� � ���". ������ "�� ���� ������� ���" �������� ���������� � ���, ��� ����� ���������� ��� � ����. 2.2 ��������� ������������ (���� �������) � ����� ������ ������������, ��������� ������������ ��������� ��� �������. �� ��������� ��������� � ���, ��� ������ �������� �������������, � ����� ������������ ���������� ������ � ��������, ������������� � ��������� ������. ����� �� ��������, ��� ��� if x /= Void then -- ... ����� ���������, �� ���������� ������������ ������ x x.f (a) end �������� ��� ��� ������ ���������� �� x ������ � ��� ������, ���� x �������� ��������� ���������� ��� ���������� ����������. ��������� ��������� ������������, �� ����� ��������� ���� ������� ��� ����������. ��������� ������������ - ��� ��������� ����������� ���� (BOOLEAN), � ������� �������� ����� �������� �� ������: "x ����������� � �������?" ���� ��� ���, �� �� �������� ����� ��������� ����������, ������������� � ���� �� ������ �������, ��� � x, � ���� ���������� ����� ��������� ������ �����������. if attached x as l_x then l_x.f (a) end � ���� ������� x ����������� �� ������������ � �������. ���� x �����������, �� ����� ��������� ���������� l_x ������������� � ���� �� �������, ��� � x. ������ ����� ���� ��������� �����������, ���� ���� x �������� ��������� ������. ��������� ������������ �������� ��� ����� ���, ��� ��� ������������� ����� �������� ����, ��� ���� ������ �� ����� ����� void. ����������. ��������� ������������ ����� ������ ����� � ����������. ��������� �� ���� ���������� �����. ������������ �������� ��������� ���������� ������� ���� �������� ���������� ������������� ��� ��� ���������� ������������ ������ ���, ����� ���������� ��������� ��������� � ������ �� ������. ������ ����� ������ �����������, ��� ��� �� ��������� � ������� ����������� ������������� ���� �� Eiffel. 2.3 ������������� � ������������ ���� ������ ����, ����� �������� ������ ����� ����������, Eiffel ��������� �������� ����� ���������� �������������� ����. ��� ������ ���������� ������� ����� Eiffel. �� �������� ������������ ������������, � Eiffel ����� ��������� ���������� ����� �������� �������� Void. ����� �������, ��� ���������� ��������������� ��� ������������. ������� ������� Eiffel ������������ ������� ������������� � ������������ �����. ����� ��������� ���������� �������������� ����, ��� � ��������� �������, �� ���������� ������������� ������������ �� �������� Void, ��� ���� ������, ��� ����� ��������� �������� Void. my_attached_string: attached STRING ����� ������, ��� ��� ������ ��������� ������������� �����, ��� ����� �������������, ��� ����� � �������������� ���� �� ����� ���������� �� ����� ����� �����. ���� �� ������ ���������� ���� �������������� �������������, �� ��� ���, ��� ����������� �� ��� ���������� ������� ����. ������ ����� ������� ����������������, ��� ��� ������ ���������� ��������� ������������� ������, ������� �������� Void. ����� ���������� ��������� Void � �������� ��������, ���������� ����� ������������ ������� ������������� ����, ��� � ��������� �������. my_detachable_string: detachable STRING ��� �� ��������, ��� ������ ���������� ������ ��������� �������� �������������� ��� ������������� ����. ��������� ����������, �� ���������� ��������. ������� �� ����� ���������� ������������� ��� ������������� ��� ������������, ������� �� �������� ��������� ������� "�������� �� ���� �������������� �� ���������?" (Are types attached by default?). ��� ��������� ����� ���� ���������� ��-������� � ������ ������ �������, ��� ������� ��� ����������� ������������� �� ��� ���������� ��������� � ������� �������� ������������. ����� �������, � Eiffel ��� ���������� ����� ����� ��� ������������� ��� ������������ ����. ��� ���������, ������������ ��� � ��������� ������������ ���������� ������ � ������������� ������. ������� �������, ��� ������ ������ � ��������� ������ ������������� ���� ������� �� �������� ����������. ��� �������������� ����������� �� � Eiffel ����������� � ������ ������ ����� ����� ���������� �������� ��������� "�������� �� ���� �������������� �� ���������?" � "������" (True). ��� ��������, ��� ���� ���������� ���� �� �������� �� attached (�������������), �� detachable (������������), �� �������������� attached (�������������). 2.3.1 ������������ � ��������������� �������� ����� �������������� � ������������� ������ ���������� � ���������, �� ������ ���������� � �������� ���������������. ��������� ���������� ������������� ����� ������� �� ����� ��������� �������� void, ������ ��������� ������������ ������������� ��������� � ������������� ����. ������������ �������������� ��������� � ������������ ���� ���������. ��������� ��� ���������� ��� ������ � �������������, ��� ���� �� ��������� �������� ��������������. my_attached_string: STRING my_detachable_string: detachable STRING ... my_attached_string := my_detachable_string -- ����������� my_detachable_string := my_attached_string -- ��������� 2.4 ������� ������������� ���� � ��� ���� ������������� ����, �� �� ����� ��������, ��� ���������� ���� �����, ������ �������� ��������������, ������ ����� ��������������. ������ ��� ��� ������������� � ������ ���? ��� �������� ������� ����� ������� �������������. ������� ������� � ���, ��� � ������ �����, ��� �������� ����������, ��� ������ ���� ��������� ����������. ������������ ����������� ���������� ����� ������, ������ �� ������� ����������� � ��������� Eiffel. �������� ������ ������ ������������� ���������� ������������� �����:
  • ��� ������������� ��������� ������ ����� ��������� �������, ����������� ������� ��������������� ���������� ����������� ������, �������������� � ���, ��� ��� ������ ���� � ������� �� ���������� ��������� ��������. ���� ������� ������ - �������������� ����, �� ������ ��������� �������� �������� �� ��, ����� ������� ��� ���������� � ������� ��� �� ����������.
  • ��������� ���������� ��������������� ��� ��������� ������������, ���� ��� ���������������� � ��������� �����, �������������� �� ������������� ��� ������� ���� ����������, � ������� ��� ������������. ��������������� ����� ���������� ��������� create ��������� ���������� ��������� ��������� ������������. ������ ���� create ����������� � ����� then ��������� ��������� if, �� ��������� ���������� �� ����� ��������� ������������ � else ����� ����� �� ��������� if. my_routine -- ������ ��������� ������������ ��������� ���������� local l_my_string: STRING do if my_condition then create l_my_string.make_empty -- ... l_my_string �������� ����� ��������� ������������ else -- ... l_my_string �� �������� ����� ��������� ������������ end end
  • ���������� ��������������� ��� ��������� ������������, ���� ��� �������� ��������������������. �� ���� ���� ���� � ��������� �������. 2.5 �������������������� �������� �������������������� ������� �������������� ����� �������� ��� ��������� � ���� �� ����� ����������. ��� ���������� �������������������� ��������� ���������� ������� ��������� ����� attribute. ���, ��������� �� �������� ������ attribute, ����������� ��� ������������� �������� � ������, ���� � �������� ���������� ������, ��� �� ��� ��������������� �����-���� ������ ��������. ����� �������, �������������������� �������� - ��� ������� ��������, ������� ������������ ����������� �������������� � ���������� ���� (�� �������� ����������� ��� ����������� ����������� �����). �������������������� �������� ����� ������������������, � ��� �������, ���������������� ������������� ���������. �������� ������� � ���, ��� ��� ����� ��������� ����� attribute �����������, ��� �������������������� ������� �� ������ �������� void, ���� ���� � ���� ����� ��������� �� ������������� ����� �� ������������ ��������. value: STRING attribute create Result.make_empty end � ������������� ������� ������� value ����� ���������� � ������� ���� STRING (������ ������), ���� ����� ������ �������������� �� �� ����� ��������������� ���-�� �ݣ. 2.6 ������� ��������������� ��� ��������, ��� ������� ����� Eiffel �������, ��� �������� ������������ x := y �������� ���������� ������ �����, ����� ��� y ��������� � ����� x. ������������� �������� ���� ���������������� ���� ���������������. ��� ����, ��� ��� ���� �������� ���� �������������� ���� �������������, ��������� ��� ���� ����� � ������� ���������������.
  • ���� x ����������� �������������� ����, �� y ����� ������ ���� �������������� ����. ��� ������� ������������ ��������� ������� ��������������� �� ����� ����������. ���� x ����������� ������������� ����, �� y ����� ���� ������������� ��� �������������� ����. �� �� ����� ��������� � � ������ �����������. ����� � ������ z.r (y) ���������� �������� ����������� �������������� ����, ����� � ����������� �������� y ������ ���� �������������� ����. 2.7 ���������� �������� ���������� �������� �������� �������������, ��� ��� ���������� ��������� ������������ ����� ����� ������ ��� ������������ ���������. ���������� ������������� �������� ���������� ��������, ��� ��� ��������� ��������� � ������� � ������������ ���������, �� ����������� ������ ������������, ������� �������� ������� � ������������� ���������. ������� �������, ���������� �������� �� ������� ���� �������������� (��� ���������� �������������) � �������� �������� �������. ������ ��� � �������� ������������� �����, ���������� �������� ������� �� ����� ���� ����� ������������, � ������� ���������� �������� Void ��� ������������ ���. my_test: detachable TEST note option: stable attribute end ��� ��������, ��� ���������� �������� �� ������� ���� ���������������� ������� ��������� ������������� �����, �� ��� ������ ��� �����������, ��� �� ����� ��������� �������� Void �����. ���������� �������� ��������� ��� ���, ��� ��� �������� ������������ ����������� �� ������� ������� "����������������� ������� ������������ (���)", � ������� ��������� � ���, ��� ������ ������ � ��������� �� ����� ���� ������� ���. ���������� ������� ����� ���� ������� ���. ��� ����������� ���, ��� ��� ������ ���������� ������� ���������� � �������, �� �� ����� ��������� �������� Void. �������������� ����� �� ������������ � ����������� ��������� ��������� �������� �� �������������� � ��������������� ���������� �������� ������ ����������� ��� �������. 2.8 ������� ��� ���������� ������� ������������� ������ ��������� ��� ���� ������. ������������� ����� class C [G] ... ��������� ��� ������� ���, ������ ����������� �������� ������ ��� ����������� ��������� G. ���������� ��� ���������� ����������: my_integer_derivation: C [INTEGER] � my_employee_derivation: C [EMPLOYEE] ����� ����� C �������� ���������� x: G ��� ����� ������� � ������������ �������� x? � ������ ���� INTEGER x �������� ����������, ��� ��� INTEGER - ����������� ���. ����, ����� ��� EMPLOYEE, ����� �������� ���������� � ����� ��������� �������� void �� ����� ����������. ��� �������, �������� C[G], G ��������������� ��� ������������ ���. � ����������, ���������� ������� ���������������, ����� ����� ����� ���� ����������� � �������� ������������ ��������� ������. ��� ��������, ��� ��� ��������� ���������� �������� �����������: my_detachable_string_derivation: C [detachable STRING] my_attached_string_derivation: C [attached STRING] ���� C �������� ���������� x: G, �� ���������� ����������� � x ������ �������� �������� ������������ (���, ��������� ������������ � �.�.). ������������ ��������������� ����� ���� ������������ ��� �������� ������������� �������, � ������� �������� ������ ������������ ������������� ���. ����� ����� C ��������� ��������� �������: class C [G -> attached ANY] ... ����� x � ������ G ������������ ����� ������������� ���. �������������, ����������� �������� ������ � ������ ������� ������ ������ ���� ����������, � ��� ������ ���������� �� x ���������. 2.9 ������� ��� ���� ARRAY ������� ��� ���������� ������� ����������� ��� ���� ������������� �����, �� ����������� ���� ARRAY. ��� ������� �������� ������� ����� ������� ����������� � ������������ ������. my_array: ARRAY [STRING] ... create my_array.make (1, 100) � �������� �������� ����� ��������� ������� ��� �������� ���������������� ���������� ���������. � ����������� �� ������������ ��������� ������ ��� �������� �������� ���� ��������� ��� ����������� ����� ���� �������� ��� ��������� �����. � ������ ������������ ��������� ������ �������������� ���������� ����, ��� �������� ������ ���� ����������� � ����������� ���� � �������� �������� �������. ��������� make �� ������������ �����. �������� �������, � ������� ����������� �������� ������ ����������, ������ ������������� � ������� ��������� make_filled. create my_array.make_filled ("", 1, 100) ������ �������� - ��� ������ � ����� ������������ ���������, � ������ ������ - ������ ������. ������ ������� � ����������� ������� ����� ��������������� ������� �� ���� ������. ����� ��������� ���������� � ���������� ������������� �������� � ������ ������������� ������� ����� �������� � ������� "������������� ������������� �������".

  • << ���������� ������ ��������� src / ������ ��������� >>

     ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ �����������
    ���:
    E-Mail:
    ���������:
    �����:




    ������:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    �������:

    �������� �� �����
    ���������� �� ���������
    Created 1996-2026 by Maxim Chirkov
    ��������, ����������, ����������