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

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