בקרב המפתחים, תכנות מונחה עצמים משך קהל עוקבים נכבד. שפת המחשב הפופולרית Python דבקה גם בפרדיגמה מונחה עצמים.
הוא עוסק בהגדרת אובייקטים ומחלקות ב- Python, המהווה את הבסיס לעקרונות OOPs. במדריך זה על "תכנות מונחה עצמים ב-Python", תלמד כיצד להכריז על מחלקות Python, ליצור מהם אובייקטים ולהשתמש בארבע טכניקות ה-OPS.
אז, דבר ראשון.
מהי תכנות מונחה עצמים?
המוקד העיקרי של תכנות מונחה עצמים (OOP) הוא יצירת "אובייקטים". אוסף של משתנים ופונקציות מחוברים זה לזה מרכיב אובייקט.
משתנים אלה מכונים לעתים קרובות כתכונות האובייקט, והתנהגויותיו מכונות לעתים קרובות כפונקציות שלו. פריטים אלו מספקים לאפליקציה מבנה יעיל ומובן יותר. רכב הוא דוגמה לפריט.
אם הרכב היה פריט, התכונות שלו היו כוללות דברים כמו צבע, דגם, מחיר, מותג וכו'. בנוסף, הוא היה מאיץ, מאט ומחליף הילוך.
המחשה נוספת: אם נחשוב על כלב כפריט, אז חלק מהמאפיינים שלו עשויים להיות צבע, גזע, שם, משקל וכו'. והוא היה מסתובב, נובח, משחק וכו'.
מכיוון שהוא משלב בתכנות מושגים מהעולם האמיתי כמו אובייקטים, הסתרה, ירושה וכו', תכנות מונחה עצמים ידוע. מכיוון שהוא כל כך דומה לנסיבות בעולם האמיתי, ההדמיה הופכת לפשוטה יותר.
מושגי תכנות מונחה עצמים
כיתות ואובייקטים ב- Python
כמו כל שאר השפות מונחה עצמים, Python מאפשרת לך לעצב מחלקות ליצירת אובייקטים. סוגי הנתונים הפופולריים ביותר ב-Python, כולל מחרוזות, רשימות, מילונים ואובייקטים אחרים, הם מחלקות מובנות.
מחלקה היא קבוצה של שיטות מקושרות ומשתני מופע המגדירים סוג מסוים של אובייקט. מחלקה עשויה להיראות כמודל או תבנית עבור אובייקט. המשתנים המרכיבים מחלקה ידועים בתור תכונות.
אובייקט הוא חבר במחלקה שיש לה קבוצה מוגדרת של תכונות. בשל כך, ניתן ליצור כל מספר של אובייקטים באמצעות אותה מחלקה.
מחלקות Python מוגדרות באמצעות המילה class, ולאחר מכן מופיעים שם המחלקה ונקודתיים. המחשה של כיתת תוכים עשויה להיות:
כאן, אנו מכריזים על הכיתה הריקה Parrot באמצעות מילת המפתח של הכיתה. אנו יוצרים מופעים משיעורים. מופע הוא אובייקט מסוים שנוצר ממחלקה מסוימת. 'pass' משמש לעתים קרובות כסטנד-אין לקוד שעל יישומו אנו עשויים לוותר כרגע. אנו יכולים להפעיל את קוד Python מבלי להעלות שגיאה על ידי שימוש במילת המפתח "pass".
מופע של מחלקה מביא לאובייקט (מופע). רק תיאור האובייקט מוגדר כאשר מחלקה נוצרת. כתוצאה מכך, לא מוקצים אחסון או זיכרון RAM.
דוגמה לאובייקט מחלקה תוכי היא:
Obj הוא אובייקט מסוג Parrot במקרה זה.
נניח שאנו יודעים פרטים על תוכים. כעת נדגים כיצד ליצור את כיתת התוכים והאובייקטים שלה.
שיטה מיוחדת (__init__)
שיטה בשם init מגדירה את התכונות שכל אובייקט Parrot חייב להיות (). כאשר נוצר אובייקט Parrot חדש, הפונקציה __init__ יוצרת את המצב ההתחלתי של האובייקט על ידי הקצאת הערכים שאנו מספקים בתוך מאפייני האובייקט.
לכן, כל מופע חדש של המחלקה מאותחל באמצעות __init__(). למרות ש-__init__() יכול לקבל כל מספר של פרמטרים, self הוא תמיד הפרמטר הראשון.
הפניה למופע המחלקה הפעיל כלולה בטיעון העצמי. פרמטר העצמי, המקשר לכתובת של האובייקט הנוכחי של מחלקה ונותן לנו גישה לנתוני המשתנים שלו (של האובייקט), מסמל זאת.
דוגמה 1
הקמנו כיתה בשם Parrot בקוד שלמעלה. לאחר מכן, מאפיינים מוגדרים. המאפיינים של דבר הם תכונותיו. הפונקציה __init__ של המחלקה היא המקום שבו מצוינים מאפיינים אלה.
כאשר אובייקט נוצר, שיטת האתחול היא זו שנקראת בתחילה. לאחר מכן, נוצרים מופעים של מחלקת Parrot. Blaze ו-Wonda במקרה זה הם הפניות (ערכים) לאובייקטים החדשים שלנו. __class .species מאפשר לנו לגשת לתכונה class.
לכל מופע של מחלקה יש את אותם מאפיינים. ניתן לגשת למאפייני המופע גם באמצעות blaze.name ו-blaze.age. עם זאת, לכל המופעים של מחלקה יש תכונות מופע ייחודיות.
דוגמה 2
שיטות
פונקציות המוגדרות בתוך גוף המחלקה נקראות מתודות. הם מועסקים כדי לציין כיצד פריט יתנהג.
שתי שיטות, sing() וריקוד, מוגדרות ביישום הנ"ל (). מכיוון שהם מופעלים על אובייקט מופע, כגון flame, אלה מכונים שיטות מופע.
יסודות המושג OOPS
ארבעת רעיונות הליבה של תכנות מונחה עצמים הם:
- יְרוּשָׁה
- כימוס
- פולימורפיזם
- הפשטה
יְרוּשָׁה
לעתים קרובות אנשים אומרים לילודים שיש להם מאפייני פנים הדומים לאלה של הוריהם או שהם ירשו תכונות מסוימות מהוריהם.
ייתכן שגם הבחנת שאתה חולק כמה מאפיינים עם ההורים שלך. המצב בעולם האמיתי דומה למדי גם בירושה.
עם זאת, במקרה זה, המאפיינים של "כיתות ההורים" מועברים ל"כיתות הילד". היבטים אלו מכונים בהקשר זה "מאפיינים" ו"שיטות".
מחלקה יכולה לגזור את השיטות והתכונות שלה ממחלקה אחרת על ידי שימוש בטכניקה המכונה ירושה. ירושה היא התהליך של כיתת ילד שמקבלת את המאפיינים של כיתת אב.
דוגמה:
כיתת האב Human עוברת בירושה על ידי כיתת הילד Boy בדוגמה למעלה. מכיוון ש-Boy יורש מ-Human, אנו יכולים לגשת לכל השיטות והתכונות שלו כאשר אנו יוצרים מופע של המחלקה Boy.
בכיתת Boy, הוגדרה גם שיטה בשם schoolName. אובייקט כיתה האב אינו יכול לגשת למתודה schoolName. עם זאת, ניתן לקרוא לשיטת schoolName על ידי יצירת אובייקט כיתת ילד (Boy).
כימוס
מתן גישה גלובלית לכל משתנה בתוכנית אינו צעד נבון בעבודה עם מחלקות וטיפול בנתונים רגישים.
מבלי לתת לתוכנית גישה מלאה לאף אחד מהמשתנים הללו, אנקפסולציה מספקת לנו מנגנון להשיג את המשתנים הדרושים.
ניתן להשתמש בשיטות המוגדרות במפורש למטרה לעדכן, לערוך או למחוק נתונים ממשתנים. לשיטה זו של תכנות יש את היתרונות של אבטחה משופרת ושליטה על קלט הנתונים.
ראה באיזו מהירות משתנים יכולים להיות נגישים בהדגמה שלהלן:
פולימורפיזם
נניח שאתה משתמש בטלפון שלך כדי לגלוש ב הזנות באינסטגרם. כשהתחשק לך להאזין למוזיקה, ניגשת ל-Spotify והתחלת לנגן את השיר האהוב עליך.
לאחר זמן מה קיבלת שיחה, אז השהית את כל מה שעשית ברקע כדי לענות עליה. חבר שלך התקשר וביקש שתשלח לו הודעה למספר טלפון של אדם מסוים.
אז שלחת לו את מספר הטלפון באמצעות SMS והמשכת את המשימות שלך. קלטתם משהו? עם מכשיר אחד בלבד - הטלפון הנייד שלך - תוכל לגלוש בעדכונים, להאזין למוזיקה, לקבל ולבצע שיחות טלפון ולהעביר הודעות.
לכן, פולימורפיזם דומה לזה. פולי פירושו רבים, ומורף מציין צורות שונות. לכן, פולימורפיזם בכללותו מתייחס למשהו בעל צורות שונות.
או "משהו" אשר, בהתאם לנסיבות, יכול להפגין מגוון התנהגויות. ב-OOPS, פולימורפיזם מתאר פונקציות עם אותם שמות אך התנהגויות שונות. לחלופין, חתימת פונקציה אחרת עם אותו שם פונקציה (פרמטרים שהועברו לפונקציה).
דוגמה:
כאן, אנו יכולים להשתמש בחיה המשתנה כדי לחזור על האובייקטים של הזברה והארנב, תוך שימוש בשיטות המופע שלהם. כתוצאה מכך, ההתנהגות (צבע() ואוכל()) הן של הזברה והן של הארנב מיוצגות כאן על ידי משתנה יחיד הנקרא חיה. לכן הוא מקפיד על כללי הפולימורפיזם.
הפשטה
סביר להניח שאתה משתמש במחשב נייד, בטלפון או בטאבלט כדי לקרוא את התוכן הזה. בזמן הקריאה, אתה כנראה גם רושם הערות, מדגיש קטעים מרכזיים ואולי מאחסן מידע מסוים בקבצים האישיים שלך.
כל מה שאתה יכול לראות כשאתה קורא את זה הוא "מסך" עם הנתונים שמוצגים לך. אתה רק רואה את מקשי המקלדת תוך כדי הקלדה, כך שאתה לא צריך לדאוג לגבי דקויות פנימיות כמו איך לחיצה על מקש יכולה לגרום למילה זו להופיע על המסך.
לחלופין, כיצד לחיצה על כפתור על המסך שלך יכולה להפעיל כרטיסייה חדשה.
לכן, כל מה שאנו יכולים לראות במצב זה הוא מופשט. אנחנו יכולים לראות רק את התוצאה שהוא יוצר ולא את המורכבויות הפנימיות (שבעצם חשובות לנו).
בדומה לכך, הפשטה חושפת רק את הפונקציות שיש לכל דבר תוך הסתרת יישום או פרטים פנימיים.
המטרה העיקרית של הפשטה היא להסתיר מידע רקע וכל יישום נתונים זר, כך שאנשים יראו רק את מה שהם צריכים לראות. זה מסייע בניהול מורכבות הקוד.
דוגמה:
מחלקה מופשטת הקשורה לרכב קיימת כאן. מכיוון שהוא יורש מהמחלקה המופשטת ABC, הוא מופשט. מכיוון ששיטות מופשטות אינן מוגדרות או נשארות ריקות, לכיתה רכב יש שיטה מופשטת הנקראת no of wheels שחסרה לה הגדרה.
הם צופים את המחלקות שיורשות את המחלקות המופשטות כדי לתת יישום של השיטה.
היתרונות של מושגי OOPS
- על ידי עטיפה, אבטחה גבוהה ופרטיות נתונים מושגות.
- גמישות בקיום גרסאות פולימורפיות רבות מאותה מחלקה.
- הרמה הגבוהה של מורכבות הקוד הופחתה על ידי הפשטה.
- במקום לנפות בין מאות שורות קוד כדי לאתר בעיה אחת, המודולריות של התכנות הופכת את ניפוי הבאגים לפשוט.
- שימוש חוזר בקוד נגרם על ידי ירושה של כיתת צאצא של מאפייני כיתת אב.
- פתרון בעיות יעיל אפשרי מכיוון שאנו יוצרים כיתות שעושות את הפעולות הדרושות עבור כל מיני בעיה. ניתן לפתור את הבעיה הבאה במהירות רבה עוד יותר מכיוון שאנו יכולים לעשות שימוש חוזר בשיעורים אלה.
סיכום
לסיכום, למדנו על רעיונות OOPS ב-Python, פרדיגמת התכנות החמה ביותר כרגע.
לאחר שקראתם את זה, ודאי הבנתם שפרדיגמת OOPS עוסקת כולה ברעיון של מחלקות ואובייקטים. ומושגי OOPS כמו אנקפסולציה, פולימורפיזם, ירושה והפשטה.
השאירו תגובה