Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4 ООП Объекты и классы_Delphi.doc
Скачиваний:
54
Добавлен:
13.02.2015
Размер:
317.44 Кб
Скачать
  1. Парадигма объектно-ориентированного программирования

    1. От структурированного программирования к ооп

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

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

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

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

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

Основные задачи структурного программирования

Структурное программирование предназначено для решения трех основных задач:

  1. Повышение эффективности разработки программ: а) увеличение скорости написания программ; б) увеличение качества их сопровождения (внесения усовершенствований, исправления ошибок); в) уменьшение стоимости разработки; г) обеспечение возможности групповой работы с проектом; д) обеспечение возможности проектирования ПО (software engineering).

  1. Повышение надежности работы программ. Никому не нужна дешевая, мгновенно написанная и занимающая мало ресурсов программа, которая работает очень быстро, но с ошибками. Из программистского фольклора: “Беремся написать вам ПО : 1. Быстро 2.дешево 3.надежно. – Два из трех.

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

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

Языки, поддерживающие объектно-ориентированное программирование, в настоящее время занимают прочное положение среди основных тенденций программирования. Начиная с языка COBOL и заканчивая языком LISP, практически для каждого языка были разработаны объектно-ориентированные диалекты. К ним относятся языки C++, Ada 95 и CLOS, а также объектно-ориентированная версия языка LISP (Bobrow et al., 1988). Языки C++ и Ada 95, кроме объектно-ориентированного программирования, поддерживают процедурно-ориентированное и информационно-ориентированное программирование. Язык CLOS поддерживает также функциональное программирование.

Некоторые из современных языков, разработанных для объектно-ориентированного программирования, не поддерживают другие парадигмы программирования, но продолжают использовать некоторые основные структуры прежних императивных языков и внешне на них похожи. К таким языкам относятся Eiffel и Java. Кроме того, существует один полностью объектно-ориентированный язык, являющийся совершенно нетрадиционным, — Smalltalk. Язык Smalltalk был первым языком, предназначенным для полной поддержки объектно-ориентированного программирования.

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

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