GrabDuck

Java. ������� ��� ���������� ������������ �������. ������� 3.

:

�������� ������� ��� (����������)

��������! �� ������ ����� �������� �� ��� ������ ������� �������� �� ���� ����. ���� �� ���, � ��������� ��� ���������� ��������� ��� ������������, �� � ��������� �� ����������! ���������� ������ ���������� � ���������� �� ������ ����.

���� ��������-��������������� �����������

�� ���� ���������������� ��������, ��� ��� ������� ����� ������ ���������� ����������� ������������������ ������������ ��������, ������ �� ������� ����� ������������� � �������� ���������� ���������� � �� ���� �������� ��� �� �������. ��� �������������� ������ �������� ������ ����� �������.

�� ��������� � ����� �������� �������������. ��� ��������� �� ���������� ��������� ������������� ��������� ������� ������ �� ���������. ��� � ������ ���������������� ��������� ������� ���������.* ��������� ���������� �������� ������������ � ������ (������� ����� ����� �������� ������������), ������� ����� ���� ������������ ��� ������ ��� ������ �����������. (��������, � ��������� ����� ����� ������� ����� ���� �������� �� ������ ������ � ������. �������� �� ��������� ���� ����������������� � ���� �������� � ���������� � ������. ���� ��� ���������� ��������� ��������� ����� ��������� ������������� � ���������, ����������� ������ ��������� ���� ������ � ����� ������������ ��� ����������� �����������.) ����� ������ ������� �������� ������������ ����������������.

� ���������� ������������ ����������� � ����������� ���������� �� �� ��� ����� ������������ ������������, ����� �������������� ������ ������� �� ������ ����. �� ������ ���� ����������� ������ ��������� � ��������������� �������, ������ ��� ������, ��� � ���� ������ ����� ������ ����������� � ��������� ���������� ������� ��������� ����. ������������ �������� �����, ������������� ���������������� �� ������� �����������, ���������� ������� �������� ������ � ��� ������� ����� �����, � �������� ������������ ������ � ���������������� ����������� �� ����������.

���� � ���, ��� ������� ������� ������������ ���������������� � ���������� � ������� � ����������� ������������ ����������� ��� ��������� ���������, ������� ������ ������������ ������ �� �������� � ��������� ��������� ����. ����� ��������� ����� ���� ��������, �� ��������� �� ���������� �������� ��� �������� �����. ��� ����� ���������� ��� ���� �������������� ���������� ��������� �������� ����������� ������� ���������� ����������. ��� ���� ����� ����� ������, ����� ���������� �� ��� ��������. ����� ����, ��� ���������� ������ ��������� ���������� ��� ������������ ��������� �������, �� ��� ���� ����� �������� �������� ��� ���, ����� ������� �� ����� ���������� ������������. � ���������� �� ������������ ����� ��������� ���������� ����� ���������� �������� � ����������.

����������� ��������-���������������� ���������������� ������������� ��� �������� ��������� �������� � ��������� �� ����������. ������ � ������������� ���������� � ������������ ������������ ����������� ������, � ������� ������� � ��������� �������� ������ ���������� ������� �������� ������. �������� �� ��� ������, ���������� ����� (�� ������� ����, ������� �����, ��� ��� ���) �������������� ������� �� �������� ���������� ������� � ������������ ������������ � ��� ��������.

�������

� ������ ����������� ��������-���������������� ���������������� (���) ����� ������� �������. ������ � ��� ����� �������� (��������, ������� ��� �������) � ����� ����������� ���������, ������� ����� � ��������� ��������������� ���������� �������. ��������, ������� ������, ���� �info.txt�, ������ �� �������������� ����������� � ��� ��� ������� ��������.

������ ������ �������� ������� ������� (��� ���������). ��������, ������� ������ ����� �������� ���, �������, ���� ����, ������ �� ����������. � ������ ��������� ������� ������� �������� ������������� ����. � �������, ��������� �������� ������� ������� ������: ��� = "����", ������� = 19, ���� ���� = �����, ������ �� ���������� = 4.

������������ ������� �������� ������� ������� ������ �������� ��� ����������.

��� ������� ������� ���������� ������������ ����� ��������, ������� � ��� ����� ����������. ��������, ������ ���� �info.txt� ����� �������, ���������, ��������, ���������, ������� � �.�. ��� �������, � ���������� ���������� �������� ���������� �������� ��������� ������� �������. ������������ ���� ��������, ������� ����� ���������� ��� ��������, ���������� ��� ����������.

����, ������ ����� ������ ��������������: ��������, ���������, ��������� � ���������� ������������. ��������� ��������, ��� ����� ��� ������� ����� ���������, ���� ���� �������� ���� �� ������� ���������. �� ����, ����� ���� ��� ��������� ���������� �������� ������� � ����������� �������� �� ����������, �� �� � ���� �� ��������� ��������, ��� ��� ��� ������ ������� (��� �������, ��� ��������� � ������ ������). ��� ��������, ��������� ���������� ������������ ��������, ��� ������ ������ �������� ���� ����� � ������ ���.

������

�������, ���������� ���������� ������� ������� � ���������� ����������, ��������� � ������ ������. ����� � ��� ����������, �������� ������ ���������� ��������. ��������, �������, ������, ����, ���� � ��� ��� ������� �������. �������� ��������, ������� � ���� �� ���������� �������, ��������, ������, � ������� ������; ���� ����� ������������ ����� ���������� ������� ��������.

� ������ ���� ���, �������� � ������.

��� ��������� � �������� �������������� ������, �.�. �� ����� ���� ������� � ����������� �������. � �������� ����� ������ ������ �������� ���������������, ����������� ����������� ������ ����� ������ (�������, ������, ����, ���� � ��� ��� ����� �������).

�������� ������ ��������� �������� ��� ��������. � ������ ��������� �������������� ��������� ��� (��� ����� ���� ������� ��� ����� ���������������� ����� int, char, boolean, � ����� ���� ������ �����). ��������, ����� �������� ������ ����� ������� ����� ���� int (����� �����) � ������� �������� ���� �������.

������ ������ ��������� ��� ���������. ��� ��������, ������� ����� ��������� ������� ������� ������. � ���������, ��� �������, ������ ������������ ����� �������, ������� ����� �������� � ���������� ������.

������ ���������� �� ����� �������������� ���������, ������� ������ �������������� ����� ���������� (�.�. ���������� ����������������).

��������������� �������� ������� ��������, ������ ���������� ������� ��������� � ����������� ������������ � ��� �������. � ���� ������� ����������� ��, ������� ���������� ��� ��������� ����������, ������� ����� �������������� � ���������. ������� ����� �� ������� � ������� ���� �� ����������� ��������� � ��������, ����� Vector, ����������� ���� �� �������������� ������� � Java. ������ ���������� �� ������ ����������� �������� (��� ���������� ��������� ��������������) ��� ������� ����� ������������.

��� ������� ������ ���������� ���������� ��� ���������. ��� ����� ����� �������� �� ������, ��� ������ ������ ����������������� ���� � ������ �� ����� ������ ���������. ������ ��� ����� ���������� ��������� ��������� ������������� (�����������) � ��������� ������������������ ��������, ���������� � ������� �� ������ ���������� � ����� �������� �� UML. ���, ����� ������� � ��������� ��� ����� ������������ ��������� ������ ��� ��������� ���������� � ���������� �������� � ������ ������� �������� ������ ������� ���� ���, ����� �������� ������ � �.�., � ����� ����������� ��������� ��� ����� ����� �������� ��� ��������� �� ��������� ����, ��������� �� ������. �������������, ����� ������� ������ ����� ����� ��������������� �������.

����� ��������� ������ ����� ���� �����������, � ������ ������ ��������� ��������� ������. ��������, ����� ������� ��� �������� ���� ���, �� ������ ��� �������, � ����� �������� ��������� �� ��������� ���� ������������� � �������� ����� �����, �� ������ ������� ���� ������� ���� � ��� ������������� ��� �����������. ����� ������� ���������� ����� ���������.

� ���������� �� �������� ��������-��������������� ������, ������� ����� ������������ � ���������.

���������� �� ����:

1. ����� ���. ��������-��������������� ������ � ��������������.

��������-��������������� ���������������� � Java

������ � �������

Java � ��������� ��������-��������������� ����, �������, ��� �� ��� ��������, ��� ��������, ����������� ����������, ��������� � ������� ��� ��� ���� �������.

�������� ������ ���������� � ��������� ����� class, ����� �������� ����������� ������������� � ��� ������. ����� � �������� ������� ������������� �������� � ������ ������. �������� � ����� Java ���������� ������ (� ���������� �� ����� ������������ ��� ������������). ���� � ������ ���������� ������� ������.

���� ����������� ��� ������� ����������.

������� ������ ������� ��������������� �� ���������� �������.

������ ��� ������� ����� Dog (������). � ���� ����� ��� ����: ������ � �������. ��� �������� ��������� ������ � ���� ������� ������� ����������� ����. �������, ����� ��-���������� ���� ������ �� ����� (���� ��� ����� ���� ����������� �����������), ��� ����� �������� � ������� ����-���. ����� ���� ����������, �����������, ��� ��� ������, � �������� ����� ���� ���� ���������, ���� ���������, ��� ����� �� ��������� �����, ��� ������� ����-��� ������� ���, ������� �� ���.

�������, ��� � ��������� ��� ���� ���� ����� (���, � ������� ������ ����� main()). ��������� ���� ����� � ������� ��������� �� �����, ��������� ����� ����� Dog ������� �� ��� ���������.

class Dog { int age; // ������� String name; // ������ public void voice() { for (int i = 1; i <= age; i++) { System.out.println("���-���"); } } }

����� ������� � ������, ��� ��������, ����� ��������� ���������� (����) � ������� (������) ������� (�������) � �����-�� ������.

����� ������ ��������� ��������� ����������� �������. ��� ����� ���� ������� �� ���������� ������� ��������� (������, ���������, ��������, ������) ��� �������, ����������� ��� ������ ����� ��������� (�������, ������, ������, ����, ������, ���������*).

������ ������ ������ ���� ������, ����������� � ����� �������. ��� ������ ��� �������, ������, ������ � �.�., � ��� ������ � ���� ������, ����������������� � �.�.

������ ������, ��� �������, �������� � ������� ����� ������. ��������, ����� voice() � ����� ������� ���������� � ���� age (�������).

����� �����-�� ����� ������, ����� ����������� ������� ����� ������ � � ���� ����� ��������, ������� �� ������ (������� ������, ����������, ������� �� ����� � ������ ������ ��� ��, ��� ��������� ��������� ������, �.�. ������������ ��� �������).

��� ��������� � �������� ������ ������������ ����������, ������� ��� ������. ��������, ��� ������ � �������� ������ ���������� ���� Dog:

Dog x;

���������� ���� ������ �������� ��������� ����������, ��� �� ������ ������ (��� ���������� ������� ����� int, char � �.�.), � ��������� �� ����� � ������, ��� ��� ������ �������� (��� ���������� ���� �������). �������, �� ������� ��������� ������ ��� ��������� ���������� x, ����� ���� ������ ������ Dog. ��� ���������� �������������� ������� �������� new:

x = new Dog();

������ ���������� x ��������� �� ����� ������ ������ Dog, �������� � ������ ���� ������ (������� � ������). ����� ����, ��� ������ ����� ��������� �����, ������ ��������������� ����� ��������:

x.voice();

��� ����, ����� ���������� � ����� ������, ���������� ������� ��� ��� ����� ����� ������� ����� �����.

�������� ��������, �������� ������ �� ������, �� ������� ���������� ���������� x. ���� � ��������� ���� ������� ������ ������, ��� ����� ������� �� ��� ���, ���� �� ����� ������ �� ����� voice().

����� �������, ����� ������ (����) � ������� (������) ����������� � ����� ������, ��� ����������� ����� ������� ���� � ������ � �������� ����� ������. ����� ���������� �� ��� �� ����, � ��� ����������� ������� � �������� � ������ ������ ����� �������.

������� �������

voice(); age += 1;

�� ����� �������� ������, ���� ������������� ��� ������� ������ Dog. ����������� �������� �� ���������� ������, � ������� ������������ ��������. ������ ������ �������� �� ���������� ������ ����� �� �����������: � ������������� ������� ������

for (int i = 1; i <= age; i++)

� �������� ����� this

��������, ��� ��� ����������� ������������������ ��� ����� ����������� ������� ���� ������ �������, ��� �������� ����� ������ ������ �����. ���� ������ ������������ �������� ������ this.

����� voice() ����� ���� ������� � ���:

public void voice() { for (int i = 1; i <= this.age; i++) { System.out.println("���-���"); } }

�������� ����� this � ���� ������� �������� ���������, ��� ������������ ������� age ������ ���� ������� ������ Dog, ��� �������� ���������� ����� voice().

����� ��� ������ ��� �������� ������������ ��� �������� �������, ������ ��������������� ������ this.

������������ �������

����������� � ��� ��������� ����� ������, ������� ���������� ������������� � ������ �������� �������� ����� ������. ��� ������������ ��������� � ������ ������.

��������, � ������ Dog ����� ���� ����������� � ����� �����������, ������� ��� �������� ����� ������ ��������� ����� ������ �� ������ � �������.

public Dog(String n, int a) { name = n; age = a; }

����������� ���������� ����� ��������� ����� new � ������ �������� �������. ������, ����� � ��� ���� ����� �����������, �� ����� �� ���������������:

Dog dog1 = new Dog("�����", 2);

� ���������� ���������� dog1 ����� ��������� �� ������� �� ������ �����, ������� ������� 2 ����. ������, ���� ������� ����� ������, �������� ������ ����� ��������

dog1.voice();*

������������ ����������� � �����, ���� � ������ �������� ������� ����� ��������� �����-�� �������� (��������� ���������) � ��� ������� (������). ����� ������ ������ � ������� ������ ����� �����������, ��� ������ ��� ��������� ����������� �����, � ����� ������ ��� ��� � ������ ���������� �� ������� �������� (� ������ ����, ��� ��������� ������ ����� ������������ ������ � �������, ������� �� ����� ���� ��� ����� ��������). ���� �� ��������� ��� ������������ ����� ������ ������ ���.

������������

������������ � ��� ��������� ����� ��������, ��� ������� ���� ����� ��������� ���������������� �������. ��� ������, ��� �� ������������� ���������� ��� ��� ���� � ������, � ����� ��������� ��������� ����.

������������ ������ ���������, ����� ��� ������� ������ ������ ������������ �������� ��������� ������� ������ (��������� �����/�������). ��������, ��� ������� ������ ������� �������� ��������� ������ �������. � ���� ������ �������, ��� ����� ������� ��������� �� ������ �������. ���������� ����� ������ ����� ����������� �� ������ ��������, � ����� ���������� �� ������ ������. �����, ������� ���������, ���������� ���������� ��� ��������, � �����, �� �������� ���������, ���������� ������������ ��� �������.

�������, ��� ���� ����� �2 �������� �������� ������ �1, � ����� �3 �������� �������� ������ �2, �� ����� �3 �������� ����� �������� ������ �1.

������������ ��������� ������������ �� ������ ������. ��������, ���� � ��������� ���������� ������ ����� ����� ����������, ��� ����� ������� �� ������ ��� ������������� ������ ������, �� ������������ ������ ��� ���� � ������, � ���� ������� ��, ������� �� ������� � �����������.

��� ����, ����� ���� ����� ��� �������� �������, ���������� ��� ��� ���������� ����� ����� ������ ������� �������� ����� extends � �������� �����������.

��������:

class Dalmatian extends Dog { // �������������� ���� � ������ ... }

� ������ Object

���� �������� ����� extends �� �������, ���������, ��� ����� ����������� �� �������������� ������ Object.

� ������ Object ���������� �������� ������������. ����� ������ ����� �������� �������� ������ Object � ��������� �� ���� ��� ������:

equals(Object obj) � ��������� ���������� ��� �������. ���������� true, ���� ������� �����. ��������, �� ���������� ������ (������� ������ String):

if (s1.equals(s2)) { ... }

toString() � ���������� ������ � ������ (������� ����� ������� � ������ println()).

hashCode() � ���������� ����� �����, ���������� ��� ���� �������� ������� ������ (�� ����� ���� ���� ��������, ��� ������� ��� ����� ���������).

��� ������������ ��� ������ ���� ����� ���������� ��������������, ����� ��� �������� ���, ��� ���� ������������. ��������� � ��������������� ��. �����.

������������ ���������

������ � ������ ����� ������ � ���� ��� ������ � ����� ���� ���������. ��� ����� ����� ��� ����������� �������� �������� ����� private. ��� ��������, ��� � ����� ����� ������ ������ ����� ���������� �� ������� ������ �������.

�������� ����� public ����� ������������� � ��� �� �������, �� ����� ��������������� �����. ��� ��������, ��� ������ ���� ������ �������� ���������. ���� ��� ����, ��� ����� ������������ � ���������� ��� �������� ��� ������ ������������, � ���� �����, ��� ����� ��������.

�������� ����� protected ��������, ��� ������ � ���� ��� ������ ����� ��� ����� � ��� ��� �������.

���� ��� ���������� ����� ������ �� ������ �� ���� �� ������������� �������������, ������������ ����������� �� ��������� (default). �� ��������, ��� ������ � ����� ������ ����� ��� ������, ����������� � ��� �� ������.

��������� ����� Dog ��������� �������:

class Dog { private int age;// ������� private String name; // ������ public Dog(String n, int a) { name = n; age = a; } public void voice() { for(int i = 1; i <= age; i++) { System.out.println("���-���"); } } }

���� agename �������� ��������. ��� ������, ��� �� �� ����� �������� �� (��� ��������� �� ��������) ���-���� �� ��������� ������*. �� �� ������ � ������ main() ������� ������ ������ Dog, � ����� ��������� ��� ���� age ��� name ����� ��������, ��� � ��������� �������:

public static void main(String[] args) { Dog dog1 = new Dog("�����", 4); dog1.age = 10; // ������, ���� age ������ dog1.name = "�����"; // ������������� ������ ���� ������, ���� name ������ dog1.voice(); // ��� �����, ����� voice() �������� }

����������� �������� ���� � ������ ������ ������������ ��� ����, ����� ������� ������������ �� ��������� ������, ������� ������ �������� � ����� � �������������. ��� ���� ����������� ������� ������������.

�� ������������

������������ �������� �������� ������� ���������� ������. ����� ����������� �� ��� �����: ���������� � �������. ������� ����� (���������) ��������� ������������� ������ �� ����, ����� ������� ����� ����������������� � ��������� ������� ������ ������ ������� ���������. ���������� ����� ������� �� �����������, ��� ����� ������ ������ ������ ��� ����������� ���������� ������ �������� �������.

��������, � ������ Dog ���� ������������� ���� age (�������). ����� �������� ��� ��������, ����� ��� ��� ������������� ����� ����� �������� ������� ������������� (����� ������). �� ��� ���� ����� �� ������ ��������� ����� ���� �������� ������������ �������� (��������, 666 ��� -5 ��� 3000). ��� ����� ��������� ��-�� ������ � ���������. ���, � �������, ������������ ������ ������� ������ � ��������� ����, � ��������� ����������� ��� � ����� �� ������� ������ (� ������������ ����� ���������). ��� ������������� ������. ����� ������� ���� age �������� (private) � �������� ��� �������� ������: getAge()setAge(). ������ ����� ����� ������ ���������� �������� �������� ����:

public int getAge() { return age; }

������ ����� �������� ������ ����� ������� ������, ��������� ��� ���� �������� �������������� ��������.

public void setAge (int newAge) { if (newAge < 0) System.out.println("��� ��� ��������? ������ ��� �� ��������?"); else if (newAge > 30) System.out.println("��� ������� �� �����"); else age = newAge; }

������ �� �����, ��� ������� ����� ��������, ���� ������ ����� setAge(), ������� � ������ ������������� ��������� ������� � ������� ��������� � �� ����� ������ ��������.

���������������� ������������, ��������������� ��������� �� ��������-��������������� �����������, �������� ��� ���� ����� �������, �������� ��� ������� �� ��� �������� ������ c ����������� getset, ������ � ������� set ���������� ��� ����������� ��������.

������� ����������, ��� � ����� ������� ������������ ������� ����� ������������ ����� ����������� ��� �������� ������ �������. ����� ���� �� ������ ��������:

Dog dog1 = new Dog("�����", 2000);

��� ����, ����� ����� �� ���������, ���������� ���������� �����������:

public Dog(String n, int a) { name = n; age = setAge(a); }

������ �������� �������������� � ������������. ������� ������� � ��������� ������ � ���� ������������� ������� �� ���������� �������. ���� ������� ����� ������ 0 ��� ������ 30, ������������ �� ���������� � ������� age ����� ����� �������� �� ��������� (��� ���� int ��� 0). ����� ��� ��������� �������...

����������

��� ����� Dog �������� �������������� ������. �� ����� ������� ���� name, �������� ����� ��������� ��������� �������� �� ����� �������� �������, �� ������ �������� � ���� ������ ������������. �������� ������ getName()setName(). ������� �������� ��������� �� �����.

����������

� ����� ������ ����� ������� ��������� ������� � ����� � ��� �� ������, ������������� �� ����� ����������. ���� ����� ���������� ����������� �������. ����� ���� �� ���� ������� ����� ������, ���������� ������������� ���������� ��� ���������� (�� ���������� � �����) � ����������� ���� ������� ������ � ����� ������. ���� ���������� ����� ����� ������, ���������� ������ ��.

��������, � ���������� � ������������, ������� ��� ���� � ������ Dog, �� ����� ������� ����������� ��� ����������:

public Dog() { name = "����������"; }

� ���� ������������ ������� ������ Dog (��������, ������ � ����������� �������) ������������� ��� ����������� � ��������� ��� ������������. ������ �� ����� ��������������� ����� �� ���� �������������:

Dog dog1 = new Dog("�����", 2); // ������ �� ������ �����, ������� 2 ���� Dog dog2 = new Dog(); // ������ �� ������ ������������, ������� 0 Dog dog3 = new Dog(10); // �������! �� ���������� ������������ � ������ �����������

������ ��������� ��������� ����������� ������� � ���������� ������ � ����� ����������.

����������

�������� � ����� Dog ������ ����������� ��� �������, ����� �������� �������, �� ����������� ������ ������ ���, ����� ������ ������� � ������� ����� �����.

�����������

����������� � ��� ����������� ������ ��������� � ��������� � ���� ������ �� ����� �������, �������� �� ��, ��� � ��� ����� ���� �������� ���������� ������ �� �������.

�������� ������ ������ �� �������, �������������� �� ������-������, �����-������� �����, ������ ����� ����� � ����� ����� �� ������ � �����������. ��� ���������� ����������������. ��� ������ ������ ������ ��� ������� ������-������� ����� ��������� ����� ����������.

�����, � �������, �� ����� ��������� ��� ����� Dog ������� BigDog, ��� ����, ����� ���� ��������� ������ ������� ������������ ��������� ������� ���� �����. � ���������, ������� ������ ���� ��-�������. ��-������, ������, � ��-������, ��� �� ����� �������. ������� �� ������������� ����� voice():

class BigDog extends Dog { public void voice() { for (int i = 1; i <= 30; i++) { System.out.print("���-"); } } }

������ �������� � ������ main() ���� ������ �����: ������� � ������� � �������� �� �����.

Dog dog = new Dog("�����", 2); dog.voice(); BigDog bigdog = new BigDog(); bigdog.voice();

������ ��������� ������ ����� ������������ �������� �������� ������ �� ����� ������������. ������� � ��� �� ������� �� ����� �� �������� � ����� ����������:

Dog dog = new Dog("�����", 2); dog.voice(); dog = new BigDog(); dog.voice();

� ������������ ������������ ������������

�.�. ���������� dog ����� ��� Dog, �� � ������� ������ ��� �������� ��������� �� ������ ������ BigDog, �� ���� ������� ������, ������� ��� ������ ������ voice() ����� ����� ��� ������� ������. ��� ���� �� ������������ ������������ ��������-���������������� ����������������.

������ ����������������: ������������ � �����������

������� ������������ ������������ � ��� ����������� �������� � ��������� ������ �������, ������������ �� ������ ������ ������ ���, ��� ����� �� ��� ���������� � ������ ������.

���������� �������� ������.

�����������, �� ������������� ��������� ��� ���������. � ���� ��������� ������������ ����� ��������� ��������� ������: ������������, ��������������, �����, �����. ��� ���� ������� ����������, ������� � ����� ����� �� �������.*

����� �� ������� ��������� ������ ��������� ��� ����� �������� �����-�� ��������. ��������, ����� ���� ��������� �������������, � ����� ����� ���������������, ���� ������ ���������� ��� ��� ������. ����� ������������ ������� �� ������ ������, �� ���� ��������, � ����� ������������ ������������� ������� ������ � �������� �� �������.

������������� ����������� ��������-���������������� ����������������, �� �������� � ������, ��� ������ ������ ������ �������� ���� �����. �� ����, ������� ��� ���������� ����� ����������� � ����� �� ������� ������ Circle, ��������, � ������ paint(). �������������, ��� ��������� ������ ������ ��������� � ����� �� ������, ������� ����� ����� �������� ����� �����. ����������, ������ ����� ������ ���� ��������� � ��� ����� ���� ����� paintSelection() � � ������������� � ����� move(int x, int y). ������ �������� ��������� � ������ ���������� � ���� ������� ��� �������������.

��������� ������ ���-�� ������� �������, ������� ������� ������������. ��������� ������� ����������, ������� ����� ���� ��������, ���������� ��������������� �����-������ ���������� ��� �������� ��������� ��������, �������� ��������. �� ��� �������� ������� ��������� ������� ��� ��� ���������. � � ����� ��������� ������������ ����� ��������� ����� ������ �������. ��� ��� �������� ������� ��������� ��������: ���� ��� �����, ���� ��� ������ � ��� �����. ���� ����������� ������ ���������� ��� ������� �� ������, ����� ����� ��������� ��� �������� � ������ �� ���� ��������:

for (int i = 0; i < points.length; i++) { points[i].paint(); } for (int i = 0; i < circles.length; i++) { circles[i].paint(); }

... � ��� �����, ��� ������� ���� ������.

����� ����, ���� ������������ ������� ������ �� ������, ����� ������� ������, ���������, ���������� ���������� ����, ������ ����� ������, � ������� �������� ��� ����������. �����������, ������ ������ ���� ����� ����������� �������� � ������� ������ checkPoint(int x, int y), ������� ���������� �������� true, ���� ����� � ������������ x, y ��������� ������ ���� ������. �� ��� ����, ����� ������� ���� �����, ����� �������� ��������� ��� �������. � ��� ��� ������ ��������, ��� ����� ��������.

��������� ������������ �� ����� ��� ���������� �����������. ��� ����, ����� ��� ���������������, ��� ����� ������� ����� Figure � ������� � ��� ������, ����� ��� ���� �����: paint(), checkPoint(int x, int y) � ��� �����. �� ����������� ��������������� ��� ������, �� ��� ����� �� ����� ���������� � ���.* �����, ����� ��� ����.

������ �����������: �� ����� ����������� ������� �������-�������� ���������� ������ �� �������-�������.

��� ������ �������. ���� ���� ����� ����� ����������� �� ������ ��������, �� ������ ������ �������� ������������ �������� ������ ����� � �������� ������ ��������.

�������������, �� ����� ������� ���� ������� ������* ��� �������� �������� ������ Figure:

Figure[] figures = new Figure[100]; // ������� ������ ��� �������� 100 �����

������ �� ����� �������� � ���� ������ ����� ������:

figures[0] = new Point(30, 30); // �������� � ������ ����� � ������������ 30, 30 figures[1] = new Circle(60, 20, 10); // �������� ���� � ������������ 60, 20 ������� 10 figures[2] = new Rectangle(0, 0, 30, 40); // �������� ������������� ...

������ �����������. �� ����� ���������� � �������, ����������� � ������-������, �� ���������� ����� ������������� �����, � ����������� �� ����, � ������ ������ �� ����� ���� ��������� ������, � �������� �� ����������.

�� ����� ���������� ��� ������, ���������� � ����� �������:

for (int i = 0; i < figures.length; i++) { if (figures[i] != null) figures[i].paint(); }

� ������� �������� �������� ���� Figure. � ���� ������ ���� ����� paint(), ������� �� ������ ����� � ���� ����������. �� � ����� ������ Figure ���� ����� �� ������ ������ (���� �� �� ����� ����������� ��������� ���������, ���������� ��� ���� ��� ���������� �����). ���� � ������ Point, �������������� �� ������ Figure, �� �������������� ���� ����� � �������� ��� ������ ���, ����� �� ������� ����� (���������� ����� �������� � ������� ��������� ������ Point). � � ������ �������� ������� figures[0] � ��� �������� ������ �����. ���� �� ���������� � ��� ��� � ������ �������, Java �����, ��� ��� ������ ������ paint() ����� ������������ ������ ��� �������, ������� ������������� � ������ Point. ���������� ������� figures[1].paint(); �������� ����, � figures[2].paint(); �������� �������������.

�� ����������� ����� ��������� ������, ��������� ��������� ����� �������� ����� �� �������� ����� ������������ ������� � �������� ��������-���������������� ����������������.

����������� �� ���������

���� � ������ �� ������ �� ���� �����������, ��� ���� ������������� ��������� ����������� �� ���������. ���� ����������� �� ����� ����������, ��� ��� �� ������ � ��� �������� ����������� ��� ���������� ������-������.

������� �� � ������ ������� ������ ������ BigDog � ������� � ������� �������, ���� �� ��������� � ������ ������� �������������. ���� ��������� ����������� ��� ����������, ������� � ��� ���� � ������ Dog, �� ������, ��� ���������� bigdog � ���������� ������� ��������� �� ������ �� ������ "����������".

����� ������������ �����������

� ������� � ������� ������� ��� ������� ������� �� � ������� ������������ ��� ����������, �.�. �� �������� �� ��� � �������. �����������, ���� �� �� ���������� ������� ��� ��-�������, � ��� �� �� ����������. ���� � ���, ��� ������������ �� ��������� ������� ������ �, � ������� �� ������ �������, �� �����������.

BigDog bigdog = new BigDog("������", 8); // ������. ������ ������������ � ������ ���

��� ����, ����� �� ����� ��������� ������� ����� � ������������� ��� ������ � ���������, ���������� �������� ���������� �����������. ��� ���� �� ����������� ��������� �� �������, ������� �� ������ � ������������ ������ Dog (�� ����� ���, �� ���� ����� ���� ������� ������). ������ ����� �� ����� ��������:

BigDog (String n, int a) { super(n, a); }

�������� ����� super �������� ���������� (� ����� ������ ��� ����� Dog). � ������� �� �������� � ��� ������� ����������� �����������. ��� ���� �� �������� ��� ��������� � ������ � �����, � ��� ��� �� ���� ������������� ����� ������ ������ ���, ������� ��� ����������.

����� ������������ ����������� ������ ����������� � ����� ������ ������������.

������ ������ ������������ ����������� ����� ������� ���� �� ������������� ���� �� ������ ������. ��� �������� � ������� ��������� ����� this() � � ����������� � �������, ���� ��� �����.

���� � ������ ������������ ��� �� ������ this(), �� ������ super(), ������������� ���������� ��������� � ������������ ����������� ��� ����������.

���������� �����

������ ������-������� ����� ��������� ���������� ���� ������-������. ��� ���� Java ���������� �������������� �������������� ����, ���������� �����������. ���������� � ��� ������� �� ����� ����������� ���� � ����� �����������. ������� �� byteint � ��� ���� ����������.

���������� ������, ������� ��������� � ��������� �������. � ��������� ���� ����� User, ��������������� ��� ��������� ���������� � ������������� �������. � ���� ������ ���� ����� enter(String login, String password), ������� ���������� true, ���� ���������� � ����� ����� � ������ ��������� � ������� � �������, ������� � ����� ������.

�� ��������� �� ������ User ��� ���������: Admin �, � �������, Member (��� ��������� ����������� ���������� �������, ��. ������� 13). ����� Admin ����� ������������ ��� ������������ ��� �����-�� ����������� ��������, ��������� � ����������� ��������, � ����� Member ���������� ���������� �������, ������� � ������� ��������� �������� ������� ����������� ����� ��� �������. �������� ����� addRequest(String place, int day, int from, int to) ����������, ����� �������� ������� ���������� ����� ������� ������� � ����� �������.

� ������� ������ ��������� �� ������ ������* users, ���������� ���� ������������� �������. �������� ����� ������� ����� ��� User, �� �� ����� ����������� �� ������ �� ������� ��� ������ Member, ��� � ������ Admin. � ���� ������ � ����� ����������� ���������� ����.

Member member = new Member(...); users[3] = member; // Java �������� �������������� �������������� ���� Member � ���� User, ����� ��������� ���������� member � ������ users

��� ����, ����� ����� ������������ � ���������� ������� � ������� ��������� ��������� ������:

for (int i = 0; i < users.length; i++) { if (users[i].enter(log, passw)) currentUser = users[i]; }

�������� �� ��, ��� ��� �������, ����������� � ������, ��������� ���� "���������" �����, ��������� �������� � ���� ��� � ��������� ������ User. ����� ������ ����������, ����� ����� ���� ����� ������� ������������ �� ������ � ������ (���� ����� enter() � ��� �����) � ��������� ��������� ������ ���������� currentUser ���� User. � ���� ���������� �������� ������� ������������, ���������������� � �������.

�����������, ��� ��������, ��� ���������� currentUser ������ ��������� �� ������ ������ Member � ������� ������������ ���������� ����������� � ������� � ����� � 17 �� 19 �����. ���������� ������� ����� addRequest(), �� � ��� �� ��������� ������� ��� ��������

currentUser.addRequest("������", 3, 17, 19);

��������� � ������ User ��� ������ addRequest().

������ �� ����� ����������� ����� �������������� ���������� currentUser � ���� Member. ����� �������������� (������� �� ����� ����������� ���� � ����� �����������) ���������� ��������. ����� �������������� �������� � ������� ���������, ��������������� ����� ��� �������� ���� � �������.

((Member)currentUser).addRequest("������", 3, 17, 19);

����� ��, ������ ��� ������� ����� addRequest(), ������������� ���������� currentUser � ���� Member. ��� ���� ��������� ������� ���, ��������� Member �������� �������� User. ������, ���� �� �� ����� ���������� ��������� ���������, ��� �� ����� ���� ���������� currentUser �� ��������� �� ������ ������ Member, � ��������� �������� �� ������.

�������� instanceof

����� ��������, ������������� �� ������� �������� ���������� ����������� ����, ������������ �������� instanceof.

��������, �� �������� �� ������� ������������ ��������������� (� ���� ������ ��������� ������ ������� � ����� ����������):

if (currentUser instanceof Admin) {...}

��������� � ��������� ������

� ��������� �������

������ �������� ������, ����������� � ���� ���� ������ ������, ������ �������� ��� ����� � ������� ����� ��������� �������� ������� ������. �� ����� ���������� ��������� �������.

��� ����������� ������ ������������, ����� ����������� ��������� ��������� ����� ��������. ��������, ��� ����� ������������ ����� Eye, ����� ������� ������� ��������� � ��������� ����� (�� ����� ����������� � �����������). �� ������� ����� ������ �� ����� ����������� ���� �� ����, ��� �������� ������������ ������ �������� ������ Dog � ������ ��. ������� �� �������� �������� ������ Eye � ����� Dog:

class Dog { ... class Eye { private boolean opened; public void close() { opened = false; System.out.println("���� ������"); } public void open() { opened = true; System.out.println("���� ������"); } public boolean isOpened() { return opened; } } Eye rightEye = new Eye(), leftEye = new Eye(); }

�� ����� �� �������� � ����� Dog ��� ���� ������ Eye � ������������������� �� ����� ���������� ��������� (��� ����� ���� ������� � � ������������). ������ � ������ ���� ��� ����� � ��� ����� ��������� �� � ���������. ��������, �����������, ��� ��� ������ ���� � �������� ������ ������. ����� ����� voice() ���� ���������� ���:

public void voice() { rightEye.close(); for (int i = 1; i <= age; i++) { System.out.println("���-���"); } rightEye.open(); }

���������� �� ���������� ������ ����� � ������� ���������� ����� (� ����� ������ ��� Dog.Eye). ���� ��������� ���������� �� ����������� ��� ������, ��� ����� ��������� (��� � ���� ������� ����).

����� ����� �������� ������ ������ ������� ������. � ���� ������ ����� "�����" ������ ������ ������ (�� ��������� ������ ������ �������� ���������� ���� ����� ������).

��������� ������� ���������� �����, �� ������� �����. ��������, ���� � ������ ����� ���, � ���� ������ ���������� �� ���������. ������, ��� ����� ������� ������ ���� ��� � � ��� �����, ��� ����� �����������.

�������� ���������� ������ ���������� � ������ ������������ ��� �����������, ����� ���� � �������� ������� ����������� ���� ������.

��������� ������ ������������ � ��� ������, ����� ����� ������������ ������ ������ ������ �� ��� ���������.

�����, ��������, � ����� ��������� ��������� ��������� ������� ������ dogs �������� ���� Dog. � �� ����� �������� � ���� ������ ���������� ���������� ������, ������� �� ����, � �������������. ���������� ������� �����, �������������� �� ������ Dog, � ������� ����� ��������������� ������� ������������� ����� voice(). �� ��������� ��� �������������� ����������� ������ ���� ����� ������, �� ����� ������� ��������� ����� ����� � ����� ���������� ������ � �������� (������� �� � ������ � 10):

dogs[10] = new Dog(){ public void voice() { System.out.println("� ���������� ��������� ������."); } };

�, �������� �� ��, ��� �� �� ������ ��������� ���������� ����� ������, �� �������� ����� ������������ ����� ������� ��� �������� ������ Dog. � ��������� ������������ ����� ������

dogs[10].voice();

�������� � ����, ��� ���������� ������ ����� ��������� �������� �����.

����������� static

����� ���� ������ ����� �������� �����������, ������ ����� ��� ����������� �������� ����� static. ����������� ���� ������ ������������� ����� ����� ��� ���������.

��� ���� ��� ��������, ��� ����� ��������� ��� ��������, ��������� ����� �� �������� ������, ����� �� ������� ��� ��������� �������.

�����, ����������� � ������������� static, "���� ��������" �� �������� ������� ����� ������, ����� �����������.

��� ��������� � ������������ ����� ������ ����� ������������ ����� ������ ����� ������. ����� ����, ��� ��������� ����� ������������ ���� �����, ����� �� ������� �� ������ ������ �������. ������ ����� ������� ����� ������ ��������� ��� ������.

����������

������������� ����� Dog ����� �������, ����� ����� ���� ������� �����, ��������� �� ����� ������ ���������. ��� ����� ������� ����������� ������� count (���������� ������ ����) � ������������ ��� �� ������� � ������ ������������. �������� � ������ main() ��������� �������� ������ Dog, � ����� ��������� ��� �������� �������:

System.out.println("����� ���� ������� �����: " + Dog.count);

����������� final

� ������������ final

����� ���� ������ ����� �������� ������������, ������ ����� ��� ����������� �������� ����� final. ������������� ���� ����� ��������� �������� ������ ���� ��� (������ ��� �������� ����� ��� ����������).

��������� � ����� Java ��������� ������� ����������� ����� ���������� ������������� staticfinal. ��������, �� ����� �������� ��������� PI (����� ��� ������ � �������� ������, � �� � ������ Dog*), �������:

final static double PI = 3.14;

���� �������� ����� final ������� ����� ����������� ������, ��� ����� ����������, ��� ����� ������ �������������� ��� ������������ (�.�. ������ ������ ������ ����� �������������).

����� ����������� ������ ����������� final �������� � ��� ������, ���� ���������� ��������� �� ���� ������������.

��������� ������� � ����� UML

��������! �� ������ ����� �������� �� ��� ������ ������� �������� �� ���� ����. ���� �� ���, � ��������� ��� ���������� ��������� ��� ������������, �� � ��������� �� ����������! ���������� ������ ���������� � ���������� �� ������ ����.

�� ����� �������������� ������������ ��������, ���������������� � ������������ � ��������-��������������� ������������, ������������ ��������� �������. ����� �� ����������� ������� ��� �������� ���� �������� �������� ���� UML.

����������� ������������� ����� �����������. �������������� ���������� ��������� �������, � ������������ ��������� ��� ��������� � ����������� ����. ��� ����, ����� ����� �������������� � ���������������� �� ���� �����������, � �� � ������ ������ ����� UML.

�������� ������� ���������� �� Java �������� ��� ������������� ��������� UML-�������� (����� �������� ����� ��������������� �� ����������������). ���������� ����� � ��� �����������.

�������� �������� �����������, ����������� � ���������� ������� �� ������� UML-��������� ������� LogisticSystem (��. ������� 10).

������ ������������ �� ��������� ����������������, ������������ �� ��� �����. � ������� ����� ����������� ��� ������. � ������� ����� ������������� �������� (����) ������, � � ������ � ��� ������. �� ������� ���������� ������ User, Admin, Driver, Map, Edge, LogisticSystem.

�������� (private) ����� ������ ���������� ������ ����� ��� ������������ �������. �� ������� � ������ LogisticSystem ��� ���� � ������ �������, ����� ������ main(). � ������ ������� ��������� �������� ��� ���� (� ������������ � ��������� ������������), � ������ �������.

��� ��������� (�����) ������ ����������� ����� ��������� ����� ��� �����. ��� �� ����������� ���� ���������� ������� � ������������ �������� �������. ��������, � ������ LogisticSystem �������� �������� ������ findUser():

findUser(login : String, password : String) : User

�� ����� Java ��������� ����� ������ �� ����� ���� �������� ���:

public User findUser(String login, String password);

������ UML �� �������� � ����������� ����� ����������������, ������� ��������� ������� �������� "����������".

������������ ������������ � ���� ������� � ����� ����� ������������, ����������� �� ������-������� � ������-������. �� ������� ������ AdminDriver �������� ������������ ������ User. �������������� ����� ������ � �������-�������� �� ������������.

����� �������� ����� ���� ��� ��� ���� ���������. ���������� � ��� ����� ����� ��������� ���� �������, ������������ ������ ������. ��������, ����� ������� LogisticSystem (������� ����������� ���������) � ������� Map (����� ������) ���������� ������������� �����. � ������ ������ ��� ��������, ��� ������� ���������� ������ ��� ���������� ����� �������. ��������� � ��� ��������� ���� "�����/�����". ��������, ����� Edge (������ ����� ��������) �������� ������ ������ Map, �� ���� ����� ������� �� ������� � ������ ����� ���� (��� ����� �� �������, ���� ������ ��������� ������� �� ������������, ��� ����������� � ������� ������� ����� � ��. ������� points ������ Edge). ��������� ������������ � ���� ����� � ������ �� ����� (���� �������� ����� ������, ����������� ������ �������).

��������� ���������� � ��������� �������� ������ ����������� ����� ������� ��������. ��� ����������� ����� ���� ��� ����������� �� ��������� ����� �������� (����) �������. ��������, � ������ Map ���� ������� edges, �������������� ����� ������ ������ �� ������� ������ Edge, � � ����� LogisticSystem ��� ������� ������� map ��� ������ �� �����, ������������ ��������. ������� ��� ���������� ������� ������� �������� �������� �� ���������� � ��������� ���� ��� ������� ��������� ������.

��� ������� ��������� ������ ����� ��������� ��������� �������� ���������, ������� ������������� �� ������ �����. ���������� ��������� ����� �������� MapEdge. ����� ������ Map ����� ����� 1, ������� ��������, ��� ������ Edge ����� �������� ������ ������ ����� ����� (��� �������������, ��������� � ��������� ������������� ������������ �����). ����� ������ Edge ����� 0..n. ��� ��������, ��� � �������� ������ Map ����� ���� ������� ������������ ����� �������� ������ Edge, � ��� ����� �� ������.

�������, ��� �� ��������� ������� ��� ������������� ����� ����� �������� LogisticSystemUser. ������ ��������� ������� � ������������������ � ��� ������������� (����������� ����� ������� users). ������ ��������� ������� � �������� ������������ (����������� ����� ������� currentUser). ��� ����� ������� ��� ���������� ����������� ��������� ���������.

���������� �� ����:

1. ����� ��������. Rational Rose 2000 � UML. ���������� �������������.


�������������� ����������

1. ������� �.�. ���������������� �� Java. (����� 6�8)

2. ���������� �.�. ����������� Java 2. (����� 2)

�������

���������� � ���������� ������� ����� ������ � ������������ � ������������ ����������. � ������ ������ �������� ������������, ����������� ��� ���������� ��������� ������ (��� ������������� ���������� �������� ���������� � ����������� ����������). �� ������ ���������� �� ����� ������� �� ����� �������.