n Значения переменных изменяются атомарным образом (кроме double и long)
n При совместной работе с полем может возникнуть неоднозначность
l Например, на объект, на который ссылается переменная, наложена блокировка, после чего значение переменной изменяется
l Например, компилятор может оптимизировать фрагмент кода, предполагая, что поле не изменяет значение
Модификатор полей и переменных final
n После первого присвоения переменная не может изменять своё значение
n Если блокировка накладывается на объект, ссылка на который хранится в поле, поле обычно делают неизменяемым
n Локальные и анонимные классы могут обращаться к локальным переменным, только если они неизменяемы
Модификатор полей volatile
n Предупреждает компилятор о том, что переменная может изменить своё значение в произвольный момент времени
n Обращение к переменной всегда будет возвращать именно последнее присвоенное ей значение
n Если работа с полем ведётся только в синхронизированном коде, применение модификатора неосмысленно
Вопрос 87 Методы класса Object для работы с потоками. Особенности использования. Прерывание потоков. 25-31. Лекция многопоточное порграммирование.
Специальные методы класса Object
n Каждый объект имеет набор ожидающих потоков исполнения (wait-set)
n Любой поток может вызвать метод wait() любого объекта и попасть в его wait-set, остановившись до пробуждения
n Метод объекта notify() пробуждает один, случайно выбранный поток из wait-set объекта
n Метод объекта notifyAll() пробуждает все потоки из wait-set объекта
Особенности использования методов класса Object
n Метод может быть вызван потоком у объекта только после установления блокировки на этот объект
n Потоки, прежде чем приостановить выполнение после вызова метода wait(), снимают все свои блокировки
n После вызова освобождающего метода потоки пытаются восстановить ранее снятые блокировки
Запрещенные действия над потоками
n Thread.suspend (), Thread.resume ()
Увеличивает количество взаимных блокировок
n Thread.stop ()
Использование приводит к возникновению поврежденных объектов
Корректное прерывание потока
n public void interrupt()
Изменяет статус потока на прерванный
n public static boolean interrupted()
Возвращает и очищает статус потока (прерван или нет)
n public boolean isInterrupted()
Возвращает статус потока (прерван или нет)
n Поток должен в ходе своей работы проверять свой статус и корректно завершать работу, если его прервали
А если поток «спит»?
n В том случае, если в текущий момент поток выполняет методы wait (), sleep (), join (), а его прерывают вызовом метода interrupt ()…
n метод прерывает свое выполнение с выбросом исключения InterruptedException !
n Потоку не сообщается, что его прервали!
Пример простого семафора
public class Semaphore {
private boolean canWrite = true;
public synchronized void beginRead()
throws InterruptedException {
while (canWrite) {
wait();
}
}
public synchronized void endRead() {
canWrite = true;
notifyAll();
}
public synchronized void beginWrite()
throws InterruptedException {
while (!canWrite) {
wait();
}
}
public synchronized void endWrite() {
canWrite = false;
notifyAll();
}
}
Вопрос 88 UML. Задачи, применение структура. Виды диаграмм. 3-8,50-51. Лекция Введение в язык UML
UML
UML (Unified Modeling Language) – унифицированный язык моделирования
n 1995
Unified Method (v0.8)
n 1997
UML 1.0 (Буч, Рамбо, Джекобсон)
UML 1.1 (OMG)
n 2005
UML 2.0
n 2011
UML 2.4
Состав UML
n Нотация
Совокупность графических элементов, обычно используемых в моделях; является синтаксисом языка моделирования
n Метамодель
Диаграммы, определяющие нотацию
Области применения
n Общение между разработчиками
Передача информации в графическом виде на различных уровнях разработки
n Объектно-ориентированный подход
Работа с ОО-приемами в графической форме
n Общение с экспертами предметной области
Описание вариантов использования (концептуальный подход)
Процесс разработки
n Все фазы могут быть итеративными
n UML может быть использован в любой фазе
Модель в UML
n Элементы модели
l Сущности
Структурные, Поведенческие, Группировки, Примечания
l Отношения
Зависимость, Ассоциация, Обобщение
l Диаграммы
n Модель определяется с помощью диаграмм,
но сущности и отношения существуют вне диаграмм
Виды диаграмм
Вопрос 89 Диаграммы классов.17-31 Лекция Введение в язык UML
Виды диаграмм
Диаграмма классов
n Диаграмма классов (class diagram)
n Описывает типы объектов системы и различного рода существующие между ними статические отношения
n Статические отношения: ассоциации и подтипы
n Также отображаются атрибуты и операции классов и ограничения, накладываемые на связи между объектами
{
Диаграмма классов - это набор статических, декларативных элементов модели. Диаграммы классов могут применяться и при прямом проектировании, то есть в процессе разработки новой системы, и при обратном проектировании - описании существующих и используемых систем. Информация с диаграммы классов напрямую отображается в исходный код приложения - в большинстве существующих инструментов UML-моделирования возможна кодогенерация для определенного языка программирования (обычно Java или C++). Таким образом, диаграмма классов - конечный результат проектирования и отправная точка процесса разработки.
}
Пример диаграммы классов
Класс
n Элемент описывает тип объекта
n Описание состоит из трех частей:
l Имя класса
l Список атрибутов
l Список операций
n Атрибуты и операции необязательны
Видимость элементов
n Модификаторы видимости
+ общедоступная
(public)
# защищенная
(protected)
– закрытая
(private)
Атрибуты
n Формат записи
<видимость> <имя>: <тип>= <значение по умолчанию>
n Могут быть необязательными
n Единственное направление навигации
n Тип скорее обладает значением, чем семантикой ссылки
Операции
n Представляют собой процессы, реализуемые классом
n Формат записи
видимость> <имя>(<список параметров>): <выражение- возвращающее-значение-типа> {<строка свойств>}
n Список параметров
<направление> <имя> : <тип> = <значение по умолчанию>
Ассоциации
n Концы ассоциации
n Имена ролей
n Кратность
1, 1..3, 3..*, *, 0..1
n Направление ассоциации (навигация)
n Агрегация и композиция
Обобщение
n Обозначает подтипы (во всех смыслах)
n Позволяет использование принципа замещения (подстановки)
n Различается с точки зрения спецификации и реализации
Ограничения
n Не все ограничения описываются средствами атрибута, ассоциации и обобщения
n Ограничения записываются в фигурных скобках
n Допускаются:
l естественный язык
l язык объектных ограничений (OCL)
l утверждения на языке программирования
Стереотипы
n Стереотипы являются механизмом расширения ядра языка UML
n Обычно записываются с помощью текста, заключенного в кавычки
n Профиль – часть языка UML, расширяет его с помощью стереотипов, предназначенных для специальных целей
Дата: 2019-07-30, просмотров: 466.