Microsoft Foundation Classes – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
מ שוחזר מעריכות של Matanyabot (שיחה) לעריכה האחרונה של ברוקולי
Matanyabot (שיחה | תרומות)
מ בוט: שינויים קוסמטיים
שורה 1:
[[מחלקה (תכנות)|מחלקות]] התשתית של [[מיקרוסופט]], '''Microsoft Foundation Classes''', או '''MFC''', זו [[ספרייה (תכנות)|ספרייה]] של מיקרוסופט, ה[[עטיפה|עוטפת]] במחלקות [[C++‎]] את ה-[[API]] של [[חלונות]], ומהווה [[מסגרת ישום]][http://en.wikipedia.org/wiki/Application_framework] לפיתוח בסביבת חלונות. מוגדרות בה מחלקות עבור מרבית [[ידית|ידיות]] הטיפול ב[[אובייקט (הנדסת תוכנה)|אובייקטים]] של חלונות וכן עבור חלונות מוגדרים מראש (predefined windows) ו[[פקד (מחשוב)|פקדים]] שכיחים.
 
== היסטוריה של MFC ==
 
=== תחילת הדרך ===
MFC נוצרה ב־[[1992]] עם ה[[מהדר]] (C/C++ 7.0 (compiler של מיקרוסופט, לשימוש עם גרסאות [[16 ביט]] של חלונות. היה זה חלק ממאמץ כללי של מיקרוסופט להשגת נתח שוק לכלי פיתוח. ו־MFC עוצבה להיות חלון הראווה ליכולותיה של [[שפת תכנות|שפת התכנות]] ++C. באותם ימים ++C רק החלה להחליף את C בפיתוחם של יישומי [[תוכנה]] מסחריים ו־C/C++ 7.0 הייתה הראשונה בין המהדרים של מיקרוסופט בהוספת תמיכה ב־++C. את ההשראה לפיתוחה קיבלה MFC מ־TCL) [[Think Class Library]]) של [[מקינטוש]] - שמאוחר יותר נרכשה על ידי [[סימנטק]] - והיא חייבת לה הרבה מהמבנה שלה.
 
=== בתחרות עם בורלנד ===
OWL) [[Object Windows Library]]) היה מוצר מתחרה שהוצג בידי [[בורלנד]] בערך באותו זמן ועוצב עבור המהדר [[טורבו C]] של בורלנד. לזמן מה היה OWL פופולרי יותר מאשר MFC, מכיוון שהוא נאמן יותר לקווים המנחים של [[תכנות מונחה עצמים]]. אך למרות זאת הוא איבד נתח שוק, עקב הפיגור בהוצאת עדכוני OWL למאפייניה החדישים של חלונות וכאשר בורלנד שיחררה גרסה חדשה של [[סביבת פיתוח]], חסרת תאימות למהדורות הקודמות, היה זה עקב כך, שנאלצה לרכוש ממיקרוסופט [[מספר סידורי (תוכנה)|רישיון]] לשימוש ב-MFC.
 
=== שינויים במאקרויים של ++C ===
כאשר MFC הוצגה, מיקרוסופט הרחיבה את תחביר ++C עם סדרות של [[מאקרו|מאקרויים]]יים לניהול הודעות (messages), [[טיפול בחריגים (תכנות)|חריגות]] (exceptions) וטיפול דינמי בעצמים בזמן ריצה (dynamic class instantiation), של חלונות. השינויים התחביריים להודעות חלונות נועדו לצמצום ה[[זיכרון מחשב|זיכרון]] הנדרש, באמצעות מניעת שימוש מיותר בטבלה וירטואלית (vtable) וסיפקו מבנה יותר קונקרטי למגוון הכלים המסופקים בסביבת הפיתוח [[Visual C Plus Plus|Visual C++‎]] לעריכת ולתמרון קוד בלא לנתח את כל השפה. המאקרויים לטיפול בהודעות החליפו את מנגנון ה[[פונקציה|פונקציות]] הווירטואליות שסופק על ידי ++C. מכיוון שכמה ורסיות של מאקרויים הכשילו את בדיקת הטיפוס הנעשית בידי המהדר, השימוש בהם נעשה מקור פורה ל[[באג|באגים]]ים עבור משתמשי MFC. המאקרויים המיישמים סִדרות (serialization), תמיכה בחריגות וטיפוסי זמן ריצה דינמיים (dynamic runtime types), היו פחות בעייתיים והקדימו יכולות להרחבות של שפה מבוססת תקן, במספר שנים. גרסות [[32 ביט|32־ביט]] של MFC, עבור [[Windows NT 3.1]] ו[[מערכת הפעלה|מערכות הפעלה]] מאוחרות יותר של חלונות, שמרו על מאפיינים אלו לשם תאימות.
 
=== התפתחויות מאוחרות ===
MFC קודמה מאוד בתחילה בידי מיקרוסופט. אך הבולטות שניתנה לה, הועמדה מאוחר יותר בצילן של מספר [[טכנולוגיה|טכנולוגיות]] אחרות. ההתפתחות באה כשנעשה ברור ש־MFC מורכבת מדי עבור מתכנתים רבים ולכן שמה מיקרוסופט דגש רב יותר על [[Visual Basic]] ככלי פיתוח לתוכנה מסחרית. כיום, היורש של Visual Basic ושל MFC הוא [[Windows Forms]][http://en.wikipedia.org/wiki/Windows_Forms] ב [http://en.wikipedia.org/wiki/Rapid_application_development]RAD) [[Rapid application development]]). של [[Net.]]. תוכניות C++
[[Native]][http://en.wikipedia.org/wiki/Native_mode] יכולות להשתמש ב־Windows Forms באמצעות הוספת [http://en.wikipedia.org/wiki/C_Plus_Plus_Managed_Extensions][[C Plus Plus Managed Extensions|C++ Managed Extensions]].
שורה 18:
MFC ממשיכה גם כיום לשמש לפיתוח חדש, בחברות שנכנסו להתחייבות אסטרטגית ל־++C ולפלטפורמת חלונות.
 
== יתרונות של MFC ==
* מהצד המעשי, יתרונה העיקרי של MFC הוא באספקת מודל [[תכנות מונחה עצמים]] ל־APIs של חלונות.
* יתרון נוסף של MFC הן עטיפות טיפוסי ++C עבור טיפוסי נתונים משויכי־משאב נפוצים של חלונות, שמספקים סגירת טיפול אוטומטית, כאשר האובייקט שייצר אותן חורג מה[[תחום (תכנות)|תחום]].
* MFC מספקת מסגרת עבודה של '''מסמך/תצוגה''' (Document/View) ליצירת ארכיטקטורה מבוססת MVC) [[תבנית Model-View-Controller]]).
 
== מחלקות MFC ==
ב־MFC למעלה ממאתיים מחלקות, שקוד המקור המלא שלהן, כלול בכל עותק של סביבת הפיתוח ++Visual C . המחלקות מאורגנות בעץ תורשה שבראשו המחלקה CObject ורוב המחלקות יורשות ממנה. על פי רוב, גם מחלקה שכותב המתכנת תירש מ־CObject. את רובן של המחלקות אין צורך להכיר באופן מיידי. וכאשר עולה צורך באחת מהן, ניתן לחפש מידע עליה בעזרה המקוונת של מיקרוסופט MSDN.
 
== סימון בשיטה ההונגרית ==
בשיטת סימון זו מקבל משתנה שם תאורי שמתחיל באות גדולה. כאשר השם מורכב ממספר מילים, כל מילה מתחילה באות גדולה. את השם מקדמים באותיות שמציינות את טיפוסו. לדוגמה: b תציין משתנה בוליאני (boolean), מחלקה (class) תצויין ב־c ומחרוזת (string) תצויין באמצעות str או sz (או psz אם המחרוזת מוחזקת על ידי מצביע בתכנה).
 
שורה 35:
שיטה זו נועדה ליצור אחידות בקוד ולמנוע שגיאות בשימוש במשתנים בשל חוסר תשומת לב לטיפוס של המשתנה. לשיטה נמצאו תומכים בשל יעילותה ומתנגדים בשל כיעורה, אך בפועל Windows API ו־MFC מבוססות על שיטה זו ולכן בתכנות לחלונות, כדאי להתרגל אליה ואולי אף לאמץ אותה בכתיבת הקוד.
 
== לימוד MFC ==
כאמור MFC הייתה מורכבת מדי בעבור מתכנתים רבים ורבים המתחילים ללמוד אותה נשברים באמצע הדרך.
 
בסביבת הפיתוח ++Visual C ישנם אשפים (wizards) המייצרים כמויות גדולות של קוד במהירות רבה. למרות היתרון הקיים באשפים אלו, ישנם הממליצים להתחיל את הלימוד בלא להשתמש בהם כיוון שהם עלולים לבלבל את המתלמד.
 
ייתכן שכדאי גם ללמוד באופן תאורטי את העקרונות המופשטים העומדים בבסיס השפה עוד בטרם כתיבת הקוד. עקרון שכזה לדוגמה הוא מודל מסמך/תצוגה.
 
בכדי לשלוט ב־MFC יש לדעת את הנושאים הבאים:
שורה 51:
* ספריית MFC ודרך השימוש בה.
 
== לקריאה נוספת ==
* מאיר סלע, [http://mh2000.co.il/vcpp/ Visual C++/MFC‎-מדריך מקצועי] - הוצאת 'מרכז ההדרכה 2000', 2001.
 
== קישורים חיצוניים ==
* [http://msdn.microsoft.com/en-us/library/d06h2x6e(VS.80).aspx MSDN MFC Reference]
* [http://msdn.microsoft.com/newsgroups/default.aspx?dg=microsoft.public.vc.mfc MSDN MFC newsgroup]
 
 
[[קטגוריה:ספריות תוכנה]]