Բառը[Թաքցնել][Ցուցադրում]
Մշակողների շրջանում օբյեկտի վրա հիմնված ծրագրավորումը գրավել է զգալի հետևորդներ: Հանրաճանաչ համակարգչային լեզուն Python-ը նույնպես հավատարիմ է օբյեկտի վրա հիմնված պարադիգմին:
Այն վերաբերում է Python-ում օբյեկտների և դասերի սահմանմանը, որը հիմք է հանդիսանում OOP-ի սկզբունքների համար: «Python-ում օբյեկտի վրա հիմնված ծրագրավորում» թեմայով այս ձեռնարկում դուք կսովորեք, թե ինչպես հայտարարել Python դասեր, ստեղծել օբյեկտներ դրանցից և օգտագործել չորս OOPs տեխնիկան:
Այսպիսով, առաջին բանը:
Ի՞նչ է օբյեկտի վրա հիմնված ծրագրավորումը:
Օբյեկտ-կողմնորոշված ծրագրավորման (OOP) հիմնական նպատակը «օբյեկտների» ստեղծումն է: Փոխկապակցված փոփոխականների և ֆունկցիաների հավաքածուն կազմում է օբյեկտ:
Այս փոփոխականները հաճախ կոչվում են օբյեկտի ատրիբուտներ, իսկ նրա վարքագծերը հաճախ անվանում են նրա գործառույթներ: Այս տարրերը հավելվածին տալիս են ավելի արդյունավետ և հասկանալի կառուցվածք: Ավտոմեքենան ապրանքի օրինակ է:
Եթե մեքենան ապրանք լիներ, ապա դրա ատրիբուտները կներառեին այնպիսի բաներ, ինչպիսիք են գույնը, մոդելը, գինը, ապրանքանիշը և այլն: Բացի այդ, այն կաճի, կդանդաղեցներ և կփոխեր փոխանցումները:
Մեկ այլ օրինակ. Եթե շան մասին պատկերացնենք որպես առարկա, ապա նրա որոշ առանձնահատկություններ կարող են լինել գույնը, ցեղատեսակը, անունը, քաշը և այլն: Եվ նա շարժվում էր, հաչում, խաղում և այլն:
Քանի որ այն ներառում է իրական աշխարհի հասկացություններ, ինչպիսիք են օբյեկտները, թաքցնելը, ժառանգությունը և այլն ծրագրավորման մեջ, օբյեկտի վրա հիմնված ծրագրավորումը հայտնի է: Քանի որ այն շատ նման է իրական աշխարհի հանգամանքներին, վիզուալիզացիան ավելի պարզ է դառնում:
Օբյեկտ-կողմնորոշված ծրագրավորման հայեցակարգեր
Դասեր և առարկաներ Python-ում
Ինչպես բոլոր այլ օբյեկտ-կողմնորոշված լեզուները, Python-ը թույլ է տալիս նախագծել դասեր՝ օբյեկտներ ստեղծելու համար: Python-ում ամենատարածված տվյալների տեսակները, ներառյալ տողերը, ցուցակները, բառարանները և այլ օբյեկտները, ներկառուցված դասեր են:
Դասը կապակցված մեթոդների և օրինակի փոփոխականների խումբ է, որը սահմանում է որոշակի տեսակի օբյեկտ: Դասը կարող է դիտվել որպես օբյեկտի մոդել կամ ձևանմուշ: Դաս կազմող փոփոխականները հայտնի են որպես ատրիբուտներ։
Օբյեկտը դասի անդամ է, որն ունի ատրիբուտների սահմանված հավաքածու: Դրա պատճառով ցանկացած թվով օբյեկտներ կարող են ստեղծվել՝ օգտագործելով նույն դասը:
Python դասերը սահմանվում են՝ օգտագործելով class բառը, որին հաջորդում է դասի անունը և երկու կետ: Թութակի դասի օրինակը կարող է լինել.
Այստեղ մենք հայտարարում ենք դատարկ Parrot դասը՝ օգտագործելով class բանալի բառը: Մենք ստեղծում ենք օրինակներ դասերից: Օրինակը որոշակի օբյեկտ է, որը պատրաստված է որոշակի դասից: «pass»-ը հաճախ օգտագործվում է որպես կոդ, որի իրականացումից մենք այս պահին կարող ենք հրաժարվել: Մենք կարող ենք կատարել Python կոդը առանց սխալ առաջացնելու՝ օգտագործելով «pass» հիմնաբառը:
Դասի ինստանցիացիան հանգեցնում է օբյեկտի (օրինակի): Կլասի ստեղծման ժամանակ սահմանվում է միայն օբյեկտի նկարագրությունը: Արդյունքում, հիշողություն կամ RAM չի հատկացվում:
Parrot դասի օբյեկտի օրինակ է.
Obj-ն այս դեպքում Parrot-ի դասի օբյեկտ է:
Ենթադրենք, թութակների մասին յուրահատկություններ գիտենք։ Այժմ մենք ցույց կտանք, թե ինչպես ստեղծել թութակի դասը և դրա օբյեկտները:
Հատուկ մեթոդ (__init__)
Init կոչվող մեթոդը սահմանում է այն ատրիբուտները, որոնք պետք է ունենա յուրաքանչյուր Parrot օբյեկտ (): Երբ նոր Parrot օբյեկտ է ձևավորվում, __init__ ֆունկցիան ստեղծում է օբյեկտի սկզբնական վիճակը՝ վերագրելով այն արժեքները, որոնք մենք մատակարարում ենք օբյեկտի հատկությունների շրջանակներում:
Այսպիսով, դասի յուրաքանչյուր նոր օրինակ սկզբնավորվում է՝ օգտագործելով __init__(): Չնայած __init__()-ը կարող է ընդունել ցանկացած քանակի պարամետր, ինքնակառավարումը միշտ առաջին պարամետրն է:
Ինքնափաստարկում ներառված է ակտիվ դասի օրինակին հղում: Self-ի պարամետրը, որը կապում է դասի ընթացիկ օբյեկտի հասցեին և մեզ հնարավորություն է տալիս մուտք գործել նրա (օբյեկտի) փոփոխականների տվյալները, նշանակում է դա։
Օրինակ 1
Վերոհիշյալ կոդում մենք ստեղծեցինք Parrot անունով դաս: Հաջորդը, հատկությունները սահմանվում են: Բանի առանձնահատկությունները նրա հատկություններն են: Դասի __init__ ֆունկցիան այն է, որտեղ նշված են այս բնութագրերը:
Երբ ձևավորվում է օբյեկտ, սկզբնավորիչի մեթոդն այն է, որը կոչվում է սկզբում: Այնուհետև ստեղծվում են Parrot դասի օրինակներ։ Բլեյզը և Վոնդան այս դեպքում հղումներ (արժեքներ) են մեր նոր օբյեկտներին: __class .species թույլ է տալիս մեզ մուտք գործել class հատկանիշ:
Դասի յուրաքանչյուր օրինակ ունի նույն հատկանիշները: Օրինակի բնութագրերը կարող են հասանելի լինել նաև blaze.name-ի և blaze.age-ի միջոցով: Այնուամենայնիվ, դասի բոլոր օրինակներն ունեն եզակի օրինակի ատրիբուտներ:
Օրինակ 2
Մեթոդներ
Դասի մարմնի ներսում սահմանված ֆունկցիաները կոչվում են մեթոդներ։ Նրանք օգտագործվում են հստակեցնելու համար, թե ինչպես կպահի իրը:
Վերոհիշյալ հավելվածում () սահմանվում են երկու մեթոդ՝ sing() և պարել։ Քանի որ դրանք կանչվում են օրինակի օբյեկտի վրա, ինչպիսին է բոցը, դրանք կոչվում են օրինակի մեթոդներ:
OOPS հայեցակարգի հիմունքները
Օբյեկտ-կողմնորոշված ծրագրավորման չորս հիմնական գաղափարներն են.
- Ժառանգություն
- Ներդաշնակություն
- Պոլիմորֆիզմ
- Աբստրակցիան
Ժառանգություն
Մարդիկ հաճախ ասում են նորածիններին, որ նրանք ունեն դեմքի առանձնահատկություններ, որոնք նման են իրենց ծնողներին կամ որ նրանք ժառանգել են իրենց ծնողներից որոշակի գծեր:
Հնարավոր է, որ դուք նաև նկատել եք, որ ձեր ծնողների հետ կիսում եք մի քանի առանձնահատկություններ: Իրական աշխարհում իրավիճակը նույնպես բավականին նման է ժառանգությանը:
Այնուամենայնիվ, այս դեպքում «ծնող դասերի» բնութագրերը փոխանցվում են «երեխաների դասերին»: Այս ասպեկտները այս համատեքստում կոչվում են «հատկություններ» և «մեթոդներ»:
Դասը կարող է իր մեթոդներն ու ատրիբուտները ստանալ մեկ այլ դասից՝ օգտագործելով այն տեխնիկան, որը հայտնի է որպես ժառանգություն: Ժառանգությունը երեխայի դասի գործընթացն է, որը ստանում է ծնող դասի հատկությունները:
Օրինակ:
Ծնողական դասը՝ Human, ժառանգվում է վերը նշված օրինակի Boy դասի երեխայի կողմից: Քանի որ Boy-ը ժառանգում է Human-ից, մենք կարող ենք մուտք գործել նրա բոլոր մեթոդներն ու հատկանիշները, երբ ստեղծում ենք Boy դասի օրինակ:
Boy դասարանում սահմանվել է նաև մեթոդ, որը կոչվում է schoolName: Ծնող դասի օբյեկտը չի կարող մուտք գործել schoolName մեթոդը: SchoolName մեթոդը, այնուամենայնիվ, կարելի է կանչել՝ ստեղծելով երեխայի դասի օբյեկտ (Boy):
Ներդաշնակություն
Ծրագրի յուրաքանչյուր փոփոխականին գլոբալ հասանելիություն տալը խելամիտ քայլ չէ դասերի հետ աշխատելիս և զգայուն տվյալների հետ աշխատելիս:
Առանց ծրագրին այդ փոփոխականներից որևէ մեկին ամբողջական հասանելիություն տալու, encapsulation-ը մեզ համար անհրաժեշտ փոփոխականներ ստանալու մեխանիզմ է ապահովում:
Մեթոդները, որոնք հստակորեն սահմանված են այդ նպատակով, կարող են օգտագործվել փոփոխականներից տվյալները թարմացնելու, խմբագրելու կամ ջնջելու համար: Ծրագրավորման այս մեթոդն ունի ուժեղացված անվտանգության և տվյալների մուտքագրման նկատմամբ վերահսկողության առավելություններ:
Տեսեք, թե որքան արագ փոփոխականները կարող են հասանելի լինել ստորև ներկայացված ցուցադրում.
Պոլիմորֆիզմ
Ենթադրենք, դուք օգտագործում եք ձեր հեռախոսը զննարկելու համար Instagram- ի թարմացումները. Երբ երաժշտություն լսելու ցանկություն առաջացավ, մուտք գործեցիք Spotify և սկսեցիք նվագարկել ձեր սիրած երգը:
Որոշ ժամանակ անց դուք զանգ ստացաք, այնպես որ դուք ընդհատեցիք այն, ինչ անում էիք հետին պլանում՝ դրան պատասխանելու համար: Ձեր ընկերը զանգահարեց և խնդրեց, որ իրեն գրեք որոշակի անձի հեռախոսահամարը:
Այսպիսով, դուք նրան ուղարկեցիք հեռախոսահամարը SMS-ի միջոցով և շարունակեցիք ձեր առաջադրանքները: Դուք ինչ-որ բան վերցրե՞լ եք: Ընդամենը մեկ սարքով՝ ձեր բջջային հեռախոսով, դուք կարող եք ճամփորդել հոսքերի մեջ, լսել երաժշտություն, ընդունել և կատարել հեռախոսազանգեր և հաղորդագրություններ ուղարկել:
Հետևաբար, պոլիմորֆիզմը համեմատելի է դրա հետ։ Պոլի նշանակում է բազմաթիվ, իսկ մորֆը նշանակում է տարբեր ձևեր։ Հետևաբար, պոլիմորֆիզմը որպես ամբողջություն վերաբերում է տարբեր ձևերով մի բանի:
Կամ «ինչ-որ բան», որը, կախված հանգամանքից, կարող է դրսևորել տարբեր վարքագիծ։ OOPS-ում պոլիմորֆիզմը նկարագրում է նույն անուններով, բայց տարբեր վարքագծով ֆունկցիաներ: Որպես այլընտրանք, ֆունկցիայի այլ ստորագրություն՝ նույն ֆունկցիայի անունով (գործառույթին փոխանցված պարամետրեր):
Օրինակ:
Այստեղ մենք կարող ենք օգտագործել փոփոխական կենդանին Զեբրի և Ճագարի առարկաների վրա կրկնելու համար՝ օգտագործելով դրանց համապատասխան օրինակների մեթոդները: Արդյունքում, Զեբրայի և Նապաստակի վարքագիծը (color() & eats()) այստեղ ներկայացված է մեկ փոփոխականով, որը կոչվում է կենդանի: Հետևաբար, այն հավատարիմ է պոլիմորֆիզմի կանոններին:
Աբստրակցիան
Դուք, ամենայն հավանականությամբ, օգտագործում եք նոութբուք, հեռախոս կամ պլանշետ՝ այս բովանդակությունը կարդալու համար: Այն կարդալիս, ենթադրաբար, նաև նշումներ եք անում, ընդգծում հիմնական հատվածները և, հավանաբար, որոշ տեղեկություններ պահում ձեր անձնական ֆայլերում:
Այն ամենը, ինչ դուք կարող եք տեսնել, երբ կարդում եք սա, «էկրան» է՝ ձեզ ցուցադրվող տվյալների հետ: Դուք պարզապես տեսնում եք ստեղնաշարի ստեղները, երբ մուտքագրում եք, այնպես որ դուք ստիպված չեք լինի անհանգստանալ ներքին նրբությունների մասին, ինչպիսիք են, թե ինչպես սեղմելով ստեղնը, այդ բառը կարող է հայտնվել էկրանին:
Այլապես, ինչպես ձեր էկրանին կոճակ սեղմելը կարող է նոր ներդիր բացել:
Հետևաբար, այն, ինչ մենք կարող ենք դիտարկել այս իրավիճակում, վերացական է։ Մենք կարող ենք տեսնել միայն այն արդյունքը, որը նա ստեղծում է, և ոչ թե ներքին խճճվածությունները (որոնք իրականում կարևոր են մեզ համար):
Նմանապես, աբստրակցիան միայն բացահայտում է այն գործառույթները, որոնք ամեն ինչ ունի՝ թաքցնելով ցանկացած իրականացում կամ ներքին մանրամասներ:
Abstraction-ի հիմնական նպատակն է թաքցնել ֆոնային տեղեկատվությունը և ցանկացած կողմնակի տվյալների իրականացում, որպեսզի մարդիկ տեսնեն միայն այն, ինչ պետք է տեսնեն: Այն օգնում է կառավարել կոդի բարդությունը:
Օրինակ:
Այստեղ առկա է տրանսպորտային միջոցների հետ կապված վերացական դաս: Քանի որ այն ժառանգում է ABC աբստրակտ դասից, այն վերացական է: Քանի որ վերացական մեթոդները սահմանված չեն կամ դատարկ են մնում, Vehicle դասը ունի վերացական մեթոդ, որը կոչվում է անիվների ոչ, որը չունի սահմանում:
Նրանք կանխատեսում են այն դասերը, որոնք ժառանգում են վերացական դասերը՝ մեթոդի իրականացումը տալու համար:
OOPS հասկացությունների առավելությունները
- Կափսուլավորելով՝ ձեռք է բերվում բարձր անվտանգություն և տվյալների գաղտնիություն:
- Նույն դասի բազմաթիվ պոլիմորֆ տարբերակներ ունենալու ճկունություն:
- Կոդի բարդության բարձր մակարդակը կրճատվել է վերացականությամբ:
- Մեկ խնդիր գտնելու համար հարյուրավոր կոդի տողեր մաղելու փոխարեն, ծրագրավորման մոդուլյարությունը հեշտացնում է վրիպազերծումը:
- Կոդի կրկնակի օգտագործումը պայմանավորված է երեխայի դասի կողմից ծնող դասի հատկությունների ժառանգությամբ:
- Խնդրի արդյունավետ լուծումը հնարավոր է, քանի որ մենք ստեղծում ենք դասեր, որոնք կատարում են անհրաժեշտ գործողությունները յուրաքանչյուր մինի խնդրի համար: Հետևյալ խնդիրը կարող է ավելի արագ լուծվել, քանի որ մենք կարող ենք նորից օգտագործել այդ դասերը:
Եզրափակում
Եզրափակելով՝ մենք իմացանք Python-ի OOPS գաղափարների մասին՝ այս պահին ամենաթեժ ծրագրավորման պարադիգմը:
Սա կարդալուց հետո դուք պետք է հասկացած լինեք, որ OOPS պարադիգմն ամբողջությամբ առնչվում է դասերի և օբյեկտների գաղափարին: և OOPS հասկացություններ, ինչպիսիք են պարկուճը, պոլիմորֆիզմը, ժառանգությունը և վերացականությունը:
Թողնել գրառում