Тақырып 4 «Кластар мұрагерлігі. Көпше түрдегі мұрагерлік» Мақсаты



бет3/3
Дата08.02.2022
өлшемі90 Kb.
#120020
1   2   3
Байланысты:
Тема4-каз

§ 3 Көпше түрдегі мұрагерлік

С++ тілі мұрагерлікті тек бір кластан емес, бір уақытта бірнеше кластардан жүзеге асыруға мүмкіндік береді. Мұндай мұрагерлік көпше түрдегі мұрагерлік деп аталады.


Көпше түрдегі мұрагерлік кезінде туынды класс базалық кластардың кез келген санын қамтиды.
Мұндай жағдайда туынды класты сипаттау келесідей болады:
Class <туынды класс атауы>:
<мұрагерлі түрі> <1 базалық класс атауы>,
< мұрагерлі түрі > <2 базалық класс атауы >,

< мұрагерлі түрі > < n базалық класс атауы >
{ … };
Мұрагерлік түрі әр базалық класс компоненттеріне қатынау режимін анықтайды.
Базалық кластар туынды класты хабарлау кезіндегі базалық кластар тізіміндегі ретпен құрылады.
Егер базалық кластар конструкторларының аргументтері болмаса, онда туынды класс конструкторы болмауы мүмкін. Базалық класс конструкторының бір немесе бірнеше аргументі болған жағдайда әр туынды кластың конструкторы болуы қажет.
Аргументтерді базалық класқа жіберу үшін оларды туынды класс конструкторын хабарлағаннан кейін анықтау керек. Үлгі:
<туынды класс конструкторы атауы> (<аргументтер тізімі>):
<1 базалық класс конструкторы атауы> (<аргументтер тізімі>)
{<туынды класс конструкторының денесі>}

Конструкторлар шақырылуының тізбегі жалғыз базалық класс жағдайындағыдай: алдымен барлық базалық кластар конструкторлары туынды класты хабарлау тізіміндегі ретпен, содан соң объектілік өрістер конструкторлары және соңында туынды класс конструкторы шақырылады.




Мысал 4.4. Екі базалық кластан мұрагерлік

Бұл мысалда twonasl класы integral және rational кластарынан туындайды және fixed класының объектісін қамтиды. (Сурет 3.1).



integral

int numfx

Integral()



rational

char c, int num

Rational()


Fixed

i nt num fx

fixed ()



Twonasl

Fixed numfix

Twonasl(), get ()

Сурет 4.2. Екі кластан туындайтын және объектілік өрісі бар кластар диаграммасы


Twonasl класының объектісі келесі өрістерден тұрады:


integral класынан мұрагерленген numfx өрісі (public бөлімінде сипатталған, мұрагерлік түрі private, сондықтан private) және -50 мен 49 аралығындағы кездейсоқ санмен инициализацияланады;
rational класынан мұрагерленетін num және с өрістері (public бөлімінде сипатталған, мұрагерлік түрі public, сондықтан public) және 20 санымен және «R» символымен инициализацияланады, сонымен қатар өріс инициализациясы rational класының конструкторында қарастырылмай twonasl класының конструкторында орындалады;
numfx ішкі өрісін қамтитын numfix атауымен fixed класының объектісі, ол twonasl класында көрінбейді және 50 санымен инициализацияланады.
Программасы СӨЖ ретінде Иванова Г.С. 141бет 3.17


Әдебиеттер:
[1]133-144 б., [3]294-297 б.;


Бақылау сұрақтары:

  1. Мұрагерлік дегеніміз не?

  2. Туынды класс қалай сипатталады?

  3. Мұрагерлік кезінде конструкторлар тәртібі қандай?

  4. Көпше түрдегі мұрагерлік дегеніміз не?


Достарыңызбен бөлісу:
1   2   3




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет