תכנות מכוון אובייקטים או תכנות מונחה עצמים (באנגלית: Object oriented programming) אני מגדיר כפרדיגמת פיתוח תוכנה שמאפיין עיקרי שלה הוא ארגון מידע במבני מידע הנקראים אובייקטים כאשר כל אובייקט מורכב מ:
קבוע אחד לפחות
ו\או
משתנה אחד לפחות
ו\או
פרוצדורה אחת לפחות.
קבוע או משתנה לפעמים נקראים בז'רגון השפה תכונה (property) ופרוצדורה לפעמים נקראת בז'רגון השפה מתודה (method).
יצירת אובייקטים
במסגרת הפרדיגמה, אובייקטים נוצרים במינימום לפי עקרונות אלה:
- כימוס: יכולת לכמס באובייקט מבנה-מידע אחד לפחות כגון (קבוע, משתנה, או פרוצדורה) אך שכל מבנה מידע כזה לא בהכרח יהיה ניתן לגישה מצד אובייקטים אחרים.
- פולימורפיזם: יכולת אובייקט להופיע בצורות שונות (למשל דרך הורשה לתת-אובייקט או דרך אינסטסיאציה ייחודית).
מושג הקלאס
בפיתוח תוכנה בפרדיגמת OOP נפוץ מאד ליצור קלאסים (classes). קלאס בהקשר זה הוא סוג ספציפי ומוגדר היטב של אובייקט.
אין הכרח ליצור קלאסים ולכן שם הפרדיגמה הוא תכנות מכוון אובייקטים ולא תכנות מכוון קלאסים (אובג'קט-אוריינטד ולא קלאס-אוריינטד).
כל קלאס ניתן להרחיב לפי אבסטרקציה רצויה.
אם משתמשים בקלאסים אז אובייקט הוא אינסטנס של קלאס.
דוגמה לקלאס עם תכונות (properties) בשפת PHP
<?php Class Fish { public $species; public $record_weight; } $fish_1 = new Fish(); ?>
גישה לרכיב של קלאס
עקרונית, ניתן לקבוע גישה מלאה או גישה מוגבלת או היעדר גישה לכל רכיב של קלאס (קבוע\משתנה\פרוצדורה) דרך בקרי גישה (access modifiers) כגון:
- public: ניתן להשתמש במידע מקלאס או להשפיע על הקלאס ← מחוץ לקלאס
- private: לא ניתן להשתמש במידע מקלאס או להשפיע על הקלאס ← מחוץ לקלאס
- protected: באופן כללי לא ניתן להשתמש במידע מקלאס אך באופן אקספציונאלי, כן ניתן.
עבודה עם אובייקטים ללא קלאסים
שפות מחשב שונות כגון שפת JavaScript מאפשרות לפתח תוכנה בפרדיגמת מכוון-אובייקטים ללא קלאסים כלל ושפת JavaScript כוללות אובייקטים-מובנים רבים כמו ה Math
object.