יום רביעי, 26 באפריל 2017

מהו CLASS

class  -  מחלקה

ה class מתנהג כמו ה struct של שפת C. אבל עם תחביר מעט שונה והרבה תכונות נוספות.


הדוגמה הפשוטה:

class Item{
public:        // נסביר בהמשך מה משמעות השורה הזאת, כרגע פשוט נכתוב אותה
 int a;
 int b;
 char c;
};
 
void main(){
 Item q1;
 q1.a = 5;
 q1.b = 10;
 q1.c = 'A';
 cout <<q1.a<<"\n"<<q1.b<<"\n"<<q1.c<<"\n";
}
כפי שרואים, בניגוד ל struct כאן אין צורך לכתוב את המילה "class" כל פעם שמכריזים על משתנה.







אפשר להכניס פונקציות בתוך class !
הן נועדו לשמש עבור הפעולות הדרושות ל class.
לדוגמה:
#include <iostream>
using namespace std;
 
class Item{
public:
 int a;
 int b;
 char c;
 void ShoeItem(){
  cout <<a<<"\n"<<b<<"\n"<<c<<"\n";
 }
};
 
void main(){
 Item q1;
 q1.a = 5;
 q1.b = 10;
 q1.c = 'A';
 q1.ShoeItem();
}


נוכל גם לכתוב פונקציה שמקבלת ערכים
זה יכול להיות מאוד שימושי כשרוצים לוודא שהוכנסו ע"י המתכנת/המשתמש ערכים תקינים.
לדוגמה:
#include <iostream>
using namespace std;
 
class Item{
public:
 int a;
 int b;
 char c;
 double d;
 void ShoeItem(){
  cout <<a<<"\n"<<b<<"\n"<<c<<"\n"<<d<<"\n";
 }
 void getItem(int a1int b1char c1double d1){
  a=0; b=0; c=0; d=0;
  if (a1>0) a=a1else cout<<"Illegal a\n";
  if (b1>0) b=b1else cout<<"Illegal b\n";
  if (c1>0) c=c1else cout<<"Illegal c\n";
  if (d1>0) d=d1else cout<<"Illegal d\n";
 }
 
};
 
void main(){
 Item q1;
 q1.getItem(5,10,'A',-1.3);
 q1.ShoeItem();
}



ציבורי או פרטי
על מנת להגן על המתכנתים משגיאות קוד, נוצרה ההבדלה בין פרטי וציבורי ב class.
בדוגמה האחרונה ראינו שפונקציית הקלט מגנה עלינו שלא יהיו ערכים קטנים מ 0.
אבל אם מתכנת כתב פשוט:
                                                                  q1.a = -4;
אז הוא עקף את פונקציית הקלט. ויווצרו הרבה בעיות.

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

כלל: כל החלק ה"ציבורי" במחלקה (= בclass) יכול לגשת לכל החלק ה"פרטי" במחלקה. אבל מחוץ למחלקה אפשר לגשת רק לחלק ה"ציבורי" במחלקה. וכלל לא לפרטי.

ברירת המחדל של כל class זה מצב פרטי. החלק הציבורי בקוד מתחיל רק אחרי התווית   :public

לדוגמה:
#include <iostream>
using namespace std;
 
class worker {
 char name[20];
 int age , hours;
 double pph;
public:
 void Kelet() {
  cout<< "Enter name , age , hours && pricePerHour: ";
  cin >>name >> age >> hours >> pph;
 }
 double Sallary() {
  return hours * pph;
 }
 void Show() {
  cout<<"Name: "<<name<<" Age: "<<age<<" Sallary: "<<Sallary()<<"\n";
 }
};
 
void main() {
 worker w1, w2;
 w1.Kelet();
 w2.Kelet();
 w1.Show();
 w2.Show();
}






נסו לתכנת עם מה שלמדתם!


2 תגובות: