מחלקות הן מרכיב חיוני בשפה מוכוונת עצמים (OOP), וב-#C בפרט. מחלקות הן הבסיס ב-#C – כל תוכנית בנויה ממחלקות, מפונקציות חברות וממשתנים חברים של אותה מחלקה. דוגמא: ניתן ליצור מחלקה המכילה מידע על משוואה מסויימת, ושגרות חברות במחלקה המחשבות נתונים מסויימים ואפילו פותרות את המשוואה.

הקדמה
מחלקות הן מרכיב חיוני בשפה מוכוונת עצמים (OOP), וב-#C בפרט.
מחלקות הן הבסיס ב-#C – כל תוכנית בנויה ממחלקות, מפונקציות חברות וממשתנים חברים של אותה מחלקה.
דוגמא: ניתן ליצור מחלקה המכילה מידע על משוואה מסויימת, ושגרות חברות במחלקה המחשבות נתונים מסויימים ואפילו פותרות את המשוואה.
רקע - מחלקות
הגדרת מחלקה
מגדירים מחלקות באמצעות מילת המפתח class. המבנה הבסיסי של מחקלות:
Class identifier
{
Body;
}
Identifier הוא שם המחלקה, ו-Body מסמל את הקוד שהוא גוף המחלקה.
שם המחלקה הוא שם שאתה נותן למחלקה, בדומה למשתנים.
סביבת .NET מכילה מחלקות רבות, חלקן כבר מוכרות לך. לדוגמא: המחלקה Console, שבה השתמשת לכתיבת התוכנית הראשונה שלך, מכילה שגרות חברות כמו WriteLine וכו'.
Console הוא שם המחלקה (identifier).
הכרזה על מחלקה
מחלקה מוגדרת משתמשת ליצירת אובייקט.
תפקידו של אובייקט הוא לבצע את שגרות המחלקה, ולאחסן את הנתונים הקיימים בה.
הכרזה על אובייקט היא בעצם יצירת מופע. אובייקט הוא מופע של מחלקה.
הכרזת אובייקט תתבצע בצורה הבאה:
Class_name object_identifier = new class_name();
class_name הוא שם המחלקה עליה אנו רוצים להכריז, ו-object_identifier הוא שם האובייקט.
לדוגמא, אם קיימת המחלקה Area, יצירת האובייקט תתבצע כך:
Area
getArea = newArea();
getArea הוא האובייקט, לכן הוא יכול להכיל משתנים חברים ושגרות חברות של המחלקה.
מילת המפתח newמשמשת ליצירת פריט חדש. במקרה הזה, new גורמת ליצירת מופע חדש.
משתנים חברים
מחלקה יכולה להכיל משתנים חברים, אליהם אפשר לגשת ולעדכן אותם.
המחלקה Area מכילה שני משתנים חברים:
class Area
{
int h;
int b;
}
כעת הוספנו שני משתנים חברים למחלקה, איתם אפשר לבצע כל מיני פעולות בתוך המחלקה.
במידה ותרצה לגשת אל המשתנים מחוץ למחלקה, עליך להוסיף את מזהה הגישה הציבורית – public. כשתוסיף את מזהה הגישה הציבורית לפני המשתנה, תוכל לגשת אל המשתנים החברים גם ממחלקות אחרות, או מכל מקום מחוץ לבלוק המחלקה.
class triangle
{
public int h;
public int b;
}
אמנם במחלקה זאת המשתנים הם שני מספרים שלמים, אך ניתן להגדיר במחלקה כל משתנה מכל סוג שהוא.
כדי לגשת למשתנים חברים, יש לציין את שם האובייקט ושם המשתנה, כאשר הם מופרדים באופרטור הגישה – נקודה. דוגמא:
getArea.h; ו- getArea.b;
דוגמאות קוד
בדוגמא זאת תלמד כיצד לנצל את המשתנים החברים במחלקה. הפעם: חישוב שטח של משולש.
using System;namespace ConsoleApplication1{class Area{public int h;public int b;}class Program{static void Main(string[] args){Area getArea = new Area();getArea.h = 5;getArea.b = 10;int theArea = (getArea.h * getArea.b) / 2;Console.WriteLine("The area of the triangle: {0}", theArea);}}}
מה שעשינו פה זה לבנות את המחלקה Area ולהוסיף לה שני משתנים: h, b.
לאחר מכן יצרנו מופע של המחלקה, והכנסנו ערכים לשני המשתנים: h=5, b=10. לאחר מכן יצרנו משתנה שמחשב את שטח המשולש:
בסיס * גובה \ 2. ואח"כ הצגנו את התוצאה (שהיא בעצם המשתנה theArea) על המסך.
המשך
עכשיו אתה יודע להשתמש במחלקות ובמשתנים חברים. מה אם אגיד לך שיש דרך הרבה יותר פשוטה ויעילה לבצע פעולות בתוך מחלקה? ישנה דרך פשוטה עד כדי כך, שכל מה שתצטרך הוא לכתוב שורת קוד שתציג לך את שטח המשולש על המסך.
שגרות (פונקציות) חברות:
בתוך מחלקה ניתן לשים גם שגרות חברות, שמטרתן היא לבצע פעולה מסויימת, ולהחזיר את הערך הסופי.
כבר השתמשת המספר שיטות: WriteLine, Write ואפילו Main.
חשוב להבין את דרך הפעולה של שגרה. הנה המבנה הבסיסי של שגרה:
Method header
{
Method body;
}
Method header – כותרת השיטה מגדירה מספר דברים ביחס לשיטה:
- רמת הגישה לשיטה
- סוג הנתונים המוחזר מהשיטה
- ערכים הנשלחים לשיטה (פרמטרים)
- שם השיטה
נוכל להגדיר שיטה המחשבת שטח משולש בדרך הבאה:
public double tArea()
סוג הנתונים המוחזר מהשיטה הוא double, מכיוון שהשטח יכול להיות או מספר עשרוני (למשל 25.5), או מספר שלם (למשל 20). שם השיטה הוא tArea ומזהה הגישה שלה הוא ציבורי, כדי שנוכל לקרוא לה מכל מקום אחר בתוכנית.
Method body – גוף השיטה מכיל את הקודים לביצועה של השיטה כאשר קוראים לה.
אם כותרת השיטה מציינת שהשיטה חייבת להחזיר ערך כלשהו, נשתמש במילת המפתח return על מנת להחזיר את הערך. הערך המוחזר חייב להיות מאותו סוג של השיטה.
לדוגמא: השיטה שלנו הערך המוחזר חייב להיות מסוג double.
קריאה לשיטה
בדומה למשתנים חברים, ניתן לקרוא לשגרות חברות באמצעות שם האובייקט ושם השגרה, כאשר נקודה מפרידה ביניהם, לדוגמא:
getArea.tArea();
פרמטרים
ניתן להוסיף פרמטרים לשגרות על מנת לקבל נתונים ממקומות אחרי בתוכנית ולהשתמש בהם בתוך השגרה. את הפרמטרים מכניסים בתוך הסוגריים של השגרה, עם סוגם.
public double tArea(int tBase, int tHeight)
הגדרנו לשיטה זו שני פרמטרים מסוג int – tBase (בסיס המשולש) ו-tHeight (גובה המשולש).
נוכל לעשות שימוש בפרמטרים הללו בתוך השגרה.
כמובן שניתן להגדיר פרמטרים מכל סוג מידע שהוא.
בניית שגרה
לאחר שלמדנו את מאפייני השיטה, נוכל לבנות שיטה שתחזיר לנו את שטח המשולש, במקום שנחשב אותו בעצמנו בתחילת התוכנית.
השגרה שלנו תיראה כך:
public double tArea(int tBase, int tHeight)
{
double s;
s = (tBase * tHeight) / 2;
return s;
}
מה שאנו עושים פה זה להגדיר שגרה מסוג double (שזה גם הערך שהיא מחזירה) בשם tArea, עם שני פרמטרים: בסיס המשולש וגובה המשולש.
בתוך השגרה אנו מגדירים את המשתנה s (שטח), ובתוכו מחשבים את שטח המשולש.
בסוף אנו מחזירים את המשתנה s.
קבלת הערך מן השגרה
כדי להציג את הערך מן השגרה, כל מה שנעשה הוא:
Console.WriteLine("The area of the triangle: {0}", getArea.tArea(5, 10));
קראנו לשיטה תוך כדי הכנסת פרמטרים: בסיס – 5, גובה – 10.
דוגמאות קוד
חישוב שטח המשולש באמצעות שגרה:
namespace ConsoleApplication1{class Area{public double tArea(int tBase, int tHeight){double s;s = (tBase * tHeight) / 2;return s;}}class Program{static void Main(string[] args){Area getArea = new Area();int theArea = (getArea.h * getArea.b) / 2;Console.WriteLine("The area of the triangle: {0}", getArea.tArea(5, 10));}}}