טיש פון קאָנטענץ[באַהאַלטן][ווייַזן]
צווישן דעוועלאָפּערס, כייפעץ-אָריענטיד פּראָגראַממינג האט געצויגן אַ סייזאַבאַל פאלגענדע. פאָלקס קאָמפּיוטער שפּראַך פּיטהאָן אויך אַדכירז צו די כייפעץ-אָריענטיד פּאַראַדיגם.
עס דילז מיט דיפיינינג אַבדזשעקץ און קלאסן אין Python, וואָס איז די יקער פֿאַר OOPs פּרינסאַפּאַלז. אין דעם טוטאָריאַל אויף "אָבדזשעקט-אָריענטיד פּראָגראַממינג אין פּיטהאָן," איר וועט לערנען ווי צו דערקלערן פּיטהאָן קלאסן, שאַפֿן אַבדזשעקץ פון זיי און נוצן די פיר OOPs טעקניקס.
אַזוי, ערשטער זאַך ערשטער.
וואָס איז אָבדזשעקט-אָריענטיד פּראָגראַממינג?
דער הויפּט פאָקוס פון כייפעץ-אָריענטיד פּראָגראַממינג (אָאָפּ) איז די שאַפונג פון "אַבדזשעקץ". א זאַמלונג פון ינטערקאַנעקטיד וועריאַבאַלז און פאַנגקשאַנז מאכט אַ כייפעץ.
די וועריאַבאַלז זענען אָפט ריפערד צו ווי די אַטריביוץ פון די כייפעץ, און זייַן ביכייוויערז זענען אָפט ריפערד צו ווי זייַן פאַנגקשאַנז. די ייטאַמז צושטעלן די אַפּלאַקיישאַן מיט אַ מער עפעקטיוו און פאַרשטיייק סטרוקטור. א אויטאָמאָביל איז אַ ביישפּיל פון אַ נומער.
אויב די אויטאָמאָביל איז געווען אַ נומער, זייַן אַטריביוץ וואָלט אַרייַננעמען זאכן ווי זייַן קאָליר, מאָדעל, פּרייַז, סאָרט, אאז"ו ו. דערצו, עס וואָלט פאַרגיכערן, פּאַמעלעך אַראָפּ און טוישן גירז.
אן אנדער אילוסטראציע: אויב מיר טראַכטן פון אַ הונט ווי אַ נומער, דעמאָלט עטלעכע פון זייַן קעראַקטעריסטיקס קען זיין קאָליר, האָדעווען, נאָמען, וואָג, אאז"ו ו.
ווייַל עס ינקאָרפּערייץ פאַקטיש-וועלט קאַנסעפּס ווי אַבדזשעקץ, כיידינג, ירושה, אאז"ו ו אין פּראָגראַממינג, כייפעץ-אָריענטיד פּראָגראַממינג איז באַוווסט. ווייַל עס איז אַזוי ענלעך צו פאַקטיש-וועלט צושטאנדן, וויזשוואַלאַזיישאַן איז געמאכט סימפּלער.
אָבדזשעקט-אָריענטיד פּראָגראַממינג קאַנסעפּס
קלאסן און אַבדזשעקץ אין פּיטהאָן
ווי אַלע אנדערע אַבדזשעקץ-אָריענטיד שפּראַכן, Python ינייבאַלז איר צו פּלאַן קלאסן צו דזשענערייט אַבדזשעקץ. די מערסט פאָלקס דאַטן טייפּס אין פּיטהאָן, אַרייַנגערעכנט סטרינגס, רשימות, דיקשאַנעריז און אנדערע אַבדזשעקץ, זענען געבויט-אין קלאסן.
א קלאַס איז אַ גרופּע פון לינגקט מעטהאָדס און בייַשפּיל וועריאַבאַלז וואָס דעפינירן אַ זיכער סאָרט פון כייפעץ. א קלאַס קען זיין געזען ווי דער מאָדעל אָדער מוסטער פֿאַר אַ כייפעץ. די וועריאַבאַלז וואָס מאַכן אַ קלאַס זענען באקאנט ווי אַטריביוץ.
אַ כייפעץ איז אַ מיטגליד פון אַ קלאַס וואָס האט אַ דיפיינד גאַנג פון אַטריביוץ. ווייַל פון דעם, קיין נומער פון אַבדזשעקץ קענען זיין באשאפן מיט דער זעלביקער קלאַס.
פּיטהאָן קלאסן זענען דיפיינד מיט די וואָרט קלאַס, וואָס איז נאכגעגאנגען דורך די קלאַס נאָמען און אַ צווייפּינטל. אַ געמעל פון אַ פּאַפּוגייַ קלאַס קען זיין:
דאָ, מיר דערקלערן די ליידיק קלאַס פּאַרראָט ניצן די קלאַס קיווערד. מיר מאַכן ינסטאַנסיז פון קלאסן. אַ בייַשפּיל איז אַ באַזונדער כייפעץ וואָס איז געמאכט פון אַ זיכער קלאַס. 'פאָרן' איז אָפט געניצט ווי אַ סטאַנד-אין פֿאַר קאָד וועמענס ימפּלאַמענטיישאַן מיר קען פאַרלאָזן פֿאַר דעם מאָמענט. מיר קענען ויספירן די פּיטהאָן קאָד אָן רייזינג אַ טעות דורך ניצן די "פאָרן" קיווערד.
אַ ינסטאַנטאַניישאַן פון אַ קלאַס רעזולטאטן אין אַ כייפעץ (למשל). בלויז די באַשרייַבונג פון די כייפעץ איז דיפיינד ווען אַ קלאַס איז באשאפן. ווי אַ רעזולטאַט, קיין סטאָרידזש אָדער באַראַן איז אַלאַקייטיד.
א ביישפּיל פון אַ פּאַפּוגייַ קלאַס כייפעץ איז:
Obj איז אַ פּאַרראָט-קלאַס כייפעץ אין דעם בייַשפּיל.
זאל ס זאָגן מיר וויסן ספּעסיפיקס וועגן פּעראַץ. מיר וועלן איצט באַווייַזן ווי צו מאַכן די פּאַפּוגייַ קלאַס און זייַן אַבדזשעקץ.
ספּעציעלע מעטאָד (__יניט__)
א מעטאָד גערופן יניט דיפיינז די אַטריביוץ אַז יעדער פּאַרראָט כייפעץ מוזן האָבן (). ווען אַ נייַע פּאַרראָט כייפעץ איז געשאפן, די פֿונקציע __init__ קריייץ די ערשט שטאַט פון די כייפעץ דורך אַסיינינג די וואַלועס וואָס מיר צושטעלן אין די פּראָפּערטיעס פון די כייפעץ.
אַזוי, יעדער נייַ בייַשפּיל פון די קלאַס איז יניטיאַלייזד דורך ניצן __init__(). כאָטש __יניט__() קענען אָננעמען קיין נומער פון פּאַראַמעטערס, זיך איז שטענדיק דער ערשטער פּאַראַמעטער.
א רעפֿערענץ צו די אַקטיוו קלאַס בייַשפּיל איז אַרייַנגערעכנט אין די זיך-אַרגומענט. דער זעלבסט פּאַראַמעטער, וואָס פֿאַרבינדט זיך צו די אַדרעס פון דעם קראַנט כייפעץ פון אַ קלאַס און גיט אונדז אַקסעס צו די דאַטן פון די (די כייפעץ) וועריאַבאַלז, סיגנאַפייז אַז.
בייַשפּיל קסנומקס
מיר האָבן געגרינדעט אַ קלאַס גערופן Parrot אין די אויבן קאָד. ווייַטער, פּראָפּערטיעס זענען דיפיינד. די קעראַקטעריסטיקס פון אַ זאַך זענען זייַן פּראָפּערטיעס. די קלאַס __init__ פֿונקציע איז ווו די קעראַקטעריסטיקס זענען ספּעסיפיעד.
ווען אַ כייפעץ איז געשאפן, די יניטיאַליזער אופֿן איז דער איינער וואָס איז גערופן טכילעס. דערנאָך, ינסטאַנסיז פון די פּאַרראָט קלאַס זענען באשאפן. Blaze און Wonda אין דעם בייַשפּיל זענען באַווייַזן (וואַלועס) צו אונדזער נייַע אַבדזשעקץ. __class .species אַלאַוז אונדז צו אַקסעס די קלאַס אַטריביוט.
יעדער בייַשפּיל פון אַ קלאַס האט די זעלבע קעראַקטעריסטיקס. די ביישפּיל קעראַקטעריסטיקס קען אויך זיין אַקסעסט מיט blaze.name און blaze.age. אַלע ינסטאַנסיז פון אַ קלאַס האָבן יינציק בייַשפּיל אַטריביוץ, כאָטש.
בייַשפּיל קסנומקס
מעטהאָדס
פאַנגקשאַנז דיפיינד אין אַ קלאַס ס גוף זענען גערופן מעטהאָדס. זיי זענען אָנגעשטעלט צו ספּעציפיצירן ווי אַ נומער וועט זיין ביכייווד.
צוויי מעטהאָדס, סינג () און טאַנצן, זענען דיפיינד אין די אַפאָרמענשאַנד אַפּלאַקיישאַן (). ווייַל זיי זענען ינוואָוקט אויף אַ בייַשפּיל כייפעץ, אַזאַ ווי פלאַם, זיי זענען ריפערד צו ווי בייַשפּיל מעטהאָדס.
יסודות פון די OOPS באַגריף
די פיר האַרץ געדאנקען פון כייפעץ-אָריענטיד פּראָגראַממינג זענען:
- יערושע
- ענקאַפּסולאַטיאָן
- פּאָלימאָרפיסם
- אַבסטראַקציע
יערושע
מענטשן אָפט זאָגן נייַע געבוירן אַז זיי האָבן פּנים קעראַקטעריסטיקס וואָס ריזעמבאַל די פון זייער עלטערן אָדער אַז זיי האָבן ינכעראַטיד באַזונדער טרייץ פון זייער עלטערן.
עס איז מעגלעך אַז איר האָט אויך באמערקט אַז איר טיילן עטלעכע קעראַקטעריסטיקס מיט דיין עלטערן. די פאַקטיש-וועלט סיטואַציע איז פערלי ענלעך צו ירושה.
אָבער, אין דעם פאַל, די קעראַקטעריסטיקס פון "פאָטער קלאסן" זענען דורכגעגאנגען אַראָפּ צו די "קינד קלאסן." די אַספּעקץ זענען ריפערד צו ווי "פּראָפּערטיעס" און "מיטלען" אין דעם קאָנטעקסט.
א קלאַס קענען באַקומען זיין מעטהאָדס און אַטריביוץ פון אן אנדער קלאַס דורך ניצן די טעכניק באקאנט ווי ירושה. ירושה איז דער פּראָצעס פון אַ קינד קלאַס באקומען די פּראָפּערטיעס פון אַ פאָטער קלאַס.
בייַשפּיל:
דער פאָטער קלאַס מענטש איז ינכעראַטיד דורך די קינד קלאַס בוי אין דעם בייַשפּיל אויבן. ווייַל בוי איז ינכעראַטיד פון מענטש, מיר קענען צוטריט אַלע פון זייַן מעטהאָדס און אַטריביוץ ווען מיר מאַכן אַ בייַשפּיל פון די בוי קלאַס.
אין די יינגל קלאַס, אַ מעטאָד גערופן schoolName איז אויך דיפיינד. דער פאָטער קלאַס אָביעקט איז ניט ביכולת צו אַקסעס דעם אופֿן schoolName. די שולע נאָמען אופֿן קענען, אָבער, זיין גערופֿן דורך קריייטינג אַ קינד קלאַס כייפעץ (בוי).
ענקאַפּסולאַטיאָן
געבן יעדער וועריאַבאַל אין די פּראָגראַם גלאבאלע אַקסעס איז נישט אַ קלוג מאַך ווען ארבעטן מיט קלאסן און האַנדלינג שפּירעוודיק דאַטן.
אָן געבן דעם פּראָגראַם גאַנץ אַקסעס צו קיין פון די וועריאַבאַלז, ענקאַפּסולאַטיאָן גיט אַ מעקאַניזאַם פֿאַר אונדז צו באַקומען די נייטיק וועריאַבאַלז.
מעטהאָדס וואָס זענען דיפיינד בפירוש פֿאַר דעם צוועק קענען זיין געוויינט צו דערהייַנטיקן, רעדאַגירן אָדער ויסמעקן דאַטן פון וועריאַבאַלז. דעם אופֿן פון פּראָגראַממינג האט די אַדוואַנטידזשיז פון ענכאַנסט זיכערהייט און קאָנטראָל איבער די דאַטן אַרייַנשרייַב.
זען ווי געשווינד וועריאַבאַלז קענען זיין צוטריטלעך אין די דעמאַנסטריישאַן אונטן:
פּאָלימאָרפיסם
זאל ס זאָגן איר נוצן דיין טעלעפאָן צו בלעטער די ינסטאַגראַם פידז. ווען איר באַקומען די אָנטרייַבן צו הערן צו עטלעכע מוזיק, איר אַקסעסט Spotify און אנגעהויבן פּלייינג דיין באַליבסטע ליד.
נאָך אַ צייט, איר האָט באַקומען אַ רוף, אַזוי איר פּאָוזד וואָס איר האָט געטאן אין די הינטערגרונט צו ענטפֿערן. אײַער פרײַנד האָט געקליבן און געבעטן איר זאָלט זײ אַ טעקסט אָנזאָגן דעם טעלעפֿאָן נומער פֿון אַ געוויסן מענטש.
אַזוי איר געשיקט אים די טעלעפאָן נומער דורך SMS און געפירט אויף מיט דיין טאַסקס. האסט עפעס געכאפט? מיט בלויז איין מיטל - דיין רירעוודיק טעלעפאָן - איר קען ינדנברעך דורך פידז, הערן צו מוזיק, נעמען און מאַכן טעלעפאָן קאַללס און אָנזאָג.
דעריבער, פּאָלימאָרפיסם איז פאַרגלייַכלעך צו דעם. פּאָלי מיטל פילע, און מאָרף דינאָוץ פאַרשידענע פארמען. דעריבער, פּאָלימאָרפיסם ווי אַ גאַנץ רעפערס צו עפּעס מיט פאַרשידן פארמען.
אָדער "עפּעס" וואָס, דיפּענדינג אויף די ומשטאַנד, קענען ויסשטעלונג אַ פאַרשיידנקייַט פון ביכייוויערז. אין OOPS, פּאָלימאָרפיסם באשרייבט פאַנגקשאַנז מיט די זעלבע נעמען אָבער בוילעט ביכייוויערז. אַלטערנאַטיוועלי, אַ אַנדערש פֿונקציע כסימע מיט דער זעלביקער פֿונקציע נאָמען (פּאַראַמעטערס דורכגעגאנגען צו די פֿונקציע).
בייַשפּיל:
דאָ, מיר קענען נוצן די בייַטעוודיק כייַע צו יטערייט אַריבער די אַבדזשעקץ פון די זעבראַ און די קיניגל, ניצן זייער ריספּעקטיוו בייַשפּיל מעטהאָדס. ווי אַ רעזולטאַט, די נאַטור (קאָליר () & עסט ()) פון ביידע די זעבראַ און די קיניגל זענען רעפּריזענטיד דאָ דורך אַ איין בייַטעוודיק גערופן כייַע. עס איז דעריבער אַדכירינג צו די פּאָלימאָרפיסם כּללים.
אַבסטראַקציע
איר רובֿ מסתּמא נוצן אַ לאַפּטאַפּ, טעלעפאָן אָדער טאַבלעט צו לייענען דעם אינהאַלט. ווען איר לייענען עס, איר מיסטאָמע אויך נעמען הערות, אַנדערליינינג שליסל פּאַסידזשיז און טאָמער סטאָרינג עטלעכע אינפֿאָרמאַציע אין דיין פערזענלעכע טעקעס.
אַלע איר קענען זען ווען איר לייענען דעם איז אַ "פאַרשטעלן" מיט די דאַטן וואָס איז געוויזן צו איר. איר נאָר זען די שליסלען פון די קלאַוויאַטור ווען איר דרוקן, אַזוי איר טאָן ניט האָבן צו זאָרג וועגן ינערלעך סאַטאַלטיז ווי ווי פּושינג אַ שליסל קען פאַרשאַפן אַז וואָרט צו דערשייַנען אויף די פאַרשטעלן.
אַלטערנאַטיוועלי, ווי דרינגלעך אַ קנעפּל אויף דיין פאַרשטעלן קענען קאַטער אַ נייַ קוויטל.
דעריבער, אַלץ וואָס מיר קענען אָבסערווירן אין דעם סיטואַציע איז אַבסטראַקט. מיר קענען בלויז זען די אַוטקאַם עס איז קריייטינג און נישט די ינטראַקאַסיז (וואָס פאקטיש ענין צו אונדז).
ענלעך צו דעם, אַבסטראַקציע בלויז ריווילז די פאַנגקשאַנז אַז אַלץ פארמאגט בשעת באַהאַלטן קיין ימפּלאַמאַנץ אָדער ינערלעך דעטאַילס.
די הויפּט אָביעקטיוו פון אַבסטראַקטיאָן איז צו באַהאַלטן הינטערגרונט אינפֿאָרמאַציע און קיין ימפּלאַמענטיישאַן פון פרעמד דאַטן אַזוי אַז מענטשן נאָר זען וואָס זיי דאַרפֿן צו זען. עס אַידז אין אָנפירונג די קאַמפּלעקסיטי פון די קאָד.
בייַשפּיל:
א פאָרמיטל-פֿאַרבונדענע אַבסטראַקט קלאַס איז פאָרשטעלן דאָ. ווייַל עס ירשענען פון די אַבסטראַקט קלאַס ABC, עס איז אַבסטראַקט. ווייַל אַבסטראַקט מעטהאָדס זענען נישט דיפיינד אָדער בלייבן ליידיק, די קלאַס וועהיקלע האט אַ אַבסטראַקט אופֿן גערופן קיין פון ווילז וואָס פעלן אַ דעפֿיניציע.
זיי ריכטנ זיך די קלאסן וואָס ירשענען די אַבסטראַקט קלאסן צו געבן די ימפּלאַמענטיישאַן פון דעם אופֿן.
בענעפיץ פון OOPS קאַנסעפּס
- דורך ענקאַפּסאַלייטינג, הויך זיכערהייט און דאַטן פּריוואַטקייט זענען אַטשיווד.
- בייגיקייט אין פילע פּאָלימאָרפיק ווערסיעס פון דער זעלביקער קלאַס.
- די הויך מדרגה פון קאָד קאַמפּלעקסיטי איז רידוסט דורך אַבסטראַקציע.
- אַנשטאָט סיפטינג דורך הונדערטער פון שורות פון קאָד צו געפֿינען אַ איין פּראָבלעם, די מאַדזשאַלעראַטי פון פּראָגראַממינג מאכט דיבאַגינג פּשוט.
- קאָד רייוס איז געפֿירט דורך אַ קינד קלאַס ס ירושה פון פאָטער קלאַס פּראָפּערטיעס.
- עפעקטיוו פּראָבלעם סאַלווינג איז מעגלעך ווייַל מיר מאַכן קלאסן וואָס טאָן די נייטיק אַקשאַנז פֿאַר יעדער מיני פּראָבלעם. די פאלגענדע פּראָבלעם קענען זיין סאַלווד אפילו מער געשווינד זינט מיר קענען רייוס די קלאסן.
סאָף
אין מסקנא, מיר געלערנט וועגן OOPS יידיאַז אין Python, די האָטטעסט פּראָגראַממינג פּאַראַדיגם רעכט איצט.
נאָך לייענען דעם, איר מוזן האָבן איינגעזען אַז די OOPS פּאַראַדיגם איז גאָר דילז מיט די געדאַנק פון קלאסן און אַבדזשעקץ. און OOPS קאַנסעפּס אַזאַ ווי ענקאַפּסולאַטיאָן, פּאָלימאָרפיסם, ירושה און אַבסטראַקציע.
לאָזן אַ ענטפֿערן