מחלקה (תכנות)

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש

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

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

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

ברוב השפות המילה השמורה this משמשת להתייחסות עצמית במחלקה. למשל, בשפת PHP:

class name
{
   var $name;
 
   function name()
   {
	$this->name = "OOP";
   }
}

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

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

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

class Name
{
  String myName = "myName";
  static String myStaticName = "myStaticName";
 
  public void printName()
  {
     System.out.println("My name is " + myName);
  }
 
  public static void printStaticName()
  {
     System.out.println("My name is " + myStaticName);
  }
}
 
class UseName
{
  public static void main(String[] args)
  {
    Name name = new name();
    name.printName(); // prints "My name is myName"
    Name.printStaticName(); // prints "My name is myStaticName"
  }
}

מחלקה משמשת ליצור סוגים חדשים של משתנים מובנים(משוכללים),מחלקה משמשת להגדרת "עצם" חדש וזה מה שמשייך אותו לחלק של תכנות מונחה עצמים למשל ב-C# מחלקה משמשת לבניית מבנים מיוחדים ומאוד מפורסמים כמו רשימה (LIST), מחסנית(STACK), תור(QUEUE), עץ בינארי(BINARY NODE TREE) ועץ משחק(GAME TREE).

 public class name()
 {
 //Options
 variable variable name;
 .......
 //Constructors
 public name class(variable type name,...,)
 {
   this.name variable=variable;
   ....
 } 
 
 //Methods
  public variable type Get()
  {  
     return this.name type;
  }
 
  public void Set(variable type name)
  { 
     this.variable name=type name ;
  }
} // End class

ראו גם[עריכת קוד מקור | עריכה]

קישורים חיצוניים[עריכת קוד מקור | עריכה]