NET/מחלקות - היכרות: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
Atavory (שיחה | תרומות)
מ הגהה
צחי (שיחה | תרומות)
מ עריכה
שורה 25:
 
ClassName הוא שם המחלקה. השם יכול להכיל אותיות, מספרים וקו תחתי ('_'), אך לא יתחיל במספר. מקובל להשתמש בשמות בסגנון פסקל - כל מילה בשם מתחילה באות גדולה, ללא הפרדה בין המילים.
 
לדוגמה, נכתוב מחלקה המתארת כלי רכב. לכלי רכב יש שם יצרן, צבע, שנת ייצור, וניתן גם להעבירו ממקום למקום.
 
{{NET/CodeBlock|cs=
{{NET/Code|using|Keyword}} System;<br>
{{NET/Code|using|Keyword}} System.Drawing;<br>
{{NET/Code|public class|Keyword}} {{NET/Code|Vehicle|Class}} {<br>
&nbsp;&nbsp;{{NET/Code|private|Keyword}} {{NET/Code|String|Class}} _manufacturer;{{NET/Code|manufacturer name|C#Comment}}<br>
&nbsp;&nbsp;{{NET/Code|private|Keyword}} {{NET/Code|Color|Class}} _color; {{NET/Code|vehicle color|C#Comment}}<br><br>
&nbsp;&nbsp;{{NET/Code|Initialize a new instance of the {{NET/Code|Vehicle|see}} class|C#summary|&nbsp;&nbsp;}}<br>
&nbsp;&nbsp;{{NET/Code|The vehicle manufacturer|C#param|param=manufacturer}}<br>
&nbsp;&nbsp;{{NET/Code|public|Keyword}} Vehicle({{NET/Code|String|Class}} manufacturer) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;_manufacturer = manufacturer;<br>
&nbsp;&nbsp;}<br><br>
&nbsp;&nbsp;{{NET/Code|Get or set the name of the vehicle manufacturer.|C#summary|&nbsp;&nbsp;}}<br>
&nbsp;&nbsp;{{NET/Code|public|Keyword}} {{NET/Code|String|Class}} Manufacturer {<br>
&nbsp;&nbsp;&nbsp;&nbsp;{{NET/Code|get|Keyword}} {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{NET/Code|return|Keyword}} _manufacturer;<br>
&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;{{NET/Code|set|Keyword}} {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_manufacturer = {{NET/Code|value|Keyword}};<br>
&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;}<br><br>
&nbsp;&nbsp;{{NET/Code|The vehicle color|C#summary|&nbsp;&nbsp;}}<br>
&nbsp;&nbsp;{{NET/Code|public|Keyword}} {{NET/Code|Color|Class}} Color {<br>
&nbsp;&nbsp;&nbsp;&nbsp;{{NET/Code|get|Keyword}} {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{NET/Code|return|Keyword}} _color;<br>
&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;{{NET/Code|set|Keyword}} {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_color = {{NET/Code|value|Keyword}};<br>
&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;}<br>
}}
בדוגמה זו, הגדרנו משתני מחלקה ומאפיינים המאפשרים למחלקות אחרות לשנות את ערכם, מבלי לתת להן גישה ישירה אל המשתנים של המחלקה. גישה זו, המכונה "הכמסה" (encapsulation, מלשון "כמוסה"), מאפשרת למחלקה לשלוט על הערכים המתקבלים עבור המשתנים הפנימיים, ובמידת הצורך לבדוק אם הם חוקיים.
 
במשתנה הפנימי, השתמשנו בקידומת קו תחתי בשם המשתנה. זהו נוהג מקובל (יש המשתמשים באות m כקידומת) כדי להבדיל בין משתנים של המחלקה ומשתנים פנימיים של שגרות או מאפיינים. דבר זה מאפשר להשתמש באותו שם, בהבדל הקידומת, גם למשתנה מחלקה וגם למשתנה של שגרה (כפי שרואים בבנאי), ומאפשר לגשת במהירות למשתני המחלקה בעזרת תכונת השלמת הקוד האוטומטית של סביבת הפיתוח. עם זאת, יש לציין שמיקרוסופט ממליצה שלא להשתמש בקידומות מסוג זה.
 
על פי המוסכמה המקובלת, שמות משתנים, הן של המחלקה והן של שגרות ומאפיינים, יתחילו באות קטנה, והמילה השניה והבאות אחריה יתחילו באות גדולה, ללא הפרדה בין המילים.
 
במאפיין Color, יש להבחין בין ערך ההחזרה, שהוא מסוג המבנה [[NET/Color|Color]], לבין שם המאפיין, שגם הוא Color. סביבת הפיתוח תצבע את שני החלקים בצבעים שונים, כדי להקל על הקריאה. זהו נוהג מקובל, להשתמש בשם מאפיין זהה לשם המחלקה של הסוג שהוא מחזיר, כאשר משמעות המאפיין היא ערך ההחזרה.
 
== מאפיינים ==
שורה 138 ⟵ 97:
 
== אירועים ==
 
==סיכום ביניים==
לדוגמהעתה, נכתובנראה לדוגמה מחלקה המתארת כלי רכב. לכלי רכב יש שם יצרן, צבע, שנת ייצור, וניתן גם להעבירו ממקום למקום. המחלקה גם מודיעה למחלקות מאזינות, על ההעברה.
 
{{NET/CodeBlock|cs=
{{NET/Code|using|Keyword}} System;<br>
{{NET/Code|using|Keyword}} System.Drawing;<br>
{{NET/Code|public class|Keyword}} {{NET/Code|Vehicle|Class}} {<br>
&nbsp;&nbsp;{{NET/Code|private|Keyword}} {{NET/Code|String|Class}} _manufacturer;{{NET/Code|manufacturer name|C#Comment}}<br>
&nbsp;&nbsp;{{NET/Code|private|Keyword}} {{NET/Code|Color|Class}} _color; {{NET/Code|vehicle color|C#Comment}}<br><br>
&nbsp;&nbsp;{{NET/Code|Initialize a new instance of the {{NET/Code|Vehicle|see}} class|C#summary|&nbsp;&nbsp;}}<br>
&nbsp;&nbsp;{{NET/Code|The vehicle manufacturer|C#param|param=manufacturer}}<br>
&nbsp;&nbsp;{{NET/Code|public|Keyword}} Vehicle({{NET/Code|String|Class}} manufacturer) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;_manufacturer = manufacturer;<br>
&nbsp;&nbsp;}<br><br>
&nbsp;&nbsp;{{NET/Code|Get or set the name of the vehicle manufacturer.|C#summary|&nbsp;&nbsp;}}<br>
&nbsp;&nbsp;{{NET/Code|public|Keyword}} {{NET/Code|String|Class}} Manufacturer {<br>
&nbsp;&nbsp;&nbsp;&nbsp;{{NET/Code|get|Keyword}} {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{NET/Code|return|Keyword}} _manufacturer;<br>
&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;{{NET/Code|set|Keyword}} {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_manufacturer = {{NET/Code|value|Keyword}};<br>
&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;}<br><br>
&nbsp;&nbsp;{{NET/Code|The vehicle color|C#summary|&nbsp;&nbsp;}}<br>
&nbsp;&nbsp;{{NET/Code|public|Keyword}} {{NET/Code|Color|Class}} Color {<br>
&nbsp;&nbsp;&nbsp;&nbsp;{{NET/Code|get|Keyword}} {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{NET/Code|return|Keyword}} _color;<br>
&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;{{NET/Code|set|Keyword}} {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_color = {{NET/Code|value|Keyword}};<br>
&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;}<br>
}}
בדוגמה זו, הגדרנו משתני מחלקה ומאפיינים המאפשרים למחלקות אחרות לשנות את ערכם, מבלי לתת להן גישה ישירה אל המשתנים של המחלקה. גישה זו, המכונה "הכמסה" (encapsulation, מלשון "כמוסה"), מאפשרת למחלקה לשלוט על הערכים המתקבלים עבור המשתנים הפנימיים, ובמידת הצורך לבדוק אם הם חוקיים.
 
במשתנה הפנימי, השתמשנו בקידומת קו תחתי בשם המשתנה. זהו נוהג מקובל (יש המשתמשים באות m כקידומת) כדי להבדיל בין משתנים של המחלקה ומשתנים פנימיים של שגרות או מאפיינים. דבר זה מאפשר להשתמש באותו שם, בהבדל הקידומת, גם למשתנה מחלקה וגם למשתנה של שגרה (כפי שרואים בבנאי), ומאפשר לגשת במהירות למשתני המחלקה בעזרת תכונת השלמת הקוד האוטומטית של סביבת הפיתוח. עם זאת, יש לציין שמיקרוסופט ממליצה שלא להשתמש בקידומות מסוג זה.
 
על פי המוסכמה המקובלת, שמות משתנים, הן של המחלקה והן של שגרות ומאפיינים, יתחילו באות קטנה, והמילה השניה והבאות אחריה יתחילו באות גדולה, ללא הפרדה בין המילים.
 
במאפיין Color, יש להבחין בין ערך ההחזרה, שהוא מסוג המבנה [[NET/Color|Color]], לבין שם המאפיין, שגם הוא Color. סביבת הפיתוח תצבע את שני החלקים בצבעים שונים, כדי להקל על הקריאה. זהו נוהג מקובל, להשתמש בשם מאפיין זהה לשם המחלקה של הסוג שהוא מחזיר, כאשר משמעות המאפיין היא ערך ההחזרה.
 
 
== ירושה ==