Совместная работа с полями и переменными
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

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.