Коллекции.

20-01-2020

Коллекция – это программный объект, содержащий в себе набор значений одного или различных типов и позволяющий обращаться к этим значениям.

ArrayList с дженериками

В JDK 1.5 вводится новый инструмент для разрешения проблемы типобезопасности, который получил название дженерики. Дженерики позволяют передавать тип информации компилятору в форме <тип>. Таким образом, компилятор может выполнить все необходимые действия по проверке типов во время компиляции, обеспечив безопасность по приведению типов во время выполнения. Например, следующее утверждение с дженериками List<String> (читается как List of Strings)и ArrayList<String> (читается как ArrayList of Strings) информирует компилятор, что List and ArrayList должны удерживать объекты String:

List<String> lst=new ArrayList<String>() Известно, как передаются аргументы в методах. Для этого надо поместить аргументы внутри круглых скобок () и передать их в метод. В дженериках вместо передачи аргументов компилятору передается тип информации, заключенный в угловые скобки <>.

Другие принципы ООП и ООД (Д - дизайн)

  1. Программировать на уровне интерфейса, а не реализации. Следование этому принципу приведет к гибкому коду, который сможет работать с любой новой реализацией интерфейса. Используйте переменные интерфейсного типа, методы с возвращаемым значением или методы с параметрами.
  2. Не повторяться. Это означает, что не следует писать повторяющиеся коды, следует использовать принцип абстракции. Если у вас присутствует один и тот же блок кода более чем в двух местах, стоит подумать об отдельном методе для него. Если есть константа для многоразового использования, рекомендуется создать глобальную переменную с модификаторами public final. Большим преимуществом использования данного принципа является простота дальнейшей технической поддержки.
  3. Инкапсулировать то, что меняется. Инкапсулируйте код, который в будущем будет меняться. Преимущество принципа – в простоте тестирования и поддержки надлежащим образом инкапсулированного кода. При написании программ на Java следуйте правилу создания переменных и методов с модификатором доступа private, расширяя доступ шаг за шагом от private к protected, но не public.
  4. Принцип наименьшего знания, или закон Деметры. Это набор правил проектирования программного обеспечения, который гласит, что модуль не должен знать о деталях внутреннего устройства объекта, с которым он работает. Если код зависит от деталей внутреннего устройства конкретного объекта, то это может привести к повреждению программного обеспечения при изменении объекта. Этот принцип поддерживает инкапсуляция.

Согласно закону Деметры метод M объекта O может вызывать только следующие типы методов:

  • методы самого объекта O;
  • методы объекта, переданные через аргумент;
  • метод объекта, который содержится в переменной экземпляра класса;
  • любой объект, который создан локально в методе M.
  1. Голливудский принцип: «Не звоните нам, мы перезвоним вам сами». Применительно к программному обеспечению это означает, что компоненты высокого уровня (например, интерфейсы) определяют за компоненты низкого уровня (реализации), как и когда им подключаться к системе.
  2. Предпочитать композицию наследованию. Композиция значительно более гибкая, чем наследование. Композиция позволяет изменить поведение класса во время выполнения и использовать интерфейсы для создания класса с использованием полиморфизма, что приводит к гибкости.
  3. Принцип делегирования. Не делайте все самостоятельно, поручите работу соответствующему классу.
  4. Применять шаблоны проектирования.
  5. Стремиться к слабой связности взаимодействующих объектов. Чем меньше объекты знают друг о друге, тем более гибкой является система. Одному компоненту нет необходимости знать о внутреннем устройстве другого.

Литература

  1. О.И. Гуськова, "ООП в Java", Москва, 2018