Мазмұны[Жасыру][Көрсету]
Әзірлеушілер арасында объектілі-бағытталған бағдарламалау айтарлықтай ізбасарларды тартты. Танымал компьютер тілі Python да объектіге бағытталған парадигманы ұстанады.
Ол OOP принциптерінің негізін құрайтын Python тілінде объектілер мен сыныптарды анықтаумен айналысады. «Python-да объектіге бағытталған бағдарламалау» бойынша осы оқулықта сіз Python сыныптарын жариялауды, олардан нысандарды жасауды және төрт OOP әдістерін пайдалануды үйренесіз.
Сонымен, бірінші кезекте.
Объектіге бағытталған бағдарламалау дегеніміз не?
Объектіге бағытталған бағдарламалаудың (ОБП) негізгі бағыты «объектілерді» құру болып табылады. Өзара байланысты айнымалылар мен функциялардың жиынтығы объектіні құрайды.
Бұл айнымалылар жиі нысанның атрибуттары деп аталады, ал оның әрекеттері жиі оның функциялары деп аталады. Бұл элементтер қолданбаны тиімдірек және түсінікті құрылыммен қамтамасыз етеді. Автокөлік заттың мысалы болып табылады.
Егер автомобиль зат болса, оның атрибуттары оның түсі, моделі, бағасы, маркасы, т.б. сияқты нәрселерді қамтиды. Оған қоса, ол жылдамдатады, баяулайды және берілістерін ауыстырар еді.
Тағы бір мысал: Егер біз итті зат деп ойласақ, онда оның кейбір сипаттамалары түсі, тұқымы, аты, салмағы және т.б. болуы мүмкін. Ол қозғалады, үреді, ойнайды және т.б.
Ол бағдарламалауда объектілер, жасыру, мұрагерлік және т.б. сияқты нақты дүние концепцияларын қамтитындықтан, объектіге бағытталған бағдарламалау жақсы белгілі. Ол нақты әлем жағдайларына өте ұқсас болғандықтан, визуализация жеңілдетілген.
Объектіге бағытталған программалау тұжырымдамалары
Python тіліндегі сыныптар мен нысандар
Барлық басқа объектіге бағытталған тілдер сияқты, Python нысандарды жасау үшін сыныптарды жобалауға мүмкіндік береді. Python тіліндегі ең танымал деректер түрлері, соның ішінде жолдар, тізімдер, сөздіктер және басқа нысандар кіріктірілген сыныптар болып табылады.
Класс - белгілі бір нысан түрін анықтайтын байланысқан әдістер мен айнымалылар тобы. Класс нысан үшін үлгі немесе үлгі ретінде қарастырылуы мүмкін. Классты құрайтын айнымалылар атрибуттар ретінде белгілі.
Нысан – белгілі атрибуттар жиыны бар класс мүшесі. Осыған байланысты бір сыныпты пайдаланып кез келген нысандар санын жасауға болады.
Python сыныптары сынып сөзі арқылы анықталады, одан кейін сынып атауы мен қос нүкте қойылады. Попугая класының суреті келесідей болуы мүмкін:
Мұнда біз бос класс Parrot классын class кілт сөзі арқылы жариялаймыз. Біз сыныптардан даналарды жасаймыз. Дана - белгілі бір сыныптан жасалған белгілі бір нысан. 'pass' жиі код үшін стенд ретінде пайдаланылады, оның орындалуынан қазір бас тартуымыз мүмкін. Біз Python кодын «өту» кілт сөзін пайдаланып қате жібермей орындай аламыз.
Класс данасы нысанды (дананы) тудырады. Класс жасалғанда тек нысанның сипаттамасы ғана анықталады. Нәтижесінде жады немесе жедел жады бөлінбейді.
Попуга класының нысанының мысалы:
Obj - бұл данада Parrot класының нысаны.
Біз тотықұстардың ерекшеліктерін білеміз делік. Енді біз попуга класын және оның нысандарын қалай құру керектігін көрсетеміз.
Арнайы әдіс ( __init__ )
Init деп аталатын әдіс әрбір Parrot нысанында болуы керек атрибуттарды анықтайды (). Жаңа Parrot нысаны қалыптасқан кезде, __init__ функциясы нысанның сипаттарында біз беретін мәндерді тағайындау арқылы нысанның бастапқы күйін жасайды.
Осылайша, сыныптың әрбір жаңа данасы __init__() көмегімен инициализацияланады. __init__() параметрдің кез келген санын қабылдай алатынына қарамастан, self әрқашан бірінші параметр болып табылады.
Белсенді сынып данасына сілтеме өзіндік аргументке қосылады. Сыныптың ағымдағы нысанының мекенжайына сілтеме жасайтын және оның (нысанның) айнымалы деректеріне қол жеткізуге мүмкіндік беретін self параметрі мұны білдіреді.
Мысал 1
Біз жоғарыдағы кодта Parrot деп аталатын сыныпты құрдық. Әрі қарай сипаттар анықталады. Заттың белгілері – оның қасиеттері. Сыныптың __init__ функциясы - бұл сипаттамалар көрсетілген жерде.
Нысан қалыптасқан кезде, инициализатор әдісі бастапқыда шақырылатын әдіс болып табылады. Содан кейін Parrot класының даналары жасалады. Бұл жағдайда Blaze және Wonda біздің жаңа нысандарымызға сілтемелер (мәндер) болып табылады. __class .species бізге класс атрибутына қол жеткізуге мүмкіндік береді.
Сыныптың әрбір данасы бірдей сипаттамаларға ие. Дана сипаттамаларына blaze.name және blaze.age арқылы қол жеткізуге болады. Сыныптың барлық даналарының бірегей даналық атрибуттары бар.
Мысал 2
әдістері
Класс денесінде анықталған функциялар әдістер деп аталады. Олар элементтің қалай әрекет ететінін анықтау үшін қолданылады.
Екі әдіс, ән айту () және би, жоғарыда аталған қолданбада () анықталған. Олар жалын сияқты даналық нысанда шақырылғандықтан, олар даналық әдістер деп аталады.
OOPS тұжырымдамасының негіздері
Объектіге бағытталған бағдарламалаудың төрт негізгі идеясы:
- Мұрагерлік
- Инкапсуляция
- Полиморфизм
- Абстракция
Мұрагерлік
Адамдар жаңа туған нәрестелерге олардың ата-анасының бет-әлпетіне ұқсайтын ерекшеліктері бар екенін немесе ата-анасынан белгілі бір қасиеттерді мұра еткенін жиі айтады.
Мүмкін сіз ата-анаңызбен бірнеше сипаттамаларға ие екеніңізді байқаған боларсыз. Нақты әлемдегі жағдай мұраға ұқсас.
Дегенмен, бұл жағдайда «ата-аналық сыныптардың» сипаттамалары «бала сыныптарға» беріледі. Бұл аспектілер осы контексте «қасиеттер» және «әдістер» деп аталады.
Класс мұрагерлік деп аталатын әдісті қолдану арқылы басқа сыныптан өз әдістері мен атрибуттарын ала алады. Мұрагерлік – еншілес сыныптың ата-аналық сыныптың қасиеттерін алу процесі.
мысал:
Адам ата-ана сыныбы жоғарыдағы мысалдағы Boy еншілес сыныпқа мұраланған. Boy адамнан мұра болғандықтан, біз Boy класының данасын жасаған кезде оның барлық әдістері мен атрибуттарына қол жеткізе аламыз.
Бала сыныбында schoolName деп аталатын әдіс де анықталған. Ата-аналық сынып нысаны schoolName әдісіне қол жеткізе алмайды. SchoolName әдісін еншілес сынып нысанын (Boy) жасау арқылы шақыруға болады.
Инкапсуляция
Бағдарламадағы әрбір айнымалыға жаһандық рұқсат беру сыныптармен жұмыс істеу және құпия деректерді өңдеу кезінде ақылды қадам емес.
Бағдарламаға осы айнымалылардың ешқайсысына толық рұқсат бермей, инкапсуляция бізге қажетті айнымалыларды алу механизмін қамтамасыз етеді.
Мақсат үшін нақты анықталған әдістерді айнымалылардан деректерді жаңарту, өңдеу немесе жою үшін пайдалануға болады. Бағдарламалаудың бұл әдісі деректердің енгізілуін күшейтілген қауіпсіздік пен бақылаудың артықшылықтарына ие.
Төмендегі демонстрацияда айнымалыларға қаншалықты жылдам қол жеткізуге болатынын қараңыз:
Полиморфизм
Сіз телефонды шолу үшін пайдаланып жатырсыз делік Instagram арналары. Музыканы тыңдауға құштарлық пайда болғанда, сіз Spotify қолданбасына кіріп, сүйікті әніңізді ойнай бастадыңыз.
Біраз уақыттан кейін сізге қоңырау келді, сондықтан сіз оған жауап беру үшін фондық режимде не істеп жатқаныңызды тоқтаттыңыз. Сіздің досыңыз қоңырау шалып, сізге белгілі бір адамның телефон нөмірін жазуыңызды сұрады.
Сондықтан сіз оған телефон нөмірін SMS арқылы жіберіп, тапсырмаларыңызды жалғастырдыңыз. Сіз бірдеңе жинадыңыз ба? Бір ғана құрылғының — ұялы телефоныңыздың көмегімен сіз арналарды шарлай аласыз, музыка тыңдай аласыз, телефон қоңырауларын қабылдап, соға аласыз және хабар ала аласыз.
Сондықтан полиморфизм онымен салыстыруға болады. Поли көп дегенді білдіреді, ал морф әртүрлі формаларды білдіреді. Демек, тұтастай алғанда полиморфизм әртүрлі нысандары бар нәрсені білдіреді.
Немесе жағдайға байланысты әртүрлі мінез-құлық көрсете алатын «нәрсе». OOPS-те полиморфизм атаулары бірдей, бірақ мінез-құлқы әртүрлі функцияларды сипаттайды. Немесе, бірдей функция атауы бар басқа функция қолтаңбасы (функцияға берілген параметрлер).
мысал:
Мұнда біз айнымалы жануарды Зебра мен Қоянның объектілері бойынша қайталау үшін олардың сәйкес даналық әдістерін пайдалана аламыз. Нәтижесінде, Зебра мен Қоянның мінез-құлқы (color() & eats()) мұнда жануар деп аталатын бір айнымалымен ұсынылған. Сондықтан ол полиморфизм ережелерін ұстанады.
Абстракция
Бұл мазмұнды оқу үшін ноутбукты, телефонды немесе планшетті пайдалануыңыз мүмкін. Оны оқып отырып, сіз, мүмкін, ескертпелер алып, негізгі үзінділердің астын сызып, кейбір ақпаратты жеке файлдарыңызда сақтайсыз.
Мұны оқыған кезде сіз көре аласыз, бұл сізге көрсетілетін деректері бар «экран». Теру кезінде пернетақтаның пернелерін ғана көресіз, сондықтан пернені басу сол сөздің экранда пайда болуына себеп болатын ішкі нәзіктіктер туралы алаңдамайсыз.
Немесе экрандағы түймені басу жаңа қойындыны қалай іске қоса алады.
Сондықтан, бұл жағдайда біз байқай алатын нәрсенің бәрі дерексіз. Біз оның жасаған нәтижесін ғана көре аламыз, ал ішкі күрделіліктерді емес (бұл біз үшін маңызды).
Осыған ұқсас абстракция кез келген іске асыруды немесе ішкі бөлшектерді жасыра отырып, барлығына ие болатын функцияларды ғана ашады.
Абстракцияның негізгі мақсаты - адамдар тек көру керек нәрсені көру үшін фондық ақпаратты және кез келген басқа деректерді енгізуді жасыру. Бұл кодтың күрделілігін басқаруға көмектеседі.
мысал:
Мұнда көлікке қатысты дерексіз класс бар. Ол абстрактілі ABC класынан мұра болғандықтан, ол дерексіз. Дерексіз әдістер анықталмағандықтан немесе бос қалатындықтан, Vehicle класында анықтамасы жоқ дөңгелектер жоқ деп аталатын дерексіз әдіс бар.
Әдістің орындалуын қамтамасыз ету үшін олар абстрактілі сыныптарды иеленетін сыныптарды болжайды.
OOPS тұжырымдамаларының артықшылықтары
- Инкапсуляциялау арқылы жоғары қауіпсіздік пен деректердің құпиялылығына қол жеткізіледі.
- Бір кластың көптеген полиморфты нұсқаларына ие болу икемділігі.
- Абстракция арқылы код күрделілігінің жоғары деңгейі төмендетілді.
- Бір мәселені табу үшін кодтың жүздеген жолдарын електен өткізудің орнына, бағдарламалаудың модульділігі отладтауды жеңілдетеді.
- Кодты қайта пайдалану еншілес сыныптың ата-аналық сынып сипаттарын мұралауынан туындайды.
- Тиімді есептерді шешу мүмкін, өйткені біз әрбір шағын есеп үшін қажетті әрекеттерді жасайтын сыныптарды жасаймыз. Келесі мәселені тезірек шешуге болады, өйткені біз бұл сыныптарды қайта пайдалана аламыз.
қорытынды
Қорытындылай келе, біз Python-да OOPS идеялары туралы білдік, бұл қазіргі уақытта ең ыстық бағдарламалау парадигмасы.
Мұны оқығаннан кейін сіз OOPS парадигмасы сыныптар мен нысандар идеясымен толығымен айналысатынын түсінген болуыңыз керек. және инкапсуляция, полиморфизм, мұрагерлік және абстракция сияқты OOPS ұғымдары.
пікір қалдыру