none
קלאס לפונקציות כלליות C# RRS feed

תשובות

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

    בינתיים בקצרה:

    STATIC אומר שהוא בילתי תלוי ב INSTANCE של המחלקה, ז"א לא צריך לפתוח INSTANCE חדש והאלמנט ה STATIC לכן בילתי תלוי באובייקט מסויים והוא משותף לכל ה INSTNCE שנפתחו. רעיון זה מוביל למסקנה:

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

    מתודות כאלה שמתאימות לעבודה ללא פתיחה של INSTANCE באמת יעיל לפעמים להכניס למחלקה משותפת כללית. אני משתמש בשם הגיוני תמיד ולהן הייתי הולך על כיוון של KStaticFuncs לשם המחלקה


    signature

    יום שלישי 11 יוני 2013 14:47
    מנחה דיון

כל התגובות

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

    בינתיים בקצרה:

    STATIC אומר שהוא בילתי תלוי ב INSTANCE של המחלקה, ז"א לא צריך לפתוח INSTANCE חדש והאלמנט ה STATIC לכן בילתי תלוי באובייקט מסויים והוא משותף לכל ה INSTNCE שנפתחו. רעיון זה מוביל למסקנה:

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

    מתודות כאלה שמתאימות לעבודה ללא פתיחה של INSTANCE באמת יעיל לפעמים להכניס למחלקה משותפת כללית. אני משתמש בשם הגיוני תמיד ולהן הייתי הולך על כיוון של KStaticFuncs לשם המחלקה


    signature

    יום שלישי 11 יוני 2013 14:47
    מנחה דיון
  • טוב יש לי זמן עכשיו לחזור לנושא ולהתחיל בברוכה הבאה לפורום ולקהילות MSDN כמובן

    האם הנקודה שרשמתי לגבי השימוש ב STATIC ברורה ועונה על השאלה?


    signature

    יום שלישי 11 יוני 2013 18:09
    מנחה דיון
  • תודה על הקבלת פנים :) ואם כבר קבלת פנים למה האתר פה תקע לי את האינטרנט אתמול מאז שנרשמתי.

    תודה על ההתיחסות.

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

    משיטוטי באינטרנט מצאתי פיתרון של service locator/

    האם כדאי או שזה סתם סירבול עבור פונקציות כלליות?

    יום רביעי 12 יוני 2013 06:15
  • תחילה בואי נעבור לדבר בשפה אחת :-) תחליטי אם את רוצה לדבר בעברית ואז מדברים על מחלקה או באנגלית ואז נרשום את כל המשפט באנגלית כולל המילה CLASS. השיטה של לדבר בעברית ולצרף מילים לועזיות מתאימה לפרופסורים חסרי יכולת מעשית שרוצים להראות ידע וחושבים שאם הם יפציצו במילים לועזיות יחשבו שהם מבינים יותר.

    כמו שילד לא אמור להגיד אני "אני רוצה EAT" אלא "אני רוצה לאכול" :-)

    נחזור לשאלה...

    את צריכה להבדיל בין מחלקה לבין INSTANCE של מחלקה. אלו דברים שונים לחלוטין. מחלקה היא משהו וירטואלי לא מוחשי. אפשר לראות במחלקה כאוסף של הגדרות (מתודות, מאפיינים וכו') שהן למעשה תקן כלשהו שמגדיר לנו את האובייקטים שיממשו את התקן הזה. אם נחשוב על דוגמה טובה מהחיים שלא קשורה לתכנות אז אפשר לחשוב על רכב (מכונית). לכל רכב יש מפרט שמגדיר את הגלגלים שלו, המנוע שלו ועוד. המיפרט הוא לא משהו מוחשי אלא רק ספר הוראות והגדרות, הוא כמו מחלקה רק מגדיר את הרכב. מי שבונה את הרכב לפי המפרט מממש את המיפרט למשהו מוחשי שנקרא "רכב"

    INSTANCE הוא מימוש של של מחלקה למשל. כך למשל אובייקט יכול להיות מימוש של מחלקה.

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

    Service locator זה משהו אחר שאפשר לעשות בו שימוש או לא. זה כבר חלק מתכנון האפליקציה שלך בהתאם לאפיון שלה. אי אפשר לקבוע בצורה חד משמעית כיצד לתכנן אפליקציה כשאין אפיון מלא כמובן. בשלב זה היתי ממלית לך אבל לבחור בדרך הפנימית הפשוטה של מחלקה הכוללת פונקציות static לצרכים שאת מתארת (לפחות לפי הנתונים שיש לנו כרגע)

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


    signature

    יום רביעי 12 יוני 2013 06:44
    מנחה דיון
  • תודה על הקדשת הזמן לתשובה מפורטת.

    באשר לעברית/אנגלית, אני רוצה לכתוב שאלות בעברית כי כך הכי ברור לי שבטוח הבנתי ואת השאלה /התשובה.

    אבל אני פשוט מתעצלת לעבור כל הזמן מעברית לאנגלית.. ענין של עצלנות.

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

    ככל שיותר העמסתי במילים לועזיות בראיונות ככה יותר התלהבו ממני.

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

    (אולי כי הוא להבין? ;) )

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

    יום רביעי 12 יוני 2013 07:56
  • צודקת לגבי ה "אפליקציה" :-) LOL כולנו חוטאים במילים שבעברית לא נשמעות להם מדוייקים והרגלים (התרגומים לא מדוייקים כשהם לא מהווים תרגום רישמי). בואו ננסה את המירב לדבר עברית :-)

    * דרך אגב גם אני מגיע במקור מVB.NET ולמעשה עוד מ basic אם רוצים לקחת 20 שנה אחורה ויותר :-) ואחר כך VB ואחר כך עוד כמה דברים בדרך כולל VB.NET כאמור וכמובן C# (וגם C היה בדרך בתקופת הלימודים באונירסיטה).

    לדעתי מעבר בין שפות הוא לא משהו מורכב. בסופו של דבר ההבדלים הם רק במבנה ובמילים ומעט בגישה... הלוגיקה זהה. אלו דברים טכניים שאפשר ללמוד אבל יכולת היא משהו לא נלמד (לדעתי). עם כל זה ולמרות שהשפות VB.NET ו C# שייכות לאותה טכנולוגיה וכל מה שעושים באחת אז עושים גם באחרת והפוך, הנסיון שלי הראה שרוב המפתחים בארץ שנתקלתי בהם ב VB.NET מגיעים עם רקע לא טוב והם יותר עובדים בשיטת גרור הדבק. מצטער על ההכלה כלפי מהי שעובד ב VB.NET ואולי זה מקרה אבל זה מה שאני רואה כשיוצא לי לראיין/לבחון מפתחים.

    השאלות שלך כאן למשל אינן קשורות ל C# אלא לטכנולוגיה דוט-נט ולתכנות בכלל :-) לכן השאלות שלך טובות לדיון לדעתי.

    אל תשכחי לספר לנו מה יצא בסוף :-)
    * כמובן אם שאלות גם אבל גם אם הכל הולך טוב נחמד לשמוע בסיום


    signature

    יום רביעי 12 יוני 2013 15:14
    מנחה דיון