01 July, 2014

Итоги занятий 6-9

Пройденный материал

Наследование. Суперклассы, подклассы.
Последовательность инициализации классов с учетом конструкторов суперклассов.
Динамическое связывание.
Приведение типов
Абстрактные классы
Глобальный суперкласс Object. Методы equals(), hashCode(), toString()
Интерфейсы
Обобщенные списки-массивы. Интерфейс List, класс ArrayList
Классы оболочки - Integer, Double, Boolean и.т.д.

Домашние задания

1. Выбрать предметную область которая вам хорошо знакома. Выделить несколько классов (3-5, больше не нужно) для построения иерархии суперклассов и подклассов. Определить в классах поля, 5-7, не более. Определить конструкторы.

2. На занятии рассмотрели интерфейс MyComparable, в котором описан метод compareTo(). Метод принимает на вход объект для сравнения.
При вызове  obj1.compareTo(obj2) должен вернуть '-1' если obj1 меньше obj2, '1' - если больше, '0' если объекты эквивалентны.
В одном из своих классов реализовать интерфейс MyComparable, в метод compareTo() включить логику сравнения объектов этого класса. Можно сравнивать по конкретному полю, или по нескольким сразу - на ваше усмотрение.
Реализовать метод для сортировки объектов этого класса с использованием интерфейса MyComparable. Метод сортировки должен принимать на вход массив объектов соответствующих спецификации MyComparable.

Прошу не путать этот интерфейс с java.lang.Comparable, который используется в стандартных сортировщиках.

3. Описать интерфейс SimpleList. Создать собственную реализацию массива-списка SimpleArrayList, соответствующую спецификации SimpleList. SimpleArrayList должен хранить данные внутри в виде примитивного массива, но при этом обеспечивать расширяемость списка. Для SimpleArrayList предусмотреть два конструктора, конструктор по умолчанию должен создавать внутренний массив стандартного размера, например 10, конструктор с параметром должен создавать внутренний массив с размером, который указал пользователь.

По желанию создать реализацию связного списка, SimpleLinkedList, также соответствующую спецификации SimpleList. Достаточно реализовать односвязный список.



Методы интерфейса SimpleList:
add(Object) - добавляет объект в конец списка
add(int, Object) - добавляет новый элемент по указанному индексу. При этом не затирая существующий элемент по этому индексу, а сдвигая его и все последующие вправо.
remove(int) - удаляет элемент, находящийся по указанному индексу. При этом все последующие элементы должны сдвигаться влево.
size() - возвращает количество элементов в списке (не путать с размером внутреннего массива)
get(int) - возвращает элемент, находящийся по указанному индексу.
set(int, Object) - заменяет элемент, находящийся по указанному индексу, на переданный объект.
equals(Object) - проверка эквивалентности, сравнивает поэлементно два списка.

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

Требования к домашке

Отныне вводится новое требование к выполняемым заданиям - все классы должны быть описаны в пакетах. Имена пакетов на ваше усмотрение, но желательно придерживаться общих конвенций. Пакеты проходили на 5-м занятии.

No comments:

Post a Comment