TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Живой Журнал

Гостевая книга

Рассылка

Благодарности

Об авторе

ООП - это очень просто

Выпуск № 1

Внутри каждой большой программы есть маленькая, которая там совсем не нужна.
/Закон программирования/

Уважаемые подписчики, начиная с этой рассылки я предлагаю Вам пройти путь создания и использования объекта в своей программе. Надеюсь, что удастся пройти этот путь под девизом, являющимся именем рассылки "ООП - это (не?) очень просто" :-))

В этом выпуске:

  1. Создание первого объекта

  2. История программы "Hello World"

ООП - это просто!

Надеюсь, что Вам уже известно, что ООП - это аббревиатура от термина "объектно - ориентированное программирование". Так называется самая передовая до настоящего времени технология программирования. Она дает программисту очень многое. Во-первых, изменяется уровень понимания программы. Во-вторых, добавляются новые возможности. В-третьих, все современное программирование - только объектно-ориентированное. Хорошо написал Г. Буч в книге "ООА и ООП с примерами на С++"

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

Хорошо и ... не понятно. Вот и давайте разбираться постепенно.

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

Что будем писать?

В предыдущей рассылке я приводил пример создания связанного списка. На его основе был создан динамический массив. Там же отмечалось, что эта конструкция небезопасна в использовании и предлагалось реализовать его в виде объекта.

Я продолжу работу с этой конструкцией, по следующим причинам:
маркированный список связанный список - это удобно. Его легко приспособить для хранения набора однотипных данных. И называют его в этом случае - база данных (БД);
маркированный список база данных - это одна из важнейших частей многих программ. Например, если писать программу для тестирования знаний, то в ней можно хранить вопросы и варианты ответов. А где хранить сведения о тех, кто проходил тестирование? Козе понятно, где - опять же в БеДе;
маркированный список работая с базой данных, требуется выполнять много операций: добавлять и удалять информацию, упорядочивать ее с целью быстрого поиска нужной записи, сохранять БД в файл и считывать из файла. Немаловажной задачей является хотя бы простенькая защита БД от несанкционированного доступа. Программа, которая все это делает, называется СУБД - система управления базой данных;
маркированный список вот такую простенькую СУБД я и предлагаю написать в конце концов.

Но подбираться к ней, к простенькой, будем медленно. Путь предстоит неблизкий. По этой причине, хотелось бы знать Ваше мнение о происходящем. Все ли будет понятно? Может, что-то надо описать подробнее? Пишите Борису. Для срочных консультаций можно воспользоваться аськой. Мой ICQ: 320096696.

А я начну. Сначала покажу, как объект защищается от неправильных действий

В качестве первого примера рассмотрим объект, который позволяет записать в значение переменной только положительное значение. Открываем среду разработки программ Borland Pascal (IDE BP) и начинаем вводить текст программы:

ДА! А Вы знаете, как скопировать текст из окна любого редактора Windows в окно редактора Borland Pascal?

  1. Выделяете текст хотя бы в окне Internet Explorer'а и копируете его в буфер Windows любым способом. Я предпочитаю нажимать Ctrl + C.
  2. Среда разработки программ BP должна находиться в оконном режиме. Переключение из полноэкранного режима в оконное и обратно производится нажатием Alt + ENTER.
  3. Переводите курсор в то место программы, куда нужно вставить текст.
  4. Заходите в системное меню IDE BP (иконка в самом верхнем левом углу окна, там где написано "Borland Pascal 7.0"
  5. Выбираете пункт этого меню "Правка" -> "Вставить".
  6. Готово. Любуйтесь результатом.

Теперь введите код, который приведен ниже. В программе описывается объект. Этот объект имеет одну переменную Field. В нее можно записать только неотрицательное целое число. А затем производится обычное тестирование. Описание объекта и программы приводится ниже:

program Simplest;
TYPE
   TSimplestObj = object
   private
     Field: Integer;
   public
    procedure SetValue(AValue: Integer);
    function GetValue: Integer;
   end;

procedure TSimplestObj.SetValue;
begin
 if AValue < 0 then Writeln('Введено неверное значение ',AValue);
 Field:=Abs(AValue);
end;

function TSimplestObj.GetValue;
begin
  GetValue:=Field
end;

VAR
  SimplestObj: TSimplestObj;  {То, что было описано раньше - фантом, то, что может быть,
  				а может и не быть.
  				Сейчас создается экземпляр объекта.
  				Он уже может работать}

BEGIN
  SimplestObj.SetValue(-2);	{Получите сообщение об ошибке}
  SimplestObj.SetValue(2000);	{Записали}
  WriteLn(SimplestObj.GetValue);	{Прочитали}
END.

Пояснения. Создание объекта происходит в два этапа, и два этапа нужно пройти, чтобы объект использовать:

  1. ЭТАП СОЗДАНИЯ ПЕРВЫЙ. Объект сначала нужно описать. Делается это в разделе TYPE программы подобно тому, как определяются ЗАПИСИ. Они, объект и запись, кстати, очень близкие родственники.
  2. Объект, как программа, содержит все, что ему необходимо для работы: и переменные (их называют полями) и подпрограммы (их называют методами). В нашем объекте одно поле Field и два метода GetValue и SetValue.
  3. Для определения доступа к полям и методам объекта используют секции PRIVATE и PUBLIC. То, что находится в секции PUBLIC, доступно извне объекта, а то, что в разделе PRIVATE - нет, только "своим" видны.
  4. Если не упоминать ни одно из названий секций, то все имеет тип PUBLIC. Секции можно комбинировать произвольным образом.
  5. Я хочу, чтобы в поле Field нельзя было записать отрицательное число. Для этого я поместил его в секцию PRIVATE, а две подпрограммы (два метода) - в секцию PUBLIC.
  6. Метод SetValue проверяет, не является переданное ему значение отрицательным. Если "ДА", то выдается сообщение об ошибке. Я решил, что и в этом случае в поле нужно записать что-нибудь. Я считаю, что модуль параметра AValue.
  7. Метод GetValue просто возвращает значение поля. Так и секретность поля будет сохранена, и использовать его можно будет.
  8. ТЕПЕРЬ ВТОРОЙ ЭТАП СОЗДАНИЯ. В разделе TYPE программы "набросали" только схему проекта. Нужно еще объяснить тупому и нудному компилятору, как эти методы работают. Сделать это нужно после окончания TYPE, но перед первым обращением к методу. У меня - перед началом исполняемого блока программы.
  9. Пишем procedure TSimplestObj.SetValue. То  есть мы объясняем, то дальше идет описание именно процедуры procedure, и не просто процедуры, а именно из объекта TSimplestObj, и не просто из объекта TSimplestObj, а метода SetValue. Параметры можно не повторять, компилятор Паскаля узнает это в описании объекта.
  10. Как реализован метод, я полагаю, объяснять не нужно.
  11. Аналогично описываем реализацию метода GetValue.
  12. ПЕРВЫЙ ЭТАП ИСПОЛЬЗОВАНИЯ. Нужно определить переменную (не удивляйтесь, именно переменную! Переменная, которая является маленькой программой - кайф) типа объект. Сделано это в разделе VAR программы. Немного терминологии: до сих пор мы имели объект, а в разделе VAR создали ЭКЗЕМПЛЯР объекта. Название понятное, так как можно создать много таких экземплярчиков.
  13. ВТОРОЙ ЭТАП ИСПОЛЬЗОВАНИЯ. Используем, то есть вызываем методы.

В чем фишка созданного? А Вы попробуйте добраться до переменной-поля Field, не используя методы объекта!  Поэкспериментируйте, если времени не жалко. Защита полей или методов объекта от неправильного использования перенесением их в раздел private - это одна из задач, которая была решена изобретением объектов. Называется прием: инкапсуляция.

Конечно, такую задачу можно решить и без использования объектов одними только подпрограммами. Но это будет нелегко. Обратите внимание на то, что поле Field является глобальным по отношению к методам SetValue и GetValue.

Интересно, а Вы сможете предложить алгоритм защиты переменной без использования ООП?

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

Интересно, а  вы сможете сами написать такое?

Свой вариант покажу завтра. Пока ...

Борис

Теперь немного познавательного:

Знаете ли Вы, откуда появилась программа "Hello World" (В вольном переводе "Привет мир, я проклюнулся")

"Hello World" - это простая программа, которая, когда ее запустят на исполнение, показывает сообщение

Hello World

Точнее, программа "Hello World" была первой программой почти всех начинающих программистов на мириадах языков программирования. Сотрудники ассоциации The Association for Computing Machinery (ACM) of Louisiana Tech подсчитали все примеры программ "Hello World", которые они смогли найти. Таких к настоящему времени нашлось 204.

Для того, чтобы посмотреть пример программы "Hello World" на Паскале, прочитайте полное определение, щелкнув по ссылке ниже или открыть любой учебник.

Никто не знает точно, почему именно "Hello World" выдержала испытание временем. Наиболее вероятно простое объяснение, что такая короткая программа позволяет программисту убедиться, что языковой компилятор, среда разработки программ и окружение установлены правильно. Для первой проверки окружения и была использована очень простая программа. Согласно Wikipedia , традиция использовать фразу "Hello World" в качестве тестового сообщения была навеяна программой-примером в книге Браена Карнигана и Денниса Ричи (Brian Kernighan and Dennis Ritchie) "The C Programming Language" (Язык программирования С).

Примечание переводчика: скачать книгу можно, например, на http://asmcpp.narod.ru/dounloads-x.htm

Данное описание является переводом текста, опубликованного THE_WHATIS.COM WORD-OF-THE-DAY. Полное определение можно найти по адресу http://searchvb.techtarget.com/sDefinition/0,,sid8_gci927707,00.html?track=NL-34
Примечание переводчика: описание на английском

© 2003 Борис Сурин

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz