Программная инженерия Нижний Новгород 017 Лабораторный


Download 1.23 Mb.
Pdf ko'rish
bet52/87
Sana08.06.2023
Hajmi1.23 Mb.
#1463900
TuriУчебно-методическое пособие
1   ...   48   49   50   51   52   53   54   55   ...   87
Bog'liq
Pract ADS

ListLen-1 
pPrevLink 

3
301
-2
22
3
0
3
301
-2
22
3
0

0
-1


 
59 
Для повышения эффективности операций обработки полиномов (например, чтобы уйти от 
проверки нулевого указателя последнего звена списка) целесообразно использовать 
циклические списки, в которых указатель последнего звена указывает на первое звено:
2.2. Алгоритмы 
2.2.1. Списки 
Для работы со списками предлагается реализовать следующие операции: 

методы получения параметров состояния списка (проверка на пустоту, получение 
текущего количества звеньев); 

метод доступа к значению первого, текущего или последнего звена

методы навигации по списку (итератор); 

методы вставки перед первым, после текущего и последнего звеньев; 

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

конструкторы инициализации и копирования; 

метод присваивания; 

метод сложения полиномов. 
Дополнительные операции могут быть определены при разработке спецификации класса 
для полиномов. 
3. Разработка программного комплекса 
3.1. Структура 
С учетом всех перечисленных ранее требований может быть предложен следующий 
состав классов и отношения между этими классами (см. рис. 4): 

класс TDatValue для определения класса объектов-значений списка (абстрактный 
класс); 

класс TMonom для определения объектов-значений параметров монома; 

класс TRootLink для определения звеньев (элементов) списка (абстрактный класс); 

класс TDatLink для определения звеньев (элементов) списка с указателем на 
объект-значение; 

класс TDatList для определения линейных списков; 
3
301
-2
22
3
0

0
-1


 
60 

класс THeadRing для определения циклических списков с заголовком; 

класс TPolinom для определения полиномов. 
На рис. 4 показаны также отношения между классами: обычными стрелками показаны 
отношения наследования (базовый класс – производный класс), а ромбовидными стрелками – 
отношения ассоциации (класс-владелец – класс-компонент). 
Схема классов и связи между классами 
В соответствии с предложенной структурой классов модульная (файловая) структура 
программной системы может иметь вид: 

DatValue.h – модуль, объявляющий абстрактный класс объектов-значений списка; 

RootLink.h, RootLink.cpp – модуль базового класса для звеньев (элементов) списка; 

DatLink.h, DatLink.cpp – модуль класса для звеньев (элементов) списка с 
указателем на объект-значение; 

DatList.h, DatList.cpp – модуль класса линейных списков; 

HeadRing.h, HeadRing.cpp – модуль класса циклических списков с заголовком; 

Monom.h, Monom.cpp – модуль класса моном; 

Polinom.h, Polinom.cpp – модуль класса полиномов; 

PolinomTestkit.cpp – модуль программы тестирования. 

UserComm.h, UserComm.cpp – модуль функций, реализующих визуальный 
диалоговый интерфейс для взаимодействия с пользователем. 


 
61 

Download 1.23 Mb.

Do'stlaringiz bilan baham:
1   ...   48   49   50   51   52   53   54   55   ...   87




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling