עבור לתוכן

שאלה כללית בתכנות מונחה עצמים

Featured Replies

פורסם

שלום,

האם לכל מחלקה שאני בונה צריך להיות בנאי? או שאפשר להשתמש רק ב- MAIN?

מה השיקולים לכך שלא צריך בנאי אם התשובה היא לא?

תודה

פורסם

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

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

חוץ מזה, אתה יכול להגדיר את הבנאים של המחלקה שלך כ-private, ואז אי אפשר יהיה ליצור אובייקט של המחלקה מחוץ למחלקה עצמה (כלומר, תוכל לעשות לה new רק מתוך פונקציה של המחלקה עצמה, לדוגמה באמצעות פונקציה סטטית). עושים את זה כשרוצים לעשות Singleton או Named Constructors.

פורסם
  • מחבר

ואם בתוך המחלקה יש פונקציה MAIN אז הוא מבצע אותה עם בניית מופע של המחלקה באופן אוטומטי?

פורסם

לא. פונקציית ה-main חייבת להיות סטטית, מה שאומר שמריצים אותה בלי ליצור מופע של המחלקה.

פורסם
  • מחבר

אוקיי ונגיד שיש לי כמה מחלקות שלכל אחת יש MAIN. אני מתחיל את ריצת התוכנית שלי עם מחלקה ספציפית אחת.

איך אני קורא ל- MAIN במחללקה אחרת? שם המחלקה נקודה MAIN מבלי ליצור מופע?

פורסם

בדיוק. Main זו פונקציה סטטית לכל דבר.

חוץ מזה, לא נהוג שתהיה בקוד שלך יותר מפונקצייה אחת בשם Main... את ה-Main האמיתית שלך תשאיר כמו שהיא, אבל לשאר פונקציות ה-main תן שמות אחרים.

פורסם

מה השיקולים לכך שלא צריך בנאי אם התשובה היא לא?

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

ישנם מצבים בהם המחלקה היא רק אוסף של פעולות (מתודות) ללא צורץ בשמירת מידע. למשל תחשוב על המחלקה java.lang.Math זו מחלקה שמכילה כל מיני פונקציות מתמטיות כמו max avg וכו אין שום צורך לשמור מידע - הפונקציות עובדות על הארגומנטים שלהם ומחזירות תשובה.

ארכיון

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

דיונים חדשים