עקרון פתיחות/סגירות (Open/Closed Principle, OCP) אומר שרכיב בתוכנה צריך להיות פתוח להרחבה אך סגור לשינוי. כלומר, אפשר להוסיף פונקציות חדשות בלי לשנות את הקוד הקיים. זה מקל על פיתוח בעתיד ומפחית שגיאות.
להשגה של העיקרון משתמשים בהפשטה (abstraction), פירושו להגדיר צורת פעולה כללית, ובפולימורפיזם (polymorphism), אפשרות שיישומים שונים יתנהגו דרך אותה הצורה. בעוד שבמקרה הקלאסי קוד חדש משתמש בקוד ישן, פולימורפיזם מאפשר גם לקוד ישן לעבוד עם קוד חדש.
המונח הוצג לראשונה בספרו של ברטרנד מאייר Object-Oriented Software Construction משנת 1988. מאייר תיאר בעיה שבה הוספת שדות או פונקציות לספרייה חייבה שינוי בתוכנות שתלויות בה. הוא הציע להשתמש בירושה כדרך לטפל בבעיה.
בשנות ה-90 העיקרון נוסח מחדש בהקשר של שימוש בממשקים מופשטים. גישה זו מדגישה יצירת ממשקים שנשארים יציבים, וכתיבת מימושים חדשים שמממשים אותם. כלומר, הממשק סגור לשינויים אך פתוח להטמעות חדשות.
מאמרו של רוברט סי מרטין מ-1996 קידם גישה זו. בשנת 2001 קישר קרייג לרמן את העיקרון לרעיונות של Protected Variations (אליסטר קוקבורן) ולהסתרת מידע (דייוויד פרנס).
העיקרון אומר: אפשר להוסיף יכולות לתוכנית בלי לשנות אותה. "רכיב תוכנה" הוא חלק בתוכנית. זה עוזר שהתוכנה תעבוד גם אחרי שיפורים.
פולימורפיזם הוא דרך לגרום לחלקים שונים של הקוד לעבוד יחד. הפשטה היא להגדיר מה חלק צריך לעשות, בלי לפרט איך.
ברטרנד מאייר כתב על הרעיון בספר ב-1988. אז הוספה לספרייה דרשה שינוי בתוכנות שתלויות בה. מאייר הציע להשתמש בירושה כדי להקל.
בשנות ה-90 אמרו: עדיף להשתמש ב"ממשקים", כללים ברורים שקוד חדש מממש. כך הממשק נשאר אותו דבר, וההרחבות הן חדשות.
מאמר של רוברט סי מרטין ב-1996 קידם את הגישה הזו.
תגובות גולשים