Начало » Конспекты школьника » Часть 2 » [Учимся программировать!][Что такое ООП]
Учимся программировать!
Конспекты школьника.
www.klyaksa.net
Что такое ООП
Языки программирования претерпели большие изменения с тех
пор, как в сороковых годах началось их использование.
Первые языки программирования были очень примитивными
и представляли собой последовательность
нулей и единиц. Использование таких языков было крайне неудобно с точки зрения программиста.
Первая попытка оптимизации
программирования в двоичных кодах
заключалась в разработке специальной
системы кодирования двоичных машинных
команд многобуквенными мнемоническими
сокращениями.
В пятидесятых годах появились языки программирования
высокого уровня. Форма записи программ на
на них по сравнению с машинными языками и
ассемблером ближе к традиционной математической форме и разговорному языку.
Первые программы для ЭВМ редко превышали
объем 1 кбайт, сейчас же программы
несравненно больше. По мере увеличения размера программ
приходилось искать способы позволяющие
упростить программирование.
Идеи разделения программ на
относительно самостоятельные крупные
части, реализующие определенные процедуры
и функции и образующие определенную
иерархию взаимосвязей, нашли отражение в структурном
подходе к разработке и созданию
программных средств. В программировании
структурный подход появился с
возникновением первых подпрограмм (процедур
и функций), написанных в так называемом процедурно-ориентированном
стиле.
Дальнейшее развитие структурного подхода
привело к модульному программированию.
Оно предусматривает представление
прикладной задачи в виде иерархии
взаимодействующих модулей или программ.
Введение типов данных обозначило еще одно
направление развития технологии
программирования. Типизация данных
предназначена как для облегчения
составления программ, так и для
автоматического выявления ошибок.
Использование структурных или
комбинированных типов позволяет сократить
объем рутинной работы работу программиста.
По мере развития технологии
программирования все адекватнее
отражалась структура решаемой прикладной
задачи и осуществлялось объединение данных
и процедур для их обработки. Это и привело к появлению
в программировании объектного подхода.
Сейчас уже совершенно ясно, что на смену
традиционному программированию, пришло объектно-ориентированное
(сокращенно ООП).
Объектно-ориентированные языки
программирования пользуются в последнее
время большой популярностью среди
программистов. Первый объектно-ориентированный
язык программирования был разработан в
конце 60-х годов в Норвегии. Авторы этого
языка очень точно угадали перспективы
развития программирования: их язык намного
опередил свое время. В 70-е годы было
разработано большое число
экспериментальных объектно-ориентированных
языков программирования. Эти языки так и
остались экспериментальными, но в
результате их исследования были
разработаны современные объектно-ориентированные
языки программирования. Разработка новых
объектно-ориентированных языков
программирования продолжается.
Успех ООП стиля программирования объясняется предоставляемой им
возможностью естественно имитировать объекты
нашего мира. Решая сложные проблемы,
выдвигаемые жизнью, человек постепенно
развил в себе замечательные способности к
обобщению, классификации и созданию
абстракций. В окружающих нас объектах мы
находим общие признаки, свойства, способы
поведения.
Объекты объединяются в классы. К одному классу принадлежат объекты с
одинаковым набором свойств, методов и событий.
Представьте себе, что в обычном языке не существует объектов (понятий), абстрагирующих окружающий мир. Тогда для
того, чтобы сообщить другому человеку о каком-то предмете, например
автомобиле, пришлось бы его подробно описывать. Трудно вообразить, сколько
времени потребовалось бы для описания объекта. Причем описание должно быть
очень точным, чтобы не возникло ошибочное представление о другом объекте.
То же относится и к программированию. Например, для использования окна
ничего не нужно разрабатывать, вы просто используете объект класса
"окно". Класс - это группа объектов с
одинаковыми свойствами и методами. Если вы создаете собственное приложение, то большую помощь при этом
окажут собственные объекты. В исходном коде вы используете программное
представление таких объектов. Такой способ рассмотрения больше соответствует реальности, чем при
чисто процедурной разработке приложений.
В объектно-ориентированном подходе к
разработке программ центральным является
понятие класса объектов. В ООП класс
обладает следующими важнейшими свойствами:
- инкапсуляция (Характеристики
объекта и методы (процедуры и функции) для
их обработки объединяются в описании
класса объектов, причем предполагается
что доступ к характеристикам объекта
будет происходить через соответствующие
методы, т.е. они защищены от внешнего
вмешательства);
- наследование (Один класс может быть
получен от другого. В в таком случае
говорят, что один класс является базовым,
а другой - производным. Это позволяет
повторно использовать уже созданный код в других проектах.
Производный класс наследует всю
структуру характеристик и поведение
базового, однако может дополнять или
модифицировать их.);
- полиморфизм (Полиморфизм означает, что различные объекты используют
одинаковую абстракцию, т.е. могут обладать свойствами и методами с
одинаковыми именами. Однако обращение к ним будет вызывать
различную реакцию для различных объектов. Большое достоинство
полиморфизма состоит в том, что при использовании объекта можно
вызывать определенное свойство или метод, не заботясь о том, как
объект выполняет задачу. Это очень важно при модификации
программного обеспечения. Изменения или новшества просто
адаптируются к имеющимся компонентам приложения.).
Итак, класс - это тип, объект - это
переменная этого типа. В описании класса
указываются все его свойства (характеристики)
и методы (процедуры и функции). Для того
чтобы использовать объекты их надо
объявить.
Для того чтобы лучше понять суть вопроса вернемся
к QBasic и рассмотрим несколько примеров.
Точка. Программа рисования и стирания
точки.
REM точка
'установка графического режима
SCREEN 1
'координаты точки
x = 10
y = 10
'цвет фона
cf = POINT(x, y)
'рисуем точку
PSET (x, y)
'стираем точку
PSET (x, y), cf
END
Снег 1. Программа рисования и стирания 100
точек.
REM снег 1
SCREEN 1
x1 = 10
y1 = 10
x2 = 10
y2 = 10
... 'тут много строчек
(примерно, 194 :) )
...
...
x100 = 10
y100 = 10
FOR i = 1 TO 100
'как-то изменяем координаты точки
(нам это сейчас не важно)
............................
cf1 = POINT(x1, y1)
PSET (x1, y1)
SLEEP 1
'пауза
PSET (x1, y1), cf1
... 'тут
много строчек (примерно, 388 :) )
...
...
'как-то изменяем координаты точки
...........................
cf100 = POINT(x100, y100)
PSET (x100, y100)
SLEEP 1
'пауза
PSET (x100, y100), cf100
NEXT i
END
Не программа - а ужас. Попробуем ввести
массивы.
Снег 2. Программа рисования и стирания 100
точек.
REM снег 2.1
SCREEN 1
DIM x(1 TO 100) AS INTEGER
DIM y(1 TO 100) AS INTEGER
DIM cf(1 TO 100) AS INTEGER
FOR i = 1 TO 100
'как-то изменяем координаты точки
(нам это сейчас не важно)
........................
cf1 = POINT(x(i), y(i))
PSET(x(i), y(i))
SLEEP 1 'пауза
PSET (x(i), y(i)), cf(i)
NEXT i
END
REM снег 2.2
SCREEN 1
DIM p(1 TO 100, 1 TO 3) AS INTEGER
FOR i = 1 TO 100
'как-то изменяем координаты точки
(нам это сейчас не важно)
........................
cf1 = POINT(p(i,1), p(i,2))
PSET(p(i,1), p(i,2))
SLEEP 1 'пауза
PSET (p(i,1), p(i,2)), p(i,3)
NEXT i
END
Так лучше, но все-таки довольно путано. Попробуем ввести
комбинированные типы.
Точка. Программа рисования и стирания
точки.
REM точка 2
TYPE point
x AS INTEGER 'коодината x
y AS INTEGER 'коодината y
cf AS INTEGER 'цвет фона под
точкой
END TYPE
DIM p AS point
POINT(p.x, p.y)
PSET(p.x, p.y)
SLEEP 1
'пауза
PSET (p.x, p.y), p.cf
NEXT i
END
Снег 3. Программа рисования и стирания 100
точек.
REM снег 3
TYPE point
x AS INTEGER
y AS INTEGER
cf AS INTEGER
END TYPE
DIM p(1 TO 100) AS point
FOR i = 1 TO 100
'как-то изменяем координаты точки
(нам это сейчас не важно)
........................
p(i).cf = POINT(p(i).x, p(i).y)
PSET(p(i).x, p(i).y)
SLEEP 1
'пауза
PSET (p(i).x, p(i).y), p(i).cf
NEXT i
END
Так вот оно лучше. Теперь с первого взгляда
на код понятно, что делает программа. Причем,
обратите внимание: все свойства объекта (координаты
точки, цвет фона под точкой)
собраны вместе, а не разбросаны по нескольким
одномерным массивам (или вообще ни как не
связанным друг с другом переменным) и не
прячутся за не понятными индексами
двумерного массива (сравните: p(i).y и p(i,2)).
Следующий логический шаг - это
объединение свойств (координаты, цвет)
точки и методов (процедур) для их обработки.
К сожалению, QBasic не поддерживает понятие
класса, поэтому мы сами "расширим" его
возможности :)
REM снег 4
КЛАСС point
x AS INTEGER
y AS INTEGER
cf AS INTEGER
SUB рисование
cf = POINT(x, y)
PSET(x, y)
END SUB
SUB стирание
PSET (x, y), cf
END SUB
END КЛАСС
DIM p(1 TO 100) AS point
FOR i = 1 TO 100
'как-то изменяем координаты точки
(нам это сейчас не важно)
........................
p.рисование
SLEEP 1
'пауза
p.стирание
NEXT i
END
Теперь давайте на основе класса точка (point)
создадим новый класс - цветная точка (color_point).
Класс color_point наследует от своего родителя
все характеристики (координаты - x и y, цвет
фона под точкой - cf) и процедуру стирания
точки. Процедуру рисования точки придется
модифицировать (рисовать будем цветную
точку). Так же дополним класс новым
свойством - цвет точки.
REM цветной снег
КЛАСС color_point ИЗ КЛАССА point
c AS INTEGER
SUB рисование
cf = POINT(x, y)
PSET(x, y),c
END SUB
END КЛАСС
DIM p(1 TO 100) AS color_ point
FOR i = 1 TO 100
'как-то изменяем координаты и,
возможно, цвет точки
(нам это сейчас не важно)
........................
p.рисование
SLEEP 1
'пауза
p.стирание
NEXT i
END
Для дальнейшего изучения
программирования мы будем использовать
язык программирования Visual Basic.
Название Visual Basic говорит само за себя. Visual Basic,
в отличии от традиционных систем
программирования, представляет совершенно
иной стиль программирования. Уже по слову "Visual" можно догадаться, что в Visual Basic реализован визуальный стиль
программирования. Вы даже не программируете, а
проектируете приложение. Ваша первая задача при этом — создать рабочую
среду, прежде чем начать набирать первую строку кода.
Слово Basic в названии указывает на то, что синтаксис программ и
операторы опираются на язык высокого уровня Basic
(Beginners Atlpurpose Symbolic Instruction Code
- многоцелевой код символических команд для начинающих),
но заметно от него отличается.
Создадим для примера простейшее
приложение. Точнее создавать и
программировать не придется вообще ничего: Visual Basic
изначально предоставляет готовое
приложение, состоящее из одного окна (формы)
класса Form.
Запустим Visual Basic. После запуска Visual Basic на экране появляется диалоговое окно, в котором
вы можете выбрать тип создаваемого приложения. Из этого же окна можно
загрузить уже существующий проект.
За некоторыми пиктограммами диалогового окна скрываются мастера (Wizards), сопровождающие разработчика при создании приложений и берущие
на себя часть его работы, например подключение базы данных или создание формы. В процессе работы мастера создается почти готовое приложение с
различными формами, соответствующей рабочей средой, меню, панелью инструментов и т.п. Это приложение можно потом совершенствовать и
настраивать.
Выберем тип проекта "Стандартный EXE".
Сразу после этого Visual Basic предложит новую
"пустую" форму. Данная форма не
является абсолютно пустой - она содержит
основные элементы окна Windows: заголовок,
управляющие кнопки, кнопку вызова
системного меню.
Любое приложение Windows выполняется в
соответствующем окне. Visual Basic - это среда
разработки приложений под Windows, поэтому для
любого разрабатываемого приложения
предлагается окно (форма).
Итак, первая программа готова. Чтобы увидеть результат ее работы,
запустим программу.
Это приложение имеет минимум того, что
нужно любому приложению, выполняемому в
среде Windows, и не одним элементом больше. Оно
представляет собой каркас или заготовку,
обеспечивающее разработчика всем
необходимым для каждого приложения вообще.
Отметим, что окно (а вместе с ним и
приложение) действительно ничего не делает
с точки зрения пользователя. Вместе с тем
это пустое окно выполняет достаточно
большую работу, например, оно ожидает
действий пользователя, реагирует на
изменение своего размера, перемещение,
сворачивание, разворачивание, закрытие.
содержание :: следующий
урок
|