Модульное и объектно-ориентированное программирование

Автор работы: Пользователь скрыл имя, 12 Декабря 2010 в 15:52, курсовая работа

Краткое описание

Данная курсовая работа написана по теме «Модульное и объектно-ориентированное программирование». Вот некоторый список вопросов, которые раскрывают тему:
понятия: модуль и модульное программирование;
основные концепции модульного программирования;
модульная структура программных продуктов;
понятие: компиляция, его использование в модульном программировании;
объектно-ориентированное программирование как технология создания сложного программного обеспечения;
достоинство и недостаток объектно-ориентированного программирования;
принципы, положенные в основу объектно-ориентированного программирования;
объектно-ориентированные языки программирования;
этапы разработки программных систем с использованием объектно-ориентированного программирования.
В практической части курсовой работы представлено решение задачи находящейся в методических указаниях под номером 8.

Содержание

Общее введение 2
Введение 2
Понятие модуль и модульное программирование 4
Модульная структура программных продуктов 6
Объектно-ориентированное программирование 9
Объектно-ориентированные языки программирования 12
Этапы разработки программных систем с использованием ООП 13
Заключение 15
Практикум 16
Общая характеристика задачи 16
Алгоритм решения задачи 19
Список использованной литературы 24

Вложенные файлы: 1 файл

Курсач.doc

— 188.00 Кб (Скачать файл)

    Оглавление

 

     Общее введение 

    Данная  курсовая работа написана по теме «Модульное и объектно-ориентированное программирование». Вот некоторый список вопросов, которые раскрывают тему:

понятия: модуль и модульное программирование;

  1. основные концепции модульного программирования;
  2. модульная структура программных продуктов;
  3. понятие: компиляция, его использование в модульном программировании;
  4. объектно-ориентированное программирование как технология создания сложного программного обеспечения;
  5. достоинство и недостаток объектно-ориентированного программирования;
  6. принципы, положенные в основу объектно-ориентированного программирования;
  7. объектно-ориентированные языки программирования;
  8. этапы разработки программных систем с использованием объектно-ориентированного программирования.

    В практической части курсовой работы представлено решение задачи находящейся  в методических указаниях под номером 8. 
 
 
 
 
 
 
 
 

    Введение

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

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

    Понятие модуль и модульное программирование

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

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

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

    Стандартизация интерфейса между отдельными программными единицами – вот основная черта модульного программирования.

    Интерфейс в модульном программировании рассматривается как жёсткая спецификация, контракт, который должен неукоснительно соблюдаться клиентами модуля (импортирующими его) и реализацией данного модуля (или несколькими альтернативными реализациями).

    Основные  концепции модульного программирования:

- каждый  модуль реализует единственную независимую функцию;

- каждый  модуль имеет единственную точку  входа и выхода – на входе  программный модуль получает  определённый набор исходных  данных, выполняет содержательную  обработку и возвращает один  набор результатных данных, то есть реализуется стандартный принцип IPO (Input-Process-Output – вход-процесс-выход);

- размер  модуля по возможности должен  быть минимизирован;

- каждый  модуль может быть разработан  и закодирован различными членами  бригады программистов и может  быть отдельно протестирован;

- вся  система построена из модулей;

- модуль  не должен давать побочных  эффектов;

- каждый  модуль не зависит от того, как реализованы другие модули.

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

    Модульная структура программных продуктов

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

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

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

- принятие  основных решений в алгоритме  выносится на максимально «высокий»  по иерархии уровень;

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

    В результате дальнейшей детализации  алгоритма создаётся функционально-модульная  схема (ФМС) алгоритма приложения, которая является основой для программирования. Пример такой схемы можно увидеть в приложении, где видно, что функция Ф1 реализуется в виде последовательности выполнения программных модулей. Функция Фm реализуется с помощью иерархии связанных модулей. Модуль n управляет выбором на выполнение подчинённых модулей. Функция Фх реализуется одним программным модулем.

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

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

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

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

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

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

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

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

    Взаимодействие  программных объектов в такой  системе осуществляется путём передачи сообщений.

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

    Основной  недостаток ООП – некоторое снижение быстродействия за счёт более сложной  организации программной системы.

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

    Рассмотрим, что представляет собой каждый принцип.

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

    Ограничение доступа – сокрытие отдельных элементов реализации абстракции, не затрагивающих существенных характеристик её как целого.

Необходимость ограничения доступа предполагает разграничение двух частей в описании абстракции:

- интерфейс  – совокупность доступных извне  элементов реализации абстракции (характеристики состояния и поведения);

- реализация  – совокупность недоступных извне  элементов реализации абстракции (внутренняя организация абстракции и механизмы реализации её поведения).

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

Информация о работе Модульное и объектно-ориентированное программирование