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



страница1/15
Дата17.04.2013
Размер1.64 Mb.
ТипУчебное пособие
  1   2   3   4   5   6   7   8   9   ...   15



М.Ю. Катаев





ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ

ПРОГРАММИРОВАНИЕ

Учебное пособие



Томск - 2000




Министерство образования Российской Федерации
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ

УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра автоматизированных систем управления (АСУ)

М.Ю. Катаев



ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ

ПРОГРАММИРОВАНИЕ

Учебное пособие




2000

Катаев М.Ю.

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

 Катаев М.Ю., 2000

 Томский межвузовский центр

дистанционного образования, 2000

1. ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ
Расширение возможностей вычислительной техники и увеличение масштабных задач, решаемых с помощью ЭВМ, приводят к возрастанию размера и сложности систем программного обеспечения. Если еще два-три десятилетия назад составление программ для ЭВМ являлось в значительной мере искусством, которым владели немногие, то в наши дни разработка программного обеспечения вычислительных систем проводится большими коллективами и затраты на его создание значительно превышают затраты на аппаратную часть. В такой ситуации становится весьма актуальной проблема снижения стоимости программного обеспечения, решение которой связано с поиском новых эффективных путей и методов разработки программ. Последним достижением в этой области и является Объектно-Ориентированное Программирование.

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

Однако ни в шестидесятых, ни в семидесятые годы положение в программировании не изменялось существенно, хотя и возникли такие супер языки, как АЛГОЛ и ФОРТРАН. Но, эти годы не прошли даром, через ошибки были найдены верные подходы, которые и реализуются в настоящее время.

Интересный пример, в 1964 году фирма IBM приступила к разработке операционной среды OS. Трудозатраты на ее разработку доводки к защите оценивались в 5000 человеко-лет! Хотя среда была сдана через три года.


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

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

Цикл (цикл жизни) разработки программного обеспечения делится на 6 частей, которые приведены ниже вместе с временными затратами на реализацию каждого из этапов цикла:

  1. анализ требований, предъявляемых к системе- 10%;

  2. определение спецификаций- 15%;

  3. проектирование- 20%;

  4. кодирование- 20%;

  5. тестирование- 20%;

  6. эксплуатация и сопровождение- 25%.

Каждая программа, входящая в систему, должна отвечать таким требованиям, как ПРАВИЛЬНОСТЬ, ТОЧНОСТЬ, СОВМЕСТИМОСТЬ, НАДЕЖНОСТЬ, УНИВЕРСАЛЬНОСТЬ, ПОЛЕЗНОСТЬ, ЭФФЕКТИВНОСТЬ, ПРОВЕРЯЕМОСТЬ и АДАПТИРУЕМОСТЬ. Все эти требования максимальны и верны уже на протяжении двух десятилетий, и не потеряли своей значимости для программ ООП.

Итак, будем считать, что программа является:

  • ПОЛЕЗНОЙ - если она функционирует в соответствии с техническим заданием, поставленным составленным в четкой форме, позволяющей однозначно судить о том, действительно ли программа отвечает перечисленным в нем требованиям.

  • ТОЧНОЙ - если ее числовые данные или графические средства имеют допустимые отклонения от аналогичных результатов, полученных с помощью идеальных математических зависимостей.

  • СОВМЕСТИМОЙ - если она работает должным образом не только автономно, но и как составная часть всей программной системы, и в других системах.

  • НАДЕЖНОЙ - если она при всех условиях обеспечивает полную повторяемость результатов. Здесь, однако, срабатывает известная поговорка, что в любой даже маленькой, а тем более в гигантской программе существует как минимум еще одна ошибка.

  • УНИВЕРСАЛЬНОСТЬ - если она правильно работает при любых допустимых вероятных исходных данных. В ходе разработки программ должны предусматриваться специальные средства защиты от ввода неправильных данных, обеспечивающие целостность системы.

  • ЗАЩИЩЕННОСТЬ - если она сохраняет работоспособность при возникновении сбоев. Это качество особенно для программ, предназначенных для решения задач в режиме реального времени, с большим временем выполнения или программ, осуществляющих обработку постоянно хранимых файлов.

  • ЭФФЕКТИВНОСТЬ - если объем требуемых для ее работы ресурсов ЭВМ не превышает допустимого предела и максимально эффективно использует возможности ЭВМ.

  • ПРОВЕРЯЕМОСТЬ - если ее качества могут быть продемонстрированы на практике. Здесь подразумевается возможность проверки таких свойств программы как, правильность и универсальность. Можно применить формальные математические методы, позволяющее установить, действительно ли программа удовлетворяет техническим условиям и выдает достаточно точные результаты.

  • АДАПТИРУЕМОСТЬ - если она допускает быструю модификацию с целью приспособления к изменяющимся условиям функционирования. Адаптируемость в значительной степени зависит от конструкции программы, от того, насколько квалифицированно она составлена и полно снабжена документацией.

Создаваемая программа неотделима от вычислительной среды, с которой она взаимодействует. Она использует системные программные средства, а те в свою очередь могут пользоваться ее информацией. Программа либо сама создает файлы и обрабатывает их, либо делает это при помощи унифицированных системных программ. Поэтому процессы разработки программы в значительной степени зависят от наличия специализированных языков проектирования, каталогов данных, компиляторов, генераторов и др. Таким языком, или уже выше - средой стало ООП. При помощи ООП можно проще создать хорошую программу, располагая эффективными вспомогательными средствами операционной среды WINDOWS или же другой среды.
1.1. Зачем нужно ООП?
ООП как полностью разработанная концепция программирования возникла не вдруг. Идея использования программных «объектов» развивалась в течение многих лет разными коллективами. Были созданы системы исследовательского назначения, убедительно демонстрирующие такие достоинства ООП, как многозначность использования и расширяемость программных кодов. Однако при всей привлекательности, ряд особенностей ООП препятствовал его широкому внедрению. Системы ООП обычно отличаются громоздкостью и невысоким быстродействием, что в большей мере определялось чисто техническими проблемами. Также особенностью таких систем было использование специализированных языков, которые сильно отличаются от популярных FORTRAN, PASCAL и С.

С появлением TURBO PASCAL и C++ эти барьеры устраняются, и пользователи получают в свое распоряжение ООП в рамках широко распространенных языков, для мощных машин, ориентированных на промышленное производство высокоэффективных программ. Эти системы генерируют быстродействующие программные коды, которые можно использовать непосредственно в системных и прикладных программах. Устранение этих препятствий дает возможность программистам воспользоваться всеми достоинствами ООП и дать пользователям новое поколение прикладных программ.

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

Такое количество парадигм связано с огромным количеством разнообразных научных и технических задач, а также все новыми видами компьютерных систем. Общая архитектура компьютеров позволяет с большей или меньшей мерой эффективности моделировать одну архитектуру с помощью другой. Из архитектур наиболее удачны те, в которых за счет аппаратуры и программного обеспечения достигнута наивысшая скорость и простота использования.
1.3. Объектно-ориентированный подход
Если Вы зададите вопрос: ‘Что такое ООП?’ то в ответ услышите много определений, и во всех из них этот термин употребляется не в его точном смысле. Даже в тех случаях, когда вопрос касается не конкретных продуктов или инструментов, акцент опять-таки будет поставлен по-разному, в зависимости от того, какие именно стороны ООП собеседник считает наиболее полезными и интересными. Получается, что каждый пользователь дает свое собственное определение, в зависимости от конкретной задачи решаемой им.

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

Теперь подойдем к определению ООП:

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ - это способ программирования, обеспечивающий модульность программ за счет разделения памяти на области, содержащие данные и процедуры. Области могут использоваться в качестве образцов, с которых по требованию могут делаться копии.

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

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

Каждая парадигма программирования имеет свои метафоры, помогающие программисту думать о структуре программы. Информатика полна метафор, постепенно переходящих программистский жаргон. Двумя яркими примерами могут служить термины ‘ память ’ и ’ окно ’. С другой стороны эти слова достаточно далеки от реальных объектов.

Отметим, что и ООП имеет метафоры, к ним можно отнести ‘ наследование ’, ‘ классы ’, ‘ передача сообщений ’.

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

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

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

У ОО Систем имеются как минимум три преимущества: одно состоит в том, что если вы написали код для класса, то вы можете иметь столько экземпляров этого класса, сколько позволяет память. Класс - это просто образец, по которому строится каждый экземпляр, который, в свою очередь снабжается собственной областью памяти, недоступной для других объектов иначе, как посредством обращения к локальным методам этого объекта. Это, в частности, означает, что в ОО Системе могут совершенно свободно сосуществовать, не влияя друг на друга, произвольное количество таких объектов, как графические окна, редакторы, интерпретаторы, и т.д. другое преимущество - представляется механизмом наследования. Подклассы автоматически получают все переменные и методы своих суперклассов. То есть более специализированные функции могут быть написаны за счет добавления частей, делающим их уникальными. При этом все остальные свойства будут унаследованы автоматически. Возможность иметь один и тот же интерфейс с широким спектром типов объектов составляет третье преимущество. Это достигается за счет того, что для методов разных объектов, имеющих разную реализацию, может использоваться одно и тоже имя. При этом различие в реализации остается невидимым пользователю. Например, мы можем создать несколько различных классов, соответствующих разным многогранникам. Затем в каждом из этих классов мы зададим методы, вычисляющие объем и площадь поверхности тела. Формулы и программная реализация могут отличаться, но имена, с помощью которых эти методы вызываются, будут одинаковы. К этим методам можно обратиться, написав для примера куб.объем, конус.объем. В каждом случае будет вызван требуемый метод, который вернет искомый объем.

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

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

Важно отметить, что ООП не следует рассматривать как нечто, что можно освоить в один момент. Дело в том, что парадигма ООП существенно отличается от всего того, к чему привыкли программисты. Итак, кратко изложим в резюме основные четыре преимущества ООП:

  1. Стандартные соглашения вызова для широкого диапазона операций, реализующих различные модификации одной темы.

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

  3. По-настоящему модульное программное окружение, сводящее повторы при кодировании к минимуму.

  4. Возможность порождать множество экземпляров функции или объекта, используя один и тот же код. Разные экземпляры не оказывают влияние друг на друга.

При создании любого типа программы возникают следующие вопросы, на которые программисту необходимо делать соответствующие выводы. Неучет одного из пунктов затягивает время разработки:
  1   2   3   4   5   6   7   8   9   ...   15

Похожие:

Объектно-ориентированное программирование учебное пособие icon13. Основные принципы Объектно-Ориентированного Программирования (ооп) Объектно-Ориентированное Программирование
Объектно-Ориентированное Программирование это методология программирования, которая основана на представлении программы в виде совокупности...
Объектно-ориентированное программирование учебное пособие iconОбъектно-ориентированное программирование на языке Delphi
Методическое пособие предназначено для изучения основ объектно-ориентированного языка программирования Delphi (ооп) без ориентации...
Объектно-ориентированное программирование учебное пособие iconОбъектно-ориентированное программирование

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

Объектно-ориентированное программирование учебное пособие iconСоздание web-сайтов, разработка программного обеспечения, объектно-ориентированное программирование, проектирование баз данных

Объектно-ориентированное программирование учебное пособие iconИнтегрированная среда разработки языка Visual Basic
...
Объектно-ориентированное программирование учебное пособие iconКурс: Объектно-ориентированное программирование
Напишите программу для общения через Internet. Программа должна состоять из двух частей: сервер и клиент. Сервер стартует в качестве...
Объектно-ориентированное программирование учебное пособие iconПрограммирование простых типов данных
Учебное пособие предназначено для студентов физического факультета, изучающих курс "Программирование и вычислительная физика"
Объектно-ориентированное программирование учебное пособие iconЗадание к лабораторным работам по курсу “Объектно-ориентированное программирование”
Разработать структуру элементов данных класса в виде динамической структуры данных (динамический массив, список, массив указателей)....
Объектно-ориентированное программирование учебное пособие iconУчебное пособие Уфа 2006 удк 519. 8 Б 19 ббк 22. 1: 22. 18 (Я7)
Бакусова С. М. Математика. Часть Математическое программирование / Учебное пособие. Уфа: ООО полиграфстудия «Оптима», 2006. – 71...
Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org