C ++ Class וחפץ עם דוגמה

מה זה כיתה?

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

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

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

במדריך זה תלמד:

הצהרת כיתה

ב- C+, מחלקה מוגדרת באמצעות מילת המפתח בכיתה. אחרי זה צריך להיות שם הכיתה. לאחר מכן מתווסף גוף המעמד בין הפלטות המתולתלות {}.

תחביר:

 class class-name { // data // functions }; 
  • שם המחלקה הוא השם שיש להקצות למחלקה.
  • הנתונים הם הנתונים של המחלקה, המוצהרים בדרך כלל כמשתנים.
  • הפונקציות הן פונקציות המעמד.

מילות מפתח פרטיות וציבוריות

בטח נתקלת בשתי מילות המפתח האלה. הם משני גישה.

  • פְּרָטִי:

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

  • פּוּמְבֵּי:

מילת המפתח הציבורית, לעומת זאת, הופכת נתונים/פונקציות לציבוריים. אלה נגישים מחוץ לכיתה.

הגדרת אובייקט

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

תחביר:

 class-name object-name; 
  • שם המחלקה הוא שם המחלקה שממנה יש ליצור אובייקט.
  • שם האובייקט הוא השם שיש להקצות לאובייקט החדש.

תהליך זה של יצירת אובייקט ממעמד ידוע בשם אינסטנטציה.

גישה לחברי נתונים

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

דוגמה 1:

 #include using namespace std; class Phone { public: double cost; int slots; }; int main() { Phone Y6; Phone Y7; Y6.cost = 100.0; Y6.slots = 2; Y7.cost = 200.0; Y7.slots = 2; cout << 'Cost of Huawei Y6 : ' << Y6.cost << endl; cout << 'Cost of Huawei Y7 : ' << Y7.cost << endl; cout << 'Number of card slots for Huawei Y6 : ' << Y6.slots << endl; cout << 'Number of card slots for Huawei Y7 : ' << Y7.slots << endl; return 0; } 

תְפוּקָה:

להלן צילום מסך של הקוד:

הסבר קוד:

  1. כלול את קובץ הכותרת של iostream בקוד שלנו על מנת להשתמש בפונקציות שלו.
  2. כולל את מרחב השמות std בקוד שלנו לשימוש במחלקות שלו מבלי לקרוא לו.
  3. הצהירו על כיתה בשם טלפון.
  4. שימוש בשינוי גישה לציבור כדי לסמן את המשתנים שאנו עומדים ליצור כנגישים לציבור.
  5. הצהירו על המחיר המשתנה של סוג נתונים כפול.
  6. הכריז על משתנה שלם בשם חריצים.
  7. סוף גוף השיעור.
  8. קוראים לפונקציה הראשית (). יש להוסיף את לוגיקת התוכנית בתוך גופה.
  9. צור אובייקט בשם Y6 מסוג טלפון. זה נקרא אינסטנטציה.
  10. צור אובייקט בשם Y7 מסוג טלפון. זה נקרא אינסטנטציה.
  11. גש למחיר המשתנה/חבר של טלפון בכיתה באמצעות האובייקט Y6. הערך מוגדר ל- 100.0. עלות Y6 נקבעת כעת ל -100.0.
  12. גש לחריצי המשתנים/החברים של טלפון בכיתה באמצעות האובייקט Y6. הערך מוגדר ל 2. החריצים עבור Y6 מוגדרים כעת ל -2.
  13. גש למחיר המשתנה/חבר של טלפון בכיתה באמצעות האובייקט Y7. הערך מוגדר ל- 200.0. עלות Y7 מוגדרת כעת ל -200.0.
  14. גש לחריצי המשתנה/החברים של טלפון המחלקה באמצעות האובייקט Y7. הערך מוגדר ל 2. החריצים עבור Y7 מוגדרים כעת ל -2.
  15. הדפס את עלות Y6 במסוף לצד טקסט אחר.
  16. הדפס את העלות של Y7 במסוף לצד טקסט אחר.
  17. הדפס את מספר המשבצות עבור Y6 לצד טקסט אחר.
  18. הדפס את מספר המשבצות עבור Y7 לצד טקסט אחר.
  19. על התוכנית להחזיר ערך עם השלמתו המוצלחת.
  20. סוף גוף הפונקציה הראשית ().

מה זה שיעור פרטי?

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

מהי מחלקה מוגנת?

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

דוגמה 2:

 #include using namespace std; class ClassA { public: void set_a(int val); int get_a(void); private: int a; }; int ClassA::get_a(void) { return a; } void ClassA::set_a(int val) { a = val; } int main() { ClassA a; a.set_a(20); cout << 'Value of a is: ' << a.get_a(); return 0; } 

תְפוּקָה:

להלן צילום מסך של הקוד:

הסבר קוד:

  1. כלול את קובץ הכותרת של iostream בקוד שלנו כדי להשתמש בפונקציות שלו.
  2. כלול את מרחב השמות std בקוד שלנו כדי להשתמש במחלקות שלו מבלי לקרוא לו.
  3. צור כיתה בשם ClassA.
  4. השתמש בשינוי הגישה הציבורית כדי לסמן את חבר הכיתה שייווצר כנגיש לציבור.
  5. צור את הפונקציה בשם set_a () שלוקחת ערך ערך שלם אחד.
  6. צור פונקציה בשם get_a ().
  7. השתמש בשינוי הגישה הפרטית כדי לסמן את חבר הכיתה שייווצר כנגיש באופן פרטי.
  8. הכריז על משתנה שלם בשם a.
  9. סוף גוף השיעור.
  10. השתמש בשם המחלקה ובאופרטור רזולוציית ההיקף כדי לגשת לפונקציה get_a (). אנו רוצים להגדיר מה הפונקציה עושה כאשר היא מופעלת.
  11. הפונקציה get_a () צריכה להחזיר את הערך של המשתנה a כאשר הוא מופעל.
  12. סוף ההגדרה של הפונקציה get_a ().
  13. השתמש בשם המחלקה ומפעיל רזולוציית ההיקף כדי לגשת לפונקציה set_a (). אנו רוצים להגדיר מה הפונקציה עושה כאשר היא מופעלת.
  14. הקצאת ערך המשתנה val למשתנה a.
  15. סוף הגדרת הפונקציה set_a ().
  16. התקשר לפונקציה הראשית (). יש להוסיף את היגיון התוכנית בתוך גוף הפונקציה הזו.
  17. צור מופע של ClassA ותן לו את השם a.
  18. השתמש במופע המחלקה לעיל והפונקציה set_a () כדי להקצות ערך של 20 למשתנה a.
  19. הדפסת טקסט כלשהו לצד ערך המשתנה a בקונסולה. הערך של משתנה a מתקבל על ידי קריאה לפונקציה get_a ().
  20. על התוכנית להחזיר ערך עם השלמתו המוצלחת.
  21. סוף גוף התפקוד הראשי ().

דוגמה 3:

 #include using namespace std; class ParentClass { protected: int value; }; class ChildClass : public ParentClass { public: void setId(int x) { value = x; } void displayValue() { cout << 'Value is: ' << value << endl; } }; int main() { ChildClass c; c.setId(21); c.displayValue(); return 0; } 

תְפוּקָה:

להלן צילום מסך של הקוד:

הסבר קוד:

  1. כלול את קובץ הכותרת של iostream בקוד שלנו כדי להשתמש בפונקציות שלו.
  2. כלול את מרחב השמות std בקוד שלנו כדי להשתמש במחלקות שלו מבלי לקרוא לו.
  3. צור כיתה בשם ParentClass.
  4. השתמש במשנה הגישה המוגנת כדי לסמן את חבר הכיתה שייווצר כמוגן.
  5. צור משתנה שלם בשם ערך.
  6. סוף גוף השיעור.
  7. צור מחלקה חדשה בשם ChildClass שירשת את ParentClass.
  8. השתמש במשנה הגישה המוגנת כדי לסמן את חבר הכיתה שייווצר כנגיש לשיעורי ילדים.
  9. צור את הפונקציה בשם setId () שלוקחת ערך שלם אחד x.
  10. הקצאת ערך המשתנה x לערך המשתנה.
  11. סוף הגדרת הפונקציה setId ().
  12. צור פונקציה בשם displayValue ().
  13. הדפס את ערך המשתנה שנקרא ערך במסוף לצד טקסט אחר.
  14. סוף גוף הפונקציה displayValue ().
  15. סוף גוף המחלקה בשם ChildClass.
  16. התקשר לפונקציה הראשית (). יש להוסיף את היגיון התוכנית בתוך גוף הפונקציה הזו.
  17. צור מופע של ChildClass ותן לו את השם c.
  18. השתמש במופע המחלקה לעיל ובפונקציה setId () כדי להקצות ערך של 21 למשתנה x.
  19. השתמש במופע המחלקה לעיל כדי לקרוא לפונקציה בשם displayValue ().
  20. על התוכנית להחזיר ערך עם השלמתו המוצלחת.
  21. סוף גוף התפקוד הראשי ().

פונקציות של חברי כיתה

פונקציות עוזרות לנו לתפעל נתונים. ניתן להגדיר פונקציות של חברי כיתה בשתי דרכים:

  • בתוך הגדרת הכיתה
  • מחוץ להגדרת הכיתה

אם יש להגדיר פונקציה מחוץ להגדרת מחלקה, עלינו להשתמש במפעיל רזולוציית ההיקף (: :). זה צריך להיות מלווה בשמות הכיתות והפונקציות.

דוגמה 2:

 #include #include using namespace std; class Guru99 { public: string tutorial_name; int id; void printname(); void printid() { cout << 'Tutorial id is: '<< id; } }; void Guru99::printname() { cout << 'Tutorial name is: ' << tutorial_name; } int main() { Guru99 on2vhf; on2vhf.tutorial_name = 'C++'; on2vhf.id = 1001; on2vhf.printname(); cout << endl; on2vhf.printid(); return 0; } 

תְפוּקָה:

להלן צילום מסך של הקוד:

הסבר קוד:

  1. כלול את קובץ הכותרת של iostream בתוכנית שלנו כדי להשתמש בפונקציות שלה.
  2. כלול את קובץ כותרת המחרוזת בתוכנית שלנו כדי להשתמש בפונקציות שלה.
  3. כלול את מרחב השמות std בקוד שלנו כדי להשתמש במחלקות שלו מבלי לקרוא לו.
  4. צור כיתה בשם Guru99.
  5. השתמש בשינוי הגישה הציבורית כדי לסמן את חברי הכיתה שאנו עומדים ליצור כנגישים לציבור.
  6. צור משתנה מחרוזת בשם tutorial_name.
  7. צור משתנה שלם בשם id.
  8. צור פונקציה בשם printname (). פונקציה זו אינה מוגדרת במסגרת הגדרת המעמד.
  9. צור פונקציה בשם מודפס (). פונקציה זו מוגדרת בתוך הגדרת המעמד. גופתו נוספה במסגרת ההגדרה המעמדית.
  10. הדפס את הערך של מזהה המשתנה לצד טקסט אחר במסוף. שים לב שזה נוסף לגוף הפונקציה printid (). הוא יבוצע רק כאשר הפונקציה printid () נקראת.
  11. סוף גוף הפונקציה printid ().
  12. סוף הגוף של הכיתה גורו 99.
  13. תחילת ההגדרה של הפונקציה printname ().
  14. הדפס את הערך של משתנה tutorial_name במסוף לצד טקסט אחר. שים לב שזו נוספה בתוך גוף הפונקציה printname (). הוא יבוצע רק כאשר נקראת הפונקציה printname ().
  15. סוף ההגדרה של הפונקציה printname ().
  16. התקשר לפונקציה הראשית (). יש להוסיף את היגיון התוכנית בתוך גוף הפונקציה הזו.
  17. צור מופע של הכיתה Guru99 ותן לו את השם on2vhf.
  18. השתמש במופע לעיל כדי להקצות ערך של C ++ למשתנה tutorial_name.
  19. השתמש במופע on2vhf כדי להקצות ערך של 1001 למזהה המשתנה.
  20. השתמש במופע on2vhf כדי לקרוא לפונקציה printname ().
  21. התקשר לפקודה end (line end) כדי להדפיס שורה ריקה חדשה במסוף.
  22. השתמש במופע on2vhf כדי לקרוא לפונקציה printid ().
  23. על התוכנית להחזיר ערך עם השלמתו המוצלחת.
  24. סוף גוף הפונקציה הראשית ().

בונים והורסים

מהו קונסטרוקטורים?

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

מה זה Destructors?

הורסים לעומת זאת עוזרים להרוס אובייקטים בכיתה.

שם הבונה חייב להיות דומה לשם המחלקה. לבנאים אין סוג החזרה.

ניתן להגדיר את הבונה בתוך או מחוץ לגוף המעמד. אם הוא מוגדר מחוץ לגוף המחלקה, יש להגדירו עם שם המחלקה ומפעיל רזולוציית ההיקף (: :).

דוגמה 3:

 #include using namespace std; class ClassA { public: ClassA() { cout << 'Class constructor called'<

תְפוּקָה:

להלן צילום מסך של הקוד:

הסבר קוד:

  1. כלול את קובץ הכותרת של iostream בקוד כדי להשתמש בפונקציות שלו.
  2. כלול את מרחב השמות std בקוד שלנו כדי להשתמש במחלקות שלו מבלי לקרוא לו.
  3. צור כיתה בשם ClassA.
  4. השתמש בשינוי הגישה הציבורית כדי לסמן את החבר שאנו עומדים ליצור כנגיש לציבור.
  5. צור קונסטרוקטור עבור הכיתה.
  6. טקסט להדפסה במסוף כאשר קוראים לבנאי. ה- endl היא מילת מפתח C ++, שמשמעותה שורת קצה. הוא מעביר את סמן העכבר לשורה הבאה.
  7. סוף הגוף של בונה הכיתה.
  8. צור הורס עבור הכיתה.
  9. טקסט להדפסה במסוף כאשר קוראים למבטל. ה- endl היא מילת מפתח C ++, שמשמעותה שורת קצה. הוא מעביר את סמן העכבר לשורה הבאה.
  10. סוף הגוף של המשחית.
  11. סוף גוף השיעור.
  12. התקשר לפונקציה הראשית (). יש להוסיף את היגיון התוכנית בתוך גוף הפונקציה הזו.
  13. צור אובייקט מחלקה ותן לו את השם א. ייקרא הבנאי.
  14. צור משתנה שלם בשם p והקצה לו ערך של 1.
  15. צור בלוק הצהרת if באמצעות המשתנה p.
  16. צור אובייקט מחלקה ותן לו את השם ב. המשחתת תקרא.
  17. סוף גוף הצהרת ה- if.
  18. סוף הגוף של הפונקציה הראשית ().

סיכום:

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