Как начинался компьютер
Компьютерная революция
Двоичный код
Разработки военных лет
Интегральные микросхемы
Микрокомпьютер
Персоны
Сеть
Язык компьютера
Развитие ПО
Гибкие системы
Средства разработки
Информатика
Вычислительная наука
Операционные системы
Искусственный интеллект
Предыстория
Поиск
Знания и рассуждения
Логика
Робототехника
 

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

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

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

Окружение, работающее с объектами

Объектно-ориентированный язык создает окружение в виде множества независимых объектов, каждый из которых отличается своими свойствами и способами взаимодействия с другими объектами. В этом окружении каждый объект, по существу, ведет себя подобно компьютеру: он может получать сообщения от других объектов и в свою очередь посылать сообщения, запоминать информацию и обрабатывать ее определенным образом.

Задавая структуру обмена сообщениями между объектами, программист получает совокупность операций, которые и составляют программу. Объекты можно использовать для решения задач, не понимая механизма их (объектов) работы, Т.е. рассматривая их как своего рода «черный ящик».

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

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

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

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

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

Простота структуры в виде классов

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

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

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

Посылка сообщений с требованием действий

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

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