C++/מבוא: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
Ybungalobill (שיחה | תרומות)
מ C++/הרחבה לשפת C הועבר לC++/מבוא: ראו דף שיחה
Ybungalobill (שיחה | תרומות)
הועבר מ"מבוא לתכנות מונחה עצמים"
שורה 20:
* שימוש חוזר בקוד קיים (ירושה).
* שימוש ב-STL (הספריה התקנית), מקל על כתיבת הקוד ולרוב מקצר אותו.
 
==מבוא לתכנות מונחה עצמים==
כאשר הניח אלן טיורינג את יסודות התכנות, הוא תכנן את העניינים באופן מתמטי, שיהיה אפשרי. אכן, כל פעולה ניתן לבצע בעזרת לולאות ותנאים, ומידע המסודר באמצעות משתנים ומערכים. אולם, במשך הזמן התגלו בעיות של תכנון בעזרת הכלים האלו. הפרוייקטים נעשו מורכבים יותר ויותר, ונוצר צורך בכלים מתקדמים יותר, ואף שאינם נצרכים באופן מתמטי, הרי שהם נצרכים כדי שהתוכניתן יחשוב ויעבוד בצורה מסודרת. המצאת הפונקציה היתה המהלך הראשון בנושא, והיא בעצם חילקה את התוכנית לחתיכות קטנות שניתן לסמן V לגבי הצלחת כל אחת מהן. ובכל זאת, עדיין נתקלו פרוייקטים בקשיים גדולים, שגיאות לוגיות שלא חשבו עליהן מראש, ופעמים רבות הפרוייקט ביקש עוד זמן ועוד כסף ובסוף התמוטט והלקוח נותר בלא כספו ובלא המוצר שהזמין. <br />
בכנס של תוכניתנים, שדן בבעיה הזאת, הועלה הרעיון הבא: לדמות את התכנות לחיים האמיתיים. בחיים אנחנו עובדים עם עצמים, לא עם פונקציות. עצם יכול להיות כל דבר: מחיפושית ועד חללית.<br />
לעצם כזה יש תכונות, ויש פעולות שהוא יכול לבצע. גם בתוך עצמים ישנם עצמים פנימיים שונים. זהו ה class: אובייקט המכיל משתנים, מערכים, והחידוש: גם פונקציות!<br />
כאשר יצרנו אותו, יצרנו תבנית. נוכל לאחר מכן ליצור כמה ממנו שנרצה. <br />
למשל, נוכל ליצור עצם המייצג מכונית. יהיו לו משתנים שיכילו את הצבע, את הדגם, את נפח המנוע ועוד תכונות נוספות. תהיינה לו גם פונקציות: פונקציה בשם start בשביל להתניע, פונקציה בשם go בשביל לנסוע, פונקציה בשם fuel בשביל לתדלק.
נוכל ליצור "מופעים" רבים של המכונית הזאת, בדיוק כשם שאנחנו יוצרים משתנים מכל סוג אחר. נוכל ליצור מכוניות שונות ולהגדיר לכל אחד את תכונותיו.<br />
לרכב יש גם תהליכים ונתונים פנימיים שרק הטכנאי מטפל בהם. הלקוח אינו אמור להתעסק איתם, ועל כן ניתן להסתיר אותם מעיניו, ולתת לו להתעסק רק במה שהוחצן. למשל, אם בעת ההתנעה צריכים להפסיק לרגע את הרדיו כדי שלא ישרף, לא ניתן ללקוח לשנות זאת. ניתן לו רק את הפונקציה start, והוא יבחר האם להשתמש בה על כל השלכותיה.<br />
בנוסף, תוכננה גם האפשרות לבנות אובייקטי-על. כשם שאנחנו יכולים לבנות אובייקט מסוג מכונית וליצור מגוון רחב של מכוניות בעזרתו, כך נוכל ליצור אובייקט-על שממנו נוכל ליצור אובייקטים מדויקים יותר.
למשל, נוכל ליצור אובייקט-על מסוג כלי רכב וממנו ניצור אובייקט מסוג מכונית, אובייקט מסוג משאית, אובייקט מסוג קורקינט. גם הם עדיין תבניות, אבל הן נבנו מתוך התבנית הכללית יותר של כלי הרכב. למשל, בתבנית הכללית יהיו גלגלים, אבל ניתן יהיה לשנות את כמותן. לעומת זאת בכל אחד מהמימושים תהיה הגדרה מדויקת של כמה הם, ולא ניתן יהיה לשנות. באובייקט כלי הרכב תהיה הגדרה של נסיעה, אבל לא של התנעה, למקרה שהמשתמש יצור קורקינט.
 
{{C++|מוגבל=כן}}