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

© А.В. ИльинВ.Д Ильин, 2011

Объектно-ориентированное программирование (ООП) [англ. Object-oriented programming (OOP) ] — методология разработки программ для компьютерного моделирования систем произвольного назначения, представимых в виде совокупностей объектов, каждый из которых отнесён к определённому классу и наделён наборами данных (атрибутов объекта) и процедур (методов) их обработки. Классы объектов представлены в виде иерархии наследования атрибутов и методов. □ 

С развитием компьютерного моделирования и усложнением моделируемых систем всё более явными становились недостатки методологий разработки программ с использованием процедурно-ориентированных языков программирования (алгола, фортрана и др.). Это объясняется отсутствием в них средств, удобных для описания сложных систем, слабой поддержкой повторной применимости ранее разработанных программ и совместных разработок коллективами программистов.

В конце 1960-х был создан язык симула 67, ставший первым языком ООП. В нём объединение данных и процедур их обработки было названо объектом, а совокупность схожих объектов — классом. Среди языков ООП, созданных вслед за Simula 67, наиболее удачным признан Smalltalk-80, разработанный в конце 1970-х. Его успех способствовал развитию и распространению концепции ООП: в начале 1980-х на основе языка C был создан C++; в середине 1980-х на основе Pascal — Object Pascal; в середине 1990-х был создан язык Java.

Основные понятия

Объект в ООП – это модель экземпляра определённого класса сущностей моделируемой системы. Класс содержит определение данных и методов, являющихся общими для входящих в него объектов. Он задаётся атрибутами (свойствами класса), описывающими состояние его объектов, совокупностью процедур (методов класса) и правилами доступа извне (из др. частей программы) к атрибутам и методам, определяющими интерфейс класса.

В иерархии наследования класс-потомок порождается путём добавления одного или нескольких атрибутов и\или методов к атрибутам и\или методам одного или нескольких классов-родителей.
Напр., от класса «точка» [с атрибутами «абсцисса» (m_rX), «ордината» (m_rY) и методами создания, чтения и изменения координат] может быть порождён класс «цветная точка», объекты которого будут иметь дополнительные атрибут [«цвет» (m_rgbColour)] и некоторые методы управления цветом.
На языке ООП C++ объявления классов «точка» (class Point) и «цветная точка» (class ColourPoint) могут быть записаны следующим образом [здесь все атрибуты и методы доступны извне (это правило определяется ключевым словом public)]:
class Point
{
public:
// Атрибуты
// Вещественная переменная, представляющая абсциссу
double m_rX;
// Вещественная переменная, представляющая ординату
double m_rY;
// Методы
// Метод создания, или конструктор, имеющий параметры – абсцисса и ордината
Point(double rX, double rY);
// Метод чтения абсциссы
double Get_X();
// Метод чтения ординаты
double Get_Y();
// Метод изменения абсциссы
void Set_X(double rX);
// Метод изменения ординаты
void Set_Y(double rY);
};
class ColourPoint : public Point
{
public:
// Целая переменная, представляющая цвет точки – дополнительный атрибут
long m_rgbColour;
// Метод создания, имеющий параметры – абсцисса, ордината, цвет
ColourPoint(double rX, double rY, long rgbColour);
// Метод чтения цвета
long GetColour();
// Метод изменения цвета
void SetColour(long rgbColour);
};

Определение класса задаёт тип данных, который может быть использован при определении других классов.
Напр., класс «круг» (class Circle) может иметь атрибут «центр» типа «точка» (Point m_center).
Начало объявления класса «круг» на С++:
class Circle
{
public:
Point m_center;
// Вещественная переменная, представляющая радиус
double m_rRadius;
// Метод создания, имеющий параметры – координаты центра и радиус
Circle(double rX, double rY, double rRadius);
// далее объявления некоторых методов для работы с кругом
};

Важнейшей особенностью ООП является возможность утаивания деталей реализации за интерфейсом класса (т.н. инкапсуляция).
Предположим, нужно, чтобы вне класса координаты точки могли изменяться не произвольно, а только по определенному правилу (напр., поворотом точки вокруг начала координат на заданный угол). В таком случае в др. частях программы изменение координат делается доступным только посредством интерфейсного метода, которому передаётся значение параметра «угол поворота» (rAngle). При этом алгоритм поворота скрыт внутри реализации метода изменения координат.
Объявление класса на С++:
class Point
{
// Правило доступа к атрибутам определяется ключевым словом protected
// (защищённый)
protected:
double m_rX;
double m_rY;
// Методы, доступные извне
public:
Point(double rX, double rY);
double Get_X();
double Get_Y();
// Метод поворота
void Rotate(double rAngle);
};

Применение и перспективы развития

Преимущества ООП особенно отчётливо проявляются при создании сложных программных систем, выполняемых коллективами разработчиков: одни могут проектировать функциональное поведение и структуру системы; другие — её составляющие и способы их взаимодействия; третьи — заниматься программной реализацией. При этом разработчикам составляющих и занимающимся программной реализацией необязательно знать о системе в целом, а разработчикам системы в целом — о деталях её составляющих, способах их взаимодействия и программной реализации.
ООП, позволяющее повысить безопасность и производительность совместной разработки программного обеспечения коллективами программистов (за счёт повторного использования программного кода и утаивания деталей реализации классов) продолжает интенсивно развиваться. Прирастает семейство языков ООП, совершенствуются системы программирования, увеличивается число программ различного назначения (для Интернет-сервисов, систем мобильной связи и др.), разработанных на языках ООП (C++, Java и др.).

Об изучении ООП

Можно писать программы на C++ или другом язые ООП, не следуя рекомендациям методологии ООП, а на C разрабатывать программы, следуя методологии ООП. 

Полезная статья с рекомендациями по освоению ООПHaibin Zhu, MengChu Zhou. Methodology First and Language Second: A Way to Teach Object-Oriented Programming.

См. также статью Peter Wegner. OBJECT-ORIENTED PROGRAMMING (OOP) из энциклопедии Encyclopedia of Computer Science 4th, Nature Publishing Group© 2000. ISBN:156159248X. Editors: Anthony Ralston, Edwin D. Reilly, David Hemmendinger.

_______________________________________________

PDF-файл основной статьи OOP

Эта статья — в сети ResearchGate

Дата публикации основной статьи: 22.10.2011

Обновления: 1.11.2011, 7.08.2014

Реклама

Мультимедиа

© А.В. Ильин, 2010

□ МУЛЬТИМЕДИА (англ. multimedia, от лат. multum − много и medium − среда) программно-аппаратные средства формирования, передачи, приёма и воспроизведения сообщений, включающих текст,  неподвижные изображения, анимацию, аудио, видео и др. □

См. TSM – комплекс средств формализации гипермедийных описаний s-моделей.

М. воздействуют одновременно на неск. органов чувств человека, что способствует более эффективному восприятию сообщений. Параллельно с совершенствованием информационных технологий построения, передачи, приёма и воспроизведения М.-сообщений, включающих композиции аудио- и визуальных символов, интенсивно развиваются технологии, реализующие композиции, включающие тактильные и запаховые виды символов (см. S-символ). Напр., существуют спец. костюмы (напр., в системах виртуальной реальности и др.), позволяющие обмениваться М.-сообщениями, содержащими тактильные символы. Разработаны тестовые варианты М.-синтезаторов ароматов, проводятся эксперименты с вкусовыми символами.

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

В 1993 Т. Воган (США) впервые определил М. как любую комбинацию текста, графики, звука, анимации и видео, созданную с помощью компьютера (по сути это было определение М. сообщения). С кон. 20 в. М. широко применяются в разл. областях человеч. деятельности. Так, в телекоммуникациях используются М.-средства видеосвязи, обмен М.-сообщениями посредством мобильной связи, электронной почты и др. Совр. системы автоматизир. проектирования, основанные на передовых М., обусловили неуклонный рост производительности труда при проектировании машин, строит. и др. объектов. В разл. областях науки М. используют при моделировании изучаемых объектов. С помощью М. формируются системы виртуальной реальности, широко применяемые в разл. тренажёрах и симуляторах (медицинских, транспортных, военных, спортивных и др.), а также в компьютерных играх − для имитации реальной окружающей среды. М. используются при произ-ве видеоклипов и фильмов (напр., для создания разл. спецэффектов), при подготовке видеорепортажей, а также в средствах онлайн обучения и тестирования (в т.ч. дистанционного) и др. Широкое распространение в науке, образовании, промышленности, торговле и др. областях получили М. презентации разл. изобретений, проектов, товаров и др.

Лит.: Ильин А.В., Ильин В.Д. Основы теории s-моделирования, М.: ИПИ РАН, 2009.

____________________________________________

Эта статья — в сети ResearchGate

Интерактивный режим

© А.В. Ильин, 2008, 2009

□ Интерактивный режим (англ. Interactive Mode) –

диалоговый режим взаимодействия пользователя с программой s-машины. Позволяет пользователю вводить s-(команды и данные) во время выполнения программы, управляя её работой с учетом выводимых программой результатов. □

См. TSM – комплекс средств формализации гипермедийных описаний s-моделей.

Программы массового применения, такие как текстовые и графические редакторы, электронные таблицы, обучающие программы, компьютерные игры, экспертные системы и др., работают в интерактивном режиме.

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

☼ При работе с текстовым редактором пользователь вводит текст с клавиатуры, а программа синхронно выводит его на экран монитора. Затем, пользователь может дать команду сохранить или распечатать введённый текст, в ответ на которую программа выводит текст в файл (сохраняемый, на ☼ жёстком диске ☼) или на устройство печати соответственно. ☼

☼ Наглядным примером интерактивного режима служит диалог человека с программой медицинской экспертной системы. Система последовательно выводит на экран серию вопросов о состоянии пациента и варианты ответов, а врач выбирает один из них. Каждый следующий вопрос и варианты ответов выбираются системой в зависимости от ответа на предыдущий вопрос и содержимого базы знаний системы. Результатом такого диалога может стать вариант диагноза, а также описание рекомендуемых врачебных мероприятий. ☼

Интерактивный режим эффективен также в программных комплексах, работающих в режиме вычислительного эксперимента (где для получения результата целесообразно привлечение знаний человека‑эксперта; см. Интернет-сервисы Планирования Ресурсов, входящие в состав системы знаний информатики СИНФ) [1].

Альтернативой интерактивному режиму является режим пакетной обработки (англ. batch processing mode). В этом режиме все необходимые команды и данные (пакет) вводятся до запуска программы, и обработка пакета осуществляется программой без постороннего вмешательства (до завершения или возникновения ошибки). В пакетном режиме работают многие системные программы (утилиты форматирования и записи дисков, компиляторы языков программирования и др.). [2]

/ Литература

1. А.В. Ильин, В.Д. ИльинИнтерактивный преобразователь ресурсов с изменяемыми правилами поведения, Информационные технологии и вычислительные системы, №2, 2004, с. 67-77

2. А.В. Ильин, Интерактивный режим, Большая Российская энциклопедия. Том 11, 2009, с. 435

S-компилятор

© А.В. Ильин, 2008, 2009

□ S-компилятор (англ. S-compiler) –

программа s-машины для преобразования исходного кода программ, написанных на одном из языков программирования высокого уровня (Паскаль, Си, Фортран или др.), в эквивалентный набор инструкций на языке низкого уровня, называемый объектным кодом [как правило, предназначенным для дальнейшего преобразования специальной программой (компоновщиком) в исполняемый код, рассчитанный на конкретную вычислительную платформу]. □

См. TSM – комплекс средств формализации гипермедийных описаний s-моделей.

Вычислительная платформа определяется архитектурой семейства центральных процессоров компьютера [☼x86 – Intel 8086 Family Architecture (архитектура семейства Intel 8086)☼], операционной системой и, в ряде случаев, дополнительным программным обеспечением (☼виртуальной машиной☼), необходимым для работы исполняемого кода на процессорах данной архитектуры.

Каждый компилятор соответствует определенному языку программирования высокого уровня (ЯПВУ) и одной или нескольким вычислительным платформам [☼Компилятор языка Си++ для платформы Win32 (для 32-разрядных операционных систем Microsoft Windows, работающих на процессорах архитектуры x86)☼].

/ Комплятор как средство автоматизации программирования

До появления ЯПВУ и их компиляторов программы писали на языках низкого уровня (сначала в кодах s-машин, позднее – на языках ассемблера). Это требовало больших трудозатрат программистов, затрудняло сопровождение программ в процессе их эксплуатации и не предполагало возможность переноса программ с одной платформы на другую (без переписывания исходного кода).

ЯПВУ и их компиляторы начали разрабатывать, когда стало ясно, что выгоды от программирования на ЯПВУ и переноса программ значительно превосходят затраты на разработку ЯПВУ и компиляторов. Повторное использование исходных кодов программ при получении исполняемых кодов, предназначенных для разных платформ, является существенным фактором повышения производительности труда программистов.

// Первый компилятор был создан в 1952 Грэйс Хоппер (США) для разработанного ею языка программирования A-0 и вычислительной платформы UNIVAC I. Значительным событием в автоматизации программирования стала разработка в 1957 компилятора для языка Фортран и платформы IBM 704, выполненная под руководством Джона Бэкуса (США). В 1950-60-х исходные коды компиляторов писались только на языках ассемблера. В 1970-х появились ЯПВУ Паскаль, Си и их первые компиляторы. Эти и ряд др. ЯПВУ стали применяться для разработки не только прикладных программ, но и компиляторов (наряду с языками ассемблера), что позволило значительно сократить трудоемкость разработки компиляторов

/ Основы технологии

Основные этапы работы компилятора – лексический анализ, синтаксический и семантический анализ и генерация кода.

На этапе лексического анализа исходный код преобразуется в последовательность лексических единиц (лексем: ключевых слов ЯПВУ, идентификаторов переменных, констант и др.).

Синтаксический анализатор проверяет последовательность лексем на наличие синтаксических ошибок (каждый ЯПВУ имеет строго определенный синтаксис) и преобразует её в т.н. дерево разбора.

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

Если в процессе анализа были найдены ошибки, компилятор завершает работу выводом сообщения об ошибках. При отсутствии ошибок компилятор переходит к генерации объектного кода.

Исходный код программы, как правило, содержится в нескольких файлах, каждый из которых преобразуется компилятором в отдельный объектный модуль – файл, содержащий объектный код. Из полученных объектных модулей с помощью компоновщика собирается исполняемый код программы [до появления компоновщиков сборка осуществлялась самими компиляторами, что объясняет происхождение термина компилятор].

/ Интерпретаторы

Альтернативой компиляторам и компоновщикам служат интерпретаторы. Интерпретатор (☼языка Бэйсик☼) последовательно анализирует каждую инструкцию исходного кода, при отсутствии ошибок преобразует её в исполняемый код и выполняет его, а затем переходит к следующей инструкции.

/ Трансляторы

Компиляторы и интерпретаторы называют также транслятороми (англ. translator) – программами, выполняющими перевод исходного кода в объектный.

/ Эффективность

Для ряда ЯПВУ существуют как компиляторы, так и интерпретаторы. Выполнение программы, исполняемый код которой получен с использованием компилятора, происходит быстрее, нежели интерпретация программы с тем же исходным кодом (поскольку все инструкции заранее преобразованы в исполняемый код).

Интерпретация исходного кода целесообразна, например, при отладке программ (т.к. не требует перекомпиляции объектного модуля для проверки каждого внесенного программистом изменения).

// Особенности

Для некоторых ЯПВУ [☼Java (Джава)☼] применяется двухэтапная компиляция или сочетание компиляции и интерпретации. На первом этапе на специальном промежуточном языке генерируется т.н. байт-код, который не привязан к конкретной операционной системе и архитектуре семейства процессоров. Байт-код предназначен для последующей интерпретации или т.н. JIT‑компиляции (от англ. Just-In-Time compilation – компиляция «на лету») во время выполнения программы. Преобразование байт-кода в исполняемый код (для конкретных операционной системы и процессора) осуществляется специальным программным обеспечением – виртуальной машиной (☼Java Virtual Machine – виртуальная машина Джава☼). Такой подход позволяет существенно уменьшить трудозатраты программистов, поскольку один и тот же байт-код приложения может быть использован на различных вычислительных платформах, включающих в себя необходимую виртуальную машину.

/ Одновременный рост количества ЯПВУ, ориентированных на различные предметные области (создание веб-сайтов, компьютерную графику и др.) и числа вычислительных платформ требуют разработки новых компиляторов. Совершенствование методов конструирования компиляторов – актуальная задача информатики, от решения которой зависят темпы развития индустрии программирования [1-2].

/ Литература

1. А.Ю. Дроздов, А.В. Ильин, Компилятор, Большая Российская энциклопедия. Том 14, 2009, с. 688-689

2. А.В. Ильин, S-компилятор (S-compiler), ResearchGate.net, 2014

PDF-файл статьи

/ Дневник статьи

В данной статье представлена только принадлежащая автору часть статьи [1].

Автор и научный редактор энциклопедии информатики ИНФОПЕДИЯ считают остальную часть статьи [1] излишней в энциклопедической статье (она была добавлена по решению зав. редакции «Техника» БРЭ).

S-задача (задачный конструктивный объект)

©  А.В. Ильин, В.Д. Ильин, 1989, 2007, 2009

□ S-задача (задачный конструктивный объект) [англ. s-problem (problem constructive object)] –

это триада {Formul, Alg, Prog}, где Formul – постановка задачи, Alg – множество алгоритмов, поставленных в соответствие постановке задачи, Prog – объединение множеств программ, каждое из которых поставлено в соответствие алгоритму из Alg.

Постановка задачи Formul – это пара {Mem, rul}, где Mem – s-представление множества понятий задачи, на котором задано разбиение Mem = Inp U Out (Inp ^ Out = 0), а rul – правило, задающее на Mem бинарное отношение Rel [rul (Mem)] < Inp * Out [1]. Назовем множество Mem памятью задачи, а Inp и Out – входом и выходом задачи, значения которых предполагается соответственно задавать и искать □.

См. TSM – комплекс средств формализации гипермедийных описаний s-моделей.

Исходим из того, что одной формулировке могут соответствовать несколько алгоритмов, а каждому алгоритму – несколько программ. Различия между алгоритмами из множества Alg определяются задаваемым описанием применения (ограничениями на предельный размер задачи, точность полученного результата и др.), а различия между программами – выбранными языками программирования и операционными системами.

◊ Каждая программа сопровождается обязательной ссылкой на набор тестовых примеров, что необходимо для проверки ее работоспособности [2]. ◊.

В общем случае множества Prog и Alg могут быть пустыми (число элементов этих множеств зависит от степени изученности задачи). Если ни один из алгоритмов множества Alg не запрограммирован, Prog = Ø. Если в соответствие постановке задачи не поставлен ни один алгоритм, Alg = Ø и Prog = Ø.

□Спецификация spec s-задачи – это пара (Formul, as), где as – описание применения.□

☼ Формулировка задачи линейного программирования. Вход задачи Inp = {матрица a [i = 1…m, j = 1…n] коэффициентов ограничений, вектор b [i = 1…m] правых частей ограничений, вектор c [j = 1…n] коэффициентов целевой функции}. Выход Out = {искомый вектор x [max; j = 1…n]}. Правило rul максимизации по x [j = 1…n] целевой функции c [j = 1…n] * x [j = 1…n] при ограничениях a [i = 1…m, j = 1…n] * x [j = 1…n] ≤ b [i = 1…m] и x [j = 1…n] ≥ 0 имеет следующий вид:

max [x [j = 1…n]: a [i = 1…m, j = 1…n] * x [j = 1…n] ≤ b [i = 1…m], x [j = 1…n] ≥ 0] (c [j = 1…n] * x [j = 1…n]) [2]. ☼

/ Связи по памяти между s-задачами

Связи по памяти между s-задачами определяются тремя типами функций, каждая из ко­торых является функцией двух аргументов и позволяет по­ставить в соответствие паре s-задач некоторую третью s-задачу, образованную из этой пары.
□ S-задача a связана с s-задачей b по памяти, если существует хотя бы одна пара элементов {elem Mem[a], elem Mem[b]}, принадлежащих памяти Mem[a] s-задачи a и памяти Mem[b] s-задачи b, от­носительно которой определено общее означивание (эле­менты имеют одно и то же множество значений). Пусть S и H – множества s-задач и D ≤ S * S. Если каждой паре (s[i], s[j]) элементов из D ста­вится в соответствие определенный элемент из H, то будем говорить, что задана функция связи по памяти h = conn (s[i], s[j]). При этом D будем называть областью определения функции conn и обозначать D [conn]. Множество R = {h: elem H; h = conn (s[i], s[j]); s[i]: elem D[conn], s[j]: elem D[conn]} будем называть областью значений функции conn. 
Тип связи зависит от содержимого пересечения по памяти: составлена ли связь из элементов выхода одной и входа дру­гой задачи; из элементов выходов задач или из элементов их входов; или же связь получена путем комбинации предыду­щих способов. Будем обозначать функцию связи по памяти типа вход-вход через conn[x], выход-вход – через conn[yx] и выход-выход – через conn[y].

/ Родовые связи между s-задачами

□ S-задача может быть прообразом некоторого непус­того множества s-задач или образом некоторого прооб­раза; или быть одновре­менно и образом какой-то одной s-задачи, и про­образом некоторого множества других s-задач.

Предусмотрены следующие типы родовых связей между s-задачами:

s‑(специализация задачи) — указание на s-задачу, частную по отношению к исходной;

s‑(обобщение задачи) — указание на s-задачу, которая служит обобщением исход­ной. □

/ Конструирование s-задачи

□ S‑(конструирование задачи) реализуется посредст­вом связи по памяти между задачами. Элементарная задачная конструкция — это задачная пара. Из задачных пар можно построить более сложную задачную конструкцию, если рассматривать их как задачные элементы. Любая задачная конст­рукция, в свою очередь, может быть использована как со­ставляющая еще более сложной задачной конструкции. □

/ Конкретизация s-задачи

□ S‑(конкретизация задачи) — это переход формулировка → алгоритм → программа).

Для s-задач, имеющих пустое множество программ (Prog = Ø), конкретизация сводится к выбору или разработке алгоритма. Если и Alg = Ø, s-задача может быть использована в s‑(конструированиии задач), но не может быть конкретизирована. □

/ Атомарная s-задача

□ S-задача называется атомарной, если её формулировка не представлена в виде структуры, заданной на некотором множестве формулировок других s-задач. Будем также говорить об атомарной s-задаче как о простой s-задаче. □ Простая задача (с точки зрения построи­теля задачных конструкций) не наделена внутренней струк­турой и потому не подлежит декомпозиции. Простые задачи используются для создания конструкций. Каждая созданная задачная конструкция может быть объявлена некоторой новой задачей. В свою очередь, эти новые задачи вместе с атомар­ными могут быть применены при конструировании задач.

/ Литература

1. В.Д. Ильин, Система порождения программ, М.: Наука, 1989, 264 с.

2. А.В. Ильин, Конструирование разрешающих структур на задачных графах системы знаний о программируемых задачах, Информационные технологии и вычислительные системы, №3, 2007, с.30-36

PDF-файл статьи

Эта статья — в сети ResearchGate.net

S-интерфейс

© А.В. Ильин, 2008

□ S-интерфейс (англ. S-interface) —

способ и средства взаимодействия пользователя с программами s-машин, программ между собой или с аппаратными средствами s-машин, а также аппаратных средств между собой. □

См. Tsm — комплекс средств формализации гипермедийных описаний s-моделей.

/ Интерфейс пользователя определяет взаимодействие человека с операционной системой (ОС) и прикладными программами (приложениями), работающими под её управлением. Наиболее распространёнными аппаратными средствами реализации данного вида интерфейса являются: клавиатура, мышь, джойстик, экран монитора персонального компьютера, ноутбука, коммуникатора и др.

// В большинстве ОС применяется графический интерфейс пользователя (graphical user interface, GUI) в котором для экранного отображения ввода команд пользователя и ввода/вывода данных используются окна (windows) – области экрана, каждая из которых относится к одной из работающих программ. Элементы управления программой отображаются внутри окон в виде меню, графических символов, полей ввода и др. Выбор и активация одного из элементов обычно осуществляются с помощью мыши, клавиатуры, джойстика или прикосновением к сенсорному экрану. Программы могут осуществлять вывод данных (☼ на экран ☼) в виде текста, картинок, таблиц и др.

Основы стандартов графичического интерфейса пользователя были заложены компанией Apple (США), выпустившей в 1984 персональный компьютер Macintosh с установленной на нём ОС MacOS. Применение стандартных графических элементов управления в различных программах облегчает пользователю освоение новых программ.

// Другими видами интерфейса пользователя являются интерфейс командной строки (текстовые команды вводятся пользователем с клавиатуры) и голосовой (голосовые команды вводятся с помощью микрофона и при успешном распознавании выполняются программой). В одной программе могут быть реализованы различные виды интерфейса пользователя.

// В 2007 компания Microsoft (США) анонсировала программно-аппаратное решение Microsoft Surface (см. / ПРИЛОЖЕНИЕ), позволяющее управлять программами s-машин с помощью движений рук перед сенсорной поверхностью, за которой находятся несколько цифровых видеокамер, фиксирующих движение, и цифровой проектор, создающий изображение на поверхности. Такой интерфейс позволяет нескольким пользователям работать одновременно без применения мыши и клавиатуры, а также переносить в память s-машины данные с помещенных на эту поверхность объектов.

/ Интерфейс программCпособ и средства взаимодействия программных объектов (приложений, библиотек программ, компонентов ОС) называют интерфейсом программ. Описание функций и структур данных программных объектов, выполненное на языке программирования или языке описания интерфейсов, называют интерфейсом программирования приложений (англ. application programming interface, сокр. API). Такое описание позволяет разработчикам вставлять в коды создаваемых программных объектов вызовы исполняемых кодов других (ранее разработанных) объектов. Это дает возможность повторно использовать программные объекты, созданные разными разработчиками.

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

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

/ Интерфейс аппаратных средств s-машин осуществляется посредством шин, разъёмов, кабелей, а также средств беспроводного взаимодействия, реализующих различные технологии радио интерфейса. [☼Bluetooth (от англ. Bluetooth – синий зуб) – для взаимодействия (обычно на небольших расстояниях) Bluetooth‑мыши с ноутбуком, для обмена файлами между мобильным телефоном и ноутбуком или др.☼].

Разъёмы s-машин, к которым подсоединяются устройства или др. s-машины, называют портами. ☼USB‑порты (universal serial bus port – порт универсальной последовательной шины) используются для подключения таких устройств с USB-интерфейсом, как фото- и видеокамеры, флэш-накопители, мыши, клавиатуры, принтеры и др.☼

/ Стандартизация интерфейса. Актуальной научно-технич. задачей является стандартизация интерфейсов всех видов. От её решения зависят эффективность проектирования, изготовления и применения программных и аппаратных средств s-машин, а в итоге – производительность и надёжность функционирования s-машин и s-среды [1].

/ ПРИЛОЖЕНИЕ

Серия видеоклипов о технологии Microsoft Surface (после просмотра первого клипа используйте кнопку menu для выбора следующего).

Литература

1. А.В. Ильин, Интерфейс. Большая Российская энциклопедия. Том 11, 2009, с. 457-458

Эта статья — в сети ResearchGate.net

TSM — комплекс средств описания s-моделей

© А.В. ИльинВ.Д. Ильин, 1989, 2007, 2009, 2014

□ TSM ‑ комплекс средств описания s‑моделей (англ. TSM) –

расширяемый набор средств унифицированного описания s‑моделей систем понятий и систем знаний. Включает средства одноуровневой записи формул, выделения частей гипермедийных описаний s-моделей и замены выбранными сокращениями часто повторяющихся фрагментов. □

Первая версия TSM была предложена при работе над теорией порождения программ, где TSM служил средством записи спецификаций задачных конструктивных объектов [1].

Изложенная здесь версия содержит ряд синтаксических улучшений варианта TSM, развитого в [2].

Одноуровневые TSM‑описания соответствуют стилю, принятому в языках программирования.

Для TSM-описаний достаточно стандартной клавиатуры и набора специальных символов, имеющихся в составе текстовых редакторов Word (пакета MS Office), Pages (пакета iWork), Writer (пакетов LibreOffice или OpenOffice) или др., что существенно для успешного развития TSM.

Универсализации TSM способствовало применение этого комплекса при формировании образовательных ресурсов и разработке системы знаний информатики СИНФ.

Уровни фрагментов описания

□ Фрагмент TSM‑описания – часть описания, включающая не менее одного полного абзаца (без заголовка или с заголовком). □

Выделяется косыми (slashes), размещаемыми в начале фрагмента: /k/ (k – номер уровня вложенности).

Для первого и второго уровней значения k не указываются (/ – первый уровень вложенности; // – второй); для третьего и последующих уровней можно указывать (начало фрагмента третьего уровня можно обозначить как /// или как /3/).

Выделения

Для выделения определений, замечаний, примеров, имен понятий и отдельных частей описания используются следующие средства:

⌂ <фрагмент описания> ⌂ ≈ часть описания с фиксированными в ее пределах обозначениями (здесь и далее символ ≈ заменяет слово означает);

□ <фрагмент описания> □ ≈ утверждение (определение, аксиома и др.);

◊ <фрагмент описания> ◊ ≈ замечание;

☼ <фрагмент описания> ☼ ≈ пример;

∆ <фрагмент описания> ∆ ≈ рекомендация или комментарий составителя описания;

{S<фрагмент описания><список>S} ≈ здесь <фрагмент описания> ≈ набранный курсивом текст (может быть пустым), который следует интерпретировать как расширенный префикс s-<фрагмент описания> для выделенных курсивом элементов списка;

☼ {S-модель<список>S} – здесь расширенным префиксом служит s‑модель;

{S<список>S} – здесь префикс s— ☼.

Курсивом могут быть выделены:

первые вхождения названий понятий [определяемых или определённых (последние могут быть гиперссылками)];

фрагменты описания, к которым автор хочет привлечь внимание;

формулы.

Сокращения

Для часто повторяющихся названий понятий:

СМ ≈ символьное моделирование;

S-моделирование ≈ СМ произвольных объектов в человеко‑машинной среде;

s-машина ≈ машина, помогающая создавать и применять s‑модели;

s-среда ≈ совокупность взаимодействующих людей и управляемых ими s-машин, предназначенная для решения задач S-моделирования.

Умолчания

Так как в s-среде имеем дело только с s-моделями, вместо s‑модель символа, s-модель кода, s-модель сообщения, s-модель информации и т.д., пишем s-символ, s-код, s-сообщение, s‑информация и т.д. Слово s‑модель не опускаем лишь там, где может возникнуть контекстная неясность.

Формулы

Для теоретико-множественных и других формул применяется одноуровневая форма записи.

/ Индексы, пометы

Не накладывается никаких ограничений на максимальное число индексов для переменных и помечающих символов (помет).

Все индексы и пометы записываются в строчку внутри квадратных скобок, следующих сразу за индексируемой (или/и помеченной) переменной.

Индексы, определяющие элемент массива, отделяются запятыми, индексированные индексы – косой чертой «/».

Верхний индекс от нижнего отделяется точкой с запятой «;». Если в описании индекса точка с запятой не встречается, то индекс считается нижним. Если сразу после точки с запятой стоит закрывающая вертикальная черточка, то — задан только верхний индекс.

☼ x[out; j=1…n] ≈ вектор x из n компонент, имеющий помету out;

a[inp; i=1…m, j=1…n] ≈ матрица a размера m*n, имеющая помету inp;

c[′; 1] ≈ c-один со штрихом (штрих «′» – верхняя помета, 1 – нижний индекс);

d[j/i;] ≈ d с верхним индексированным индексом j i-тое (чтобы показать отсутствие нижних индексов, поставлена точка с запятой, за которой сразу следует закрывающая вертикальная черточка);

d[j/i] ≈ d с нижним индексированным индексом j i-тое (отсутствие точки с запятой указывает на отсутствие верхних индексов) ☼.

/ Теоретико – множественные

a: elem A ≈ a является элементом множества A;

a, b: elem C ≈ a, b — элементы множества С (число элементов, разделённых запятыми, может быть любым);

A: set a ≈ A – множество, содержащее элемент a;

A<B (когда оговорено, что A и B рассматриваются как множества) ≈ A – подмножество B;

B=D ≈ множества D и B совпадают;

C≤B ≈ C является подмножеством B или совпадает с ним;

B>A ≈ B содержит A;

A≥E ≈ A содержит E или совпадает с E;

A˅B ≈ объединение множеств A и B;

A˄B ≈ пересечение множеств A и B;

A\B ≈ разность множеств A и B;

A*B ≈ декартово произведение множеств A и B;

R≤A * B ≈ бинарное отношение, заданное на множествах A и B.

Символ 0 обозначает пустое множество или нуль (в зависимости от контекста);

cимвол # обозначает «не равно».

☼ Если x: elem X, y: elem Y и x = y, то x: elem (X ˄ Y);

если X: set x, Y: set y и пара (x, y): elem R, где R≤A*B, то (X*Y)˄(A*B)#0. ☼

/ Функции

Аргументы функции размещаются в круглых скобках, стоящих сразу за идентификатором, обозначающим функцию.

☼ f(x) ≈ f от x; f[max;](x[i=1…n]) ≈ f с верхней пометой max от x[i = 1…n]. ☼

При записи операций символы «+», «–«, «*», «/» обозначают соответственно сложение, вычитание, умножение, деление, а символ «**» – возведение в степень.

Для записи суммы вместо символа «Σ» используется «sum»; при этом индекс суммирования, его начальное и конечное значения записываются в квадратных скобках справа от «sum».

☼ sum[i=1…n]x[i] ≈ сумма x[i] по i от 1 до n. ☼

Типы: специализация и обобщение

□ Тип X ≈ множество X, элементы которого имеют фиксированные набор атрибутов и семейство допустимых операций.

Может иметь подтипы, называемые специализациями типа X, и надтипы, называемые обобщениями типа X. □

/ Специализация типа

□ Специализация типа X – порождение подтипа X[::rule] (здесь сдвоенное двоеточие «::» — символ специализации) с семейством связей, расширенным добавлением связи rule.

Выделяет подмножество X[::rule] множества X.

Специализацией называем и результат X[::rule] этого порождения (X>X [::rule]). □

// Специализация типа, заданная последовательностью добавленных связей

X[::(rule1)::rule2] – специализация типа X[::rule1] по связи rule2.

Число специализирующих связей в последовательности не ограничено. При этом имена связей, предшествующие последнему, заключены в круглые скобки, а перед открывающей скобкой каждой пары скобок – сдвоенное двоеточие.

/ Обобщение типа

□ Обобщение типа Z – это порождение его надтипа Z[rule] путём ослабления (здесь # – символ ослабления) связи rule из семейства связей, соответствующей типу Z. Исключение связи считаем её предельным ослаблением. □

Графическая форма записи определений

Как обычно, определение даётся путём построения дерева атрибутов изучаемого понятия.

Сначала атрибуты перечисляются, а затем, в свою очередь, определяются (если это необходимо).

Листьями так построенного дерева являются терминальные атрибуты (не требующие в данном контексте дальнейшего определения).

Другой способ описания понятия — указание на понятия, связанные с определяемым.

Важной особенностью введённой формы определения понятий являются средства явного указания на ТОЧКУ ЗРЕНИЯ (КОРРЕСПОНДЕНТА, которому адресовано определение), СТАДИЮ (на которой в процессе изучения или работы определение может быть полезно) и ЦЕЛЬ (в процессе достижения которой определение имеет смысл).

Эта триада задаётся явно в тех случаях, когда по контексту её значения могут быть неясны.

Важность явного указания точки зрения не требует пространного комментария:

достаточно заметить, что масса недоразумений при определении понятий и их истолковании значительно уменьшилась, если бы авторы точно указывали, КОМУ, на какой СТАДИИ и для какой ЦЕЛИ может пригодиться определение.

Предложенная форма не требует изображения дерева атрибутов определяемого понятия в виде графа.

Определение выглядит как последовательность взятых в рамку утверждений.

Часть площади внутри рамки отведена для значений ТОЧКИ ЗРЕНИЯ (если по контексту эти значения неясны).

Все утверждения, размещённые в рамке, имеют одинаковую структуру:

|<определяемое>| @ |<определяющее>|.

Левая и правая части ограничены вертикальными чёрточками, а связывающий их символ @ принимает одно из трёх следующих значений: @ = (:, ->, ~).

Первое значение «:» (двоеточие) является заменителем слова «это».

Утверждение вида

|<определяемое>| : |<определяющее>|

означает, что текст справа рассматривается как определяющий (основанный на известных понятиях) по отношению к тексту слева, содержащему определяемое понятие.

Второе значение «->» (стрелка) заменяет слова «связано с».

Утверждение вида

|<определяемое>| -> |<определяющее>|

истолковывается, как определяемое понятие (слева) связано с другими (важными в данном контексте) понятиями (справа).

И, наконец, значение » ~ » (эквивалентность) используется для переобозначения определяемого понятия.

То есть утверждение вида

|<определяемое>| ~ |<определяющее>|

означает, что справа введено обозначение того, что имеем слева.

Содержимое, заключенное между вертикальными чёрточками, может быть текстом, графическим изображением или их сочетанием.

Никаких синтаксических ограничений, накладываемых на представление такого содержимого, предложенная форма не вводит.

Таким образом, форма позволяет представить определение понятия в виде последовательности утверждений трёх типов, имеющих заданную графику.

Опыт показал, что эта форма определений позволяет не только экономно расходовать ресурс восприятия читателя.

Важно и то, что она дисциплинирует работу того, кто формулирует определения.

Применимость

TSM рассчитан на формирование строчных одноуровневых описаний s‑моделей посредством QWERTY-клавиатуры.

Применим при s‑моделировании объектов любой предметной области.

Литература

1. В.Д. Ильин. Система порождения программ. М.: Наука, 1989, 264с.

2. А.В. Ильин. Конструирование разрешающих структур на задачных графах системы знаний о программируемых задачах. Информационные технологии и вычислительные системы, №3, 2007, с.30-36.

PDF-файл статьи

Эта статья — в сети ResearchGate.net