Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Все ответы.doc
Скачиваний:
75
Добавлен:
17.03.2016
Размер:
1.29 Mб
Скачать

4. Высокоуровневые методы информатики и программирования

  1. Методы проектир-я программ. Классиф-я методов и краткая хар-ка.

Проектир-е алгоритма (@) и программ явл наиб ответств-ым этапом ЖЦ проектир-я программ, vопред-т на ск-ко создаваемая прогр. соответствует спецификации и треб-ям со стороны конечных пользов-лей. Классиф-ю методов проектир-я проводят по различ основаниям, важнейшим изvявл: степень автоматизации проектных работ; принятая методология процесса разработки.На основании степени автоматизосн методы м/разделить на 2 класса: методы автоматизир-го и традиц проектир-я.

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

Проектир-е @ и программ м/основыв-ся на различ подходах, среди vнаиб распростр-ыми явл: процедурное, модульное, объектно-ориентированное,нисходящее.

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

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

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

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

Языком модульного программирования является Модула  2. Алгоритмический язык FortranPowerStation4.0 также поддерживает идею модульного программирования. Реализованная в языке С++ концепция классов позволяет работать с модулями.

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

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

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

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

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

Это метод построения программ в виде множества взаимодействующих объектов. Базовыми понятиями объектно-ориентированного программирования являются объекты и классы.

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

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

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

Проектирование программы обычно не связано с языком программирования, на котором будет записываться исходный текст программы. Более того, модули могут быть закодированы на различных ЯП.