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

4.3. Сведения о модульном программировании

Часто модульное программирование принято считать составляющей частью структурного программирования.

Суть в том, что если в полной программе можно выделить самостоятельные задачи, то проще сначала написать модули – программы, решающие эти частные задачи. В развитых языках программирования для написания модулей имеются соответствующие средства. В языке FORTRAN – это подпрограммы (SUBROUTINE), в языке программирования MATLAB’а, уже известные вам m-функции.

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

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

Вообще, использование модулей целесообразно применять:

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

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

Важное достоинство модульного подхода – возможность использовать в своих программах модули, разработанные квалифицированными программистами. В частности MATLAB (как и все другие языки программирования) содержит обширную библиотеку функций. Большинство математических задач, которые вам когда-либо придется решать при составлении ваших программ, уже решены, и для них написаны отлаженные и тщательно протестированные программы. Например, для треугольного разложения матрицы, о котором только что шла речь выше, нет необходимости писать собственную программу. Загляните в HELP (Help – Product Help – Functions – Mathematics – Linear Algebra – Linear Equation) и вы найдете программу LU, предназначенную для решения этой задачи.

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

  • подготовке исходных данных

  • вызову встроенных функций

  • визуализации результатов (построение таблиц, графиков и т.п.)

4.4. Краткая информация об объектно-ориентированном программировании

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

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

Главное отличие ООП от традиционных технологий программирования – использование объектов и классов. Когда-то единственным инструментом, позволяющим их использовать был язык программирования С++ (первоначальное название: С с классами). В настоящее время средства для работы с объектами и классами введены в большинство систем программирования. Имеются они и в языке программирования MATLAB’а.

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

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

Классы, в некоторой степени, подобны типам переменных. То есть отдельный объект должен принадлежать к какому-то классу. Например, мы может дать объекту какое-то имя (например А) и указать, что он принадлежит к классу «квадратные матрицы». В описании класса должна быть указана структура данных, описывающих этот объект (например, n – размер матрицы, и n2 чисел – элементов матрицы), а также действия, которые можно выполнять с этим объектом (например, вычисление определителя и умножение на объект класса «вектор»).

Для описания самих классов используется достаточно изощренная схема с наследованием. Например, можно описать как базовый класс «матрица общего вида». Далее, используя этот класс в качестве родительского, описать новые классы. Например, класс «квадратная матрица» и класс «вектор-столбец». Классы-«дети» наследуют все свойства классов-«родителей» и, как правило, имеют дополнительные свойства.

В современных языках имеется богатая библиотека классов (например, MFC в C++).

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

Структурное и модульное программирование позволили увеличить этот размер до величины порядка 10000 строк.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]