Пройденный материал
Наследование. Суперклассы, подклассы.
Последовательность инициализации классов с учетом конструкторов суперклассов.
Динамическое связывание.
Приведение типов
Абстрактные классы
Глобальный суперкласс
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-м занятии.