«Алгоритмдеу және бағдарламалау» пәнінен оқу тәжірибесі бойынша



бет37/64
Дата06.02.2022
өлшемі2,01 Mb.
#79582
1   ...   33   34   35   36   37   38   39   40   ...   64
Байланысты:
ПИТОН УМК

Мұрагерлік
Мұрагерлік сізге бұрыннан бар класс негізінде жаңа класс құруға мүмкіндік береді. Инкапсуляциямен қатар мұрагерлік объектілі-конструкторлық негіздердің бірі болып табылады.
Мұрагерліктің негізгі ұғымдары – ішкі класс және суперкласс. Ішкі класс суперкласстан барлық жалпы атрибуттар мен әдістерді алады. Суперкласс негізгі класс (base class) немесе ата-ана класы (parent class) деп аталады, ал ішкі класс туынды класс (derived class) немесе еншілес класс (child class) деп аталады.
Кластарды мұраға алу үшін синтаксис келесідей:

Мысалы, өткен тақырыптарда адамды ұсынатын Person класы құрылды. Айталық, бізге қандай да бір кәсіпорында жұмыс істейтін қызметкер класы керек. Біз жаңа класты, мысалы, Employee класын нөлден жасай аламыз. Алайда, ол Person класы сияқты атрибуттар мен әдістерге ие болуы мүмкін, өйткені қызметкер - адам. Сондықтан Employee класында Person класындағы функционалды анықтаудың мағынасы жоқ. Бұл жағдайда мұрагерлікті қолдану жақсы.
Сонымен, біз Employee класын Person класынан мұра етеміз:


Employee класы Person класының функционалын толығымен қабылдап, оған қосымша details () әдісін қосады.
Employee үшін self кілт сөзі арқылы барлық Person класс әдістері мен атрибуттары қол жетімді, _ _ name немесе _ age типті жабық атрибуттардан басқа.
Employee объектісін құру кезінде біз Person класының конструкторын қолданамыз. Сонымен қатар, бұл объектіден Person класының барлық әдістерін шақыра аламыз.
Полиморфизм
Полиморфизм объектілі-бағытталған бағдарламалаудың тағы бір негізгі аспектісі болып табылады және базалық кластан алынған функционалдың өзгеруі мүмкіндігін болжайды.
Мысалы, бізде келесі кластар иерархиясы болсын:



Қызметкерді ұсынатын туынды Employee класында өз конструкторы анықталады. Өйткені бізге объектіні құру кезінде қызметкер жұмыс істейтін компанияны белгілеу керек. Ол үшін конструктор төрт параметрді қабылдайды: стандартты self параметрі, name және age параметрлері және company параметрі.
Employee конструкторында Person базалық класының конструкторы шақырылады. Базалық класс әдістеріне жүгіну келесі синтаксиске ие:

1

суперкласс.название_метода(self [, параметры])

Сондықтан базалық кластың конструкторына аты мен жасы беріледі. Employee класы өзі Person класының функционалына тағы бір атрибут - self.company қосады.


Сонымен қатар, Employee класы Person класының display_info() әдісін қайта анықтайды, себебі аты мен жасынан басқа қызметкер жұмыс істейтін компанияны да шығару қажет. Ат пен жасты шығару кодын қайта жазбау үшін мұнда get_info: Person.display_info (self) базалық класының әдісі қолданылады.
Осылайша студентті таныстыратын Student класы анықталған. Ол сондай-ақ конструктор мен display_info әдісін қайта анықтайды, оның орнына display_info әдісінің базалық кластағы нұсқасы туындамайды.
Бағдарламаның негізгі бөлімінде екі объект Employee және Student класстарын ұсынатын үш Person объектілерінің тізімі жасалады. Және циклде бұл тізім іріктеледі, және тізімде әрбір объект үшін display_info әдісі шақырылады. Python бағдарламасын орындау кезеңінде мұрагерлік иерархиясын ескереді және әрбір объект үшін display_info () әдісінің қажетті нұсқасын таңдайды. Нәтижесінде біз келесі консоль қорытындысын аламыз:

1
2
3
4
5
6

Имя: Tom Возраст: 23
Студент Bob учится в университете Harvard
Имя: Sam Возраст: 35
Компания: Google



Достарыңызбен бөлісу:
1   ...   33   34   35   36   37   38   39   40   ...   64




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

    Басты бет