Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная записка-2.doc
Скачиваний:
29
Добавлен:
20.09.2019
Размер:
194.56 Кб
Скачать

Функциональное описание

В проекте созданы следующие классы и интерфейсы:

  • TList;

  • BigInt;

  • Elm;

  • Window;

  • MainClass;

  • MainWindow;

  • Object.

Рассмотрим каждый класс подробнее.

Класс tList

Данный класс наследует интерфейс java.io.Serializable, это говорит о том, что данный класс может быть сериализован. Во всех методах данного класса доступ к объекту осуществляется прямым обходом списка, т.е. начиная с заголовка и заканчивая необходимым объектом. Это реализует следующий цикл:

for(int i=1;p!=head && i<index;p=p.next,i++);

В этом классе содержатся следующие переменные:

elm head – заголовок списка;

Для инициализации внутренних данных доступен конструктор.

Конструктор, создающий пустой список.

//-------------------------------------------

public Tlist()

{

head=null;

}

//--------------------------------------------

В классе содержатся следующие методы:

void insert_numb(int N,object val)

Этот метод вставляет объект в список по логическому номеру.

object val – объект для вставки

int N – логический номер, по которому вставляется объект.

void del_numb(int N)

Метод удаляет объект из списка, который находится по введенному логическому номеру.

int find_max()

Метод находит максимальный объект в списке и возвращает его логический номер.

int find_min()

Метод находит минимальный объект в списке и возвращает его логический номер.

void destroy()

Метод удаляет все объекты из списка и тем самым «уничтожает» сам себя.

int size()

Метод возвращает количество объектов в списке, т.е. размер списка.

public object Get_obj(int index)

Метод возвращает объект по логическому номеру.

public void BLoad_list(String fn) throws Exception

Метод загружает список из файлового потока.

//----------------------------------------------------------------------

public void BLoad_list(String fn) throws Exception

{

FileInputStream F = new FileInputStream(fn);

ObjectInputStream ois = new ObjectInputStream(F);

Object objRead = ois.readObject();

Tlist tmp=(Tlist)objRead;

head = tmp.head;

F.close();

}//-----------------------------------------------------------------------

Метод интересен тем, что для загрузки из файлового потока используем сериализацию. Это процесс превращения любого класса в последовательность байтов, при этом процессом руководит Java Machine. Опишем данный метод поподробнее.

Вначале создаем файловый поток для файла с именем fn, затем создаем поток, отвечающий за сериализацию (переменная ois), затем читаем из этого потока объект класса Object (это базовый класс Java). Затем приводим его к типу Tlist. Вследствие этого мы получаем копию очереди и затем копируем данные из копии в текущую очередь. После этих действий закрываем файловый поток.

public void BSave_list(String fn) throws Exception

Метод сохраняет список в файловый поток.

//-----------------------------------------------------------------------

public void BSave_list(String fn) throws Exception

{

FileOutputStream F=new FileOutputStream(fn);

Object objSave = this;

ObjectOutputStream oos = new ObjectOutputStream(F);

oos.writeObject(objSave);

F.close();

}//-----------------------------------------------------------------------

В этом методе также используется сериализация. Вначале приводим текущий объект к типу класса Object, затем создаем поток, который отвечает за сериализацию (переменная oos) и далее сохраняем в этот поток объект класса Object.