עבור לתוכן

כיצד ניתן לשלב אלגורתמים שנבנו כ-Console App בתוך תוכנה גראפית?

Featured Replies

פורסם

מסכים עם דובי זובי. אין צורך להשתמש ב-DLL כלל וזה סתם יאריך את העבודה.

משתמשים בקבצי DLL כאשר עלינו להשתמש באותם הפונקציות במספר תוכנות שונות (Dynamic Link Library).

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

כאשר הוא יתקדם והתוכנות יהיו הרבה יותר מורכבות כאן מחלקות יכנסו לתמונה ואולי DLL כאשר יצטרך את אותם הפונקציות למספר תוכנות.

כמה שאני אוהב לחלק את הקוד שלי למחלקות - לדעתי בתור התחלה זה רק יבלבל.

יש הבדל בין להפריד לDLL לבין שימוש במחלקות.

שניצל - refactoring זה טוב ויפה שצריך לתקן\לשפר מצב קיים - אבל למה מראש לעבוד בצורה לא נכונה?

דובי - לעשות signature casting לקוד של האלגוריתם ככה שייכנס בקלות לתוך event handler של לחיצת כפתור - זה כבר באמת מגעיל :smile1: קידוד בצורה כזאת שוחט כל זכר ל readability / scalability / מילים יפות אחרות

פורסם

יש הבדל בין להפריד לDLL לבין שימוש במחלקות.

שניצל - refactoring זה טוב ויפה שצריך לתקן\לשפר מצב קיים - אבל למה מראש לעבוד בצורה לא נכונה?

דובי - לעשות signature casting לקוד של האלגוריתם ככה שייכנס בקלות לתוך event handler של לחיצת כפתור - זה כבר באמת מגעיל :smile1: קידוד בצורה כזאת שוחט כל זכר ל readability / scalability / מילים יפות אחרות

יש ויש, כתיבת 100 מחלקות שבפועל לא עושות כלום זה טיפשי, ראיתי כבר אנשים כותבים classים שלמים שלא עושים כלום חוץ מלעטוף קלאס קיים בשם יותר יפה, אם התפקיד היחידי של הכפתור יהיה לדוגמא להעתיק קובץ ממקום X למקום Y נראה לך שבשביל זה צריך לכתוב מחלקה שלמה?

פורסם

לפותח התראד - אתה יכול להסביר בידיוק מה אתה צריך לעשות? מה אתה מנסה לעשות? מה התוכנית שלך עושה? וכו'.

פורסם
  • מחבר

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

סתם לשם הפשייטות בוא נגיד שסתם כתבתי אלגוריתם שנכתב ב-Console שמקבל מספר שלם ומחשב שורש ריבועי שלו.

עכשיו אני רוצה לשלב את האלגוריתם הזה בממשק גרפאי נוח יותר מאשר חלון ה-DOS. למשל סתם לשם הדוגמא משהו כזה:

37264563.jpg

איך ניתן לעשות דבר כזה? ב-C#

פורסם

*כל זה נכתב בהנחה שאתה עובד עם ויז'ואל סטודיו*

תעשה פרוייקט חדש ותבחר ב-Windows forms application ב-Templates.

ייפתח פרוייקט חדש כאשר המחלקה שמייצגת את ה-Form פתוחה. משמאל יהיה לך tool box. תגרור משם כפתור ו-textbox לתוך ה-Form.

תעשה דאבל קליק על הכפתור. עכשיו כל קוד שתכתוב בפנים יקרה כשילחצו על הכפתור. זה הכל. אתה יכול להעתיק לפה את החלק בקוד שעושה את החישוב שלך. מה שישתנה זה המשתנים עצמם - קודם עבדת עם משהו שהגיע מהקונסול, פה אתה לוקח מתיבת טקסט. כדי לגשת למה שכתוב בפנים אתה עושה textbox1.Text - צריך לזכור שזה משתנה מסוג סטרינג, אז צריך להמיר אותו ל-int כדי לעשות איתו חישובים.

פורסם

בנית בקונסול פונקציה שמקבלת פרמטר של מספר ומחזירה את השורש?

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

הפונקציה המקורית לא צריכה להשתנות (אם בנית אותה נכון בלי קלט ופלט)

פורסם

Console Application ו- Windows Application אלו שני דברים שונים, כאשר בתוכם אפשר להגדיר כמה מחלקות שאתה רוצה. כל מחלקה יכולה להכיל לוגיקה אחרת.

אין טעם להריץ תהליך כ- Windows Application, ובתוכו להריץ תהליך חדש של Console Application. למעשה, זה ישיג בידיוק את התוצאה ההפוכה ממה שרצית, והקוד ירוץ לאט יותר (בגלל התהליך הארוך יחסית של עליית האפליקציה, במיוחד אם מדובר ב- .net).

אם אתה מעוניין בכל זאת בחלוקה הלוגית הזו, עדיך שתיצור מחלקה נוספת שתכיל את הלוגיקה של חישוב השורש, כפי שכבר ציינו כאן. למעשה, כדי לתרגל קצת יותר טוב תכנות מונחה עצמים, אתה יכול ליצור interface עם מתודה שיודעת לבצע פעולה על מספר (double לדוגמא). מהמחלקה הזו אתה יכול לרשת ולממש את המתודה ככזו שמבצעת שורש. באותו מידה, אתה יכול לממש מחלקה נוספת שתדע להעלות בחזקת 2 (ופעולות רבות נוספות).

תתפרע.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים