Java Advanced JavaBeans. 2 СПбГУ ИТМО Georgiy KorneevJava Advanced / JavaBeans Содержание 1.Введение 2.Реализация 3.Применение 4.Хранение 5.Самоописание.

Презентация:



Advertisements
Похожие презентации
Ребусы Свириденковой Лизы Ученицы 6 класса «А». 10.
Advertisements

Michael Jackson
Школьная форма Презентация для родительского собрания.
Типовые расчёты Растворы
Урок повторения по теме: «Сила». Задание 1 Задание 2.
Java Advanced XML Transformations 1.0 (XSLT 1.0).
Лекция 2 Раздел 2.1 Windows Phone Темы раздела 3.
Ф. Т. Алескеров, Л. Г. Егорова НИУ ВШЭ VI Московская международная конференция по исследованию операций (ORM2010) Москва, октября 2010 Так ли уж.
Сериализация и RMI Java Advanced. 2Georgiy KorneevJava Advanced / Сериализация и RMI Содержание Сериализация Концепции RMI Применение RMI Заключение.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
1. Определить последовательность проезда перекрестка

Javadoc Java Advanced. 2Georgiy KorneevJava Advanced / Javadoc Содержание 1.Структура Javadoc 2.Блочные тэги 3.Строчные тэги 4.Применение Javadoc 5.Компиляция.
Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
Многопоточное программирование на Java Java Advanced.
Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
Многопоточное программирование на Java Java Advanced.
1 Попов Аркадий Леонидович Системы поддержки принятия решений.
Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от
Учебный курс Объектно-ориентированный анализ и программирование Лекция 4 Трансформация логической модели в программный код Лекции читает кандидат технических.
Транксрипт:

Java Advanced JavaBeans

2 СПбГУ ИТМО Georgiy KorneevJava Advanced / JavaBeans Содержание 1.Введение 2.Реализация 3.Применение 4.Хранение 5.Самоописание 6.Заключение

Введение Часть 1

4Georgiy KorneevJava Advanced / JavaBeans JavaBeans Компонентная модель языка Java Основные понятия Bean Свойство (property) Событие (event) Сохраняемость (persistance) Примеры Компонента GUI Модель GUI

5Georgiy KorneevJava Advanced / JavaBeans Свойство xxx Getter getXxx или isXxx Setter setXxx

6Georgiy KorneevJava Advanced / JavaBeans Типы свойств Простое (simple) Индексируемое (indexed) Связанное (bound) Ограниченное (constrained)

7Georgiy KorneevJava Advanced / JavaBeans События Генерируются при изменении свойства PropertyChangeEvent – событие getPropertyName() – имя свойства getOldValue() – старое значение getNewValue() – новое значение PropertyChangeListener – слушатель propertyChange(PropertyChangeEvent) – получатель события

Реализация Часть 2

9Georgiy KorneevJava Advanced / JavaBeans JavaBean-Класс Имеет конструктор по умолчанию Содержит одно или несколько свойств

10Georgiy KorneevJava Advanced / JavaBeans Пример. Простое свойство Свойство title Поле private String title; Getter public String getTitle() { return title; } Setter public void setTitle(String title) { this.title = title; }

11Georgiy KorneevJava Advanced / JavaBeans Реализация связанных свойств (1) Класс PropertyChangeSupport PropertyChangeSupport(Object source) – конструктор firePropertyChange(name, oldValue, newValue) – генерация события Если newValue.equals(oldValue) – событие не порождается

12Georgiy KorneevJava Advanced / JavaBeans Реализация связанных свойств (2) Класс PropertyChangeSupport addPropertyChangeListener(listener) – добавление слушателя на все свойства addPropertyChangeListener(name, listener) – добавление слушателя на указанное свойство removePropertyChangeListener(name?, listener) – удаление слушателя

13Georgiy KorneevJava Advanced / JavaBeans Пример. Связанное свойство Property change support private final PropertyChangeSupport pcs = new PropertyChangeSupport(this); Setter public void setTitle(String title) { String oldValue = this.title; this.title = title; pcs.firePropertyChange("title", oldValue, this.title); }

14Georgiy KorneevJava Advanced / JavaBeans Ограниченные свойства Процесс установки значения Сохранение старого значения свойства Извещение о предстоящем изменении Установка нового значения Извещение об установке нового значения

15Georgiy KorneevJava Advanced / JavaBeans Отклонение изменения свойства VetoableChangeListener – слушатель vetoableChange(PropertyChangeEvent event) – событие PropertyVetoException – бросается при отклонении изменения Класс VetoableChangeSupport fireVetoableChange – сообщение о предстоящем изменении addVetoableChangeListener – добавление removeVetoableChangeListener – удаление

16Georgiy KorneevJava Advanced / JavaBeans Пример. Ограниченное свойство Vetoable change support private final VetoableChangeSupport vcs = new VetoableChangeSupport(this); Setter public void setTitle(String title) throws PropertyVetoException { String oldValue = this.title; vcs.fireVetoableChange("title", oldValue, title); this.title = title; pcs.firePropertyChange("title", oldValue, title); }

17Georgiy KorneevJava Advanced / JavaBeans Индексированные свойства Getter Value[] getXxx getXxx(index) Setter setXxx(index, value) setXxx(Value[]) IndexedPropertyChangeEvent getIndex() – индекс измененного элемента PropertyChangeSupport fireIndexedPropertyChange(name, index, oldValue, newValue) – генерация события

18Georgiy KorneevJava Advanced / JavaBeans События Методы манипуляции со слушателями add ( listener) remove ( listener) При изменении списка слушателей события не генерируются

Применение JavaBean Часть 3

20Georgiy KorneevJava Advanced / JavaBeans Пассивная GUI-компонента (1) Отображает информацию из модели, не позволяя ее редактировать При обновлении модели должна перерисовываться Примеры Индикатор прогресса Список событий

21Georgiy KorneevJava Advanced / JavaBeans Пассивная GUI-компонента (1)

22Georgiy KorneevJava Advanced / JavaBeans Активная GUI-компонента (1) Отображает информацию из модели, и позволяет ее редактировать При обновлении модели должна перерисовываться При изменении информации обновляет модель Примеры Полоса прокрутки Выбор из списка Текстовое поле

23Georgiy KorneevJava Advanced / JavaBeans Активная GUI-компонента (2)

24Georgiy KorneevJava Advanced / JavaBeans Обрыв цепочки сообщений

25Georgiy KorneevJava Advanced / JavaBeans Приемы обработки Хранение данных только в модели Все данные хранятся в модели При изменении данных модель отслеживает зависимости Независимые редакторы свойств Каскадирование изменений При изменении модели изменяется и другая модель Явное обновление пассивной компоненты Слушатель модели обновляет компоненту

Хранение JavaBeans Часть 4

27Georgiy KorneevJava Advanced / JavaBeans Краткосрочное хранение Сериализация Serializable Externalizable По умолчанию, списки слушателей не сериализуются

28Georgiy KorneevJava Advanced / JavaBeans Долговременное хранение XMLEncoder – сохранение состояния XMLDecoder – загрузка состояния Процесс сохранения Создание объекта конструктором по умолчанию Сравнение всех свойств При неравенстве – запись свойства При равенстве – ничего

29Georgiy KorneevJava Advanced / JavaBeans Пример. XMLEncoder JButton button; XMLEncoder encoder = new XMLEncoder( new BufferedOutputStream( new FileOutputStream("button.xml"))); encoder.writeObject(button); encoder.close();

30Georgiy KorneevJava Advanced / JavaBeans Пример. XMLDecoder JButton button; XMLDecoder decoder = new XMLDecoder( new BufferedInputStream( new FileInputStream("button.xml"))); button = (JButton) decoder.readObject(); decoder.close();

31Georgiy KorneevJava Advanced / JavaBeans Формат XML-файла – основной контейнер – объект – вызов метода – установка свойства,, … – значения – массив

Самоописание Часть 5

33Georgiy KorneevJava Advanced / JavaBeans Самоописание (introspection) Способ описания свойств JavaBean Преимущества Переносимость Повторное использование Совместимость

34Georgiy KorneevJava Advanced / JavaBeans Описание JavaBean Интерфейс BeanInfo Методы BeanDescriptor getBeanDescriptor() – дескриптор PropertyDescriptor[] getPropertyDescriptors() – описания свойств EventSetDescriptor[] getEventSetDescriptors() – дескрипторы групп сообщений MethodDescriptor[] getMethodDescriptors() – дескрипторы методов Класс SimpleBeanInfo

35Georgiy KorneevJava Advanced / JavaBeans Дескриптор возможности Класс FeatureDescriptor Методы getName() – имя возможности getDisplayName() – отображаемое имя getShortDescription() – описание возможности isPreffered(), isExpert(), isHidden() – уровень видимости

36Georgiy KorneevJava Advanced / JavaBeans Дескриптор свойства Класс PropertyDescriptor Методы getPropertyType() – тип свойства getReadMethod() – getter getWriteMethod() – setter isBound(), isConstrained() – тип свойства getPropertyEditorClass() – тип редактора свойства Класс IndexedPropertyDescriptor getIndexedRead(Write)Method()

37Georgiy KorneevJava Advanced / JavaBeans Дескриптор группы событий Класс EventSetDescriptor Методы getListenerType() – тип слушателя getAddListenerMethod() – метод добавления слушателя getRemoveListenerMethod() – метод удаления слушателя

38Georgiy KorneevJava Advanced / JavaBeans Дескриптор метода Класс MethodDescriptor Методы getMethod() – метод getParameterDescriptors() – дескрипторы аргументов метода Класс ParameterDescriptor

39Georgiy KorneevJava Advanced / JavaBeans Получение информации о JavaBean Класс Introspector Загрузка информации для Поиск XxxBeanInfo Анализ методов Методы getBeanInfo(beanClass) – получение описания getBeanInfo(beanClass, stopClass) – получение частичного описания

40Georgiy KorneevJava Advanced / JavaBeans GUI-редакторы Позволяют редактировать свойства JavaBean Позволяют добавлять связи по событиям Позволяют добавлять обработчики событий

Заключение Часть 6

42Georgiy KorneevJava Advanced / JavaBeans JavaBean Класс с конструктором по умолчанию Содержит свойства Позволяет добавлять слушателей Serializable

43Georgiy KorneevJava Advanced / JavaBeans Ссылки JavaBeans Specification // pec.html pec.html JavaBeans Trail in Java Tutorial // ns/ ns/ Long-term JavaBean persistance // sistence2/ sistence2/

44 СПбГУ ИТМО Georgiy KorneevJava Advanced / JavaBeans Вопросы