Skip to content

Latest commit

 

History

16 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

JavaIntroCertification

Промежуточная аттестация по курсу "Java: знакомство и как пользоваться базовым API (семинары)" от GeekBrains.

Задание

Подумать над структурой класса Ноутбук для магазина техники - выделить поля и методы. Реализовать в java.

Создать множество ноутбуков.

Написать метод, который будет запрашивать у пользователя критерий (или критерии) фильтрации и выведет ноутбуки, отвечающие фильтру. Критерии фильтрации можно хранить в Map. Например:

Введите цифру, соответствующую необходимому критерию:

  1. ОЗУ
  2. Объем ЖД
  3. Операционная система
  4. Цвет

Далее нужно запросить минимальные значения для указанных критериев - сохранить параметры фильтрации можно также в Map.

Отфильтровать ноутбуки их первоначального множества и вывести проходящие по условиям.

Особенности решения

Для решения задачи написаны следующие классы:

  • Parameter для хранения раздела, к которому параметр относится, имени параметра, а также типа данных для параметра.
  • Definition для хранения параметра и его значения.
  • Laptop для хранения основной информации о ноутбуке и набора параметров.
  • LaptopCatalog для генерации случайного набора ноутбуков, хранения набора, получения набора ноутбуков с использованием разных коллекций, хранения параметров фильтрации ноутбуков и получения списка отфильтрованных ноутбуков.
  • Program определяет логику взаимодействия с пользователем программы.

Для класса Laptop выделены в отдельные поля те параметры, которые определяют неотъемлемые параметры товара: бренд и модель, цвет, артикул и штрих-код, цена и скидка, а также набор необязательных параметров.

Особенности класса Parameter

В классе Parameter определены поля section для хранения значения раздела параметра (например, раздел "CPU" для параметров процессора), name для хранения названия параметра, valueType для хранения типа данных для параметра: 0 для строковых, 1 для целочисленных, 2 для чисел с плавающей запятой двойной точности.

Особенности класса Definition

В классе Definition хранятся ссылки на параметры, а также их значения, которые пакуются в класс Object. При получении значения из экземпляра Definition его необходимо распаковать, используя информацию о типе данных, которая хранится в екземляре класса Parameter.

Особенности класса Laptop

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

При проверке эквивалентности двух экземпляров класса Laptop проверяются как основные параметры, хранящиеся в полях, так и весь набор необязательных параметров.

Строковое представление экземпляра класса Laptop отображает значения всех только обязательных параметров.

Для создания хэш-кодов используются только обязательные параметры. При добавлении в HashMap одинаковых по обязательным параметрам, но разных по необязательным параметрам экземпляров происходит сравнение методом Object.equals и новый экземплеяр не перезаписывает старый.

Особенности класса LaptopCatalog

Класс LaptopCatalog хранит набор экземпляров класса Laptop в HashSet коллекции. Кроме набора ноутбуков, каталог хранит параметры фильтрации: HashMap коллекции <Parameter, Double> для минимальных и максимальных значений параметров, а также <Parameter, HashSet<String>> для набора допустимых значений строковых параметров.

Заполнение параметров фильтрации происходит через ряд методов доступа к значениям полей класса LaptopCatalog в классе Program.

Особенности класса Program

В классе Program определена вся логика взаимодействия с пользователем.

В программе определено несколько разных представлений:

  • Приветственное представление (выбор режима работы)
  • Представление полного списка ноутбуков
  • Представление набора параметров для настройки фильтрации
  • Представление настройки отдельного параметра (для строковых и числовых типов разные)
  • Представление фильтрованного списка ноутбуков
  • Предстваление подробной информации по отдельному ноутбуку

Из всех основных разделов обеспечена возможность перехода в другие основыне разделы, возможность вернуться к начальному экрану, а также возможность завершить программу.

Настройка параметров фильтрации выполняется до тех пор, пока пользователь не подтвердит, что все параметры настроены вводом ключа "d" (done).

About

Промежуточная аттестация по курсу "Java: знакомство и как пользоваться базовым API (семинары)" от GeekBrains.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages