Skip to content

OOP lessons. Own implementation of the basic classes. Simple Swing program.

Notifications You must be signed in to change notification settings

TDaryaT/academit.

Repository files navigation

Assignments from "Academ IT School"

OOP lessons.

Tasks:

  1. Class Shapes
  2. Class Range
  3. Class Vector
  4. Class Matrix
  5. Translate CSV to HTML
  6. Class List
  7. Class ArrayList
  8. Class HashTable
  9. Swing for converting temperature

More about tasks:

Классы с пометкой - зачтен, были сданы до конца, остальные - закончены самостоятельно, возможны некоторые недочеты.

Class Shapes (Зачтен)

Создана иерархия классов для геометрических фигур.

Создан интерфейс Shape, в котором определены методы:

  • double getWidth()
  • double getHeight()
  • double getArea()
  • double getPerimeter()

Все фигуры реализуют этот интерфейс и правильным образом определяют данные методы

Функциональность фигур:

  1. Square – квадрат.

    • Конструктор, принимающий длину стороны
  2. Triangle – треугольник.

    • Конструктор, принимающий x1, y1, x2, y2, x3, y3 – шесть координат.

    • В качестве ширины возвращает max(x1, x2, x3) – min(x1, x2, x3)

    • В качестве высоты возвращает max(y1, y2, y3) – min(y1, y2, y3)

  3. Rectangle – прямоугольник

    • Конструктор, принимающий длины двух сторон
  4. Circle – окружность

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

    • В качестве ширины и высоты выдается диаметр

В фигурах методы toString, hashCode, equals переопределены.

Class Range (Числовой диапазон)

Свой класс промежутков, состоящий из двух полей to и from

Функциональность

  1. Конструктор, при помощи которого заполняются поля from, to
  2. Функция для вычисления длины интервала
  3. Метод isInside, который принимает вещественное число и возвращает boolean – результат проверки того, принадлежит ли число диапазону
  4. Вычисление длины интервала
  5. Получение интервала-пересечения двух интервалов. Если пересечения нет, выдать null. Если есть, то выдать новый диапазон с соответствующими концами
  6. Получение объединения двух интервалов. Может получиться 1 или 2 отдельных куска
  7. Получение разности двух интервалов. Может получиться 1 или 2 отдельных куска

Class Vector

Реализован свой класс вектор, на основе массива.

Если операции выполняются над векторами разной размерности, то считается, что у меньшего вектора в недостающих компонентах нули.

Функциональность:

  1. Конструкторы

    • Vector(n) – размерность n, все компоненты равны 0
    • Vector(Vector) – конструктор копирования
    • Vector(double[]) – заполнение вектора значениями из массива
    • Vector(n, double[]) – заполнение вектора значениями из массива. Если длина массива меньше n, то считать что в остальных компонентах 0
  2. Метод getSize() для получения размерности вектора

  3. Метод toString() в формате { 1, 2, 3 }

  4. Нестатические методы:

    • Прибавление к вектору другого вектора
    • Вычитание из вектора другого вектора
    • Умножение вектора на скаляр
    • Разворот вектора (умножение всех компонент на -1)
    • Получение длины вектора
    • Получение и установка компоненты вектора по индексу
    • Переопределенный метод equals, true ⬄ векторы имеют одинаковую размерность и соответствующие компоненты равны.
    • Переопределить метод hashCode
  5. Реализовать статические методы:

    • Сложение двух векторов – Создается новый вектор
    • Вычитание векторов – Создается новый вектор
    • Скалярное произведение векторов

Matrix

Реализован свой класс вектор, на основе предыдущего класса Vector

Функциональность:

  1. Конструкторы:

    • Matrix(n, m) – матрица нулей размера nxm
    • Matrix(Matrix) – конструктор копирования
    • Matrix(double[][]) – из двумерного массива
    • Matrix(Vector[]) – из массива векторов-строк
  2. Методы:

    • Получение размеров матрицы
    • Получение и задание вектора-строки по индексу
    • Получение вектора-столбца по индексу
    • Транспонирование матрицы
    • Умножение на скаляр
    • Вычисление определителя матрицы
    • toString, результат получался в таком виде: { { 1, 2 }, { 2, 3 } }
    • умножение матрицы на вектор
    • Сложение матриц
    • Вычитание матриц
  3. Статические методы:

    • Сложение матриц
    • Вычитание матриц
    • Умножение матриц

Translate CSV to HTML

Программа считывает из файла таблицу в формате .csv и переводит ее в формат .html

Немного о задаче программы:

Файл в формате CSV состоит из строк, в каждой из которых хранятся данные из нескольких ячеек, разделенные запятыми. Проблемы возникают, если ячейка таблицы содержит запятую или перевод строки. В таком случае содержимое ячейки заключается в двойные кавычки. Если ячейка содержит двойную кавычку, то эта кавычка дублируется.

При форматировании таблицы в языке разметки HTML таблица начинается тегом <table> и заканчивается тегом </table>. Строка таблицы начинается тегом <tr> и заканчивается тегом </tr> (table row). Ячейка таблицы начинается тегом <td> и заканчивается тегом </td> (table detail). Перевод строки обозначается тегом <br/> (break).

Class List

Создан свой класс односвязного списка и его элемента.

Функциональность:

  • получение размера списка
  • получение значение первого элемента
  • получение/изменение значения по указанному индексу.
  • Изменение значения по индексу, выдает старое значение.
  • удаление элемента по индексу, выдает значение элемента
  • вставка элемента в начало
  • вставка элемента по индексу
  • удаление узла по значению, выдает true, если элемент был удален
  • удаление первого элемента, выдает значение элемента
  • разворот списка за линейное время
  • копирование списка

Class ArrayList

Своя реализация ArrayList, с использованием Generic'а.

Данный класс реализует интерфейс List.

Реализован специфичный конструктор, принимающий вместимость, а также методы ensureCapacity и trimToSize.

Методы sublist и listIterator не реализованы.

Class HashTable

Своя реализация хэш-таблицы, с использованием Generic'а.

Данный класс реализует интерфейс Collection.

В одном из конструкторов есть возможность задать размерность таблицы.

Swing for converting temperature

Простая программа с использованием Swing для перевода температуры из одной шкалы в другую.

Функциональность:

  • Ввод температуры в поле ввода
  • Кнопка, которая переводит температуру из одной шкалы в другую
  • Результат перевода выводится на форму, не редактируемый
  • Можно задать из какой шкалы и в какую переводить
  • Доступные шкалы: цельсия, фаренгейта, кельвина
  • Если ввели не число, выводит ошибку
  • Использованы layout manager’ы

Image

Was used:

About

OOP lessons. Own implementation of the basic classes. Simple Swing program.

Topics

Resources

Stars

Watchers

Forks