Скачиваний:
62
Добавлен:
05.07.2021
Размер:
94.13 Кб
Скачать

Виды контейнеров

  • Последовательные

  • Ассоциативные

  • Контейнеры-адаптеры

Концепция контейнера представляет собой объект, который хранит в себе другие объекты. Хранимые элементы могут быть объектами или значениями встроенных типов. Данные контейнера принадлежат ему. Это означает, что когда время существования контейнера истекает, истекает и время хранения данных контейнера. Однако если данные являются указателями, то истечение срока существования указываемых ими данных необязательно. В контейнерах нельзя сохранять объекты любого вида. Тип хранимых объектов должен допускать присваивание и конструирование копированием. Базовые типы удовлетворяют этим требованиям. В собственных классах следует создавать конструктор копирования и перегрузку оператора присваивания, обращая внимания на их доступ (не прятать и не защищать).

19 мая 2021

Лекция 15 Разработка с использованием Java-платформы

Индекс TIOBE характеризует ЯП с учетом его популярности в сети интернет на основе подсчета результатов поисковых запросов, содержащих название языка.

Язык Java является интерпретируемым, за счет этого выполняется медленнее. В 1997 году был встроен JustInTime компилятор. Процесс компиляции встраивался на лету в момент интерпретации.

Этапы развития языка Java

Java разработала компания Sun Microsystems в начале 90-х годов XX века. Ведущую роль в создании языка сыграл канадский инженер Джеймс Гослинг (James Gosling). На ранних этапах разработки язык назывался Oak. Затем его переименовали в честь сорта кофе Java. Связь языка с напитком отражается в логотипе.

JDK - инструментарий Java разработчиков, включающий в себя Java компилятор (Java C), собственную библиотеку классов, документация, дополнительные утилиты и непосредственно исполняющую систему Java (JRE).

В версию JDK 1.2 была добавлена поддержка Collections Framework (аналоги контейнеров библиотеки STL). В версию 1.4 была добавлена обработка регулярных выражений, связывания исключений в цепочки (Exception Chaining), поддержка канальной системы ввода-вывода (NIO), поддержка адресации в сети API версии 6, поддержка логирования.

В JDK версии 5.0 были добавлены обобщения, аннотации, позволяющие маркировать код необходимыми свойствами и проводить анализ этой маркировки, указывая, какой модуль должен анализировать соответствующую аннотацию. В версии 5 была внедрена конструкция, которая называется автоупаковка и автораспаковка, позволяющие конвертировать примитивные типы и соответствующие им типы классов-оберток (wrappers) и следовательно снизить количество необходимого кода. При этом автоупаковка и автораспаковка всегда выполняются автоматически.

В версию 1.5 было добавлено ключевое слово Enum, позволяющее создавать наборы данных, которые имеют ограниченное количество значений и представляют собой альтернативные значения. Была добавлена возможность передачи переменного количества аргументов (var args) для сокращения количества перегрузок методов. Добавлена реализация цикла foreach, который позволяет перемещаться по элементам коллекции в одном направлении без возможности их модификации. Добавлен статический импорт, позволяющий подключать статически компоненты классов для сокращения конечного ввода.

В версии 1.6 была улучшена работа Java виртуальной машины и оптимизированы алгоритмы сборщика мусора.

В версии 7 был добавлен интерфейс autocloseable, позволяющий делегировать закрытие открытых ресурсов исполняющей системе, был добавлен ромбовидный оператор < >, возможность записи чисел через подчеркивание (123_456_789), было добавлено автоматическое выведение типов (TYPE INFERENCE), позволяющее слева от знака равно указать параметр шаблонного класса, справа от знака равно не указывать, позволяя системе вывести тип в момент выполнения этого оператора. Был добавлен, так называемый, multi- catch, позволяющий в качестве типа объекта, обрабатываемого блока catch, указывать не один, а несколько типов. Типы при этом разделяются одним вертикальным слешем и не должны иметь общих базовых классов.

В 8 версии были добавлены замыкания (лямбда-выражения), позволяющие значительно сократить объем создаваемого кода.