n Автоупаковка – процесс автоматической инкапсуляции данных простого типа в экземпляр соответствующего ему класса-обертки в случаях, когда требуется значение ссылочного типа
n Автораспаковка – процесс автоматического извлечения примитивного значения из объекта-упаковки в случаях, когда требуется значение примитивного типа
List list = new LinkedList();
list.add(1);
int b = (Integer)list.get(0) + 10;
Особенности автоупаковки
n Происходит при присваивании, вычислении выражений и при передаче параметров
n Объекты создаются без использования ключевого слова new
Integer i = 15;
n Объекты создаются!
n Автоупаковка требует существенных
ресурсов
n Злоупотреблять автоупаковкой
вообще не стоит!
Вопрос 66 Компонентный подход в программировании. 2-6. Лекция Компонентная модель в ооп. Технология JavaBeans.
Объектный подход vs Компонентный подход
n Объектный подход
Программа пишется как объектная модель реальной или воображаемой системы, объекты и их отношения легко понятны
n Компонентный подход
Программа собирается из заранее созданных компонентов, которые могут быть достаточно сложны для понимания
Понятие компонента
n Компонент – это элемент системы, представляющий определенную службу или сущность, допускающий взаимодействие с другими компонентами
n Особенности компонентов:
l Многоразовое использование
l Независимость от контекста
l Кооперация с другими компонентами
l Инкапсуляция
l Самостоятельность как единицы программы
n Компонент – объект, написанный в соответствии со спецификацией
Требования к разработке компонентов
n Полная документация
n Более строгое тестирование
n Надежная проверка достоверности входных данных
n Возврат полезных сообщений об ошибках
n Разработка с учетом непредусмотренного использования
Контейнеры и компоненты
n Контейнер предоставляет контекст, в котором компоненты могут существовать и действовать совместно
n Контейнер тоже может быть компонентом
n Это полностью рекурсивно!
Существующие компонентные модели
n JavaBeans
n Enterprise JavaBeans
n .Net Framework Components
n ActiveX
n COM
n DCOM
n CORBA
n VLC & CLX
n …
Вопрос 67 Компоненты JavaBeans. Требования к компоненту. 7-12 Лекция Компонентная модель в ооп. Технология JavaBeans.
JavaBeans
n Компонентная модель для языка Java
n Компоненты называются Beans (бины)
n Компонент описывается как класс, удовлетворяющий определенным правилам
n Следует различать компонент как класс компонента и компоненты как его экземпляры, использующиеся в программе
n Для работы с компонентами используются специальные программные средства, позволяющие «визуально» настраивать компонент и его взаимодействие с другими компонентами (RAD-tools)
Интроспекция
n Средства работы с бинами подвергают бины интроспекции
n Интроспекция – механизм, основанный на рефлексии, позволяющий определить характеристики компонента, основываясь на информации, заключенной в именах элементов класса компонента и вспомогательных классах
Компоненты JavaBeans
n Компонент имеет свойства, которые представляют собой характеристики компонента и могут быть изменены в процессе сборки
n Компонент использует события для взаимодействия с другими компонентами
n Компоненты обладают свойством персистентности: могут сохранять свое состояние в долговременное хранилище и затем восстанавливать его
n Методы компонентов являются обычными методами Java и могут использоваться другими компонентами
Достоинства JavaBeans
n Компактность
n Переносимость
n Поддержка механизмов интроспекции
n Способность к работе в графической среде быстрой разработки приложений (RAD)
Требования к компоненту JavaBeans
n Способность к инстанцированию нового экземпляра (бин – не интерфейс, не абстрактный класс)
n Наличие конструктора по умолчанию (конструктора без параметров)
n Возможность сериализации
n Следование соглашениям об именах и способах проектирования
n Использование модели делегирования обработки событий
Удивительное рядом
n Нет общего супер-класса для бинов
n API пакета java . beans предоставляет только классы поддержки функционирования компонентов JavaBeans
n Нет никакого специализированного языка описания интерфейсов
Вопрос 68 Свойства компонентов JavaBeans. Классификация и особенности (без примеров) 13-26. Лекция Компонентная модель в ооп. Технология JavaBeans.
Свойства
n Виды свойств по способу доступа
l Допускающие запись
l Допускающие чтение
n Виды свойств по сложности
l Простые
l Индексированные
l Связанные
l Контролируемые
Простые свойства
n Доступны пользователю как пара методов доступа (setter/getter)
n Любой из этих методов может отсутствовать, определяя таким образом доступность свойства для чтения/записи (read-only/write-only)
n Соглашения именования:
l Общий вид
n public ТипСвойства get ИмяСвойства ()
n public void set ИмяСвойства (ТипСвойства значение)
l Логические свойства
n public boolean is ИмяСвойства ()
n public void set ИмяСвойства ( boolean значение)
Индексированные свойства
n Определяют доступ к массиву свойств с возможностью доступа по номеру
n Соглашения именования:
l public ТипСвойства [] get ИмяСвойства ()
l public void set ИмяСвойства
(ТипСвойства[] значения)
l public ТипСвойства get ИмяСвойства
( int индекс)
l public void set ИмяСвойства
( int индекс, ТипСвойства значение)
Связанные свойства
n Поддерживают механизм оповещения об изменениях значений свойств
n Обработчики реализуют интерфейс PropertyChangeListener и принимают объекты PropertyChangeEvent, содержащие имя свойства и его старое и новое значения
n Используется вспомогательный класс PropertyChangeSupport
Контролируемые свойства
n Похожи на связанные свойства, но перед присвоением нового значения оно должно быть проверено обработчиками
n Любой обработчик в праве запретить изменение, в этом случае значение свойства останется прежним
n Обработчики реализуют интерфейс VetoableChangeListener и принимают объекты PropertyChangeEvent, содержащие имя свойства и его старое и новое значения
n Используется вспомогательный класс VetoableChangeSupport
Вопрос 69 Графические компоненты (без примеров реализации). Упаковка в jar. Персистентость. 27-30, 40-42. Лекция Компонентная модель в ооп. Технология JavaBeans.
Графические компоненты
n Если компоненты содержит средства визуализации, то его суперкласом должен быть:
l java . awt . Component
если создается компонент на базе AWT
l javax . swing . JComponent
если создается компонент на базе Swing
n Хотя и компоненты AWT, и компоненты Swing являются компонентами JavaBeans, не рекомендуется смешивать их в одном контейнере
Персистентнось
n Способность объекта существовать во времени, переживая породивший его процесс
n Для JavaBeans реализуется за счет сериализации
n Все классы компонентов должны быть подготовлены к сериализации
n Существуют механизмы сохранения состояния бинов в xml-формат
Упаковка в Jar
n Класс компонента, вспомогательные классы, файлы помещаются в jar-архив
n В файле манифеста при этом указывается дополнительная информация:
Name: beans/MyBean.class
Java-Bean: True
Вопрос 70 Принципы обработки событий компонентов. 31-39 Лекция Компонентная модель в ооп. Технология JavaBeans.
Дата: 2019-07-30, просмотров: 233.