Подходы к разработке пп (1, 12)





Скачать 236.47 Kb.
НазваниеПодходы к разработке пп (1, 12)
страница3/4
Дата публикации10.01.2015
Размер236.47 Kb.
ТипДокументы
100-bal.ru > Маркетинг > Документы
1   2   3   4

Статические и виртуальные методы на Паскале. Полиморфизм (16)



По умолчанию все методы статические. Статические методы будут связаны со своими объектами во время трансляции (раннее связывание). Виртуальные методы будут связываться во время выполнения (позднее связывание). Познее связывание дает основу полиморфизму.

Если в объекте имеется хотя бы один виртуальный метод, то в нем обязательно д.б. конструктор. Конструктор д.б. явно вызван до начала работы с виртуальными методами.

X=object

procedure Pr; virtual;



end

Obj=object(X)

procedure Pr; virtual;



end;

Виртуальные методы используются для того, чтобы написать в подчиненном объекте новые реализации существующих методов.
Конструкторы и деструкторы в Паскале (17)
Конструктор должен вызываться в случае динамического создание переменных типа объект. Конструктор необходим для формирования VMT, в котором задана длина объекта. Деструктор обеспечивает доступ к VMT для определения объема освобождаемой памяти. Деструктор может не иметь в своем составе операторов, тогда он обеспечивает только связь с VMT. В общем случае в деструктор желательно включить действия, необходимые перед уничтожением экземпляра объекта. Деструктор, в отличие от конструктора, может быть виртуальным. Конструктор может содержать формальные параметры, деструктор – нет.
X=object

constructor C(a, b: integer);

destructor D;

end;
Динамическое создание объектов на Паскале (18)

Аналогично другим переменным, переменные типа объект могут динамически создаваться и уничтожаться. Для обеспечения динамического вызова в программе должен быть указатель на объект, а сам объект должен содержать конструктор (даже тогда, когда он не содержит виртуальных методов) и деструктор. Для создания экземпляра объекта используется оператор New: New(S1,Init), где S1 – указатель на объект, Init – конструктор объекта. Для уничтожения экземпляра объекта используется оператор Dispose: Dispose(S1,Done); где S1 – указатель, Done – деструктор.
Таблица виртуальных методов на Паскале (19)
Если в описании объекта имеются виртуальные методы, конструкторы или деструкторы, компилятор создает специальное поле – таблицу виртуального метода VMT (Virtual Method Table). Длина поля VMT 16 битов. Оно расположено в области данных и инициализируется конструктором при его вызове. Выделение в памяти места и заполнение VMT осуществляется транслятором автоматически; программисту VMT недоступно. Структура VMT:

длина объекта

-длина объекта (отриц. число в доп. коде)

@ адреса точек входа всех виртуальных методов

VMT имеется в одном экземпляре для каждого объекта, имеющего виртуальные методы. Чтобы выполнялась проверка инициализации объекта нужно задать директиву {R+}
Особенности ООП на языке Object Pascal на Delphi (20)
В Delphi имеется 2 подхода к реализации ООП:

    1. Классический, унаследованный от Turbo Pascal 7.0 и ничем от него не отличающийся.

    2. Введены понятия «класс» и «объект». Автоматическим предшественником всех создаваемых классов является класс TObject.

type

cl1=class

end;

var

mycl1: cl1;

Здесь mycl1 – указатель на класс. Память нужно автоматически выделять. В классе обязательно д.б. конструктор.

Виртуальные методы в Delphi:

type

cl1=class

procedure Pr; virtual;

procedure Qr; virtual;



end;

cl2=class(cl1)

procedure Pr; override;

procedure Qr; virtual; {это уже другая процедура}

end;

Динамические методы: procedure Pr; dynamic. С точки зрения выполнения то же самое, что и virtual. Создается DMT (dynamic MT). В VMT адреса всех методов, даже предшественников, а в DMT включаются только адреса динамических методов, определенных только в данном классе.
Контейнерные классы на C++, назначение, структура (31)
КК – классы, предназначенные для хранения данных, организованных определенным образом. Например векторы, списки и т.д. Для каждого контейнера определены методы для работы с его элементами, не зависящие от конкретных типов данных, хранимых в контейнере. Есть библиотека STL – Standard Template Library. Разновидности контейнеров: последовательные (vector, deque, list, stack, queue, priority-queue) и ассоциативные (прямой доступ по ключу: map, multimap, set, multiset, bitset).
Последовательные контейнеры (32)
Вектор: #include , vector. С последовательными контейнерами связано понятие итератор. Это указатель на элементы КК.

vector::iterator p;

p=v.begin();

while(p!=v.end()) {cout << *p; p++;}

Есть функции: size(), empty(), push_back() – добавить в конец, pop_back(), insert(место, эл-т), erase(место), at(место). Конструкторы:

vector v;

vector v1(10, 1);

vector v2(v1);
Ассоциативные контейнеры (33)
Определен шаблон для создания пар значений:

template struct pair {

T1 first; T2 second;

Pair(const T1 &x, const T2 &y);

Template pair(const pair &P);
};

Операции сравнения: p1
если p1.first
или p1.first=p2.first и p1.second


Есть возможность определения критерия упорядочивания. Для этого служат функциональные классы.

Пример:

class if_greater {

public:

int operator () (int a, int b) const {return a>b;}

};

if_greater x;

cout << x(1, 5);

В ассоциативных класах можно проводить поиск по значениям элементов.

Словарь map: Элементы словаря – пары (ключ, значение). По умолчанию упорядочены по ключам. Повторение ключей не допускается.

#include

#include

using namespace std;

typedef map> months_type;

void main {

months_type months;

months_type::iterator ptr;

typedef months_type::value_type value_type;

months.insert(value_type(string(“Jun”), 31));

for(ptr=months.begin(); ptr!=months.end(); ptr++)

cout << *ptr;

ptr.months.find(string(“June”));

}

Операции сравнения: equal_to, not_equal_to, greater, greater_equal, less, less_equal, logical_and, logical_not, logical_or.

Есть обратный итератор: reverse_iterator. Функции: rbegin(), rend(). В этом случае указатель увеличивать надо так: ++p.

Функции: count(ключ) =1 если есть, =0 если нет; empty(), equal_range(ключ), erase(итератор), erase(ключ), find(ключ), insert(значение), insert(итератор, значение), lower_bound(ключ), max_size(), size(), upper_bound(ключ).

Множество set:

#include



set_union(sd.begin(), st.end(), st2.begin(), st2.end());

set_intersection(-//-)
Тестирование и отдладка (34)
Тестирование – запуск программ на разных исходных данных и анализ результатов с целью оценки работоспособности программы. Отладка – выявление и устранение ошибок в программе, если такие обнаружены в процессе тестирования. Испытание – определение эксплуатационных характеристик программы или определение, соответствует ли программа по эксплуатационным характеристикам технической задаче.
Виды контроля программ (35)
3 вида:

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

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

  3. Динамический. Запуск программы и тестирование.


Цели, принципы и этапы тестирования (36)


  1. Каждый тест должен сопровождаться описанием результатов.

  2. Избегать тестирование автором, особенно на заключительных стадиях (но отладка – автором).

  3. Проведение бета-тестирования, особенно ПП, предназначенного для рынка.

  4. Результаты тестирования д.б. досканально изучены.

  5. Необходимо проверить работу программы на недопустимых входных данных.

  6. Необходимо сохранить использованные тесты (чтобы не пропустить имеющиеся тесты; при установка у нового заказчика неплохо пропустить их).

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

Тестирование – творческий процесс. Главная задача тестирования – нахождение ошибок. Существует 2 подхода к тестированию: 1) функциональное (тестирование по данным, тестирование черного ящика) – структура программы не учитывается, 2) структурное (тестрование управления, тестирование белого ящика) – известна структура программы и проектируются тесты в зависимости от управленческих структур.

Тестирование проводят по следующим уровням:

  1. Тестирование отдельных процедур и функций.

  2. Совместное тестирование процедур и функций.

  3. Тестирование функций программного комплекса.

  4. Тестирование всего комплекса в целом.

На 1 и 2 может применяться структурное тестирование, на последних – функциональное. Если логика программы очень сложная, то надо провести тщательное структурное тестирование. Особая опасность в компбинациях разных условий.
Структурное тестирование (37)
Известна структура программы и проектируются тесты в зависимости от управленческих структур. Тестирование проводят по следующим уровням.

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

Пример: if (A>1) and (B=0) then C:=C/A;

if (A=2) or (C>1) then C:=C+1;
A>1 B=0 A>1 B<>0 A<=1 B=0 A<=1 B<>0 A=2 C>1 A=2 C<=1 A<>2 C>1 A<>2 C<=1

Составляется минимальное множество тестов, чтобы покрыть все эти случаи:

A

B

C

2

0

4

2

1

1

1

0

2

1

1

1


Функциональное тестирование (38)
3 способа:

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

  2. Метод граничных значений. Выявление путем анализа задачи. Рекомендуют проверить граничные условия по выходу. Общий недостаток – трудность отслеживание исходных данных.

  3. Метод функциональных диаграмм. Состоит из 6 этапов:

а) разделение внешней спецификации на отдельные независимые участки

б) выделение причины и следствия (причина – те или иные исходные данные, следствие – результат)

в) составление собственно функциональной диаграммы (ФД)

г) на ФД заносятся ограничения, связанные с допустимыми и недопустимыми значениями исходных данных

д) ФД преобразуется в таблицу решений

е) таблица решений преобразуется в тесты

Метод эффективен если много исходных данных и накладываются сложные условия.

Пример:



На форме есть два текстовых окна. В 1-й позиции буквы A или B, во второй – любая цифра. Тогда файл обновляется. Если в 1-й позиции неправильный символ – выдается сообщение X12, если во второй, то X13.

Причины: 1) в 1-й позиции буква A; 2) в 1-й позиции буква B; 3) во 2-й позиции цифра

Следствия: 70 – факт обновления; 71 – выдается сообщение X12; 72 – выдается сообщение X13

Функциональная диаграмма:



Используют обозначения:



Анализ ФД: ставим некоторое следствие в состояние 1 и двигаясь от него назад определяем все комбинации входов при которых выбрано следствие 1 и определяем значения других выхдов. Для каждой комбинации выходов сооставляем 1 тест. При движении назад рекомендуют соблюдать следующие рекомендаци: 1) если ведет несколько путей, соединенных через , то не рекомендуют устанавливать 1 более одной причины (чувствительность тестов); 2) если 2 пути через &, то рекомендуют проверять комбинации 00 и 01 или 10.

70

71

72

H

1

2

3

1

0

0

1

0

1

1

0

0

1




1

0

0

0

1

0

0

0

0

0


Совместное тестирование модулей (39)
Есть 2 подхода: 1) монолитное тестирование – каждый модуль тестироуется отдельно, а затем выполняется сборка программы (требуется построение заглушек и драйверов); 2) пошаговое тестирование – каждый модуль подключается к ранее протестированным модулям.

В (2) могут использоваться восходящее и нисходящее тестирование.

При (1) трудозатраты больше, т.к. надо писать драйверы и заглушки.

В (2) раньше всплывают ошибки интерфейса. При (1) они могут всплывать на заключительной стадии.

Результат (2) более совершенен.

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

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

Нисходящее тестирование

+: 1) более раннее формирование структуры комплекса в целом (это нравится начальству)

2) легче обнаружить ошибки в верхней части программы

3) т.к. ввод/вывод данных обеспечивается врхними уровнями, то легче организовать тестирование

–: 1) необходимо писать заглушки и драйверы

2) трудно создать тестовые условия для нижних модулей

3) сложно оценить результаты тестирование, особенно модулей нижнего уровня

4) стимулируется сдача незавершенной программы

Для восходящего тестирования с точностью до наоборот.
1   2   3   4

Похожие:

Подходы к разработке пп (1, 12) iconТеоретические подходы к разработке программы маркетинговой деятельности
Мероприятия по разработке стратегической программы маркетинговой деятельности на предприятии ООО «Генезис»
Подходы к разработке пп (1, 12) iconПрограмма по формированию навыков безопасного поведения на дорогах...
Методические подходы к разработке механизмов финансирования природоохранных программ
Подходы к разработке пп (1, 12) iconПравительство Российской Федерации Федеральное государственное автономное...
Методологические подходы к разработке сценариев и построение алгоритма для проекта в сфере строительства 33
Подходы к разработке пп (1, 12) iconРабочая учебная программа дисциплины
Это одна из основных теоретических дисциплин профиля, ибо без знания физики работы приборов невозможны сознательные и эффективные...
Подходы к разработке пп (1, 12) iconРабоч ая учебная программа дисциплины Теоретическая электрохимия
Это одна из основных теоретических дисциплин профиля, ибо без знания теоретической электрохимии невозможны сознательные и эффективные...
Подходы к разработке пп (1, 12) icon«Физическая электроника и электронные приборы». подготовки специалистов...
Это одна из основных теоретических дисциплин специальности, ибо без знания физики работы приборов невозможны сознательные и эффективные...
Подходы к разработке пп (1, 12) iconПрограмма по формированию навыков безопасного поведения на дорогах...
Современная модель исторического образования предполагает качественно новые подходы к перспективному планированию учебного процесса,...
Подходы к разработке пп (1, 12) iconРабоч ая учебная программа дисциплины Материалы электронной техники
Это одна из основных дисциплин профиля, ибо без знания физико-химических характеристик материалов и протекающих в них физических...
Подходы к разработке пп (1, 12) iconПроект программы «внутришкольная система оценки качества образования»
В связи с этим возникла необходимость пересмотреть подходы к организации внутришкольного контроля и определить подходы к построению...
Подходы к разработке пп (1, 12) iconРазличные подходы в определении понятия корпорация
Реферат на тему: «Различные подходы в определении понятия «корпорация» в доктрине российского права»
Подходы к разработке пп (1, 12) iconМетодические указания к разработке рабочей программы При разработке...
«российский национальный исследовательский медицинский университет имени н. И. Пирогова»
Подходы к разработке пп (1, 12) iconСовременные подходы к созданию системы здоровьесозидающего образования...
Годовой план можно использовать в виде памятки, содержащей основные данные о различных мероприятиях. Ответственность за описание...
Подходы к разработке пп (1, 12) iconМетодические подходы оценки плодородия садовых агроценозов западного предкавказья бузоверов А. В
Ат. Разработаны методические подходы к проведению почвенного мониторинга в садах и установлены показатели (тесты) оценки плодородия...
Подходы к разработке пп (1, 12) iconДипломная работа посвящена программной реализации и экспериментальному...
Дипломный проект посвящен разработке программного комплекса для оптимизации размещения устройств регулирования напряжения в электроэнергетике...
Подходы к разработке пп (1, 12) iconМетодические указания по выполнению контрольных работ составлены...
При разработке методических указаний по выполнению контрольных работ в основу положен Государственный образовательный стандарт по...
Подходы к разработке пп (1, 12) iconМетодические подходы к оценке популяционного риска здоровью на основе...
Зайцева Н. В., Шур П. З., Кирьянов Д. А., Камалтдинов М. Р., Цинкер М. Ю. Методические подходы к оценке популяционного риска здоровью...


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск