Змест[Схаваць][Паказаць]
Сярод распрацоўшчыкаў аб'ектна-арыентаванае праграмаванне прыцягнула значную колькасць прыхільнікаў. Папулярная кампутарная мова Python таксама прытрымліваецца аб'ектна-арыентаванай парадыгмы.
Ён мае справу з вызначэннем аб'ектаў і класаў у Python, што складае аснову для прынцыпаў ААП. У гэтым падручніку па «аб'ектна-арыентаванаму праграмаванню на Python» вы даведаецеся, як аб'яўляць класы Python, ствараць з іх аб'екты і выкарыстоўваць чатыры метады ААП.
Такім чынам, перш за ўсё.
Што такое аб'ектна-арыентаванае праграмаванне?
Асноўная ўвага аб'ектна-арыентаванага праграмавання (ААП) - гэта стварэнне "аб'ектаў". Сукупнасць узаемазвязаных зменных і функцый складае аб'ект.
Гэтыя зменныя часта называюць атрыбутамі аб'екта, а яго паводзіны часта называюць яго функцыямі. Гэтыя элементы забяспечваюць дадатку больш эфектыўную і зразумелую структуру. Аўтамабіль - прыклад прадмета.
Калі б аўтамабіль быў прадметам, яго атрыбуты ўключалі б такія рэчы, як колер, мадэль, цана, марка і г. д. Акрамя таго, ён паскараўся б, запавольваўся і пераключаў перадачы.
Яшчэ адна ілюстрацыя: калі мы думаем пра сабаку як пра прадмет, то некаторымі яе характарыстыкамі могуць быць колер, парода, імя, вага і г.д. І ён будзе рухацца, брахаць, гуляць і г.д.
Аб'ектна-арыентаванае праграмаванне добра вядома, паколькі яно ўключае ў праграмаванне рэальныя паняцці, такія як аб'екты, утойванне, спадчыннасць і г.д. Паколькі гэта вельмі падобна на рэальныя абставіны, візуалізацыя стала прасцей.
Канцэпцыі аб'ектна-арыентаванага праграмавання
Класы і аб'екты ў Python
Як і ўсе іншыя аб'ектна-арыентаваныя мовы, Python дазваляе распрацоўваць класы для стварэння аб'ектаў. Найбольш папулярныя тыпы даных у Python, уключаючы радкі, спісы, слоўнікі і іншыя аб'екты, з'яўляюцца ўбудаванымі класамі.
Клас - гэта група звязаных метадаў і зменных асобнікаў, якія вызначаюць пэўны від аб'екта. Клас можа разглядацца як мадэль або шаблон для аб'екта. Зменныя, якія складаюць клас, вядомыя як атрыбуты.
Аб'ект - гэта член класа, які мае вызначаны набор атрыбутаў. Дзякуючы гэтаму з дапамогай аднаго класа можна стварыць любую колькасць аб'ектаў.
Класы Python вызначаюцца з дапамогай слова class, за якім ідуць імя класа і двукроп'е. Ілюстрацыяй класа папугаяў можа быць:
Тут мы аб'яўляем пусты клас Parrot з дапамогай ключавога слова class. Мы ствараем асобнікі з класаў. Экземпляр - гэта пэўны аб'ект, створаны з пэўнага класа. 'pass' часта выкарыстоўваецца ў якасці замены кода, ад рэалізацыі якога мы можам адмовіцца на дадзены момант. Мы можам выканаць код Python без узнікнення памылкі, выкарыстоўваючы ключавое слова «pass».
Асобнік класа прыводзіць да аб'екта (экземпляра). Пры стварэнні класа вызначаецца толькі апісанне аб'екта. У выніку сховішча або аператыўная памяць не выдзяляюцца.
Прыклад аб'екта класа папугая:
У дадзеным выпадку Obj з'яўляецца аб'ектам класа Parrot.
Дапусцім, мы ведаем асаблівасці папугаяў. Зараз мы прадэманструем, як стварыць клас папугая і яго аб'екты.
Спецыяльны метад ( __init__ )
Метад пад назвай init вызначае атрыбуты, якія павінен мець кожны аб'ект Parrot (). Калі фарміруецца новы аб'ект Parrot, функцыя __init__ стварае пачатковы стан аб'екта, прысвойваючы значэнні, якія мы даем ва ўласцівасцях аб'екта.
Такім чынам, кожны новы асобнік класа ініцыялізуецца з дапамогай __init__(). Хоць __init__() можа прымаць любую колькасць параметраў, self заўсёды з'яўляецца першым параметрам.
Спасылка на асобнік актыўнага класа ўключана ў самааргумент. Параметр self, які спасылаецца на адрас бягучага аб'екта класа і дае нам доступ да дадзеных яго (аб'екта) зменных, азначае гэта.
Прыклад 1
У прыведзеным вышэй кодзе мы стварылі клас пад назвай Parrot. Далей вызначаюцца ўласцівасці. Характарыстыкі рэчы - гэта яе ўласцівасці. Гэтыя характарыстыкі ўказваюцца ў функцыі __init__ класа.
Калі аб'ект фармуецца, першапачаткова выклікаецца метад ініцыялізацыі. Затым ствараюцца асобнікі класа Parrot. Blaze і Wonda ў дадзеным выпадку з'яўляюцца спасылкамі (значэннямі) на нашы новыя аб'екты. __class .species дазваляе нам атрымаць доступ да атрыбуту класа.
Кожны асобнік класа мае аднолькавыя характарыстыкі. Характарыстыкі асобніка таксама можна атрымаць з дапамогай blaze.name і blaze.age. Аднак усе асобнікі класа маюць унікальныя атрыбуты асобніка.
Прыклад 2
Методыка
Функцыі, вызначаныя ўнутры цела класа, называюцца метадамі. Яны выкарыстоўваюцца, каб вызначыць, як будзе паводзіць сябе прадмет.
Два метады, sing() і dance, вызначаны ў вышэйзгаданым дадатку (). Паколькі яны выклікаюцца для аб'екта асобніка, напрыклад, flame, яны называюцца метадамі асобніка.
Асновы канцэпцыі OOPS
Чатыры асноўныя ідэі аб'ектна-арыентаванага праграмавання:
- ўспадкоўванне
- Інкапсуляцыя
- Паліморфізм
- Абстракцыя
ўспадкоўванне
Людзі часта кажуць нованароджаным, што яны маюць рысы твару, якія нагадваюць рысы твару іх бацькоў, або што яны атрымалі пэўныя рысы ў спадчыну ад бацькоў.
Магчыма, вы таксама заўважылі, што маеце некаторыя агульныя рысы з бацькамі. Сітуацыя ў рэальным свеце таксама даволі падобная на спадчыну.
Аднак у гэтым выпадку характарыстыкі «бацькоўскіх класаў» перадаюцца «даччынным класам». У дадзеным кантэксце гэтыя аспекты называюцца «ўласцівасцямі» і «метадамі».
Клас можа атрымаць свае метады і атрыбуты з іншага класа з дапамогай метаду, вядомага як спадчыннасць. Наследаванне - гэта працэс атрымання даччыным класам уласцівасцей бацькоўскага класа.
Прыклад:
Бацькоўскі клас Human успадкоўваецца даччыным класам Boy у прыкладзе вышэй. Паколькі Boy успадкоўвае клас Human, мы можам атрымаць доступ да ўсіх яго метадаў і атрыбутаў, калі ствараем асобнік класа Boy.
У класе Boy таксама быў вызначаны метад пад назвай schoolName. Аб'ект бацькоўскага класа не можа атрымаць доступ да метаду schoolName. Аднак метад schoolName можа быць выкліканы шляхам стварэння даччынага аб'екта класа (Boy).
Інкапсуляцыя
Прадастаўленне кожнай зменнай у праграме глабальнага доступу не з'яўляецца разумным крокам пры працы з класамі і апрацоўцы канфідэнцыйных даных.
Не даючы праграме поўнага доступу ні да адной з гэтых зменных, інкапсуляцыя забяспечвае механізм для атрымання неабходных зменных.
Для абнаўлення, рэдагавання або выдалення даных са зменных можна выкарыстоўваць метады, вызначаныя відавочна для гэтай мэты. Дадзены метад праграмавання мае перавагі павышанай бяспекі і кантролю над уводам дадзеных.
Паглядзіце, як хутка зменныя могуць быць даступныя ў дэманстрацыі ніжэй:
Паліморфізм
Дапусцім, вы выкарыстоўваеце свой тэлефон для прагляду Стужкі Instagram. Калі ў вас з'явілася жаданне паслухаць музыку, вы зайшлі ў Spotify і пачалі гуляць сваю любімую песню.
Праз некаторы час вам патэлефанавалі, таму вы прыпынілі ўсе дзеянні, якія рабілі ў фонавым рэжыме, каб адказаць. Ваш сябар патэлефанаваў і папрасіў адправіць яму SMS з нумарам тэлефона пэўнага чалавека.
Такім чынам, вы адправілі яму нумар тэлефона праз SMS і працягнулі свае задачы. Вы што-небудзь падхапілі? Маючы толькі адну прыладу — мабільны тэлефон — вы можаце праглядаць стужкі, слухаць музыку, прымаць і рабіць тэлефонныя званкі і адпраўляць паведамленні.
Такім чынам, палімарфізм параўнальны з гэтым. Полі азначае мноства, а морф - розныя формы. Такім чынам, палімарфізм у цэлым адносіцца да чагосьці з рознымі формамі.
Або «нешта», што, у залежнасці ад абставін, можа дэманстраваць розныя паводзіны. У OOPS палімарфізм апісвае функцыі з аднолькавымі імёнамі, але рознымі паводзінамі. У якасці альтэрнатывы, іншая сігнатура функцыі з такім жа імем функцыі (параметры, якія перадаюцца ў функцыю).
Прыклад:
Тут мы можам выкарыстоўваць зменную жывёлу для перабору аб'ектаў Зебры і Труса, выкарыстоўваючы адпаведныя метады асобнікаў. У выніку паводзіны (color() & eats()) і зебры, і труса прадстаўлены тут адной зменнай пад назвай жывёла. Такім чынам, ён прытрымліваецца правілаў палімарфізму.
Абстракцыя
Верагодней за ўсё, вы выкарыстоўваеце ноўтбук, тэлефон або планшэт, каб прачытаць гэты кантэнт. Чытаючы яго, вы, верагодна, таксама робіце нататкі, падкрэсліваеце ключавыя месцы і, магчыма, захоўваеце некаторую інфармацыю ў сваіх асабістых файлах.
Усё, што вы бачыце, чытаючы гэта, - гэта "экран" з дадзенымі, якія вам паказваюцца. Вы проста бачыце клавішы клавіятуры падчас уводу, таму вам не трэба турбавацца аб унутраных тонкасцях, напрыклад аб тым, як націсканне клавішы можа прывесці да з'яўлення гэтага слова на экране.
У якасці альтэрнатывы, як націсканне кнопкі на вашым экране можа запусціць новую ўкладку.
Таму ўсё, што мы можам назіраць у гэтай сытуацыі, — абстрактна. Мы можам бачыць толькі вынік, які ён стварае, а не ўнутраныя тонкасці (якія насамрэч важныя для нас).
Падобна таму, абстракцыя паказвае толькі функцыі, якімі валодае ўсё, хаваючы любыя рэалізацыі або ўнутраныя дэталі.
Галоўная мэта абстракцыі - схаваць даведачную інфармацыю і любыя староннія дадзеныя, каб людзі бачылі толькі тое, што ім трэба бачыць. Гэта дапамагае ў кіраванні складанасцю кода.
Прыклад:
Тут прысутнічае абстрактны клас, звязаны з транспартнымі сродкамі. Паколькі ён успадкоўвае ад абстрактнага класа ABC, ён абстрактны. Паколькі абстрактныя метады не вызначаны або застаюцца пустымі, клас Vehicle мае абстрактны метад пад назвай no of wheels, якому не хапае вызначэння.
Яны прадугледжваюць класы, якія ўспадкуюць абстрактныя класы, каб даць рэалізацыю метаду.
Перавагі канцэпцый OOPS
- Дзякуючы інкапсуляцыі дасягаецца высокая бяспека і канфідэнцыяльнасць даных.
- Гнуткасць у наяўнасці мноства паліморфных версій аднаго класа.
- Высокі ўзровень складанасці кода быў зніжаны за кошт абстракцыі.
- Замест прагляду сотняў радкоў кода, каб знайсці адну праблему, модульнасць праграмавання робіць адладку простай.
- Паўторнае выкарыстанне кода выклікана спадчынай даччыным класам уласцівасцей бацькоўскага класа.
- Эфектыўнае рашэнне праблем магчыма, таму што мы ствараем класы, якія выконваюць неабходныя дзеянні для кожнай міні-праблемы. Наступную праблему можна вырашыць яшчэ хутчэй, бо мы можам паўторна выкарыстоўваць гэтыя класы.
заключэнне
У заключэнне мы даведаліся пра ідэі OOPS у Python, самай папулярнай парадыгме праграмавання на дадзены момант.
Прачытаўшы гэта, вы напэўна зразумелі, што парадыгма OOPS цалкам мае справу з ідэяй класаў і аб'ектаў. і такія паняцці OOPS, як інкапсуляцыя, палімарфізм, спадчыннасць і абстракцыя.
Пакінуць каментар