→ חזרה לעמוד הקודם
// סיכום וחומר לימוד

סיכום מחלקות ועצמים

יסודות · 899371תכנות מונחה עצמים

מחלקות ועצמים

מהי מחלקה (Class) ב-C#?

מחלקה היא תבנית או שבלונה ליצירת עצמים (Objects). היא מתארת:

● תכונות (Fields / Properties) - מה האובייקט "יודע" לשמור.

● פעולות (Methods) - מה האובייקט "יודע" לעשות.

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

● תכונות: צבע, מהירות מרבית, יצרן.

● פעולות: נסיעה, עצירה.

מהו עצם (Object) ב-C#?

עצם הוא מופע ממשי של מחלקה.

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

ביצירת עצם-אובייקט נוצר "משתנה" מהטיפוס שהגדרנו.

דימוי פשוט:

● מחלקה היא כמו תוכנית בנייה של בית.

● עצם הוא בית אמיתי שבנו לפי התוכנית.

תכלס בקוד:

הגדרת מחלקה, בעזרת המילה השמורה class, והרשאת הגישה public ציבורית:

שם המחלקה public class

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

הגדרת תכונה:

; שם התכונה טיפוס private

*שם מחלקה יתחיל באות גדולה.

פעולה בונה (Constructor)

פעולה בונה היא פעולה מיוחדת שנקראת אוטומטית כאשר יוצרים מופע חדש של מחלקה (new

.(ClassName(...)

מטרתה:

● לאתחל ערכים של שדות

● להכין את האובייקט לשימוש תקין

תכונות עיקריות של פעולה בונה:

● השם שלה חייב להיות כמו שם המחלקה בדיוק.

● אין לה טיפוס החזרה (לא void ולא שום דבר אחר).

● אפשר להגדיר כמה פעולות בונות (כל אחת עם חתימה שונה = Overloading).

דוגמא:

קטע קוד, טבלה או תרשים מתוך המקור

דוגמאות שימוש בקוד:

1. יצירת עצם מטיפוס Game עם הפעולה הבונה ברירת מחדל:

Game defaultGame = new Game();

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

2. יצירת משחק עם ערכים מותאמים:

Game customGame = new Game("Soccer", 22);

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

this

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

למה משתמשים ב-this?

בעיקר כדי להבדיל בין:

● שם של פרמטר בפעולה (למשל קלט שקיבלת)

● לבין שדה (field) של המחלקה.

לדוגמא:

קטע קוד, טבלה או תרשים מתוך המקור

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

פעולות Get ו-Set

כאשר יש תכונות private במחלקה (כלומר - לא נגישות מבחוץ), אנחנו יוצרים פעולות גישה (Getters) ופעולות שינוי (Setters) כדי לאפשר עבודה מבוקרת עם השדות האלה.

לדוגמא:

קטע קוד, טבלה או תרשים מתוך המקור

מתי משתמשים ב-Get ו-Set?

● אם רוצים לקבל ערך - קוראים ל-(GetPages().

● אם רוצים לשנות ערך - קוראים ל-(SetPages(5), לדוגמה.

למה לא לאפשר גישה ישירה?

● כדי לשמור על בקרת גישה: למשל, בעתיד אפשר להוסיף תנאים בפעולות (לדוגמה: לא לאפשר מספר עמודים שלילי).

● כדי לקיים את עקרון הכימוס (Encapsulation) – מחביאים את פרטי המימוש מהמשתמש החיצוני.

ToString()

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

קטע קוד, טבלה או תרשים מתוך המקור

הבדלים בין פעולות סטטיות לפעולות פנימיות (לא סטטיות)

פעולות פנימיות (לא סטטיות):

● פעולה רגילה (כמו GetPages, SetPages).

● קשורה לאובייקט ספציפי - חייבים ליצור מופע (new) של המחלקה כדי להשתמש בה.

● יש לה גישה לתכונות של האובייקט.

לדוגמא:

קטע קוד, טבלה או תרשים מתוך המקור

הפעולה GetPages היא פעולה פנימית, וניתן לראות כי היא מופעלת על אובייקט-עצם.

פעולות סטטיות (static):

● פעולה השייכת למחלקה עצמה ולא לאובייקט מסוים.

● לא צריכה אובייקט כדי לקרוא לה.

● לא יכולה לגשת לתכונות רגילות (כי אין לה אובייקט ספציפי).

עכשיו מתרגלים

תרגול בנושא תכנות מונחה עצמים

  1. תרגולתרגול בסיסי מחלקות ועצמים
  2. תרגולתרגול מחלקות ופעולות פנימיות
  3. תרגולתמע תרגול בסיסי
  4. תרגולתרגול תכנות מונחה עצמים מסכם לפרק א
  5. משחק לתרגולמשחק זיכרון-פעולות בונות
  6. משחק לתרגולתרגול הרשאת גישה ופעולות גישה
  7. משחק לתרגולתרגול מסכם-מבוא לתכנות מונחה עצמים
הורדת הקובץ המקוריPDF · סיכום מחלקות ועצמים