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

© А.В. ИльинВ.Д Ильин, 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

Реклама

S-алгоритм

© В.Д Ильин, 2011

□ S-АЛГОРИТМ (англ. S-algorithm) — система программно-реализуемых правил, позволяющая за конечное число шагов поставить в однозначное соответствие заданному набору данных, принадлежащему входу s-алгоритма, результирующий набор данных, принадлежащий выходу s-алгоритма. Специализация метода решения задачи (по типу решателя), представленная в форме, рассчитанной на программную реализацию в s-среде.

Выполнение s-алгоритма включает:

  1. распознавание набора входных данных (определение его принадлежности множеству допустимых наборов данных, описанных как вход s-алгоритма): если набор принадлежит входу,  то — переход к п.2; в противном случае — СТОП;
  2. получение набора выходных данных (принадлежащего множеству наборов данных, определенных как выход s-алгоритма);
  3. запись набора выходных данных в заданную область памяти.
  4. СТОП. □

Типы решателей: автономная s-машина; сетевая кооперация s-машин; сетевая кооперация s-машин и взаимодействующих с ними людей.

(См. определение алгоритма с точки зрения математика).

Метод (в отличие от алгоритма) не ориентирован на определенный тип решателя задач.

Машина Тьюринга – это s-модель алгоритмического решателя-автомата.

ДРУГИЕ ОПРЕДЕЛЕНИЯ

From Encyclopedia of Computer Science, 4th Edition, ©2000 Anthony Ralston, Edwin D. Reilly, David Hemmendinger

ALGORITHM

Definition

Given both the problem and the device, an algorithm is the precise characterization of a method of solving the problem, presented in a notation interpretable by

the device.

In particular, an algorithm is characterized by these properties:

  • Application of the algorithm to a particular input set or problem description results in a finite sequence of actions.
  • The sequence of actions has a unique initial action.
  • Each action in the sequence has a unique successor.
  • The sequence terminates with either a solution to the problem, or a statement that the problem is unsolvable for that set of data.

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

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

Система знаний информатики СИНФ. Энциклопедия информатики ИНФОПЕДИЯ

Научный редактор: доктор технических наук, профессор Ильин Владимир Дмитриевич

_______________________________________

СИНФ — это распределённая гипермедийная система знаний информатики, рассчитанная на исследователей, разработчиков информационных технологий, преподавателей вузов, аспирантов и студентов профильных специальностей.

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

В состав СИНФ входят журнал ИНФОРМАТИКА: S-моделированиеЭнциклопедия информатики ИНФОПЕДИЯ и Интернет-сервисы Планирования Ресурсов (Res-plan.com) , которые реализуют уникальные алгоритмы, позволяющие гибко и эффективно решать задачи планирования ресурсов.

Энциклопедия информатики ИНФОПЕДИЯ и журнал ИНФОРМАТИКА: S-МОДЕЛИРОВАНИЕ служат средством оперативного представления и открытого обсуждения научных результатов, новых информационных технологий и обновляющегося понятийного аппарата информатики.

ИНФОПЕДИЯ служит аккумулятором апробированных знаний, представляющим обновляющийся понятийный аппарат информатики, журнал — средством апробации моделей научных знаний, а Интернет-сервисы планирования ресурсов — комплексом программно реализованных средств решения актуальных задач планирования ресурсов.

Как средство публикации научных материалов СИНФ — это собрание научных трудов по информатике.

СИНФ создана как платформа сотрудничества учёных, ведущих исследования в области информатики, преподающих в профильных вузах, осуществляющих научное руководство аспирантами и докторантами.

Энциклопедия информатики ИНФОПЕДИЯчасть системы знаний СИНФ

/ Об s-моделировании

1. Право называться homo sapiens человек приобрёл, изобретая различные модели, символы, языки символьных сообщений и средства построения, сохранения и передачи символьных моделей.
2. S-машинная эпоха – новый этап в символьном моделировании мира (включая внутренний): машины впервые стали помощниками человека во всех составляющих процесса символьного моделирования.
3. Из всего процесса символьного моделирования выделяем s-моделирование, которое осуществляется с помощью s-машин, взаимодействующих между собой в составе s-среды.
4. S-моделирование считаем предметом исследований информатики.

S-моделирование как научное направление сформировалось в Институте проблем информатики РАН. Первые результаты были опубликованы в 1989 [В.Д. Ильин. Система порождения программ. М.: Наука, 1989] , а основы теории s-моделирования — в 2009 [А.В. Ильин, В.Д. Ильин. Основы теории s-моделирования. М.: ИПИ РАН, 2009]

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

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

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

◊Только в комплексе физико-технического воплощения s-машин и s-среды научные результаты, как правило, предопределяют технологические решения. Это связано с тем, что основные идеи там поставляют физики.◊

ДЛЯ АВТОРОВ

1. Для публикации статьи в ИНФОПЕДИИ или журнале достаточно, чтобы статья соответствовала тематике и правилам оформления, принятым в СИНФ. статья может содержать как впервые публикуемый материал, так и материал, который был опубликован в другом издании.

2. Статья подаётся по электронной почте smodeling@yandex.ru вместе со справкой об авторе [в одной сжатой папке (ZIP или RAR)].

3. Публичное обсуждение (в форме комментариев) и рецензирование статьи начинается, как только она выложена на сайте СИНФ. Число рецензий и их форма не регламентируются. Анонимные комментарии и рецензии не публикуются. Рецензия подаётся по  электронной почте smodeling@yandex.ru

/ Правила оформления:

— объём не более 50 тыс. знаков (включая пробелы);

— если материал статьи публикуется впервые, то в поле <новизна публикации> записывается ПУБЛИКУЕТСЯ ВПЕРВЫЕ; если материал был ранее опубликован, то – ИЗ ОПУБЛИКОВАННОГО.

Мультимедиа

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

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

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

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

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

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

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

____________________________________________

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

СИНФ: система знаний информатики

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

□ СИНФ: система знаний информатики (англ. SINF: Knowledge System of Informatics)  –

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

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

В состав СИНФ входят журнал ИНФОРМАТИКА: S-моделированиеЭнциклопедия информатики ИНФОПЕДИЯ и Интернет-сервисы Планирования Ресурсов (Res-plan.com) , которые реализуют уникальные алгоритмы, позволяющие гибко и эффективно решать задачи планирования ресурсов.

Энциклопедия информатики ИНФОПЕДИЯ и журнал ИНФОРМАТИКА: S-МОДЕЛИРОВАНИЕ служат средством оперативного представления и открытого обсуждения научных результатов, новых информационных технологий и обновляющегося понятийного аппарата информатики.

ИНФОПЕДИЯ служит аккумулятором апробированных знаний, представляющим обновляющийся понятийный аппарат информатики, журнал — средством апробации моделей научных знаний, а Интернет-сервисы планирования ресурсов — комплексом программно реализованных средств решения актуальных задач планирования ресурсов.

Как средство публикации научных материалов СИНФ — это собрание научных трудов по информатике.

СИНФ создана как платформа сотрудничества учёных, ведущих исследования в области информатики, преподающих в профильных вузах, осуществляющих научное руководство аспирантами и докторантами.

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

/ Основы построения и функционирования

Процессы наполнения и обновления СИНФ реализуются сообществом информатиков, объединённых технологиями распределённой расширяющейся совокупности виртуальных лабораторий. Электронные публикации научных результатов, их сетевое обсуждение и апробация — унифицированные составляющие деятельности этих лабораторий. Апробированные результаты, оформленные по стандартам СИНФ, расширяют и обновляют s-модель системы знаний информатики. Исследователи, преподаватели, аспиранты и студенты используют настраиваемые СИНФ-сервисы (каждый тип рассчитан на определённый вид деятельности; настройки позволяют учесть уровень профессиональной подготовки пользователя). В частности, Интернет-сервисы Планирования Ресурсов (Res-plan.com) реализуют уникальные алгоритмы, позволяющие гибко и эффективно решать задачи планирования ресурсов.

SINF S-модели систем понятий информатики представлены в  Энциклопедии информатики ИНФОПЕДИЯ, методологически и ресурсно связанной с журналом ИНФОРМАТИКА: S-моделирование [1].

/ Литература

1. В.Д. Ильин, И.А. Соколов. Символьная модель системы знаний информатики в человеко-автоматной среде. Информатика и её применения. Том 1. Вып. 1, 2007, с.66-78.

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

Авторское видео сообщение о реализации задачных связей между понятийными мирами информатики, физики и математики в рамках проекта СИНФ.