PracticU

תרגילים על Interoperability

בלי כתוביותעם כתוביות
PracticU › קורס תכנות מתקדם - #Advanced .NET C › תרגילים על Interoperability
מילון מושגים:
C# - שפת תכנות מונחית עצמים של מיקרוסופט, המשמשת בעיקר לפיתוח יישומים על פלטפורמת .NET.
פונקציה - קטע קוד בעל שם שמבצע משימה מוגדרת, מקבל ערכי קלט (פרמטרים) ויכול להחזיר תוצאה. מאפשרת לארגן קוד ולהשתמש בו שוב.
API - ממשק תכנותי שמגדיר כיצד תוכנה אחת פונה לאחרת ומחליפה איתה נתונים ופעולות.
DLL - קובץ ספרייה ב-Windows המכיל קוד ופונקציות שתוכנות שונות יכולות לטעון ולהשתמש בהן במשותף.
Visual Studio - סביבת פיתוח משולבת (IDE) של מיקרוסופט לכתיבה, ניפוי והרצה של קוד, בעיקר בשפות .NET.
אובייקט - יחידה בתכנות מונחה עצמים שמאגדת נתונים (תכונות) ופעולות (מתודות). נוצר בדרך כלל ממחלקה המשמשת כתבנית.
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
מערך - מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).

תרגילים על Interoperability
מטרת התרגילים היא לתרגל קריאה לקוד שאינו C# מתוך תוכנית C#: פונקציות API של Windows, DLL בשפת C, DLL של COM, ועבודה עם פוינטרים.
התרגילים
1. כיבוי המחשב: פרויקט Windows Forms עם לחצן אחד, שבלחיצה עליו מכבה את המחשב. משתמשים בפונקציית API של Windows שמבצעת shutdown, וקוראים לה מ-C#. את הפונקציה המתאימה מחפשים בגוגל או במדריך ה-API.
2. DLL בשפת C: יוצרים ב-Visual Studio DLL עם struct בשם Rectangle, בסדר השדות width, height, x, y. נכתבות בו שתי פונקציות שמקבלות Rectangle ומחזירות int, אחת לשטח (getArea) ואחת להיקף (getPerimeter), והן נחשפות מחוץ ל-DLL.
3. קריאה מ-C#: בקונסול ב-C# מגדירים struct בשם Rectangle עם הסדר x, y, width, height, קוראים לשתי הפונקציות ומציגים את התוצאות. התרגיל שואל אם הערכים נכונים, ואם לא, צריך לטפל בכך.
4. DLL מסוג COM: מוצאים רפרנס ל-DLL משפת C++ או Visual Basic 6, יוצרים אובייקט ממחלקה בתוכו, מציבים ערכים וקוראים לפונקציות. אם יש שגיאה, מנסים DLL או פונקציה אחרים עד שמצליחים.
5. פוינטרים: מערך int בגודל 100, ופוינטר שמוצב בתחילתו. מכאן עובדים רק דרך הפוינטר, ולא דרך המערך: מכניסים ערכים רנדומליים ומציגים את הערכים, הסכום, הממוצע והמקסימום. מותר להשתמש בכמה פוינטרים.
6. Stack segment: אותו תרגיל, אבל המערך מוקצה ב-stack ולא ב-managed heap.
אחרי התרגילים תהיה לכם ניסיון בקריאה מ-C# לפונקציות מ-DLL ו-COM ובעבודה ישירה עם פוינטרים.
השיעור הבא בקורס: Secure Code

פרקי ההרצאה: תרגילים על Interoperability

  1. 00:00

    כיבוי המחשב דרך Windows API

  2. 00:41

    יצירת DLL בשפת C

  3. 01:17

    קריאה ל-DLL מתוך C#

  4. 01:51

    רפרנס ל-DLL משפות אחרות

תמלול ההרצאה: תרגילים על Interoperability

הטקסט המלא של הדקות הראשונות בהרצאה «תרגילים על Interoperability» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    מגילים בנושא interoperability. צרו פרויקט Windows Forms Application שמכיל טופס עם לחצן אחד. כאשר המשתמש לוחץ על הלחצן הזה, כבו לו את המחשב.

  2. 00:15

    בצעו shutdown למחשב שלו. בצעו את זה על ידי פונקציית API של Windows שקיימת איפשהו בין הפונקציות של Windows, זאת הפונקציה ש-Windows משתמש איתה בשביל לכבות לכם את המחשב, ובצעו את הקריאה כמובן דרך C-Sharp.

  3. 00:30

    תחפשו בגוגל או ב-API גייד איזה פונקציה API מתאימה יכולה לעשות דבר כזה. צרו DLL בשפת C בעזרת visualstudio.net ובתוכו צרו סטראקט שנקרא ריקטנגל שמכיל width, height, x ו-y ממש בסדר הזה.

  4. 00:50

    width ראשון, height שני, x שלישי, y רביעי. לאחר מכן צרו באותו DLL שתי פונקציות getArea שמקבלת ריקטנגל ומחזירה int והיא אמורה להחזיר את שטח הפנים של המלבן.

  5. 01:03

    גט פרימטר מקבלת ריקטנגל ומחזירה אינטג'ר, והיא אמורה להחזיר את היקף המלבן. חשפו את שתי הפונקציות האלה מחוץ ל-DLL, צרו קונסול אפליקיישן ב־C-Sharp, צרו מבנה סטראקט ב־C-Sharp שנקרא גם כן ריקטנגל, ומכיל X, Y, Wid והייט אבל בסדר הזה.

  6. 01:24

    קודם כל X, אחר כך Y, אחר כך Wid ואחר כך הייט. בתוך המיין צאו אובייקט מהריקטנגל ב-C-Sharp.

  7. 01:32

    קיראו ל-Get Area של ה-DLL שבניתם בשפת C ושלחו לה את המלבן, הציגו את התשובה שמוחזרת. קיראו ל-Get Perimeter גם כן עם אותו מלבן והציגו את התשובה שמוחזרת.

  8. 01:46

    האם הערכים שמוחזרים הם ערכים נכונים לפי ממדי המלבן ששלחתם? אם לא, כמובן אתם צריכים לטפל בזה. מצאו עד רפרנס לאיזשהו DLL משפת C++ או Visual Basic 6,

לקורס המלא: קורס תכנות מתקדם ב‑#C ודוט-נט

ההרצאה הקודמת: Interoperability - חלק 2

ההרצאה הבאה: Secure Code

הרצאות קשורות מקורסים אחרים

  • תרגילים 1-3
  • תרגילים על מטריצות בג'אווה
  • תרגילים מסכמים בנושא עיצוב

קורסים נוספים במסלול

  • קורס WinForms - תוכנות רגילות בווינדוס
  • פרויקט מעשי ב-#C - בונים מחשבון פשוט
  • פרויקט מעשי ב-#C - ספר טלפונים
  • פרויקט מעשי ב-#C - תוכנת צייר
  • קורס ADO.NET - חיבור אתר למסד נתונים
  • קורס WCF - תקשורת למתקדמים בדוט-נט