В настоящее время нормальная структуризация проекта внедрения КИС предполагает выделение: · компонентов результата проекта · этапов жизненного цикла · организационной структурой
Category Archives for Модульные контроли
Модульные контроли
Цель и задача курса. Хар-ки и кач-во ПО.
ТП – это совокупность процессов создания, сопровождения и применения программного продукта. Любая ТП бази¬руется на некоторой методологии разработки программ. Методология – это совокупность механизмов применяемых в процессе разработки ПО и объединенных общим философским подходом. Эти механизмы необходимы по двум причинам:
Сложность ПО
Существенной чертой индустриально организованных программных систем является их большая сложность. Фактически невозможно охватить все тонкости системы одним человеком. Сложность таких систем превышает возможности человеческого интеллекта.
ООП и жизненный цикл разработки ПО
Анализ. На этапе анализа происх. первые встречи разработчиков и будущих пользователей сис-мы, котор., исходя из особенностей поставл. задачи пытаются найти м/у собой общ. язык.
Новые возможности С++, не связанные с ООП.
1. Ограничители комментариев. // … 2. Прототипы функций. Прототип функции состоит из след-х частей:
Ссылки и параметры ссылки.
Ссылка — это псевдоним для другой переменной. Они объявляются при помощи символа &. Ссылки должны быть проинициализированы при объявлении, причем только один раз. Тип «ссылка на type» определяется следующим образом: type& имя_перем. int& i, double& v.
Спецификаторы
Спецификатор inline. Может быть использован перед определением функции для того, чтобы компилятор помещал ее код непосредственно в место вызова функции. inline – функции – это такие ф-ции, чье тело подставляется в каждую точку вызова, вместо того, чтобы генерировать код вызова.
Классы, ф-ции-члены, ссылка на себя.
Инкапсуляция – это слияние данных и ф-ций, работающими с этими данными, порождающее абстрактные типы данных. Тип – это конкретное представление идеи (концепции). Причина проектирования нового типа заключается в том обеспечении конкр-го и заданного определения концепции, у кот-й нет прямого и очевидного аналога среди встроенных типов.
Ссылка на себя.
В функции-члене класса можно непосредственно ссылаться на член класса объекта, для которого вызывается функция-член класса. Например:
Инициализация. Структурные компоненты класса. Конструкторы.
Использование таких функций как setday() для инициализации объектов класса неэффективно и имеет тенденцию к ошибкам. Наилучший подход заключается в том чтобы разрешить программисту объявлять функцию с явной целью инициализации объекта. Т.к. такая функция образует значения разного толка, то она называется конструктором. Конструктор распознается по тому же имени что и класс.
Деструкторы.
Многим типам нужна обратная операция – деструктор, чтобы обеспечить правильную очистку объектов типа. Имя деструктора для класса Х это ~х() дополнение конструктора. В частности многие классы используют одну и ту же память из свободной памяти которая распределяется конструктором и освобождается деструктором.
Привеллигерованные ф-ии. Ф-ии друзья.
При написании программы могут встречаться ситуации когда желательно иметь доступ к личным данным класса минуя функции члены. Наиболее распространенной является ситуация когда функции члены одного класса должны иметь доступ к личным членам другого.
Статические члены класса
Класс является типом, а не объектом данных и каждый объект класса имеет свою собственную копию данных членов класса. Некоторые типы реализуются более элегантно, если все объекты этого типа используют совместно некоторые данные. Например для управления задачами в ОС или для моделирования часто используется список всех задач.
Перегрузка операций
Программа часто обрабатывает объекты, которые являются конкретными представителями абстрактных концепций. Такие концепции обычно включают набор операций представляющих основные операции над объектами кратким, удобным и стандартным способом.
Функции операций
Можно объявить функции имеющие смысл для следующих операций +, -, /, %, &, |, ~, ! …Невозможно изменить синтаксис выражения и приоритет операций. Невозможно определить унарную операцию % или бинарную !. Невозможно определить новые лексемы операций.
Преобразование типов с использованием конструкторов.
Альтернативу к исп-ию неск-их ф-ий (перегр-ых)сост-ет описание констр-ра, к-ый по зад-му double создает complex.Н-р: class complex { // … complex(double r) { re=r; im=0; } };
Присваивание и инициализация
Рассм-м простой класс строк string: struct string { char* p; int size; // размер вектора, на который // указывает p string(int sz) { p = new char[size=sz]; } ~string() { delete p; } }; Строка-это стр-ра д-ых, сост-ая из вектора символов и длины этого вектора.Вектор созд-ся констр-ром и уничт-ся дестр-ром.
Опер-ры индексирования массива
Чтобы задать смысл индексов для объектов класса, исп-ся ф-ия operator[ ].Второй пар-р(индекс)ф-ии operator[ ] может быть любого типа.Это позволяет опр-ть ассоц-ые массивы и т.п..Опер-ры инд-ия м-ва[ ]можно перегрузить для реал-ии доступа к д-ым членам класса,подобного доступу к элем-там м-ва, даже если эти д-ые имеют вид отд-ых членов или связ-го списка.
Оператор вызова функций
Вызов ф-ии, т.е. запись выр-е (список_выражений) — это бинарная операция, где выр-е – левый операнд, а список выраж-ий -правый.И опер-р вызова()может быть перегружен как и др-ие опер-ры.Список парам-ров ф-ии operator() вычисл-ся и провер-ся в соотв-ие с обычными правилами передачи парам-ров.
Ф-ии — друзья и ф-ии – члены
Сущ-ет интерес к вопросу:”в каких случаях для доступа к закрытой части определяемого польз-ем типа исп-ть члены, а в к-их — друзей?. Нек-ые опер-ии должны быть членами:констр-ры, дестр-ры и вирт-ые ф-кции,но обычно это зав-т от выбора.
