Файл: олданушы анытайтын мліметтерді типі Класс Мрагерлік дегеніміз не.pptx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 03.05.2024

Просмотров: 11

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Ұқсас қасиеттері және ұқсас орындайтын қызметтері бар объектілердің жиынтығы қалай аталады?

Объектілі бағытталған программалау (ОБП)

Объектіге бағытталған модель элементтері?

Абстракция, Инкапсуляция, Мұрагерлік, Полиморфизм

Қолданушы анықтайтын мəліметтердің типі

Класс

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

ұрпақтары өздерінің ата-тектерінің барлық қасиеттерін мұралайтындай оларды өзгерту жəне жаңа қасиеттер қосу мүмкіндіктеріне ие болатындай кластар иерархиясын құру мүмкіндігі.

Басқа кластарды анықтайтын класс?

базалық класс

Мұралау түрлері?

қарапайым, көптік

Қарапайым мұралау дегеніміз не?

Туынды кластың бір ғана ата-тегі (базасы) болса

Көптік мұралау дегініміз не?

бір кластың екі немесе одан да артық басқа базалық класс қасиеттеріне ие болуына мүмкіндік береді

Белгілі бір сыныптың ата-аналық сыныптарының тізімін көруге мүмкіндік беретін әдіс?

Mro () әдісі

Мұрагерлік кезінде қасиеттерді қайта сипаттау қажет пе?

Мұралау кезінде қасиеттер қайталап сипатталмайды

Базалық кластың қасиеттерін мұрагерлікке алады да, өздерінің қосымша басқа қасиеттерін қабылдайды?

Туынды класс

Super () қандай функция?

сіз класс объектісіне қайта жазылған мұраланған әдістерге қол жеткізе аласыз

Кластың басқа кластың ұрпағы екенін не жоқтығын тексеретін функция?

Issubclass

Тапсырма 1.

Жемістер классын мұрагерлікпен құратын программа жазыңыз.

class FruitTree: def __init__(self, name): self.name = name def showInfo(self): print("Tree " + self.name) class AppleTree(FruitTree): def __init__(self, name, kg): super().__init__(name) self.kg = kg def showInfo(self): print("Fruit: " + self.name) print(" kg " + str(self.kg)) apple = AppleTree("Red apple", 20) apple.showInfo() class BananasTree(FruitTree): def __init__(self, name, kg): super().__init__(name) self.kg = kg def showInfo(self): print(
"Fruit: " + self.name) print(" kg " + str(self.kg)) banana = BananasTree("Banana", 3) banana.showInfo()

Тапсырма 2.

Бір кластың басқа кластың ұрпағы екенін не еместігін тексеретін программа құрыңыз.

class A: pass class B(A): pass print("issubclass(B, A): ", issubclass(B, A)) print("issubclass(A, B): ", issubclass(A, B))

Тапсырма 3.

Белгілі бір сыныптың ата-аналық кластардың тізімін көруге мүмкіндік беретін программа жазыңыз.

class A: pass class B: pass class C: pass class F(A, B): pass class G(B, C): pass print(F.mro()) print(G.mro())

23-сабақ

Оқытушы: Саметова Айгерім Айдарқызы


Объектілі бағытталған программалау (ОБП) негізінде программа тізбектей орындалатын нұсқау ретінде емес, ұқсас қасиеттері және ұқсас орындайтын қызметтері бар объектілердің жиынтығы ретінде қарастырылады. Бұл объектілер мен кластар негізгі ұғымдары болатын бағдарламалау парадигмасы.

Объектілі-бағдарлы бағдарламалаудағы полиморфизм дегеніміз - «бірдей» функция немесе әдісті қолдана отырып, әртүрлі типтегі мәліметтерді өңдеу мүмкіндігі, яғни әр түрлі кластарға жатады. Шындығында, тек әдіс атауы бірдей, оның бастапқы коды сыныпқа байланысты. Сонымен қатар, аттас әдістердің жұмыс нәтижелері айтарлықтай ерекшеленуі мүмкін. Сондықтан, бұл тұрғыда полиморфизм бір сөздің көптеген формалары - әдіс атауы ретінде түсініледі.

Полиморфизм термині (грек т.a.«көп форма» деген мағынаны білдіреді) ол қолданылатын жағдайға байланысты элементке әр түрлі мағына беру мүмкіндігін сипаттайды. Мысалы, Python-да + таңбасы сияқты элементті полиморфты деп сипаттауға болады, өйткені ол сандық операндтар контекстінде арифметикалық қосу операторын, егер операндалар сандар емес символдар болса, жолдарды біріктіру операторын білдіреді.

Python тілінде кез-келген типтегі объектіні қабылдайтын және сол объектіге әдістерді шақыратын функция жасауға болады. Егер объектіде шынымен де шақырылатын әдістер болса онда олар орындалады, әйтпесе функция орындалу қателігін білдіреді. Бірдей аттас әдістер бірнеше кластар үшін құрылуы мүмкін, бұл жағдайда осы кластардың әрбір құрылған данасы әдістің сәйкес нұсқасын орындайды.

1. Жол мәндерін шығаратын екі әдіспен класты жариялау арқылы жаңа Python бағдарламасын жасаңыз.

class Duck :

def talk( self ) :

print( '\nDuck Says: Quack!' )

def coat( self ) :

print( 'Duck Wears: Feathers' )

2. Содан кейін тағы бір бағдарлама жасаңыз, бірінші класс атаулары бірдей екі әдіспен басқа класты жариялаңыз, осы класс үшін өзіндік, жол мәндерін көрсетіңіз.



class Mouse :

def talk( self ) :

print( '\nMouse Says: Squeak!' )

def coat( self ) :

print( 'Mouse Wears: Fur' )

3. Екі класс файлын да сақтаңыз, содан кейін екі кластың функцияларын қол жетімді етіп жаңа бағдарламаны бастаңыз.

from Duck import *

from Mouse import *

4. Енді кез-келген жеке объектіні аргумент ретінде қабылдайтын және осы объектіге әдістер қолдануға тырысатын функцияны анықтаңыз.

def describe( object ) :

object.talk()

object.coat()

5. Енді екі кластың әрқайсысының экземплярын жасаңыз.

donald = Duck()

mickey = Mouse()

6. Соңында, функцияны шақыратын операторларды қосыңыз, оны алдымен бірінші кластың данасын, содан кейін екіншісін беріңіз.

describe( donald )

describe( mickey )

class Duck : def talk( self ) : print( '\nDuck Says: Quack!' ) def coat( self ) : print( 'Duck Wears: Feathers' )

class Mouse : def talk( self ) : print( '\nMouse Says: Squeak!' ) def coat(self): print('Mouse Wears: Fur')

from Duck import * from Mouse import * def describe( object ) : object.talk() object.coat() donald = Duck() mickey = Mouse() describe( donald ) describe( mickey )

Duck Says: Quack!

Duck Wears: Feathers

Mouse Says: Squeak!

Mouse Wears: Fur

Мысалы, екі түрлі класс бірдей әдісті қамтиды, бірақ әрқайсысына арналған нұсқаулықта операциялар мүлдем басқа. Сонымен, T1 класында ол аргументке 10-ды қосады, T2-де символдар жолының ұзындығын есептейді. Жалпы әдіс қай класс объектісіне қолданылатындығына байланысты белгілі бір нұсқаулар орындалады.

class T1: def __init__(self): self.n = 10 def total(self, a): return self.n + int(a) class T2: def __init__(self): self.string = 'Hi' def total(self, a): return len(self.string + str(a)) t1 = T1() t2 = T2() print(t1.total(35)) print(t2.total(35))

Полиморфизм ОБП негізгі элементтерінің бірі ретінде мұралауға тәуелсіз. Кластар бір-бірімен байланысты болмауы мүмкін, бірақ жоғарыда келтірілген мысалдағыдай әдістерге ие.

Полиморфизм әр түрлі кластардағы объектілер үшін біртекті деп аталатын интерфейстерді жүзеге асыруға мүмкіндік береді. Мысалы, әр түрлі кластар объектілердің осы немесе басқа ақпараттарын бейнелеудің басқа тәсілін қарастыра алады. Дегенмен, шығару әдісінің бірдей атауы бағдарламаны шатастырмауға және кодты анықырақ етуге көмектеседі.

Python-да полиморфизм шамадан тыс жүктеме әдістерінде көрінеді. Бұл объект жасалғанда және жойылғанда шақырылатын __init __ () және __del __ () әдістерді қатар қолдану кезнде орын алады.

Python-да объектіге бағытталған бағдарламалау деректерді инкапсуляциялауға, мұрагерлікке және полиморфизмге мүмкіндік береді. Базалық класс әдістерін туынды кластардан алынған жалғыз атаулы әдістермен жоққа шығаруға болады. Бірақ басқа тілдерде қолданылатын «шамадан тыс жүктеу» тәсілдері (бір аттас, бірақ басқа аргументтер жиынтығымен бір класта әдістер жасалуы мүмкін болғанда) Python қолдамайды.


Қорытынды

• Класс - бұл әдістер мен атрибуттар көмегімен объектілердің қасиеттерін сипаттайтын мәліметтер құрылымының прототипі.

• Әр класс жариялануы класс кілт сөзінен басталады. Одан кейін класс шегінісімен класс айнымалылары және класс әдістері жазылады.

• Класс айнымалылары глобалды ауқымға ие, ал экземплярлардың айнымалылары (әдіс анықтамаларында жарияланған) тек жергілікті болып табылады.

• Instance айнымалылары инсталляцияланған кезде және класс құрылымындағы деректерді қауіпсіз қораптағанда инициализацияланады.

• Класс ішіндегі әдістер мен атрибуттарға self префиксі бар нүктелік жазба арқылы қол жеткізуге болады

• Класс экземпляры- бұл класс прототипінің көшірмесі. __Init __ () әдісі экземплярды бірінші жасаған кезде автоматты түрде аталады.

• Нүктелік белгіні қолдану арқылы сіз класс атрибуттарын қосуға, өзгертуге және жоюға болады. Атрибуттарды басқарудың балама тәсілі - getAttr (), hasattr (), setAttr () және delattr () функцияларын қолдану.

• Автоматтық қолдау көрсетілетін атрибут атаулары астын сызудан басталады. Осылайша, Python аудармашысы шартты түрде осы атаулардың «жеке» сипатын білдіреді.

• Кірістірілген __dict__ атрибутында атрибут аты: значение_атрибута жұптарын сақтайтын класс сөздігі бар. • Python интерпретаторы қоқыс жинауды автоматты түрде орындайды, бірақ del кілт сөзі арқылы сыныптың деструкторын шақыру үшін объектілерді алып тастауға болады.

• Туынды класс өзі шыққан ата-аналық (негізгі) кластың әдістері мен атрибуттарын мұрагер етеді.

• Туынды классәдісі ата-аналық кластың аттас әдісін жоққа шығара алады.

• Python - бірнеше түрлі кластарға жататын аттас әдістер үшін полиморфизм принципін қолдайтын тіл.

Python ОБП артықшылықтары мен кемшіліктері:

ОБП-дың бірнеше негізгі артықшылықтарын қарастырайық:
  • ОБП қайта пайдалануға арналған. Объектілер мен кластар түрінде жазылған компьютерлік бағдарлама кодты қайталамай басқа жобаларда қайтадан қолданыла алады;
  • ОБП-да модульдік тәсілді қолдану оқылатын және икемді код алуға мүмкіндік береді;
  • ОБП-да әр сыныптың белгілі бір мақсаты болады. Егер кодтың бір бөлігінде қате орын алса, оны кодтың басқа бөліктеріне кедергі келтірмей, жергілікті түрде түзетуге болады;
  • Деректерді инкапсуляциялау объектіге бағытталған тәсілді қолдана отырып, әзірленген бағдарламаға қауіпсіздіктің қосымша қабатын енгізеді;

ОБПдың бірқатар артықшылықтары болғанымен, оның кейбір кемшіліктері де бар, олардың кейбіреулері төменде келтірілген:

  • Объектілерді құру үшін сізге жасалып жатқан бағдарламалық жасақтама туралы толық түсінік болу керек;
  • Бағдарламалық жасақтаманың барлық аспектілері объект ретінде жүзеге асырудың ең жақсы шешімі бола бермейді. Жаңадан бастаушылар үшін қиынға соғуы мүмкін;
  • Сіз өзіңіздің кодыңызға көбірек кластар қосқан сайын, бағдарламаңыздың көлемі мен күрделілігі геометриялық прогрессиямен өседі;

Python - бұл барлық кеңінен қолданылатын операциялық жүйелерінде жұмыс жасайтын заманауи бағдарламалау тілі. Python бағдарламалау тілі 20 жылдан астам уақыт бойы дамып келеді.

Python - заманауи әмбебап интерпретацияланған бағдарламалау тілі. Оның артықшылықтары:
  • Қауіпсіздік.
  • Қарапайым синтаксис және көптеген мүмкіндіктер бағдарламаларды өте қысқаша жазуға мүмкіндік береді, бірақ сонымен бірге түсінікті.
  • Оқытудың қарапайымдылығы тұрғысынан тіл BASIC-пен салыстырмалы, бірақ мүмкіндіктері анағұрлым бай және әлдеқайда заманауи.
  • Бай стандартты кітапхана, өндірістік қосымшаларды дамыту мүмкіндігі (желілік, GUI, мәліметтер базасы және т.б. үшін)

Python синтаксисінің негізгі принциптері
  • Жолдың соңы - тұжырымның соңы (нүктелі үтір қажет емес).
  • Кірістірілген нұсқаулар шегініс көлеміне сәйкес блоктарға біріктіріледі. Шегініс кез келген болуы мүмкін, ең бастысы бір кіріктірілген блок ішінде шегініс бірдей болуы керек.
  • Python-дағы кірістірілген операторлар негізгі сызықпен екі нүктемен аяқталатын негізгі ережемен жүреді, содан кейін кірістірілген кодтар блогымен, әдетте негізгі операторлар сызығының астына шегінеді.

Python кілттік сөздері

Python-да деректер типтерін импорттау кезінде қолдануға болатын интерпретаторға кіріктірілген және кіріктірілмеген деректер типтеріне бөлуге болады.

Негізгі кіріктірілген түрлері:
  • None (анықталмаған айнымалы мән)
  • Boolean Type (логикалық түр)
  • Numeric Type(сан түрі)

  • int - бүтін сан

    float - өзгермелі нүкте нөмірі

    complex - күрделі (комплекс) сан
  • Sequence Type (тізім)

  • list - тізім

    tuple - кортеж

    range - диапазон
  • Text Sequence Type (Жолдар, мәтін тізбегінің түрі)

  • str
  • Binary Sequence Types Бинарлы список

  • bytes - байт

    bytearray -массивтер байты

    memoryview  - протокол буфері protocol buffer арқылы объектінің ішкі мәліметтеріне қол жеткізуге арналған арнайы объектілер
  • Set Types жиынтық (множества)

  • set  - жиынтық (множества)

    frozenset  - өзгермейтін жиынтық
  • Mapping Types Сөздіктер

  • dict  - сөздік