МИНИСТЕРСТВО ОБРАЗОВАНИЯ УКРАИНЫ
З а п о р о ж с к и й г о с у д а р с т в е н н ы й т е х н и ч е с к и й
у н и в е р с и т е т
|
Кафедра __________________________
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА К КУРСОВОМУ ПРОЭКТУ
|
________________________________________________________
ст. гр. РПз-538 Крыгина А. А.
2001р.
РЕФЕРАТ
ПЗ: стр.
ЦЕЛЬ РАБОТЫ: разработать библиотечные средства решения задач линейной алгебры.
ОБЪЕКТ ИССЛЕДОВАНИЯ: классовые типы – численная квадратная матрица и одномерный динамический массив с переменными размерами.
МЕТОД ИССЛЕДОВАНИЯ: разработка алгоритмов и написание классов функций на языке Borland С++.
В курсовом проекте разработаны алгоритмы для решения основных задач линейной алгебры. По этим алгоритмам на языке Borland C++ написаны два класса функций, ориентированных на объекты типа численная квадратная матрица и одномерный массив (вектор). В классы включены арифметические операции, операции ввода-вывода, функции вычисления определителя матрицы, длины вектора, а также решения системы линейных алгебраических уравнений. Для наглядности полученных результатов разработана демонстрационно-тестирующая программа.
Результаты курсового проекта могут быть использованы на практике для решения систем линейных уравнений и других задач линейной алгебры.
Список ключевых слов:
ЛИНЕЙНАЯ АЛГЕБРА, МАТРИЦА, ВЕКТОР, СИСТЕМА ЛИНЕЙНЫХ УРАВНЕНИЙ, ОПРЕДЕЛИТЕЛЬ, ФУНКЦИЯ, КЛАСС ФУНКЦИЙ, ОБЪЕКТ, ОПЕРАЦИЯ, ШАБЛОН, ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ.
Объектно-ориентированное программирование – это новый способ подхода к программированию. Такое программирование, взяв лучшие черты структурного программирования, дополняет его новыми идеями, которые переводят в новое качество подход к созданию программ.
Наиболее важное понятие языков объектно-ориентированного программирования – это понятие объекта (object). Объект – это логическая единица, которая содержит данные и правила (методы) обработки этих данных. В языке С++ в качестве таких правил обработки выступают функции, т. е. объект в Borland C++ объединяет в себе данные и функции, обрабатывающие эти данные.
Одним из самых главных понятий языка С++ является понятие класса (class). В языке С++ для того, чтобы определить объект, надо сначала определить его форму с помощью ключевого слова class [1].
Ближайшей аналогией класса является структура. Память выделяется объекту только тогда, когда класс используется для его создания. Этот процесс называется созданием экземпляра класса (class instance).
Любой объект языка С++ имеет одинаковые атрибуты и функциональность с другими объектами того же класса. За создание своих классов и поведение объектов этих классов полную ответственность несет сам программист. Работая в некоторой среде, программист получает доступ к обширным библиотекам стандартных классов.
Обычно, объект находится в некотором уникальном состоянии, определяемом текущими значениями его атрибутов. Функциональность объектного класса определяется возможными операциями над экземпляром этого класса.
Шаблоны, или параметризованные типы, позволяют конструировать семейство связанных функций или классов. Обобщенный синтаксис определения шаблона имеет вид
template <список шаблонных типов> {объявление} ;
Различают шаблоны функций и шаблоны классов.
Шаблон классов задает образец определений семейства классов. Над типизированными элементами этого класса выполняются одинаковые базовые операции вне зависимости от конкретного типа элементов [2].
Объектно-ориентированное программирование представляет собой чуть более автоматизированный способ программирования. Объектно-ориентированные программы – это не просто процедурные программы, переведенные на новый синтаксис. Они должны строится на новой философии разработки. Для них требуется новая стратегия программирования, которую часто бывает трудно освоить [3].
Основная идея ООП: программа состоит из группы объектов, часто связанных между собой. В С++ объекты описываются при помощи нового типа данных class. Класс включает в себя набор переменных (данных) и операций (методов или функций-членов), которые действуют на эти переменные. Полученными объектами можно управлять при помощи сообщений.
В ООП объекты включают в себя не только данные (данные-члены), но и методы (функции-члены) воздействия на эти данные. Эти две части в сочетании образуют функциональную единицу программы. Другими словами, объекты содержат данные и методы работы с этими данными. Ниже приведены три основных преимущества объектно-ориентированных программ по сравнению с эквивалентными программами, разработанными сверху вниз.
· Сопровождение программы. Программы проще читать и понимать, ООП позволяет управлять сложностью программы, оставляя видимыми программисту только существенные детали.
· Модификация программы (добавление или исключение возможностей). Вы можете часто делать дополнения или исключения в программе, например при работе с базой данных, просто добавляя и исключая объекты. Новые объекты могут наследовать все свойства базовых объектов, необходимо только добавить или убрать отличающиеся свойства.
· Повторное использование. Можно сохранить грамотно разработанный объект в наборе полезных программ и затем вставить его в новую программу с небольшими изменениями или без изменений.
ООП полностью принадлежит к миру С++, поскольку в С нет основного ядра – абстрактного типа данных class [5]. Поэтому переписать процедурно-ориентированную программу как объектно-ориентированную гораздо сложнее, чем просто подставить вместо одного ключевого слова другое.
ООП представляет собой технику программирования, которая позволяет рассматривать основные идеи как множество объектов. Используя объекты, можно представить задачи, которые необходимо выполнить, их взаимодействие и любые заданные условия, которые должны быть соблюдены. Структура данных часто образует основы объектов; таким образом в С или С++ тип struct может образовывать элементарный объект. Связь с объектом можно организовать при помощи сообщений. Использование сообщений похоже на вызов функций в процедурно-ориентированной программе. Когда объект получает сообщение, вступают в действие методы, содержащиеся в объекте. Методы (их иногда называют фунциями-членами) аналогичны функциям процедурно-ориентированного программирования. Тем не менее метод является частью объекта, а не чем-то отдельным, как было бы в процедурном аналоге.
Основные термины и положения ООП Инкапсуляция данныхЭтот термин включает в себя логическое связывание данных с конкретной операцией. Она так же означает, что они являются не -глобальными доступными всей программе, а локальными – доступными только малой ее части. Инкапсуляция также автоматически подразумевает защиту данных. Именно для этого предназначена структура class в С++. В классе управление функциональными деталями объекта осуществляется при помощи спецификаторов private, public, protected.
Иерархия классовВ общем случае можно представить себе иерархию классов как родословную в генеалогическом древе, где класс С++ представляет собой шаблон для создания классов-потомков. Объекты, полученные из описания класса, называют экземплярами этого класса. Можно создать иерархию классов с классом-родителем и несколькими классами-потомками. Основой для этого являются производные классы.
Наследование
Наследование в ООП позволяет классу получать совйства другого класса объектов. Родительский класс служит шаблоном для производного класса; этот шаблон можно менять различными способами. Наследование является важным положением, поскольку оно позволяет повторно использовать определение класса без значительных изменений в коде.
Полиморфизм
Строится на описаной выше концепции наследования. Программа посылает одно и тоже сообщение как объекту родительского класса, так и всем объектам производных классов. И родительский класс, и классы-потомки ответят на сообщение соответствующим образом. Полиморфизм дает возможность дополнять уже существующие части программы.
Виртуальные функции
Виртуальные функции определяются в родительском классе, а в производных классах происходит доопределение этих функций и для них создаются новые реализации. При работе с виртуальными функциями сообщения передаются как указатели, которые указывают на объект вместо прямой передачи объекту. Виртуальные функции используют таблицу для адресной информации. Эта таблица инициализируется во время выполнения при помощи конструктора.
Конструктор вызывается каждый раз, когда создается объект его класса. Задача конструктора в данном случае состоит в связывании виртуальной функции с таблицей адресной информации. Во время компиляции адрес виртуальной функции неизвестен; вместо этого ей отводится позиция в таблице адресов. Эта позиция будет содержать адрес функции [5].
Глава 2. Задачи линейной алгебры
... сформировать более высокий уровень абстракции и обобщения, чем тот, на который ориентировалось традиционное преподавание»[4]. Следовательно, традиционные формы обучения не в состоянии поднять математическое мышление младших школьников на более высокий уровень. Как же решает эту проблему нетрадиционное обучение? Какие свойства математического мышления развивает решение нестандартных задач? Во- ...
... нашего исследования математического развития ребенка дошкольного и младшего школьного возраста предложено возможное решение: непрерывная преемственная методическая система математического развития ребенка в системе дошкольного и начального школьного образования. Многолетняя апробация разработанной в ходе исследования системы хорошо себя зарекомендовала и подтвердила ее практическую значимость. ...
... и младших школьников. Анкета для студентов включала в себя два вопроса, один из которых о том, в чем, по их мнению, заключается развитие математических способностей школьников, а второй ¾ для выяснения отношения студентов к проведению внеклассной работы по математике в начальных классах. Анкета для преподавателей имела своей целью выяснить, проводят ли (а если проводят, то как часто) учителя ...
... выборок. 5. Исследовательские проекты и их защита. 3 2 1 2 2 2 1 1 1 3 2 1 2 2 Всего 10 5 10 Итого 60 34 Глава 2 Методика обучения школьников основам комбинаторики, теории вероятностей и математической статистики в рамках профильной школы 2.1. Организация при формировании пространственного образа, c использованием ...
0 комментариев