OOP lessons.
Tasks:
- Class Shapes
- Class Range
- Class Vector
- Class Matrix
- Translate CSV to HTML
- Class List
- Class ArrayList
- Class HashTable
- Swing for converting temperature
Классы с пометкой - зачтен, были сданы до конца, остальные - закончены самостоятельно, возможны некоторые недочеты.
Создана иерархия классов для геометрических фигур.
Создан интерфейс Shape, в котором определены методы:
- double getWidth()
- double getHeight()
- double getArea()
- double getPerimeter()
Все фигуры реализуют этот интерфейс и правильным образом определяют данные методы
Функциональность фигур:
-
Square – квадрат.
- Конструктор, принимающий длину стороны
-
Triangle – треугольник.
-
Конструктор, принимающий x1, y1, x2, y2, x3, y3 – шесть координат.
-
В качестве ширины возвращает max(x1, x2, x3) – min(x1, x2, x3)
-
В качестве высоты возвращает max(y1, y2, y3) – min(y1, y2, y3)
-
-
Rectangle – прямоугольник
- Конструктор, принимающий длины двух сторон
-
Circle – окружность
-
Конструктор, принимающий радиус.
-
В качестве ширины и высоты выдается диаметр
-
В фигурах методы toString, hashCode, equals переопределены.
Свой класс промежутков, состоящий из двух полей to и from
Функциональность
- Конструктор, при помощи которого заполняются поля from, to
- Функция для вычисления длины интервала
- Метод isInside, который принимает вещественное число и возвращает boolean – результат проверки того, принадлежит ли число диапазону
- Вычисление длины интервала
- Получение интервала-пересечения двух интервалов. Если пересечения нет, выдать null. Если есть, то выдать новый диапазон с соответствующими концами
- Получение объединения двух интервалов. Может получиться 1 или 2 отдельных куска
- Получение разности двух интервалов. Может получиться 1 или 2 отдельных куска
Реализован свой класс вектор, на основе массива.
Если операции выполняются над векторами разной размерности, то считается, что у меньшего вектора в недостающих компонентах нули.
Функциональность:
-
Конструкторы
- Vector(n) – размерность n, все компоненты равны 0
- Vector(Vector) – конструктор копирования
- Vector(double[]) – заполнение вектора значениями из массива
- Vector(n, double[]) – заполнение вектора значениями из массива. Если длина массива меньше n, то считать что в остальных компонентах 0
-
Метод getSize() для получения размерности вектора
-
Метод toString() в формате { 1, 2, 3 }
-
Нестатические методы:
- Прибавление к вектору другого вектора
- Вычитание из вектора другого вектора
- Умножение вектора на скаляр
- Разворот вектора (умножение всех компонент на -1)
- Получение длины вектора
- Получение и установка компоненты вектора по индексу
- Переопределенный метод equals, true ⬄ векторы имеют одинаковую размерность и соответствующие компоненты равны.
- Переопределить метод hashCode
-
Реализовать статические методы:
- Сложение двух векторов – Создается новый вектор
- Вычитание векторов – Создается новый вектор
- Скалярное произведение векторов
Реализован свой класс вектор, на основе предыдущего класса Vector
Функциональность:
-
Конструкторы:
- Matrix(n, m) – матрица нулей размера nxm
- Matrix(Matrix) – конструктор копирования
- Matrix(double[][]) – из двумерного массива
- Matrix(Vector[]) – из массива векторов-строк
-
Методы:
- Получение размеров матрицы
- Получение и задание вектора-строки по индексу
- Получение вектора-столбца по индексу
- Транспонирование матрицы
- Умножение на скаляр
- Вычисление определителя матрицы
- toString, результат получался в таком виде: { { 1, 2 }, { 2, 3 } }
- умножение матрицы на вектор
- Сложение матриц
- Вычитание матриц
-
Статические методы:
- Сложение матриц
- Вычитание матриц
- Умножение матриц
Программа считывает из файла таблицу в формате .csv и переводит ее в формат .html
Немного о задаче программы:
Файл в формате CSV состоит из строк, в каждой из которых хранятся данные из нескольких ячеек, разделенные запятыми. Проблемы возникают, если ячейка таблицы содержит запятую или перевод строки. В таком случае содержимое ячейки заключается в двойные кавычки. Если ячейка содержит двойную кавычку, то эта кавычка дублируется.
При форматировании таблицы в языке разметки HTML таблица начинается тегом <table>
и заканчивается тегом </table>
.
Строка таблицы начинается тегом <tr>
и заканчивается тегом </tr>
(table row).
Ячейка таблицы начинается тегом <td>
и заканчивается тегом </td>
(table detail).
Перевод строки обозначается тегом <br/>
(break).
Создан свой класс односвязного списка и его элемента.
Функциональность:
- получение размера списка
- получение значение первого элемента
- получение/изменение значения по указанному индексу.
- Изменение значения по индексу, выдает старое значение.
- удаление элемента по индексу, выдает значение элемента
- вставка элемента в начало
- вставка элемента по индексу
- удаление узла по значению, выдает true, если элемент был удален
- удаление первого элемента, выдает значение элемента
- разворот списка за линейное время
- копирование списка
Своя реализация ArrayList, с использованием Generic'а.
Данный класс реализует интерфейс List.
Реализован специфичный конструктор, принимающий вместимость, а также методы ensureCapacity и trimToSize.
Методы sublist и listIterator не реализованы.
Своя реализация хэш-таблицы, с использованием Generic'а.
Данный класс реализует интерфейс Collection.
В одном из конструкторов есть возможность задать размерность таблицы.
Простая программа с использованием Swing для перевода температуры из одной шкалы в другую.
Функциональность:
- Ввод температуры в поле ввода
- Кнопка, которая переводит температуру из одной шкалы в другую
- Результат перевода выводится на форму, не редактируемый
- Можно задать из какой шкалы и в какую переводить
- Доступные шкалы: цельсия, фаренгейта, кельвина
- Если ввели не число, выводит ошибку
- Использованы layout manager’ы
-
IDE - IntelliJ IDEA