Тапсырмада кластың міндетті əдістері мен мүшелері берілген. Қажет
273
5. Құрылған кластардың функционалдылығын тексеру үшін осы кластар-
ды қолданатын программа жазу керек. Программада құрылған кластардың
барлық қасиеттері көрсетілуі тиіс.
Комбинациялық (аралас) элементтің нақты типі, триггердің типі жəне
регистрдің разрядтылығы тапсырманың нұсқасына сəйкес таңдалады.
Нұсқа
Комбинациялық (аралас)
элемент
Кірістер
саны
Триггер
Регистр
разрядтылығы
1
ЖƏНЕ-ЕМЕС
4
RS
8
2
НЕМЕСЕ
5
RST
10
3
МОД2-ЕМЕС
6
D
12
4
ЖƏНЕ
8
T
8
5
НЕМЕСЕ-ЕМЕС
8
V
9
6
ЖƏНЕ
4
RS
10
7
НЕМЕСЕ-ЕМЕС 5
JK
11
8
МОД2
5
D
8
9
ЖƏНЕ
4
T
10
10
НЕМЕСЕ
3
JK
8
11
ЖƏНЕ-ЕМЕС
3
RS
12
12
НЕМЕСЕ-ЕМЕС
4
RST
4
13
МОД2
5
D
10
14
МОД2-ЕМЕС
6
T
10
15
НЕМЕСЕ-ЕМЕС
8
V
10
16
ЖƏНЕ
8
JK
6
17
ЖƏНЕ-ЕМЕС
8
RS
10
18
НЕМЕСЕ
8
T
10
19
МОД2
6
JK
8
20
МОД2-ЕМЕС
5
V
10
5-нұсқа
ТІРКЕС базалық класын сипаттау керек.
Кластың міндетті өрістері:
□
char
типіне нұсқауыш – тіркес символдарын орналастыру үшін
динамикалық түрде бөлінген жадының адресін сақтайды.
□
int
типті мəн – тіркестің ұзындығын байт есебімен сақтайды.
Міндетті əдістер келесі əрекеттерді орындау керек:
□ параметрлерсіз конструктор;
□ параметр ретінде С-тіркесті қабылдайтын конструктор (нөлдік байтпен
аяқталады);
□ параметр ретінде символды қабылдайтын конструктор;
□ көшірме конструкторы;
□ тіркес ұзындығын алу;
□ тіркесті тазарту (бос тіркес алу);
□ деструктор.
ТІРКЕС класынан туынды ТІРКЕС_ИДЕНТИФИКАТОР класын сипаттаңыз.
Бұл кластың тіркестері С тіліндегі идентификаторларды жазу ережелері
бойынша құрастырылады жəне оларда тек С-идентификаторлардың құрамына
18-1140
274
кіре алатын символдар болуы мүмкін. Егер бастапқы мəндер идентификатор-
ды жазу ережелеріне қайшы келсе, онда бос ТІРКЕС_ИДЕНТИФИКАТОР
құрылады.
Міндетті түрде болатын əдістері:
□ параметрлері жоқ конструктор;
□ параметр ретінде С-тіркесті қабылдайтын конструктор (нөлдік байтпен
аяқталады);
□ параметр ретінде символды қабылдайтын конструктор;
□ көшірме конструкторы;
□ тіркестің барлық символдарын жоғарғы регистрге ауыстыру;
□ тіркестің барлық символдарын төменгі регистрге ауыстыру;
□ символдың тіркеске алғаш енуін іздеу;
□ деструктор.
Келесі операцияларды қайта анықтау қажет:
□ меншіктеу (=);
□ қосу (+) – тіркестер конкатенациясы операциясы;
□ азайту (-) – тіркестен (бірінші операнд) – екінші операнд тіркесіне кіретін
барлық символдар жойылады, бұл кезде бос тіркес пайда болуы мүмкін;
□ (>) операциясы – үлкен болуын тексеру. Егер бірінші тіркестің і-ші (і 0
мен n-1 аралығында өзгереді, мұндағы n – екі тіркес ішіндегі қысқа тіркестің
ұзындығы) позициясындағы символдың коды екінші тіркестің дəл осы
позициясындағы символ кодынан үлкен болса, бірінші тіркес екіншісінен үлкен
болып саналады, тіркестердің ұзындықтары бір-бірімен бірдей болмауы мүмкін;
□ (<) операциясы – кіші болуын тексеру. Егер бірінші тіркестің і-ші (і 0
мен n-1 аралығында өзгереді, мұндағы n – екі тіркес ішіндегі қысқа тіркестің
ұзындығы) позициясындағы символдың коды екінші тіркестің дəл осы
позициясындағы символ кодынан кіші болса, бірінші тіркес екіншісінен кіші
болып саналады, тіркестердің ұзындықтары бір-бірімен бірдей болмауы мүмкін.
Программа құрушы қосымша өрістер мен əдістердің кез келген санын
(қажеттілігін негіздей отырып) енгізуге құқылы болады.
Келесі əрекеттерді орындайтын тестілік программа жазыңыз:
□ динамикалық түрде базалық класқа нұқауыштар жиымын бөледі (4-6);
□ сұхбат режимінде осы жиымды туынды кластарға нұсқауыштармен тол-
тырады, бұл кезде туынды кластардың даналары (экземплярлары) бастапқы
мəндерін беру арқылы динамикалық түрде құрылады;
□ құрылған туынды кластардың даналары үшін қалыптастырылған барлық
əдістерді тексере отырып, бастапқы мəліметтер мен нəтижелерді дисплейге
шығарады.
Əрбір кластың көшірме конструкторлары үшін дисплейдің белгілі бір
жеріне оның шақырылу санын диагностикалық түрде басып шығаруды
қарастырыңыз (кластың статикалық мүшелерін қолданған жөн).
Сұхбат режимі иерархиялық меню көмегімен қамтамасыз етіледі.