» «

מחלקות

מחלקה (תכנות)
מהי מחלקה בתכנות מונחה עצמים?



אבני בניין עיקריות ומשמעותיות במיוחד לכתיבת קוד מובנה בתכנות מונחה עצמים, הן ה-Classes, בעברית "מחלקות". המחלקות מאפשרות לכתוב תכניות מודולריות, יעילות וחסכוניות מאוד בקוד.

המחלקה (class) היא סוג של מנגנון להגדרה של טיפוסים בתכנית. יש בה אוסף של נתונים ולצידם מבחר פעולות שאפשר לעשות עליהם. יש בה שני מרכיבים עיקריים. הראשון כולל את השדות, סוג של משתנים אוגרי נתונים. השני כולל מתודות או שיטות, שהן פונקציות הפועלות על המשתנים הללו.

המחלקה משפרת משמעותית את המבנה של כל תכנית מחשב. במקום לכתוב המון קוד שחוזר על עצמו, מסורבל, ארוך, בעל סיכויים גדולים לטעויות ובחלקו הגדול מיותר ולא יעיל, מהווה המחלקה שיטת תכנות שיוצרת קוד יעיל ופשוט.


#בואו נבחן את העולם לרגע
בואו נביט רגע על ציפורים. לכל הציפורים יש מאפיינים משותפים, כמו מקור, זנב וכנפיים. אבל האם לכולן יש למשל את אותן כנפיים? - התשובה היא כמובן שלא. המאפיינים אם כך, הם בעצם סוג של משתנים (Variables), שיכולים להשתנות מסוג לסוג ואפילו בין ציפורים מסוג זהה. אם נביט על העורב למשל, הרי שהוא אובייקט (Object), כלומר פרט במחלקה הזו של הציפורים. מכאן שיש לו נוצות.

הנוצות בדוגמה של הציפורים הן מאפיינים (properties). לכל החברים במחלקה יש מאפיינים משותפים, שנוצות הוא אחד מהם.

אבל האם כל המאפיינים הללו זהים אצל כולם? - התשובה היא לא. הגדרת המחלקה לא אומרת למשל את הצבע של הנוצות של חבריה.

בתכנות מונחה עצמים הצבע הוא בעצם משתנה (Variable), שיכול לקבל ערכים שונים, כמו הערך (Value) שחור (Black) אצל האובייקט עורב או ורוד אצל אובייקט הפלמינגו.

זוכרים את המאפיינים? - בתכנות מונחה עצמים המשתנה הזה של צבע הנוצה נקרא "מאפיין" (Property). אז ה-Property, כלומר משתנה צבע הנוצה, מקבל אצל העורב ערך (Value) של... שחור.


#התבלבלתם? - עוד דוגמה...
בואו נחשוב על החיים, כשאנו מתארים את המכונית שקנינו. איננו נדרשים בכל פעם לתאר מהי מכונית, איך היא בנויה, כיצד היא נוסעת, עוצרת, ננעלת וכדומה - אנחנו פשוט מספרים שקנינו מכונית פורשה מהירה וחזקה במיוחד. זה מספיק כדי שהשומעים יבינו המון. את המשמעות הכללית של מהי מכונית הם הרי מכירים מזמן. הם יודעים המון על מכוניות. מחלקה חוסכת את ה"חפירה", כלומר את אותו מידע מיותר שניתן היה לפרט בכל פעם שמדברים על מכונית.


#אז מהי מחלקה?
כמו המושג "מכונית", המחלקה היא אבטיפוס של אובייקטים. מגדירים אותה פעם אחת ואז ניתן ליצור ממנה אינסוף אובייקטים.

כל מחלקה מכילה תכונות (attributes) או מאפיינים (properties) ושיטות או מתודות (methods).

המחלקה היא התבנית שממנה בנויים האובייקטים השונים. היחס שבין מחלקה לאובייקטים שלה הוא כמו היחס שבין שרטוט של בית לבתים שנבנים ממנו. השרטוט הוא לא הבית, אבל בית נבנה על פיו.


#אז איך זה יעבוד במחלקה "מכונית"...
יש בהגדרת המחלקה את התכונות, או הפרופרטיז של האובייקט (למשל הדגם, המידה, הצבע של המכונית), אבל בלי הערכים הספציפיים (כמו פג'ו, אקסטרה לארג', צבע כחול).

יש במחלקה גם את השיטות (Methods) של האובייקט, כמו נסיעה, בלימה וכו'.

בשפת תוכנה מונחית עצמים יש המון קלאסז מוכנים, אבל גם המתכנת יכול ליצור לעצמו עצמים חדשים משל עצמו. זה הכוח של התכנות מונחה האובייקטים.


#המחלקה כבלופרינט
מחלקה (Class) בשפת תכנות מונחית עצמים היא סוג של בלופרינט (Blueprint), משהו בין תכנית אב לאבטיפוס בעולם האמיתי.

בלופרינטס הם שרטוטים המשמשים כתכניות להקמה של מבנים. כך יכולה אותה תכנית לשמש לבנייה של בניינים שונים, בעלי מאפיינים משותפים שהוגדרו באותה ארכיטקטורה בסיסית., אך גם דברים ייחודיים של כל אחד לעצמו, שאין למקביליו, שנבנו מאותו בלופרינט.

כל בית שנבנה באמצעות התכנית הזו יכלול את החדרים, אך בבית אחד הקירות יכולים להיות צבועים בצהוב ובאחר הם לבנים. כלומר הם ייחודיים מצד אחד ומצד שני הם עדיין קשורים באמצעות התוכנית. הבתים הללו הם האובייקטים של המחלקה של "מבנים" או "בתים".


#אובייקט הוא יחידה של מחלקה
אם המחלקה בשפת תכנות היא תכנית שממנה ניתן ליצור אובייקטים, אז האובייקט הוא מקרה פרטי, או יחידה של מחלקה. אם הקלאס הוא רעיון, האובייקט הוא הממשות שלו, משהו מעין פיזיקלי שנוצר מקלאס.

המשותף לכל האובייקטים שנוצרו על בסיס מחלקה כלשהי הוא שלכולם אותן תכונות (Properties) וכולם יכולים לבצע פעולות זהות (Methods). לדוגמה, לכל המכוניות יש מנוע וצבע משלהן וכולן יוכלו לנסוע ולבלום.

הגדרת הקלאס מאפשרת לפרט את מאפייני האובייקט ולציין גם את השיטות והפעולות בהן יכול האובייקט להשתמש. המחלקה, כלומר הקלאס (Class), קובעת איך כל אובייקט נראה ואיך הוא מתנהג ואחרי כן ניתן לעשות עליו מניפולציות, באמצעות ערכים (Values) ספציפיים.


#תיאורטית...
הקלאס הוא מרכיב המאחסן משתנים ופונקציות. בקלאסז נשתמש לאחסן את הדאטה ואת הפונקציונליות שרלוונטית לדאטה הזו, כלומר המרכיבים הלוגיים שלה.

הקלאס הוא, אם כן, קטע תוכנה שמגדיר את כל המידע והפונקציות שעובדות עם המידע. מחלקה מכילה אוסף המאוגד במבנה לוגי משותף, של משתנים (פרופרטיז), מאפיינים ופונקציות (מתודות) הפועלים יחד.

כדי להבדיל ביניהם לבין משתנים ופונקציות רגילים, נוהגים לקרוא למשתנה בתוך מחלקה "תכונה" (Property) ולפונקציה בתוך מחלקה קוראים "שיטה" (Method).


#דוגמה אחרונה
אם מחלקה או class היא blueprint, תכנית-אב לאובייקט חדש, אז בואו נגדיר מחלקה של "מטוס נוסעים".

אובייקט שנוצר ממנו הוא ההתממשות הספציפית של רעיון "מטוס הנוסעים". מטוס בואינג דרימליינר, בצבע לבן, עם מנוע סילון מדגם 234 הוא אובייקט, עם מאפיינים וערכים משלו.


הסבר של המאפיינים וכיצד הם משתייכים למחלקות:

https://youtu.be/tE2e9SXLyQs?end=2m14s


סרטון שמסביר את הגדרת המחלקות והשימוש בהן בשפת Java:

https://youtu.be/L5XI50A1az4


למדו על המחלקה בתכנות בשפת פייתון:

https://youtu.be/ZZCnfRmxq6s


והסבר על הגדרת מחלקות ב-Javascript, ביחד עם עוד דברים:

https://youtu.be/Q0IFtEB1RH4


אֵאוּרִיקַה - האנציקלופדיה של הסקרנות!

העולם הוא צבעוני ומופלא, אאוריקה כאן בשביל שתגלו אותו...

אלפי נושאים, תמונות וסרטונים, מפתיעים, מסקרנים וממוקדים.

ניתן לנווט בין הפריטים במגע, בעכבר, בגלגלת, או במקשי המקלדת

בואו לגלות, לחקור, ולקבל השראה!

אֵאוּרִיקַה - האנציקלופדיה של הסקרנות!

שלום,
נראה שכבר הכרתם את אאוריקה. בטח כבר גיליתם כאן דברים מדהימים, אולי כבר שאלתם שאלות וקיבלתם תשובות טובות.
נשמח לראות משהו מכם בספר האורחים שלנו: איזו מילה טובה, חוות דעת, עצה חכמה לשיפור או כל מה שיש לכם לספר לנו על אאוריקה, כפי שאתם חווים אותה.