Исключения являются удобным методом обработки ошибок, но в данном коде оно используется немного некорректно. Приведу несколько примеров:

Save this PDF as:
 WORD  PNG  TXT  JPG

Размер: px
Начинать показ со страницы:

Download "Исключения являются удобным методом обработки ошибок, но в данном коде оно используется немного некорректно. Приведу несколько примеров:"

Транскрипт

1 Цели: Использование исключений для указания ошибки в действиях Устранение обёрток в бинах Устранение пустых коллекций Использование исключений для указания ошибки в действиях Исходный код Исключения являются удобным методом обработки ошибок, но в данном коде оно используется немного некорректно. Приведу несколько примеров: private List getallobjects(class clazz) { synchronized (eminvoker) { try { if (eminvoker == null) { return null; // end if List<String> allids = eminvoker.getids(clazz); return (eminvoker.get(clazz, allids)); // end try catch (Exception je) { LOG.error("emInvoker.getIds", je); return null; // end catch // end synchronized // end getallobjects() Благодаря этому коду, при выполнении программы мы никогда не узнаем, что что-то пошло не так. Можно конечно просмотреть логи, но кто будет делать это по доброй воле на периодической основе?

2 public ValidationDocumentResult commitdocument(string documentid) throws DocumentException, ValidationProcessingException { try { synchronized (drafthelper) { EMDraft emdraft = drafthelper.getemdraft(documentid); Document document = convertemdrafttodocument(emdraft);...пропущено 60 строк кода... return ret; catch (Exception exception) { LOG.error("commitDocument: ошибка при коммите документа",exception); throw new DocumentException(exception); Обрамление большого куска кода в одно большое исключение. При выполнении подобного кода Java машина вставляет специальные метки в каждый вызов метода, в рамках данного блока. После возврата из метода этот блок кода проверяет не было ли контролируемого исключения. И чем больше блок и больше вызовов методов тем более медленнее выполняется код. Хотя данный код не выполняется очень часто и данный аспект не играет большой роли. Но с другой стороны разве кто-то так сильно не уверен в своём коде выставляя такой большой блок try-catch? public EMDraft getemdraft(string draftid)throws DocumentException{ EMDraft ret = null; EMDocument emdoc = null; try{ ret = (EMDraft)getObject(EMDraft.class, draftid); catch(exception e){e.printstacktrace();

3 черновиках"); черновиках"); if(ret==null){ try{ emdoc = (EMDocument)getObject(EMDocument.class, draftid); catch(exception e){e.printstacktrace(); if(emdoc==null) try{ throw new DocumentException("Неизвестный идентификатор id = " + draftid); ret = (EMDraft)getObject(EMDraft.class, emdoc.getdraftid()); if(ret==null) throw new DocumentException("Документ с идентификатором id = " + draftid + " не находится в ret.setnewdocument(false); catch(exception e){ return ret; if(ret==null) throw new DocumentException("Документ с идентификатором id = " + draftid + " не находится в Данный кусок кода больше касается понятности кода, чем работе с исключениями но именно с помощью них он был сделан ОЧЕНЬ непонятным. Результаты рефакторинга Метод «getallobjects» успешно перекочевал в интерфейс-обёртку для нашего модуля хранения EntityManager. И был переделан как метод, который принимает специальный слушатель и имя класса, все экземпляры которого мы хотим получить. Листенер, в свою очередь, получает все объекты раз за разом маленькими порциями благодаря этому (в случае большого кол-ва объектов) не будет опасности в передаче СЛИШКОМ большого объёма данных через веб-сервис (основной протокол передачи данных для EntityManager'а). public ValidationDocumentResult commitdocument(string draftid) throws DocumentException,

4 ValidationProcessingException, NoSuchObjectException { Date now = new Date(); DocumentDraft draft = draftmanager.get(draftid); ValidationDocumentResult validationresult = validationcomponent.validatedraft(draft); if (!validationresult.successful) return validationresult; // если ранее документа не было - создать новый if (null == draft.getdocumentid()) { Document document = new Document(); document.setid(null); document.setdatecreated(now); document = documentmanager.insert(now, document); documentmanager.commit(now, document, draft); validationresult.objectid = document.getid(); // если ранее документ был - обновить else { Document document = documentmanager.get(draft.getdocumentid()); documentmanager.commit(now, document, draft); validationresult.objectid = document.getid(); draftmanager.remove(draftid); String message = String.format("Документ с идентификатором '%s' успешно закоммичен.", validationresult.objectid); log.info(message); return validationresult;

5 Как видите метод получился в 2 раза меньше, чем блок кода, который пришлось опустить. Плюс метод выбрасывает исключения, которые выбрасываются, используемыми интерфейсами т.е. нет никаких try-catch блоков в коде, который могут замедлить работу. Правило: не можете как-то обработать исключение выбрасывайте наверх Его даже не надо записывать оно само попадёт в журнал вызвавшей вас системы. А так будет лишь дублирование в логах. Код теперь использует лишь бины и интерфейсы как следствие легко тестируем. Метод «getemdraft» преобразовался в метод «get» интерфейса IdraftManager, вот его реализация в реализации интерфейса: public DocumentDraft get(string draftid) throws NoSuchObjectException { EMDocumentDraft emdraft = entitymanager.get(emdocumentdraft.class, draftid); if (null == emdraft) throw new NoSuchObjectException(draftId, ObjectTypes.DRAFT); return ConvertCopyFactory.convert(emDraft); Метод прост, мал и как следствие лёгок для понимания и тестирования. Добиться такого удалось не только за счёт рефакторига кода но и за счёт рефакторинга объектной модули принципов того, как хранятся разные сущности в системе. Это было неотъемлимой частью основного рефакторинга (а может и было основной). Правило: методы должны быть как можно меньше и проще. И главное должны иметь говорящее название. Совет: встроенные средства рефакторинга Вашей системы очень сильно могут помочь в выделении методов. Например в eclipse достаточно выделить повторяющийся кусок кода и в меню «Refactoring» выбрать «Extract method...». Устранение обёрток в бинах Исходный код Рассмотрим оригинальный бин хранения.

6 public class EMAttribute { public String id; private Date datecreated = null; private Date datelastmodified = null; private Boolean active; private String recordnamevalue = null; private String filevalue = null; private String name = null; private Boolean obligatory = null; private String type = null; Обёртки (Boolean, Float, Long) позволяют обходится с примитивными типами как с объетами, за счёт побочного эффекта они могут быть неопределены (быть null). За счёт этого и появляется код подобный найденному в одной из утилит для сравнения бинов: public static boolean isequals(boolean b1, Boolean b2) { boolean ret = false; try { if (b1 == null && b2!= null) { return false; // end if if (b1!= null && b2 == null) { return false; // end if if (b1 == null && b2 == null) { return true; // end if if (istrue(b1) && istrue(b2)) { return true; // end if else {

7 return false; // end else // end try catch (Exception exception) { LOG.debug("TODO: comment it", exception); return ret; // end catch // end isequals() public static boolean istrue(boolean b) { if (b == null) return false; if (b.booleanvalue()) return true; return false; Рефакторинг После переделки обёрток в примитивы для бинов хранения, потребность в методах типа «istrue» и «isequals» отпала и их можно было удалить. Устранение пустых коллекций Исходный код

8 List<EMDocument> list = (List<EMDocument>) getallobjects(emdocument.class); if (list == null list.size() == 0) { return ret; // end if Проверка на пустую коллекцию ret.setactive(new Boolean(false)); eminvoker.update(ret); if (ret.getattributes()!= null) for (EMAttribute at : ret.getattributes()) { if (at.gettype().equalsignorecase("file")) { filemap.removedocumentid(at.getfilevalue()); Ещё одна проверка на пустую коллекцию... try{ emdraft = (EMDraft)getObject(EMDraft.class, documentid); if(emdraft==null){ EMDocument emdoc = (EMDocument)getObject(EMDocument.class, documentid); emdraft = (EMDraft)getObject(EMDraft.class, emdoc.getdraftid()); List<EMAttribute> attributes = emdraft.getattributes(); if(attributes==null) attributes = new ArrayList<EMAttribute>(0); attributes.add(ema); emdraft.setattributes(attributes); eminvoker.update(emdraft); catch(exception e){ e.printstacktrace();

9 И ещё одна проверка... Все эти проверки лишь «замусоривают» программу и отвлекаю от реальной логики методов. Рефакторинг Во-первых избавляемся от java.util.list он хоть и интерфейс, но он несёт больше возможностей, чем фактически используется. В отличии от Collection, List позволяет получить элементы по индексу, поместить из в любое место, взять диапазон но обычное действие для результата метода это обычный цикл for (который принимает Collection). Используя ненужную «высоту» интерфейса Вы ограничиваете себя в возможных результатах методов- например Set или Vector не послать. Как результат все методы возвращают коллекцию. Например каждый метод, вначале создаёт переменную «result», в которую добавляются все найденные или вычисленные элементы либо это будет пустой список, но никогда null. public Collection<DocumentType> getall(boolean withdeleted) { Collection<DocumentType> result = new ArrayList<DocumentType>(); Либо явно возвращаем пустой лист (в самом конце метода): protected Collection<EMDocumentTypeHistory> getdocumenttypehistories( String documenttypeid) { Collection<String> doctypeids;

10 synchronized (documenttypehistorymap) { doctypeids = documenttypehistorymap.get(documenttypeid); if (null!= doctypeids) return entitymanager.get(emdocumenttypehistory.class, doctypeids); return Collections.emptyList(); Даже в самих бинах (на случай если свойство было не проинициализированно): public List<EMAttribute> getattributes() { if (null == this.attributes) this.attributes = new ArrayList<EMAttribute>(); return this.attributes; Правило: экранируя таким образом бины (через setter'ы и getter'ы), можно проводить необходимую инициализацию или предподготовку данных как в данном случае. Правило: (следует из предыдущего) если весь доступ у меня через getter'ы и setter'ы то для самих переменных-членов класса, делаю самый низкий уровень видимости: public.

Встроенная документация Java

Встроенная документация Java Встроенная документация Java Андрей Дмитриев andrei-dmitriev@yandex.ru http://in4mix2006.narod.ru/ 2008 Copyright (C) 2000-2008 Sun Microsystems, Inc. All rights reserved. Документация Необходимость поддержки

Подробнее

Введение в язык Java

Введение в язык Java Лекция 3 Введение в язык Java Простейшая программа на Java Простейшая программа на языке программирования Java выглядит примерно так: public class HelloWorld { public static void main(string args []) {

Подробнее

Объектно-ориентированное программирование в PHP для начинающих

Объектно-ориентированное программирование в PHP для начинающих Объектно-ориентированное программирование в PHP для начинающих Доброго времени суток, уважаемые читатели нашего блога! Добро пожаловать на первый урок из серии уроков по объектноориентированному программированию

Подробнее

Стандартная библиотека Java: пакет java.util

Стандартная библиотека Java: пакет java.util Стандартная библиотека Java: пакет java.util Что такое коллекции Разнообразные контейнеры для хранения наборов объектов Предоставляют значительно больше возможностей, чем массивы В первую очередь, возможность

Подробнее

IMDG как основное хранилище помнить всё!

IMDG как основное хранилище помнить всё! IMDG как основное хранилище помнить всё! 23.04.2016 Спикеры 23.04.2016 Егор Фёдоров Главный Архитектор Лаборатория Системного Ядра АО «Сбербанк-Технологии» Новосибирск Мария Насырова Архитектор Лаборатория

Подробнее

Объекты, классы и пакеты в Java

Объекты, классы и пакеты в Java Объекты, классы и пакеты в Java Алексей Владыкин 22 сентября 2014 Алексей Владыкин Объекты, классы и пакеты в Java 22 сентября 2014 1 / 37 1 Основы ООП 2 Пакеты 3 Классы 4 Наследование Алексей Владыкин

Подробнее

Компьютерные науки 2 единицы обучения Указания экзаменующимся

Компьютерные науки 2 единицы обучения Указания экзаменующимся Государство Израиль Министерство просвещения Тип экзамена: а. на аттестат зрелости для средних школ б. на аттестат зрелости для экстернов Время проведения экзамена: лето 5 года Номер вопросника: 899, 6

Подробнее

ПРИЛОЖЕНИЕ 2 КОДЫ ОШИБОК Syntax error RETURN without GOSUB Out of data Illegal fuction call

ПРИЛОЖЕНИЕ 2 КОДЫ ОШИБОК Syntax error RETURN without GOSUB Out of data Illegal fuction call 165 ПРИЛОЖЕНИЕ 2 КОДЫ ОШИБОК В QBasic существуют два основных типа ошибок: ошибки периода компиляции и периода выполнения. Первые это в основном синтаксические ошибки, обнаруженные компилятором, вторые

Подробнее

Программный интерфейс СДО AcademicNT

Программный интерфейс СДО AcademicNT Программный интерфейс СДО AcademicNT Взаимодействие с программным интерфейсом (API) СДО AcademicNT осуществляется по HTTP с помощью REST-like запросов. Существуют два уровня API: public доступ без ограничений,

Подробнее

Java Persistence API (JPA): Основы. Евгений Беркунский, НУК по материалам Андрея Родионова и Михаила Вайсмана

Java Persistence API (JPA): Основы. Евгений Беркунский, НУК по материалам Андрея Родионова и Михаила Вайсмана Java Persistence API (JPA): Основы Евгений Беркунский, НУК по материалам Андрея Родионова и Михаила Вайсмана 1 Содержание Что такое и Почему используем O/R Mapper (ORM)? Что нам дает JPA? O/R Отображения

Подробнее

Мои заметки по JasperReports. Оглавление. Автор: Сергей Меньшов (Казахстан, г.алматы, 2014 г.) -

Мои заметки по JasperReports. Оглавление. Автор: Сергей Меньшов (Казахстан, г.алматы, 2014 г.) - 1 Оглавление Заметки по JasperReports и ireport... 2 Задание размера страницы отчета... 2 Настройка границы и отступов... 2 Задание правила изменение размера контрола... 2 Копирование формата... 2 Вывод

Подробнее

NetBeans IDE: автоматизация рефакторинга

NetBeans IDE: автоматизация рефакторинга NetBeans IDE: автоматизация рефакторинга Андрей Дмитриев andrei-dmitriev@yandex.ru http://in4mix2006.narod.ru/ 2008 Copyright (C) 2000-2008 Sun Microsystems, Inc. All rights reserved. Программа Возможности

Подробнее

Программирование на языке Java

Программирование на языке Java Теория и технология программирования Программирование на языке Java Лекция 5. Библиотека коллекций Глухих Михаил Игоревич, к.т.н., доц. mailto: glukhikh@mail.ru Назначение Работа с контейнерами различного

Подробнее

Пример. Вычислить сколько раз каждая буква встречается в тексте. 1. File new new java project. 2. Добавим окошко. 3. Получили

Пример. Вычислить сколько раз каждая буква встречается в тексте. 1. File new new java project. 2. Добавим окошко. 3. Получили Пример. Вычислить сколько раз каждая буква встречается в тексте. 1. File new new java project. 2. Добавим окошко. 3. Получили 4. Чтобы можно было компоненты располагать произвольно, правой кнопкой по форме,

Подробнее

JavaTESK: первое знакомство version 2.0

JavaTESK: первое знакомство version 2.0 version 2.0 Введение В данном документе рассматривается процесс разработки тестов с использованием инструмента JavaTESK на примере класса, реализующего методы для работы с банковским кредитным счетом.

Подробнее

Лабораторная работа 1: Основы программирования на языке C#

Лабораторная работа 1: Основы программирования на языке C# Цель: Лабораторная работа 1: Основы программирования на языке C# Целью данной работы является получение базовых навыков программирования на языке высокого уровня C# в среде программирования Microsoft Visual

Подробнее

Remote Method Invocation

Remote Method Invocation Remote Method Invocation Составление, Гаврилов А.В., Попов С.Б., 2013 Лекция 17 УНЦ «Инфоком» Самара 2013 План лекции n Общие принципы RMI n Элементы распределенной системы RMI n Порядок разработки и запуска

Подробнее

Как ввести новое свойство

Как ввести новое свойство Глава 8 Как ввести новое свойство Этот вопрос относится к самым абстрактным в данной книге, поскольку его решение очень зависит от конкретной предметной области. И по этой причине я поначалу не хотел включать

Подробнее

Основные правила записи выражений. Построение формул

Основные правила записи выражений. Построение формул Лекция 3 На предыдущей лекции мы рассмотрели вопросы создания и форматирования таблицы, в которую записаны значения трёх функций одного семейства. После того, как таблица создана можно перейти к следующему

Подробнее

Pattern Specification

Pattern Specification Pattern Specification Прочитать статью на сайте Disclaimer Эта статья по большей части адресована новичкам в программировании, которые знакомы лишь с некоторыми шаблонами проектирования или не знакомы

Подробнее

Концепция инкапсуляции и ее реализация в языке C#

Концепция инкапсуляции и ее реализация в языке C# Концепция инкапсуляции и ее реализация в языке C# В данной лекции будут рассмотрены вопросы, относящиеся к истории развития, идеологии, математическому основанию и обзору возможностей инкапсуляции одной

Подробнее

АЛГОРИТМ ФОРМИРОВАНИЯ КОМБИНАЦИЙ ПРИ РАСЧЕТЕ ПЕРЕСТАНОВОК, РАЗМЕЩЕНИЙ И СОЧЕТАНИЙ. Мамонтов Д. В., Волошин С. Б.

АЛГОРИТМ ФОРМИРОВАНИЯ КОМБИНАЦИЙ ПРИ РАСЧЕТЕ ПЕРЕСТАНОВОК, РАЗМЕЩЕНИЙ И СОЧЕТАНИЙ. Мамонтов Д. В., Волошин С. Б. 1 АЛГОРИТМ ФОРМИРОВАНИЯ КОМБИНАЦИЙ ПРИ РАСЧЕТЕ ПЕРЕСТАНОВОК, РАЗМЕЩЕНИЙ И СОЧЕТАНИЙ Мамонтов Д. В., Волошин С. Б. Формулы расчета количества перестановок, размещений и сочетаний изучаются в начальных курсах

Подробнее

Web-разработка на PHP-технологиях Курс лекций и семинаров для студентов, желающих научиться основам Web-разработки на PHP. Осень-Зима 2014.

Web-разработка на PHP-технологиях Курс лекций и семинаров для студентов, желающих научиться основам Web-разработки на PHP. Осень-Зима 2014. Web-разработка на PHP-технологиях Курс лекций и семинаров для студентов, желающих научиться основам Web-разработки на PHP Осень-Зима 2014 Лекция 5 Управляющие конструкции языка PHP. Функции обработки строк.

Подробнее

Создание пользовательских статистических функций

Создание пользовательских статистических функций Создание пользовательских статистических функций Суммировать данные по-новому путем написания своих собственных статистических функций Одним из аспектов Oracle Database, который давно считается очень мощным,

Подробнее

Команды и данные HART-протокола во ВЗЛЕТ ТЭР.

Команды и данные HART-протокола во ВЗЛЕТ ТЭР. Команды и данные HART-протокола во ВЗЛЕТ ТЭР. 1. Универсальные команды протокола HART. Реализованы следующие универсальные команды: команда 0: чтение: идентификатор HART-устройства: o u08: =254, o u16:

Подробнее

Стандартная библиотека шаблонов STL

Стандартная библиотека шаблонов STL Стандартная библиотека шаблонов STL STL (Standard Template Library) является частью стандарта C++. Ядро STL состоит из четырех основных компонентов: контейнеры, итераторы, алгоритмы, распределители памяти.

Подробнее

Основы программного конструирования

Основы программного конструирования Лектор: А.Д.Хапугин Основы программного конструирования Лекция 11. Операторы Материалы доступны в Интернете по адресу: http://www.excelsior.ru/afti/ Оператор что это такое? Программа состоит из данных,

Подробнее

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ ШАБЛОНЫ ФУНКЦИЙ 2 3 ШАБЛОНЫ ФУНКЦИЙ При создании функций иногда возникают ситуации, когда две функции выполняют одинаковую обработку, но работают с разными типами

Подробнее

Примитивы синхронизации

Примитивы синхронизации Примитивы синхронизации Мьютексы На примере boost: mutex recursive_mutex timed_mutex recursive_timed_mutex shared_mutex spin_mutex mutex && recursive_mutex Функции: Захват: void lock(); Попытаться захватить:

Подробнее

1С-Битрикс: Управление сайтом 8.x. Рабочий стол и гаджеты

1С-Битрикс: Управление сайтом 8.x. Рабочий стол и гаджеты 1С-Битрикс: Управление сайтом 8.x Рабочий стол и гаджеты Содержание Введение...3 Глава 1. Рабочий стол...4 Создание рабочего стола...4 Внешний вид страницы...8 Кастомизация рабочего стола...11 Глава 2.

Подробнее

Стандартная библиотека шаблонов STL

Стандартная библиотека шаблонов STL Стандартная библиотека шаблонов STL STL (Standard Template Library) является частью стандарта C++. Ядро STL состоит из четырех основных компонентов: контейнеры, итераторы, алгоритмы, распределители памяти.

Подробнее

Теория и технология программирования Объектно-ориентированное программирование на языке C++

Теория и технология программирования Объектно-ориентированное программирование на языке C++ Теория и технология программирования Лекция 3. Алгоритмы поиска Глухих Михаил Игоревич, к.т.н., доц. mailto: glukhikh@mail.ru Формулировка задачи Имеется некоторое количество уникальных ключей; с каждым

Подробнее

Лабораторная работа 5. Хранимые процедуры

Лабораторная работа 5. Хранимые процедуры Лабораторная работа 5. Хранимые процедуры Цель работы: научиться создавать хранимые процедуры в среде SQL Server Management Studio. Теоретические сведения Хранимая процедура SQL-запрос, который имеет параметры,

Подробнее

Создать отчеты с внешними входными параметрами для своего варианта задания из Лабораторной работы 1.

Создать отчеты с внешними входными параметрами для своего варианта задания из Лабораторной работы 1. Прикладной системный анализ Лабораторная работа 4 Создание отчета с параметрами в ireport и перенос его в Jasperreports Server Создать отчеты с внешними входными параметрами для своего варианта задания

Подробнее

Введение Императивные языки абстракция архитектуры фон Неймана Память Процессор Переменные и их атрибуты Область действия, срок жизни, проверка типов,

Введение Императивные языки абстракция архитектуры фон Неймана Память Процессор Переменные и их атрибуты Область действия, срок жизни, проверка типов, Имена, связывание, проверка типов и области действия Введение Императивные языки абстракция архитектуры фон Неймана Память Процессор Переменные и их атрибуты Область действия, срок жизни, проверка типов,

Подробнее

Технология программирования MPI. Старший преподаватель Константин

Технология программирования MPI. Старший преподаватель Константин Технология программирования MPI Старший преподаватель Кафедры ПОУТС Павлов Константин Сергеевич MPI Что это? MPI - Message Passing Interface, интерфейс передачи сообщений. Стандарт MPI: 1.0 (1994); 1.1

Подробнее

Как написать собственный класс

Как написать собственный класс МИНОБРНАУКИ РОССИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Ухтинский государственный технический университет» (УГТУ) Как написать собственный

Подробнее

Управление составом изделия Варианты и модули. Митюрин Игорь E-mail: i.mityurin@ideal-plm.ru Skype: i.mityurin

Управление составом изделия Варианты и модули. Митюрин Игорь E-mail: i.mityurin@ideal-plm.ru Skype: i.mityurin Управление составом изделия Варианты и модули Митюрин Игорь E-mail: i.mityurin@ideal-plm.ru Skype: i.mityurin Компания Крепкие и долгосрочные отношения с Siemens PLM Software (более 18 лет) Представительства

Подробнее

Интерпретатор модельного языка программирования

Интерпретатор модельного языка программирования Интерпретатор модельного языка программирования Требуется разработать и реализовать интерпретатор модельного языка программирования. Инструментальный язык С++. Синтаксис модельного языка: Синтаксис описан

Подробнее

async/await: собираем грабли Андрей Часовских

async/await: собираем грабли Андрей Часовских async/await: собираем грабли Андрей Часовских Broadridge Financial Solu>ons.NEXT 2014 Moscow Асинхронное программирование Управление получаем сразу после вызова операции Об окончании операции нас уведомляет

Подробнее

Тема 16. Объектно-ориентированная парадигма. Классы в Object Pascal.

Тема 16. Объектно-ориентированная парадигма. Классы в Object Pascal. Тема 16. Объектно-ориентированная парадигма. Классы в Object Pascal. В реализации программного обеспечения существует два основных подхода: процедурный основанный на модульной разработке ПО с использованием

Подробнее

ФАЙЛЫ ПОСЛЕДОВАТЕЛЬНОГО ДОСТУПА

ФАЙЛЫ ПОСЛЕДОВАТЕЛЬНОГО ДОСТУПА 1 ФАЙЛЫ ПОСЛЕДОВАТЕЛЬНОГО ДОСТУПА Архитектура компьютеров предусматривает наличие оперативной и внешней памяти. В оперативной памяти находятся выполняемая в данный момент программа и обрабатываемые данные.

Подробнее

UI-фрагменты и FragmentManager

UI-фрагменты и FragmentManager 7 UI-фрагменты и FragmentManager В этой главе мы начнем строить приложение CriminalIntent. Оно предназначено для хранения информации об «офисных преступлениях»: грязной посуде, оставленной в раковине,

Подробнее

СОЗДАНИЕ НАДСТРОЕК С ПОМОЩЬЮ PYTHON В ARCGIS FOR DESKTOP 10.1

СОЗДАНИЕ НАДСТРОЕК С ПОМОЩЬЮ PYTHON В ARCGIS FOR DESKTOP 10.1 МАЙ 2012 СОЗДАНИЕ НАДСТРОЕК С ПОМОЩЬЮ PYTHON В ARCGIS FOR DESKTOP 10.1 Esri CIS 2011. Все права защищены. Esri CIS Москва, ул. Смольная, 52 стр. 6 ww.esri-cis.ru, market@esri-cis.ru, тел. +7 (495) 662-99-79

Подробнее

Наука и Техника Санкт-Петербург 2017

Наука и Техника Санкт-Петербург 2017 Наука и Техника Санкт-Петербург 2017 Никольский А. П. JavaScript на примерах Наука и Техника Санкт-Петербург 2017 УДК 004.738.5 ISBN 978-5-94387-735-3 Никольский А. П. JAVASCRIPT НА ПРИМЕРАХ СПб.: Наука

Подробнее

Задача 1. Семизначное число

Задача 1. Семизначное число Всероссийская олимпиада школьников по информатике, 2014-15 уч. год Первый (школьный) этап, г. Москва Задания для 7-8 классов Адрес тестирующей системы для сдачи заданий: http://gg.gg/inf-7-8 Прямая ссылка

Подробнее

Разработка мобильных приложений с помощью Xamarin и MvvmCross.

Разработка мобильных приложений с помощью Xamarin и MvvmCross. Разработка мобильных приложений с помощью Xamarin и MvvmCross. Денис Кретов, Руководитель отдела разработки, kretov.d@notissimus.com Максим Евтух, Разработчик Xamarin, evtukh.m@notissimus.com @pocheshire

Подробнее

Лабораторная работа 6

Лабораторная работа 6 Лабораторная работа 6 1 Модули Программы на языке Haskell состоят из набора модулей. Модули служат двум целям управлению пространствами имен и созданию абстрактных типов данных. Модули имеют имена, начинающиеся

Подробнее

MS Создание запросов в Microsoft SQL Server 2012

MS Создание запросов в Microsoft SQL Server 2012 MS-10774 Создание запросов в Microsoft SQL Server 2012 Прод олжит ельн о сть ку рса: 40 академических часов Аттестация: удостоверение о повышении квалификации установленного образца (или сертификат ТПУ)

Подробнее

В качестве примера рассмотрим последовательность. На первом шаге разбиение дает последовательности

В качестве примера рассмотрим последовательность. На первом шаге разбиение дает последовательности 1 Лекция 3. ТЕМА: Сортировка последовательных файлов Основные вопросы, рассматриваемые на лекции: 1. Особенности сортировки последовательных файлов. 2. Прямое слияние. К сожалению, алгоритмы сортировки,

Подробнее

Функция dict создает новый словарь без записей. Т.к. dict - имя встроенной функции, вы должны исключить его из имен переменных.

Функция dict создает новый словарь без записей. Т.к. dict - имя встроенной функции, вы должны исключить его из имен переменных. Python for Informatics Автор: Dr. Charles R. Severance Содержание курса: http://pycode.ru/edu/why-python/ Глава 9. Словари Словарь (dictionary) похож на список, но имеет более широкие возможности. В списке

Подробнее

ИНСТРУКЦИЯ для программного продукта «РИЦ Конструктор ШМД»

ИНСТРУКЦИЯ для программного продукта «РИЦ Конструктор ШМД» ИНСТРУКЦИЯ для программного продукта «РИЦ Конструктор ШМД» Екатеринбург 2015 г. Оглавление Сокращения и определения... 3 1. Понятие ШМД и медицинского документа (CDA HL7)... 4 1.1 Хранение медицинских

Подробнее

Научный журнал КубГАУ, 63(09), 2010 года. http://ej.kubagro.ru/2010/09/pdf/05.pdf УДК 303.732.4 UDC 303.732.4

Научный журнал КубГАУ, 63(09), 2010 года. http://ej.kubagro.ru/2010/09/pdf/05.pdf УДК 303.732.4 UDC 303.732.4 1 УДК 303.732.4 ВЫБОР АЛГОРИТМА ОПТИМИЗАЦИИ ДЛЯ РАСПРЕДЕЛЕНИЯ РАБОТ МЕЖДУ СОТРУДНИКАМИ СПЕЦИАЛИЗИРОВАННОГО МАГАЗИНА Берсенeва Валерия Александровна аспирант Кубанский государственный технологический университет,

Подробнее

А.А. Дубаков СЕТЕВОЕ ПРОГРАММИРОВАНИЕ Учебное пособие

А.А. Дубаков СЕТЕВОЕ ПРОГРАММИРОВАНИЕ Учебное пособие МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ САНКТ-ПЕТЕРБУРГСКИЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ, МЕХАНИКИ И ОПТИКИ А.А. Дубаков СЕТЕВОЕ ПРОГРАММИРОВАНИЕ Учебное

Подробнее

Разработка более сложной формы (прием товаров)

Разработка более сложной формы (прием товаров) Глава 5 Разработка более сложной формы (прием товаров) В этой главе мы рассмотрим технологию создания более сложных форм на примере формы, предназначенной для оформления приема товаров. В качестве источника

Подробнее

Система контроля и управления доступом «Сфинкс». Руководство по программному использованию контрольного считывателя «Sphinx Reader EH»

Система контроля и управления доступом «Сфинкс». Руководство по программному использованию контрольного считывателя «Sphinx Reader EH» Система контроля и управления доступом «Сфинкс». Руководство по программному использованию контрольного считывателя «Sphinx Reader EH» Оглавление 1. Введение... 3 2. Состав пакета разработчика... 4 3.

Подробнее

Теория и технология программирования Основы программирования на языках C и C++

Теория и технология программирования Основы программирования на языках C и C++ Теория и технология программирования Основы программирования на Лекция 11. Проектирование классов. Числовые объекты, перегрузка операций. Глухих Михаил Игоревич, к.т.н., доц. mailto: glukhikh@mail.ru Числовые

Подробнее

Создание проекта «Библиотека» в TrackStudio

Создание проекта «Библиотека» в TrackStudio Создание проекта «Библиотека» в TrackStudio 1 Обзор проекта... 1 Организационная структура библиотеки... 1 Иерархия сотрудников библиотеки... 2 Процессы... 2 Сообщения... 3 Категории... 4 Фильтры... 4

Подробнее

Объектно-ориентированное

Объектно-ориентированное 10 Объектно-ориентированное программирование Большая часть профессиональных программ пишется на языках объектно-ориентированного программирования (Object-Oriented Programming, OOP), таких как Java, C#

Подробнее

mongodb.org Выполнили студенты группы БПЗ1101 Лукин Игорь Хлебников Владимир

mongodb.org Выполнили студенты группы БПЗ1101 Лукин Игорь Хлебников Владимир mongodb.org Выполнили студенты группы БПЗ1101 Лукин Игорь Хлебников Владимир MongoDB это документо-ориентированная СУБД. Данные в MongoDB хранятся в документах, которые объединяются в коллекции. Каждый

Подробнее

10774: Создание запросов в SQL Server : Создание запросов в SQL Server 2012

10774: Создание запросов в SQL Server : Создание запросов в SQL Server 2012 10774: Создание запросов в SQL Server 2012 10774: Создание запросов в SQL Server 2012 Содержание Краткая информация... 2 Обзор... 2 О курсе... 2 Профиль аудитории... 2 По окончании курса... 2 Детальная

Подробнее

Дополнительная общеразвивающая программа «Основы программирования на языке Java»

Дополнительная общеразвивающая программа «Основы программирования на языке Java» Дополнительная общеразвивающая программа «Основы программирования на языке Java» Занятие 1 Базовый курс по программированию на языке Java Модуль 1 Несколько слов о профессии программиста как о творческой,

Подробнее

Лабораторная работа 3 Часть 1

Лабораторная работа 3 Часть 1 1 Лабораторная работа 3 Часть 1 1. Начало работы в среде MATLAB Цель работы. В ходе лабораторной работы необходимо: 1) Научиться работать с интерфейсом среды MATLAB. 2) Изучить основные команды среды MATLAB

Подробнее

Офисное программирование

Офисное программирование Санкт-Петербургский государственный университет кино и телевидения Российский государственный педагогический университет им. А.И. Герцена А.И. Ходанович Офисное программирование Лабораторный практикум

Подробнее

Вы можете передавать исполняемую программу из ПЛК в терминал. Вы можете передавать начальные значения из ПЛК.

Вы можете передавать исполняемую программу из ПЛК в терминал. Вы можете передавать начальные значения из ПЛК. Page 1 of 5 Права доступа Обзор Права доступа Unity Pro делятся на следующие категории: сервисы проекта, настройка/отладка, библиотеки, глобальное изменение, элементарное изменение переменной, элементарное

Подробнее

Архивация данных Основные сведения об архиваторах Архиватор - это программа, которая может собрать несколько файлов в один, называемый архивом,

Архивация данных Основные сведения об архиваторах Архиватор - это программа, которая может собрать несколько файлов в один, называемый архивом, Архивация данных Основные сведения об архиваторах Архиватор - это программа, которая может собрать несколько файлов в один, называемый архивом, который будет в несколько раз меньше исходных файлов. При

Подробнее

Реализация систем, управляемых событиями Использование конечных автоматов

Реализация систем, управляемых событиями Использование конечных автоматов Опубликована в журнале «RSDN Magazine». 2005. 5. Реализация систем, управляемых событиями Использование конечных автоматов Авторы: А.Рахимбердыев The RSDN Group А.Ксенофонтов The RSDN Group Е.Адаменков

Подробнее

Шаблоны C++ Абстрактное программирование

Шаблоны C++ Абстрактное программирование Абстрактное программирование Это произведение доступно по лицензии Creative Commons Attribution-ShareAlike ( Атрибуция На тех же условиях ) 3.0 Непортированная. http://creativecommons.org/licenses/by-sa/3.0/deed.ru

Подробнее

ОРГАНИЗАЦИЯ ТЕСТИРОВАНИЯ ПРОГРАММ ИЗ ФАЙЛОВ ПОДГОТОВКА ДАННЫХ

ОРГАНИЗАЦИЯ ТЕСТИРОВАНИЯ ПРОГРАММ ИЗ ФАЙЛОВ ПОДГОТОВКА ДАННЫХ ОРГАНИЗАЦИЯ ТЕСТИРОВАНИЯ ПРОГРАММ ИЗ ФАЙЛОВ ПОДГОТОВКА ДАННЫХ При тестировании программ с большим количеством входных данных обычно не используется ручной ввод. Исходная информация заранее заносится в

Подробнее

Установка компилятора GNU Compiler Collection (GCC). Установка, локализация и настройка IDE Eclipse CDT (C/C++ Development Tools) Luna

Установка компилятора GNU Compiler Collection (GCC). Установка, локализация и настройка IDE Eclipse CDT (C/C++ Development Tools) Luna Установка компилятора GNU Compiler Collection (GCC). Установка, локализация и настройка IDE Eclipse CDT (C/C++ Development Tools) Luna МЕТОДИЧЕСКОЕ ПОСОБИЕ для пользователей OS Windows Дата: 23.07.15 2

Подробнее

Поиск повторяющихся фрагментов исходного кода при автоматическом рефакторинге

Поиск повторяющихся фрагментов исходного кода при автоматическом рефакторинге Поиск повторяющихся фрагментов исходного кода при автоматическом рефакторинге Н. Г. Зельцер nzeltser@ispras.ru Аннотация. В статье рассмотрена возможность совмещения автоматического рефакторинга с обнаружением

Подробнее

Лабораторная работа 2. Основы работы с MathCAD MathCAD, как и большинство других программ работает с документами. С точки зрения пользователя,

Лабораторная работа 2. Основы работы с MathCAD MathCAD, как и большинство других программ работает с документами. С точки зрения пользователя, Лабораторная работа 2. Основы работы с MathCAD MathCAD, как и большинство других программ работает с документами. С точки зрения пользователя, документ - это чистый лист бумаги, на котором можно размещать

Подробнее

Практическое занятие 1. Создание пользовательских форм VBA

Практическое занятие 1. Создание пользовательских форм VBA Практическое занятие 1 Создание пользовательских форм VBA При работе в Excel, как и в большинстве, других приложениях, приходиться сталкиваться с такими элементами интерфейса, как диалоговые окна. Диалоговые

Подробнее

ORDRSP Ответ на заказ

ORDRSP Ответ на заказ ORDRSP Ответ на заказ 1

Подробнее

Откройте браузер и перейдите на страницу проверяющей системы:

Откройте браузер и перейдите на страницу проверяющей системы: Уважаемые участники олимпиады «Успех будущей профессии» в номинации «Программирование»! На очном этапе вам будут предложены задачи, решение которых предполагает разработку компьютерных программ. Это пошаговое

Подробнее

Теория и технология программирования Основы программирования на языках C и C++

Теория и технология программирования Основы программирования на языках C и C++ Теория и технология программирования Основы программирования на языках Лекция 16. Основы численного интегрирования Глухих Михаил Игоревич, к.т.н., доц. mailto: glukhikh@mail.ru Задание Пользователь вводит

Подробнее

Технология SNMP. Костюкович А.Е.

Технология SNMP. Костюкович А.Е. Технология SNMP Костюкович А.Е. Технология SNMP (Простой протокол управления сетью) В связи с ростом популярности Интернета технология, основанная на протоколе SNMP по факту стала основной. Протокол SNMP

Подробнее

Переменные. Именование

Переменные. Именование Оглавление Оглавление...1 Переменные. Именование...1 Массивы...1 Инструкции VBA...2 Оператор присвоения...2 Перенос строки...2 Комментарии...3 Расположение нескольких операторов на одной строке...3 Операции...3

Подробнее

Файлы - бесконечный список значений одного и того же (базового) типа. Все элементы файла пронумерованы, начальный элемент имеет нулевой номер.

Файлы - бесконечный список значений одного и того же (базового) типа. Все элементы файла пронумерованы, начальный элемент имеет нулевой номер. Файлы Файл это область памяти на внешнем носителе, в котором хранится некоторая информация. В него можно поместить данные или извлечь их оттуда. Способ доступа Файлы - бесконечный список значений одного

Подробнее

Лекция 15 17. Базы данных

Лекция 15 17. Базы данных Лекция 15 17. Базы данных База данных обеспечивает хранения сложных структурированных данных и при этом позволяет сравнительно просто извлекать данные. Базы данных поддерживаются специальными программами,

Подробнее

Содержание. Содержание 7

Содержание. Содержание 7 Содержание Об авторе 15 Благодарность 16 Введение 17 Актуален ли язык программирования C 17 Подход, используемый в данной книге 17 Как работает эта книга 18 Использованные пиктограммы 19 Мысли на бегу

Подробнее

Система трансляции программ в Unix 1.1 Схема трансляции программы Препроцессирование. Трансляция в ассемблер. Ассемблирование. Компоновка.

Система трансляции программ в Unix 1.1 Схема трансляции программы Препроцессирование. Трансляция в ассемблер. Ассемблирование. Компоновка. 1 Система трансляции программ в Unix 1.1 Схема трансляции программы Рассмотрим схему трансляции программы на языке Си, которая традиционно используется в системах Unix. Трансляция программы состоит из

Подробнее

Инструкция по выполнению работы. Желаем успеха!

Инструкция по выполнению работы. Желаем успеха! Вариант Демо 1/5 Инструкция по выполнению работы На выполнение работы по информатике и ИКТ отводится 90 минут. Работа включает 15 заданий. Ответами к заданиям является цифра, последовательность цифр или

Подробнее

C.C. ЧЕБОТАРЁВ ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ АНАЛИЗ И ПРОГРАММИРОВАНИЕ

C.C. ЧЕБОТАРЁВ ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ АНАЛИЗ И ПРОГРАММИРОВАНИЕ C.C. ЧЕБОТАРЁВ ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ АНАЛИЗ И ПРОГРАММИРОВАНИЕ Краткий курс лекций 2014 УДК 004 ББК 32.973.26-018.1+74.480.26 Чеботарёв С.С. Объектно-ориентированный анализ и программирование: краткий

Подробнее

автоматически создавать презентации (например, на основе набора изображений

автоматически создавать презентации (например, на основе набора изображений ГЛАВА 14 Программирование в PowerPoint PowerPoint это программа для работы с презентациями (т. е. с наборами графических изображений слайдов, иногда со звуковым сопровождением). Использовать возможности

Подробнее

CLEO ПРОГРАММИРОВАНИЕ

CLEO ПРОГРАММИРОВАНИЕ CLEO ПРОГРАММИРОВАНИЕ ДОБРО ПОЖАЛОВАТЬ, МЕНЯ ЗОВУТ АЛЕКСАНДР. ДАННАЯ КНИГА ДЛЯ ТЕХ, КТО ХОЧЕТ НАУЧИТЬСЯ ЯЗЫКУ ПРОГРАММИРОВАНИЯ CLEO. ХОЧЕШЬ ПИСАТЬ СВОИ CLEO СКРИПТЫ ИЛИ ВОЗМОЖНО НАПИСАТЬ СВОИ МИССИИ В

Подробнее

ФОНД КОНТРОЛЬНЫХ ЗАДАЧ ПО ДИСЦИПЛИНЕ Системное программное обеспечение ЗАДАЧА 1

ФОНД КОНТРОЛЬНЫХ ЗАДАЧ ПО ДИСЦИПЛИНЕ Системное программное обеспечение ЗАДАЧА 1 ФОНД КОНТРОЛЬНЫХ ЗАДАЧ ПО ДИСЦИПЛИНЕ Системное программное обеспечение ЗАДАЧА 1 1. Напишите варианты результатов выполнения команды find ~ -name '* adf*' - print 2. Используя условные выражения, написать

Подробнее

Проектирование и эксплуатация информационных систем в медиаиндустрии. Выломова Екатерина Алексеевна

Проектирование и эксплуатация информационных систем в медиаиндустрии. Выломова Екатерина Алексеевна Проектирование и эксплуатация информационных систем в медиаиндустрии Выломова Екатерина Алексеевна e-mail: evylomova@gmail.com 0. Предыдущие лекции Открытые системы Веб-сервисы SOAP, RPC, WSDL, REST SOA,

Подробнее

Руководство по работе с ResearcherID

Руководство по работе с ResearcherID Руководство по работе с ResearcherID ResearcherID... 2 Регистрация... 4 Управление созданным профилем (Manage My Profile)... 15 Создание списка публикаций (My Researcher Profile)... 17 Поиск исследователей

Подробнее

Операционная система Linux. Лекция 12

Операционная система Linux. Лекция 12 Операционная система Linux Лекция 12 1 Компиляция нескольких файлов Раздельная компиляция трансляция частей программы по отдельности с последующим объединением их компоновщиком в единый загрузочный модуль.

Подробнее

ОПТИМИЗАЦИЯ КОДА ЧЕРЕЗ РУЧНОЙ ТАЙМИНГ. Арташкин Евгений Павлович. студент

ОПТИМИЗАЦИЯ КОДА ЧЕРЕЗ РУЧНОЙ ТАЙМИНГ. Арташкин Евгений Павлович. студент ЭЛЕКТРОННЫЙ НАУЧНЫЙ ЖУРНАЛ «APRIORI. CЕРИЯ: ЕСТЕСТВЕННЫЕ И ТЕХНИЧЕСКИЕ НАУКИ» 5 2016 ОПТИМИЗАЦИЯ КОДА ЧЕРЕЗ РУЧНОЙ ТАЙМИНГ Арташкин Евгений Павлович студент Мордовский государственный университет им. Н.П.

Подробнее

Стандартная библиотека Java: ввод / вывод

Стандартная библиотека Java: ввод / вывод Стандартная библиотека Java: ввод / вывод java.io.file API к файловой системе до Java 6 включительно Представляет файл или директорию Файл идентифицируется путем, специфичным для ОС/ФС \\server\share\

Подробнее

ДЕРЕВЬЯ КЛАССИФИКАЦИИ И РЕГРЕССИИ

ДЕРЕВЬЯ КЛАССИФИКАЦИИ И РЕГРЕССИИ Глава 26 ДЕРЕВЬЯ КЛАССИФИКАЦИИ И РЕГРЕССИИ Д еревья регрессии и классификации, известные также под общим названием как деревья решений (Decision Tree --- DT), представляют собой структуры данных, позволяющие

Подробнее

Рефакторинг кода с использованием PostSharp

Рефакторинг кода с использованием PostSharp Рефакторинг кода с использованием PostSharp Luxoft Training 2012 Андрей Гордиенков my@violet-tape.net softblog.violet-tape.ru 1 Обо мне Фанат программирования и рассказов о программировании Ведет свой

Подробнее

Java Memory Model

<Insert Picture Here> Java Memory Model Java Memory Model Sergey Kuksenko Java Platform Performance Agenda Для чего? Из-за чего? Как Примеры Сколько стоит 2 "Requirements for Programming Language Memory

Подробнее

УДК ОСОБЕННОСТИ И ПРИНЦИПЫ ПРОЕКТИРОВАНИЯ ЭЛЕКТРОННОГО КОШЕЛЬКА. В.А. Щербанов, П.В. Кориков

УДК ОСОБЕННОСТИ И ПРИНЦИПЫ ПРОЕКТИРОВАНИЯ ЭЛЕКТРОННОГО КОШЕЛЬКА. В.А. Щербанов, П.В. Кориков 201 УДК 681.3 ОСОБЕННОСТИ И ПРИНЦИПЫ ПРОЕКТИРОВАНИЯ ЭЛЕКТРОННОГО КОШЕЛЬКА В.А. Щербанов, П.В. Кориков Предложена архитектура клиентского программного обеспечения электронного кошелька. Рассмотрены принципы

Подробнее

Массивы. Функции в PHP.

Массивы. Функции в PHP. Лекция 3 Массивы. Функции в PHP. 1. Массивы. Массивы представляют собой сложный тип данных, состоящий из цепочки значений, которые в свою очередь могут принадлежать также как к скалярному типу, так и быть

Подробнее

Содержание: указатели массивы и указатели динамическое размещение массивов глобальные переменные

Содержание: указатели массивы и указатели динамическое размещение массивов глобальные переменные Тема : знакомство с С (Си) УКАЗАТЕЛИ и МАССИВЫ (динамическое размещение) Содержание: указатели массивы и указатели динамическое размещение массивов глобальные переменные Указатели Указатель это адрес памяти,

Подробнее

Программа курса C++, Академический университет, кафедра МиИТ

Программа курса C++, Академический университет, кафедра МиИТ Программа курса C++, Академический университет, кафедра МиИТ Курс расчитан на студентов, владеющих синтаксисом хотя бы одного из стандартных структурных языков программирования (C, Pascal, Fortran, и т.п.).

Подробнее