Справочник от Автор24
Поделись лекцией за скидку на Автор24

UML: задачи и структура; диаграммы

  • 👀 382 просмотра
  • 📌 324 загрузки
Выбери формат для чтения
Статья: UML: задачи и структура; диаграммы
Найди решение своей задачи среди 1 000 000 ответов
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «UML: задачи и структура; диаграммы» pdf
План лекции n n UML: задачи и структура Краткое описание видов диаграмм: l l l l l l l l l Диаграммы прецедентов Диаграммы классов Диаграммы объектов Диаграммы компонентов Диаграммы развертывания Диаграммы последовательности Диаграммы кооперации Диаграммы состояний Диаграммы деятельности 1 Метод моделирования n Язык моделирования Нотация, используемая методами для описания проектов n Процесс Рекомендация относительно этапов, которые необходимо выполнить при разработке проекта 2 UML UML (Unified Modeling Language) – унифицированный язык моделирования n n n n 1995 Unified Method (v0.8) 1997 UML 1.0 (Буч, Рамбо, Джекобсон) UML 1.1 (OMG) 2005 UML 2.0 2010 UML 2.3 3 Состав UML n Нотация Совокупность графических элементов, обычно используемых в моделях; является синтаксисом языка моделирования n Метамодель Диаграммы, определяющие нотацию 4 Области применения n Общение между разработчиками n Объектно-ориентированный подход n Общение с экспертами предметной области Передача информации в графическом виде на различных уровнях разработки Работа с ОО-приемами в графичекой форме Описание вариантов использования (концептуальный подход) 5 Процесс разработки Начало Исследование Построение 1 2 3 Внедрение ... n Все фазы могут быть итеративными n UML может быть использован в любой фазе 6 Модель в UML n Элементы модели l l l n Сущности Структурные, Поведенческие, Группировки, Примечания Отношения Зависимость, Ассоциация, Обобщение Диаграммы Модель определяется с помощью диаграмм, но сущности и отношения существуют вне диаграмм 7 Аналитическая модель n Определение круга лиц и систем, заинтересованных и участвующих в работе системы n Определение их типичных задач и потребностей Диаграммы прецедентов n Выделение бизнес-объектов и выяснения связей между ними Диаграммы классов 8 Виды диаграмм Диаграммы прецедентов Элементы модели 9 Прецедент n Прецедент (вариант использования, use case) – это модель поведения системы n Представляет собой последовательность действий системы и пользователя, направленных на осуществление бизнесоперации n Может включать в себя несколько сценариев 10 Документирование прецедентов n Описывается бизнес-процесс прецедента: кто и как выполняет действия n UML не регламентирует способ описания прецедента n Но обычно это документ, описывающий прецедент в виде последовательности действий с альтернативами 11 Диаграмма прецедентов n Диаграмма прецедентов (диаграмма вариантов использования, use case diagram) n Не описывает прецеденты как таковые n Но описывает их взаимоотношения и участников 12 Элементы диаграммы прецедентов n Действующие лица (actors) Кто-либо, осуществляющий взаимодействие с системой Шеф-повар Поставщик Приготовление второго Покупка мяса n Прецеденты n Отношения между прецедентами «extends» «uses» Приготовление мяса 13 Пример диаграммы прецедентов Осуществление сделки Отдел продаж Клиент «uses» Изучение спроса Отдел маркетинга 14 Виды диаграмм Диаграммы прецедентов Диаграммы классов Элементы модели 15 Диаграмма классов n Диаграмма классов (class diagram) n Описывает типы объектов системы и различного рода существующие между ними статические отношения n Статические отношения: ассоциации и подтипы n Также отображаются атрибуты и операции классов и ограничения, накладываемые на связи между объектами 16 Подходы к использованию n Концептуальная точка зрения Представление понятий предметной области n Точка зрения спецификации Программная система на уровне интерфейсов n Точка зрения реализации Программная система на уровне реализации 17 Пример диаграммы классов Заказ -датаПолучения -оплачен -номер : Строка -цена : Деньги +отправить() +закрыть() 1 * класс Клиент -имя атрибуты -адрес +рейтингКредита() : Строка операции ассоциация * 1 кратность: обязательная обобщение ограничение {Если Заказ.клиент.рейтингКредита == "низкий", то значение Заказ.оплачен должно быть истинным} -Позиции заказа Строка заказа -количество : Целое -цена : Деньги -удовлетворен : Булев Корпоративный клиент -контактноеИмя -рейтингКредита -лимитКредита +напомнить() +счетЗаМесяц() {рейтингКредита() == "низкий"} кратность: * многозначная Товар * Индивидуальный клиент -номер кредитной карточки имя роли -Отчет о продажах 1 Сотрудник 0..1 кратность: необязательная 18 Класс n n n Элемент описывает тип объекта Описание состоит из трех частей: l Имя класса l Список атрибутов l Список операций Заказ -датаПолучения -оплачен -номер : Строка -цена : Деньги +отправить() +закрыть() Атрибуты и операции необязательны 19 Видимость элементов n Модификаторы видимости + общедоступная (public) # защищенная (protected) – закрытая (private) Class +publicAttr #protectedAttr -privateAttr +publicOp() #protectedOp() -privateOp() 20 Атрибуты n Формат записи <видимость> <имя>: <тип>= <значение по умолчанию> Могут быть необязательными n Единственное направление навигации n Тип скорее обладает значением, чем семантикой ссылки n 21 Операции n Представляют собой процессы, реализуемые классом n Формат записи <видимость><имя>(<список параметров>): <выражение-возвращающее-значениетипа> {<строка свойств>} n Список параметров <направление> <имя> : <тип> = <значение по умолчанию> 22 Ассоциации n Концы ассоциации n Имена ролей n Кратность 1, 1..3, 3..*, *, 0..1 n Направление ассоциации (навигация) n Агрегация и композиция Class1 Class3 1 -Role one 0..1 -Role one * -Role two 1..* -Role two Class2 Class4 23 Обобщение n Обозначает подтипы (во всех смыслах) n Позволяет использование принципа замещения n Различается с точки зрения спецификации и реализации Class1 Class2 24 Ограничения n n n Не все ограничения описываются средствами атрибута, ассоциации и обобщения Ограничения записываются в фигурных скобках Допускаются: l l l естественный язык язык объектных ограничений (OCL) утверждения на языке программирования {Здесь записывается текст ограничения} 25 Стереотипы n Стереотипы являются механизмом расширения ядра языка UML n Обычно записываются с помощью текста, заключенного в кавычки n Профиль – часть языка UML, расширяет его с помощью стереотипов, предназначенных для специальных целей 26 Интерфейсы и абстрактные классы n n Курсив Ограничение (стереотип) InputStream FileInputStream +read() : int +read() : int Editor InputStream зависимость «interface» DataInput +readInt() : int обобщение SomeReader DataInputStream реализация n Специальный вид SomeReader зависимость интерфейс DataInput DataInputStream InputStream 27 Операции и атрибуты в контексте класса Контекст класса Контекст класса n Class -objectAttr -classAttr +objectOp() +classOp() Контекст экземпляра Контекст экземпляра В Java реализуется статическими полями и методами 28 Применение диаграмм классов + Являются основой почти всех объектноориентированных методов – Весьма богатая нотация n Выбор точки зрения модели должен соответствовать конкретному этапу работы над проектом n Следует концентрироваться на главных аспектах 29 Виды диаграмм Диаграммы прецедентов Элементы модели Диаграммы классов Диаграммы объектов 30 Диаграмма объектов n Диаграмма объектов (object diagram) v1 : LinkedListVector itemCount : int = 3 head n Мгновенный снимок объектов системы с точки зрения времени head : ListItem value : double = NaN prev next next prev : ListItem value : double = 11 n Могут быть указаны значения атрибутов и связей : ListItem value : double = 33 next prev next prev : ListItem value : double = 22 31 Виды диаграмм Диаграммы прецедентов Элементы модели Диаграммы классов Диаграммы объектов Диаграммы компонентов 32 Диаграмма компонентов n n Диаграмма компонентов (component diagram) Показывает различные компоненты системы и зависимости между ними n Компонент представляет собой физический модуль программного кода n Зависимости между компонентами показывают, как изменения одного компонента могут повлиять на изменения других компонентов SomeClient Vector Vector LinkedListVector ArrayVector ListItem Array 33 Виды диаграмм Диаграммы прецедентов Диаграммы классов Диаграммы объектов Элементы модели Диаграммы компонентов Диаграммы развертывания 34 Диаграмма развертывания n n n n Диаграмма развертывания (deployment diagram) Отражает физические взаимосвязи между программными и аппаратными компонентами системы Средство для представления маршрутов перемещения объектов и компонентов в распределенной системе Узел представляет собой некоторый тип вычислительного устройства – в большинстве случаев самостоятельную часть аппаратуры Cell Phone DBMS Server JavaME DBMS MobileClient.jar Listener * * 1 1 Application Server JavaEE Envioroment Connection Session Bean DBMS Thin Client JDBC Entity Bean 35 Виды диаграмм Диаграммы прецедентов Диаграммы классов Диаграммы объектов Элементы модели Диаграммы кооперации Диаграммы последовательности Диаграммы компонентов Диаграммы развертывания 36 Диаграммы взаимодействия n Представляют собой модели, предназначенные для описания поведения взаимодействующих групп объектов n Обычно описывают поведение только в рамках одного прецедента n Существует два вида диаграмм взаимодействия: l диаграммы последовательности l диаграммы кооперации 37 Диаграмма последовательности n n n n Диаграмма последовательности (sequential diagram) Порядок действий определяется расположением Показывает скорее порядок действий, чем взаимодействующие объекты Элементы диаграммы: l l l l l l l l l Линия жизни Сообщения Активность Условия сообщений Итерации Возврат Создание Удаление Самовызов 38 Диаграмма последовательности окно Ввода Заказа Заказ приготовиться() сообщение Строка Заказа Запас Товара объект итерация * приготовиться() проверитьЗапасТовара() [имеетЗапас] удалить() условие возврат самовызов необходимостьДоказана:= необходимоДоказать() [необходимостьДоказана] новый Повторный Заказ Товара [имеетЗапас] новый создание ПозицияДоставки удаление 39 Диаграмма кооперации Диаграмма кооперации (collaboration diagram) n Временная последовательность указывается нумерацией n Показывает скорее группы взаимодействующих объектов, чем порядок действий n Нумерация может быть вложенной n Допускается управляющая информация n 40 Диаграмма кооперации 2: * [для всех строк заказа]: приготовиться() 1: приготовиться() : Окно Ввода Заказа : Заказ номер в последовательности строка Макаллена : Строка Заказа () ка р е () ов ить р п л := уда с : па с] За апа ь т ес тьЗ 3: : [ес 4 5: нуженПовторынйЗаказ := сделатьПовторныйЗаказ() запас Макаллена: Элемент Запаса в но в По н же [н у н то р 6: : Элемент Повторного объект заказа З ый ый з]: а к сообщение а 7: [естьЗапас]: новый самоделегирование : Элемент Поставки 41 Применение диаграмм взаимодействия n Когда вы хотите описать поведение нескольких объектов в рамках прецедента n Если необходимо описать один объект в различных прецедентах? Диаграмма состояний n Если необходимо описать несколько прецедентов или несколько нитей процесса? Диаграмма деятельности 42 Виды диаграмм Диаграммы деятельности Диаграммы состояний Диаграммы прецедентов Диаграммы классов Диаграммы объектов Элементы модели Диаграммы кооперации Диаграммы последовательности Диаграммы компонентов Диаграммы развертывания 43 Диаграмма состояний n Диаграмма состояний (state diagram) n Описывает состояния объекта и переходы между ними под воздействием внешних событий n Переходы могут сопровождаться деятельностью n Переходы могут иметь условия перехода n Состояния могут сопровождаться деятельностью n Два выделенных состояния: начало (обязательно) и конец (необязательно) 44 Диаграмма состояний [Не все позиции проверены] / получить следующую позицию рефлексивный переход [Все позиции проверены && все позиции доступны] Проверка состояние Отправка условие [Все позиции проверены && некоторые позиции отсутствуют на складе] переход [все позиции доступны] / Позиция получена / Отправлен / получить первую позицию заказа Ожидание начало Доставка [некотоные позиции отсутствуют на складе] / Позиция получена 45 Диаграмма деятельности n Диаграмма деятельности (activity diagram) n Описывает выполняемую деятельность и последовательность ее выполнения n Допускает выбор направления деятельности n Допускает одновременность выполнения различной деятельности n Сходна с диаграммой состояний, если рассматривать выполнение деятельности как состояние системы 46 Диаграмма деятельности начало Поступление заказа Заполнить Бланк Заказа сторожевое [срочный условие заказ] разделение деятельность Выставить счет [иначе] ветвление Срочная доставка Обычная доставка Получить оплату слияние соединение Закрыть Заказ окончание 47 Виды диаграмм Диаграммы деятельности Диаграммы состояний Диаграммы прецедентов Диаграммы классов Диаграммы объектов Элементы модели Диаграммы кооперации Диаграммы последовательности Диаграммы компонентов Диаграммы развертывания 48 Виды диаграмм n Структурные диаграммы (structure diagrams) Описывают структуру системы и статические отношения ее элементов n Диаграммы поведения (behavior diagrams) Описывают поведение системы, то, что в ней происходит n Диаграммы взаимодействия (interaction diagrams) Описывают поведение системы на более детальном уровне, указывая порядок взаимодействия и потоки данных 49 Спасибо за внимание! Дополнительные источники n Фаулер, М. UML. Основы. Краткое руководство по стандартному языку объектного моделирования [Текст] / Мартин Фаулер. – М. : Символ-плюс, 2011. – 192 с. n Максимчук, Р.А. UML для простых смертных [Текст] / Роберт А. Максимчук, Эрик Дж. Нейбург. – М. : Лори, 2008. – 304 с. n UML Resource Page [Электронный ресурс]. – Режим доступа: http://www.uml.org/, дата доступа: 21.10.2011. n UML Quick Reference [Электронный ресурс]. – Режим доступа: http://www.holub.com/goodies/uml/, дата доступа: 21.10.2011. n Architecture and Design: Unified Modeling Language (UML) [Электронный ресурс]. – Режим доступа: http://www.cetus-links.org/oo_uml.html, дата доступа: 21.10.2011. План лекции n Общие принципы n Document type definition n SAX и DOM n Работа с SAX и DOM в Java n Запись XML в Java n XML-сериализация в Java 1 У истоков n Standard Generalized Markup Language (SGML) l Предназначался для описания структуры сложных документов l Был разработан в 1970 году l Основные цели: Все документы должны быть выполнены в строгом соответствии с правилами n Уменьшение количества документации n 2 Наследники n Hypertext Markup Language (HTML) Язык разметки гипертекста (описание представления Web-страницы) n Extensible Markup Language (XML) Язык для описания иерархических данных (портируемое хранение данных) http://www.w3.org/XML/ 3 Отличия XML от HTML n XML чувствителен к регистру n В XML нельзя «опускать» закрывающие тэги n В XML часто встречаются тэги, одновременно открывающие и закрывающие n В XML значения атрибутов должны быть заключены в кавычки n В XML все атрибуты должны иметь значения 4 Пример XML <font> <name>Helvetica</name> <size>36</size> </font> Times Roman 12 400 200 0 50 100 Times Roman Helvetica 5 Структура XML-документа n Заголовок n Объявления типа документа n Корневой элемент 6 Структура XML-документа n Смешанное наполнение не рекомендуется Helvetica 36 n Существуют атрибуты Helvetica 36 7 Некоторые инструкции n Символы é, ™ n Стандартные символы < > & " ' n Инструкции обработки n Комментарии 8 Правильный документ n Начинается с объявления n Содержит один уникальный корневой элемент n Все открытые теги закрываются n Учтена чувствительность к регистру n Теги корректно вложены друг в друга n Значения всех атрибутов заключены в кавычки n Специальные символы задаются с помощью инструкций 9 Document Type Definition (DTD) n n n n Содержит правила, описывающие структуру документа Транслятор может автоматически проверять документ на соответствие этим правилам Описывает дочерние элементы и атрибуты для каждого элемента Включение в XML-документ 10 Регулярные выражения Правило Смысл E* E+ E? E1|E2|…|En E1, E2, …, En #PCDATA (#PCDATA|E1|…|En)* ANY 0 или больше вхождений Е 1 или больше вхождений Е 0 или 1 вхождение Е Одно из Е1, Е2, …, Еn Последовательность E1, E2, …, En Текст Смешанное наполнение Произвольный дочерний тэг EMPTY Нет дочерних тэгов 11 Примеры выражений Описание меню Описание шрифта Описание главы в книге 12 Описание атрибутов: типы Тип CDATA (A1|A2|…|An) Смысл Произвольная строка Один из строковых атрибутов A1, A2, …, An NMTOKEN, NMTOKENS Одна или более строк, записанных по правилам имен ID IDREF, IDREFS Уникальный ID Одна или более ссылка на уникальный ID ENTITY, ENTITIES Ссылки на внешние сущности 13 Описание атрибутов: значения Значение Смысл #REQUIRED Атрибут обязателен #IMPLIED Атрибут опционален A Атрибут опционален, если значение не указано, то принимается равным A #FIXED A Атрибут не указывается или равен A 14 Примеры выражений 15 XML Schema n n n Предназначена для того же, что и DTD Для описания правил используется непосредственно XML Имеет более гибкие возможности, чем DTD l l l l n n Расширяема Более гибкие возможности Есть понятие типа данных Есть понятие пространства имен Сложнее в восприятии и программировании средств, ее обрабатывающих www.w3.org/XML/Schema http://www.w3schools.com/Schema/default.asp 16 Поддержка типов данных n Проще описывать допустимое содержимое документа n Проще проверять корректность данных n Проще накладывать ограничения на данные n Проще определять формат данных 17 XML Schema описывается на XML n Не требуется изучение еще одного языка n Вы можете использовать свой любимый XML-редактор для работы со схемой n Вы можете работать со схемой программно n Вы можете изменять свою схему с помощью XSLT 18 Документ и тип DTD Tove Jani Reminder Don't forget me this weekend! to (#PCDATA)> from (#PCDATA)> heading (#PCDATA)> body (#PCDATA)> 19 XML Schema для документа 20 Указание типа документа 21 Extensible Stylesheet Language (XSL) n n n n n Комплекс технологий, связанных с преобразованием и представлением XML-документов Обычно используется для преобразования документов в XML, HTML, текст и PDF (XSL-FO) XSL Transformations (XSLT) – язык, на котором описываются правила преобразования XPath – язык, позволяющий формулировать используемые в процессе преобразования выражения, использующие различные фрагменты документа http://www.w3.org/Style/XSL/ http://www.w3schools.com/xsl/ 22 XPath Вспомогательный язык, позволяющий обращаться к элементам документа n Имя элемента представляется в виде пути /bookstore/book/title n Обращение может происходить и к атрибутам n http://www.w3.org/TR/xpath http://www.w3schools.com/Xpath/default.asp n 23 Примеры выражений XPath Выражение Результат bookstore Все дочерние элементы для элемента bookstore /bookstore Корневой элемент bookstore bookstore/book Все элементы book, дочерние для bookstore //book Все элементы book в документе bookstore//book Все элементы book в рамках элемента bookstore @lang Атрибуты lang . Текущий элемент .. Родительский элемент 24 Принципы XSL n n Контекстно-зависимый язык Основные элементы – выводимый текст и шаблоны l l Текст просто выводится Шаблоны описывают некоторые действия n n n n Могут быть вызваны явно Могут быть вызваны неявно, по условию совпадения шаблона Имеются средства управления ходом выполнения Позволяет создавать и вызывать бибилиотеки с помощью тега 25 Пример XSL

My CD Collection

Title Artist
26 Обработка XML Два подхода n Simple API for XML (SAX) Порождает события в процессе чтения XML документа n Document Object Model (DOM) Представляет XML документ в форме древовидной структуры элементов 27 Логика SAX Events XML SAX Parser Document Handler Business Logic Error Handler DTD Handler Entity Resolver SAX Parser Factory 28 Логика DOM DOM Tree XML DOM Document Builder Business Logic Error Handler Entity Resolver Document Builder Factory 29 Особенности SAX и DOM SAX DOM Модель обработки событий Древовидная структура данных Последовательный доступ (поток событий) Произвольный доступ (структура данных в памяти) Используется мало памяти (порождаются только события) Используется много памяти (документ загружен полностью) Для обработки частей документа (обработка релевантных событий) Для редактирования документа (обработка данных в памяти) Для однократной обработки документа Для многократной обработки документа 30 Работа с XML в Java n Стандартные интерфейсы lВ оригинале описаны на Interface Definition Language (OMG IDL) l Пакет org.w3c.dom l Пакет org.xml.sax n Реализующие классы l Предоставляются отдельно… l JAVA API for XML Processing (JAXP) Пакет javax.xml 31 Работа с SAX n Обработку документа производит транслятор, передающий информацию зарегистрировавшимся обработчикам событий n Обработчики должны реализовывать интерфейсы l l l l l l l l l org.xml.sax.ContentHandler org.xml.sax.DTDHandler org.xml.sax.EntityResolver org.xml.sax.ErrorHandler org.xml.sax.Locator org.xml.sax.ext.DeclHandler org.xml.sax.ext.EntityResolver2 org.xml.sax.ext.LexicalHandler org.xml.sax.ext.Locator2 SAX SAX2 32 Пакет javax.xml.parsers n Класс SAXParserFactory Образец проектирования Singleton, позволяет настроить и получить экземпляр фабрики для производства SAXParser n Класс SAXParser Непосредственно транслятор, экземпляры получаются от фабрики SAXParserFactory 33 Семантика документа n Возникающие события l l l startElement / endElement Открывающий и закрывающий тэг characters Символы startDocument / endDocument Начало и конец документа n Интерфейс ContentHandler l startElement() l endElement() l characters() l startDocument() l endDocument() 34 Создание обработчика событий n Реализация нужного интерфейса, настройка на него используемого транслятора n Использование класса org.xml.sax.helpers.DefaultHandler или org.xml.sax.helpers.DefaultHandler2 реализующих все интерфейсы обработки событий (все методы имеют пустые тела) 35 Пример. Часть 1 import import import import import import org.xml.sax.*; org.xml.sax.helpers.*; org.xml.sax.SAXException; org.xml.sax.SAXParseException; javax.xml.parsers.*; java.io.IOException; public class ReaderSAX extends DefaultHandler { private int indent = 0; final static int INDENT = 4; public void startDocument() throws SAXException { printString ("Начало документа"); } public void endDocument() throws SAXException { printString ("Конец документа"); } 36 Пример. Часть 2 public void startElement (String uri, String localName, String qName, Attributes attributes) throws SAXException { indent += INDENT; printString ("Элемент " + qName + ":"); } public void endElement (String uri, String localName, String qName) throws SAXException { printString ("Конец элемента " + qName + "."); indent -= INDENT; } public void warning (SAXParseException e) throws SAXException { System.out.println ("Предупреждение :" + e.getPublicId()); } 37 Пример. Часть 3 public void error (SAXParseException e) throws SAXException { System.out.println ("Ошибка :" + e.getPublicId()); } public void fatalError (SAXParseException e) throws SAXException { System.out.println ("Фатальная ошибка :" + e.getPublicId()); } public void characters (char[] ch, int start, int length) throws SAXException { indent += INDENT; String str = new String (ch, start, length); printString (str); indent -= INDENT; } 38 Пример. Часть 4 public void printString (String str) { String ind_s; if (indent > 0) { char[] ind = new char[indent]; java.util.Arrays.fill(ind, ' '); ind_s = new String (ind, 0, indent); } else { ind_s = ""; } System.out.println (ind_s + str); } 39 Пример. Часть 5 public static void main (String[] args) { DefaultHandler handler = new ReaderSAX(); SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = null; try { parser = factory.newSAXParser(); parser.parse ("test.xml", handler); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } 40 Работа с DOM n Считывание документа, опять же, реализует транслятор n Результат считывания возвращается в виде дерева объектов, реализующих интерфейс org.w3c.dom.Node n Дальнейшая обработка ведется уже на уровне бизнес-логики 41 Пакет org.w3c.dom n n Базовый интерфейс Node, содержит основные методы работы с узлом От него наследуют специфические интерфейсы для конкретных видов узлов: l l l l l l n Document Element Text Comment Attr и др. Каждый интерфейс добавляет новую функциональность (например Document, является фабрикой для создания остальных узлов) 42 Пакет javax.xml.parsers n Класс DocumentBuilderFactory Образец проектирования Singleton, позволяет настроить и получить экземпляр фабрики для производства DocumentBuilder n Класс DocumentBuilder Непосредственно транслятор, экземпляры получаются от фабрики DocumentBuilderFactory 43 Пример. Часть 1 import import import import org.w3c.dom.*; org.xml.sax.SAXException; javax.xml.parsers.*; java.io.IOException; public class ReaderDOM { private int indent = 0; final static int INDENT = 4; private static final String[] TYPE_NAMES = { "ELEMENT_NODE", "ATTRIBUTE_NODE", "TEXT_NODE", "CDATA_SECTION_NODE", "ENTITY_REFERENCE_NODE", "ENTITY_NODE", "PROCESSING_INSTRUCTION_NODE", "COMMENT_NODE", "DOCUMENT_NODE", "DOCUMENT_TYPE_NODE", "DOCUMENT_FRAGMENT_NODE", "NOTATION_NODE" }; public String getTypeName (short nodeType) { return TYPE_NAMES[nodeType - 1]; } 44 Пример. Часть 2 public static void main(String[] args) { try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse("test.xml"); ReaderDOM obj = new ReaderDOM(); obj.myPrint (document); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } } 45 Пример. Часть 3 public void myPrint (Document document) { printDocInfo (document); printNodeInfo (document); } public void printDocInfo (Document document) { printString ("Имя узла документа : " + document.getNodeName()); } public void printElementInfo (Element element) { NamedNodeMap nnm = element.getAttributes(); for (int i = 0; i < nnm.getLength(); i++) { Attr attr = (Attr)nnm.item (i); printString ("Attribute name = " + attr.getName() + ", value = " + attr.getValue()); } } public void printTextInfo (Text text) { printString ("Значение поля : " + text.getData()); } 46 Пример. Часть 4 public void printNodeInfo (Node node) { indent += INDENT; printString ("Node name = " + node.getNodeName() + ", node type = " + getTypeName (node.getNodeType())); if (node instanceof Element) { printElementInfo ((Element)node); } else if (node instanceof Text) { printTextInfo ((Text)node); } NodeList nl = node.getChildNodes(); for (int i = 0; i < nl.getLength(); i++) { printNodeInfo (nl.item (i)); } indent -= INDENT; } 47 Пример. Часть 5 public void printString (String str) { String ind_s; if (indent > 0) { char[] ind = new char[indent]; java.util.Arrays.fiil(ind, ' '); ind_s = new String (ind, 0, indent); } else { ind_s = ""; } System.out.println (ind_s + str); } } 48 Запись XML n Средствами пакета javax.xml.transform n Средствами API третьих фирм JDOM (www.jdom.org) l Тот же DOM, но реализованный более дружелюбно для Java l Поддерживает XPath и XSLT 49 Пример. Часть 1 import import import import import import import org.w3c.dom.*; org.xml.sax.SAXException; javax.xml.parsers.*; javax.xml.transform.*; javax.xml.transform.dom.*; javax.xml.transform.stream.*; java.io.IOException; public class WriterDOM { public static void main(String[] args) { try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = null; builder = factory.newDocumentBuilder(); Document document = builder.parse("test.xml"); DOMSource dom_source = new DOMSource (document); StreamResult out_stream = new StreamResult("test2.xml"); 50 Пример. Часть 2 TransformerFactory tFactory = TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer(/* !!!! */); // // // // Вспомогательные действия, связанные с тем, что такая элементарная трансформация не "копирует" директиву !DOCTYPE. В зависимости от PUBLIC- или SYSTEM-описания DTD, можно использовать разные свойства transformer'а DocumentType docType = document.getDoctype(); String systemID = docType.getSystemId(); String publicID = docType.getPublicId(); String res = publicID + "\" \"" + systemID; // transformer.setOutputProperty // (OutputKeys.DOCTYPE_SYSTEM, systemID); transformer.setOutputProperty (OutputKeys.DOCTYPE_PUBLIC, res); 51 Пример. Часть 3 // Прочие настройки преобразователя t.setOutputProperty(OutputKeys.INDENT, "yes"); t.setOutputProperty(OutputKeys.METHOD, "xml"); t.setOutputProperty("{http://xml.apache.org/xslt}indent-amount”,"2"); transformer.transform (dom_source, out_stream); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (TransformerConfigurationException e){ e.printStackTrace(); } catch (TransformerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } } } 52 Настройка преобразователя n Метод создания объекта преобразователя TransformerFactory.newTransformer() имеет 2 формы: l l n без аргументов – будет создаваться «копия» исходного документа с аргументом типа Source – ссылка на загруженный объект xml-документа, в котором описано XSLпреобразование Метод Transformer.setOutputProperty() позволяет настроить некоторые параметры вывода (см. класс OutputKeys) 53 Размышления на тему n Итак, что мы научились делать: l Считывать n SAX n DOM информацию из XML-документов l Записывать информацию в XML-документы Какой еще инструмент был бы удобен?.. n А если бы мы умели записывать и считывать из XML непосредственно объекты Java?.. n 54 Шаг 1. Сохранение JavaBeans n В версии JavaSE 1.4 для объектов JavaBeans появились механизмы, сходные с сериализацией n Реализовывали их классы java.beans.XMLEncoder и java.beans.XMLDecoder n Недостаток: механизм основан на интроспекции, требует соблюдения правил именования и т.д. 55 Пример. Часть 1 XMLEncoder e = new XMLEncoder( new BufferedOutputStream( new FileOutputStream("Test.xml"))); e.writeObject(new JButton("Hello, world")); e.close(); frame1 0 0 200 200 56 Пример. Часть 2 Hello true 57 Шаг 2. Java Architecture for XML Binding (JAXB) В версии JavaSE 1.5 появились новые механизмы JAXB n Связанные с ними классы находятся в пакете javax.xml.bind n Позволяют производить «сериализацию» объектов и их структур в XML n Классы объектов должны быть специальным образом подготовлены n Активно использует механизм аннотаций… n 58 Пример. RootClass import javax.xml.bind.annotation.*; @XmlRootElement public class RootClass { private int value; @XmlElement private NodeClass name = new NodeClass(); public RootClass() { value = 0; name.setInnerValue(""); } public NodeClass getName() { return name; } public int getValue() { return value; } public void setValue(int newValue) { value = newValue; } } 59 Пример. NodeClass (1) public class NodeClass { private String innerValue = ""; private double rval = Math.random(); public String getInnerValue() { return innerValue; } public void setInnerValue(String newInnerValue) { innerValue = newInnerValue; } public void print() { System.out.println(rval); } } 60 Пример. WriterJAXB import javax.xml.bind.*; import java.io.*; public class WriterJAXB { public static void main(String[] args){ try { RootClass object1 = new RootClass(); object1.setValue(5); object1.getName().setInnerValue("ABC"); JAXBContext jc = JAXBContext.newInstance(RootClass.class); Marshaller m = jc.createMarshaller(); OutputStream os = new FileOutputStream("test.xml"); m.marshal(object1, os); os.close(); } catch (JAXBException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} } } 61 Содержимое файла после выполнения (1) ABC 5 n Что сохранено: l значение name, помеченное аннотацией n n l n значение innerValue, не помеченное аннотацией значение rval не сохранено значение value, не помеченное аннотацией Сохранились элементы, являющиеся свойствами JavaBeans 62 Пример. NodeClass (2) import javax.xml.bind.annotation.*; public class NodeClass { private String innerValue = ""; @XmlElement private double rval = Math.random(); public String getInnerValue() { return innerValue; } public void setInnerValue(String newInnerValue) { innerValue = newInnerValue; } public void print() { System.out.println(rval); } } 63 Содержимое файла после выполнения (2) 0.9878295088863659 ABC 5 n Сохранились элементы, являющиеся свойствами JavaBeans n Сохранились элементы, помеченные аннотациями 64 Пакет javax.xml.bind.annotation n Содержит разнообразнейшие аннотации, описывающие параметры маршалинга и анмаршалинга n @XmlRootElement Обозначает корневой элемент сохраняемой структуры n @XmlElement Обозначает поля и свойства (для JavaBeans) n @XmlTransient Обозначает то, что поле не будет сохраняться 65 Пример. ReaderJAXB import javax.xml.bind.*; import java.io.*; public class ReaderJAXB { public static void main(String[] args) { try { JAXBContext jc = JAXBContext.newInstance(RootClass.class); InputStream is = new FileInputStream("test.xml"); Unmarshaller um = jc.createUnmarshaller(); RootClass object2 = (RootClass) um.unmarshal(is); System.out.println(object2.getValue()); System.out.println(object2.getName().getInnerValue()); is.close(); } catch (JAXBException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} } } 66 Спасибо за внимание! Дополнительные источники n n n n n n n Хорстманн, К.С. Java2. Библиотека профессионала. Том 2. Тонкости программирования [Текст] / Кей Хорстманн, Гари Корнелл. – М. : Издательский дом «Вильямс», 2010. – 816 с. Extensible Markup Language [Электронный ресурс]. – Режим доступа: http://www.w3.org/XML/, дата доступа: 21.10.2011. XML Tutorial [Электронный ресурс]. – Режим доступа: http://www.w3schools.com/xml/, дата доступа: 21.10.2011. Язык XML – практическое введение [Электронный ресурс]. – Режим доступа: http://www.codenet.ru/webmast/xml/, доступ: 21.10.2011. Java API for XML Processing [Электронный ресурс]. – Режим доступа: http://download.oracle.com/javaee/1.4/tutorial/doc/JAXPIntro.html, дата доступа: 21.10.2011. Java Architecture for XML Binding (JAXB) [Электронный ресурс]. – Режим доступа: http://www.oracle.com/technetwork/articles/javase/index-140168.html, дата доступа: 21.10.2011. JAXB Reference Implementation [Электронный ресурс]. – Режим доступа: http://jaxb.java.net/, дата доступа: 21.10.2011. План занятия n Общие сведения об HTML n Структура документа, основные теги n Взаимодействие с сервером n Основные принципы CSS 1 Давным-давно в одной далёкой галактике… n Generalized Markup Language (GML) Charles Goldfarb, Edward Mosher ,Raymond Lorie (IBM, 1969) l В тексте размещаются т.н. теги, которые определяют структуру текста в терминах абзацев, заголовков, списков и т.д. l Форматирование документа может производиться автоматически для конкретного устройства с применением конкретного профиля l :h1.Chapter 1: Introduction :p.GML supported hierarchical containers, such as :ol :li.Ordered lists (like this one), :li.Unordered lists, and :li.Definition lists :eol. as well as simple structures. :p.Markup minimization (later generalized and formalized in SGML), allowed the end-tags to be omitted for the "h1" and "p" elements. 2 SGML n Standard Generalized Markup Language, 1970 l l n Разметка носит декларативный характер Разметка должна регламентироваться строгими правилами Document Type Definition The SICK ROSE O Rose thou art sick. The invisible worm, That flies in the night In the howling storm: Has found out thy bed Of crimson joy: And his dark secret love Does thy life destroy. 3 HTML n n HyperText Markup Language – язык разметки для web-документов История l l l l l l l HTML – Tim Berners-Lee, 1991 HTML 2.0 – IETF,1995 г. HTML 3.0 – W3C, 1995 г. HTML 3.2 – W3C, 1997 г. HTML 4.0 – W3C, 1997 г. HTML 4.1 – W3C, 1999 г. HTML 5 – WHATWG, W3C??? l l l l XHTML 1.0 – W3C, 1998 г. XHTML 1.1 – W3C, 2000 г. XHTML 2.0 – W3C, закрыт в 2009 г. XHTML5 – ??? 4 HTML-файлы Заголовок Hello HTML Тело

Hello World!

Открывающий тег This is a paragraph Текст with a line break, isn't it?

Закрывающий тег

No, it isn't. This is a paragraph
with a line break.

Read more Ссылка
Тег без наполнения src="http://www.w3.org/html/logo/img/html5-display.png" Атрибут 5 Результат 6 Теги n Открывающий тег () n Закрывающий тег () Есть теги, традиционно не требующие закрытия (

,
, , …) l Лучше их всё равно явно закрывать l Для тегов без наполнения лучше использовать сокращённую форму (


) l n Теги вкладываются друг в друга l n Желательно образуя древовидную структуру HTML не чувствителен к регистру тегов l Рекомендуется писать в нижнем регистре 7 Атрибуты тегов n Атрибут добавляет тегу информацию, не включая её во внутренности тега n Атрибуты бывают обязательными и необязательными n Значения атрибутов можно не заключать в кавычки l n Лучше всё-таки заключать В ряде случаев у значений атрибутов можно не указывать единицы измерения l Лучше всё-таки указывать n Существуют атрибуты-маркеры, не требующие значения n Существуют атрибуты событий, обычно используются со скриптами 8 Текст n Выводимый текст располагается в теле документа внутри тегов n Форматирование текста в документе игнорируется l Если он только не заключён в специальный тег, например
n
Реальное форматирование определяется тегами
n
Текст формируется в блоки
l
l
l
l
l
l
l
l

– абзац

– текстовый блок
 – текстовый блок с предварительным форматированием

, …,

– заголовки
    ,
«UML: задачи и структура; диаграммы» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти

Тебе могут подойти лекции

Смотреть все 588 лекций
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot