# הקדמה — מה נלמד ביחידה הזו🧭 הקדמה

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

## מה הולכים ללמוד בשיעורים הבאים

- **איך יוצרים "תבנית" ל"דבר" ואז הרבה עותקים ממנה** — למשל תבנית אחת ל"לקוח" (עם שם, אימייל, גיל), ומתוכה יוצרים כמה לקוחות שונים בפועל — כל אחד עם הפרטים שלו. התבנית נקראת "מחלקה", וכל עותק שנוצר ממנה נקרא "אובייקט".
- **איך שולטים מי מותר לו לגעת במידע של כל "דבר"** — כדי שחלק אחר בתוכנית לא ישנה בטעות פרטים שהוא לא אמור לגעת בהם.
- **איך "דבר" אחד "יורש" תכונות מ"דבר" כללי יותר** — למשל "כלב" ו"חתול" הם שניהם "בעל חיים", וחולקים תכונות משותפות (יש להם שם, יכולים לאכול) בלי לכתוב את זה מחדש לכל אחד בנפרד.
- **איך מגדירים תבנית "לא גמורה בכוונה"**, שכל מי שמשתמש בה חייב להשלים בעצמו — כדי לחייב מבנה מסוים בלי לכתוב את הפרטים מראש.
- **איך מגדירים "הבטחה" שכמה "דברים" שונים מתחייבים לקיים, כל אחד בדרך שלו** — למשל גם "מכונית" וגם "אופניים" מבטיחים "לדעת לנוע", כל אחד בצורה אחרת.
- **איך מסתירים פרטים טכניים לא חשובים** — כלפי חוץ מראים רק את מה שבאמת צריך לדעת, בדיוק כמו שבמכונית לוחצים על ההגה בלי לדעת איך המנוע עובד בפנים.

## עם מה תצאו מהחלק הזה

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