- What такое MVC?
- What такое DAO и DTO?
- What такое POJO?
- What такое Entity?
- Какие коллекции-списки вы знаете?
- Какие коллекции-множества вы знаете?
- What такое map, чем он отличается от «словаря»?
- What такое Queue и Dequeue?
- Какие классы, реализующие интерфейс Queeue вы знаете?
- What такое дерево?
-
MVC — это такой паттерн проектирования приложение, при котором приложение разделяется на три отдельные части: модель (model), представление (view) и контроллер (controller). Модель предоставляет данные и реагируется на команды контроллера, изменяя своё состояние. Представление отвечает за отображение данных модели пользователю, реагируя на изменения модели. А контроллер интерпретирует действия пользователя, оповещая модель о необходимости изменений. Таким образом каждый из компонентов этой схемы слабо связан с другими компонентами, за счёт чего достигается гибкость программы. Чаще всего вся бизнес-логика размещается в модели, хотя иногда она содержится и в контроллере. В первом случае модель называют тонкой, в последнем — толстой.
-
DAO (Data Access Object) — это an object, основная задача которого сохранять данные в базу данные, а также извлекать их из неё. DTO (Data Transfer Object) - это an object, предназначенный для транспортировки данных. Поэтому его основная задача — хранить эти данные. НиHowой логики он не содержится. Кроме того, он должен быть сериализуемым, так How транспортировка an objectов обычно происходит с помощью сериализации-десериализации.
-
POJO переводится How "an object Java в старом стиле". Их противопоставляют EJB-an objectми. Последние следуют специальной конвенции и обычно жёстко привязаны к Howому-то конкретному enterprise-фреймворку (например, у них должен быть публичный конструктор без параметров, должен быть геттеры и сеттеры для полей, они должны быть сериализуемыми и т.д.). POJO — это, соответственно, обычный класс, не наследующий ни от Howих специальных классов и не реализующий ниHowих специальных библиотек. Обычно POJO ничего особенного не делает, и содержит только состояние.
-
Entity Bean — это бин, цель которого хранить некоторые данные. В логику такого бина встроен механизм сохранения себя и своих полей в базу данных. Такой an object может быть уничтожен, а потом воссоздан из базы заново. Но кроме хранения данных у него нет ниHowой логики. А бин в свою очередь — это особый класс, которые должен выполнять следующие правила:
- Класс должен иметь конструктор без параметров, с модификатором доступа public. Такой конструктор позволяет инструментам создать an object без дополнительных сложностей с параметрами.
- Свойства класса должны быть доступны через get, set и другие методы (так называемые методы доступа), которые должны подчиняться стандартному соглашению об именах. Это легко позволяет инструментам автоматически определять и обновлять содержание bean’ов. Многие инструменты даже имеют специализированные редакторы для различных типов свойств.
- Класс должен быть сериализуем. Это даёт возможность надёжно сохранять, хранить и восстанавливать состояние bean независимым от платформы и виртуальной машины способом.
- Класс должен иметь переопределенные методы equals(), hashCode() и toString().
-
Все коллекции-списки реализуют интерфейс List<E> и наследуются от абстрактного класса AbstractList<E>. Среди них можно выделить ArrayList<E> и LinkedList<E7gt;. ArrayList7lt;E> — это список, основаный на массиве, а LinkedList<E> — это классический двусвязный список.
-
Коллекции-множества в Java реализуют интерфейс Set<E> и наследуются от AbstractSet<E>. Множества — это такие наборы данных, в которых все элементы уникальны. Среди них в Java есть HashSet, LinkedHashSet и TreeSet. Первая коллекция хранит свои an objectы на основе хеш-codeов. Вторая — это модифицированная первая, в ней элементы ещё к тому же располагаются в связном списке, поэтому они все расположены в порядке добавления. Третья коллекция обеспечивает сортировку своих элементов.
-
Map — это вид коллекций, хранящих свои элементы в виде пар "ключ-значения". Причём все ключи должны быть уникальными. Среди реализаций есть HashMap и TreeMap. Первая реализация хранит элементы с использованием хэш-codeов. Вторая - хранит элементы в отсортированном по ключу порядке.
-
Очередь (Queue) — это структура данных, работающая по принципу "Первый вошёл — первый вышел". То есть элементы в очередь добавляются с одного конца, а извлекаются — с другого. Deque — это двусторонняя очередь. В этой очереди элементы можно добавлять How в начало, так и в конец, а также брать элементы тоже можно и из начала, и из конца очереди. Соответственно есть методы, которые позволяю положить элемент (это методы add(e) и offer(e)), и есть методы, позволяющие извлечь элемент из очереди (это такие методы, How remove() и poll()). Кроме того, есть методы, которые позволяют просто получить элемент из очереди без его удаления оттуда (это методы element() и peek()). В интерфейсе Deque дополнительно есть методы для добавления элементов в начало и конец очереди, извлечения элементов из начала or конца, а также получения элементов из начала or конца очереди (без их удаления из очереди).
-
Среди простых реализаций можно отметить ArrayDeque, LinkedList и PriorityQueue. Также существуют много классов в Concurrent Collections, которые реализуют эти два интерфейса (оба сразу or только один из них).
-
Дерево — это связный граф без петель и кратных рёбер. Обычно, если в дереве N вершин, то количество рёбер How минимум— N-1. Также одну вершину в дереве выбирают в качестве корня. Остальные вершины объявляют ветвями. Ветви, у которых нет своих ветвей, называются листьями дерева.
В программировании деревья используются довольно широко, и придумано уже много видов этого дерева. Одно из самых широкоприменяемых деревьев - это бинарное дерево. В этом дереве у каждого element имеется не больше двух потомков (то есть может быть от 0 до 2). Одной из разновидностью двоичного дерева является BST — бинарное дерево поиска. В этом дереве на элементы накладывается правило: левый потомок element должны быть по значению меньше его, а правый — по значению больше его or equals ему.
Также ещё существуют красно-чёрные деревья. Это разновидность двоичных деревьев поиска. В красно-чёрных деревьх вводится ещё одно свойство element — цвет. Цвет может быть чёрный or красный. Также каждое красно-чёрное дерево должно удовлетворять следующим требованиям:- корень дерева — чёрный;
- узел либо красный, либо чёрный;
- все листья дерева — чёрные;
- оба потомка красно узла - чёрные;
- всякий путь от данного узла до любого листового узла, являющегося его потомка, содержит одинаковое количество чёрных узлов.
GO TO FULL VERSION