OOP, OOAD

tberger

New member
OOP, OOAD

שאלה קצת פילוסופית ונוגעת בעיקר בתיכנון ועבודה נכונה עם אוביקטים. כאשר לומדים על תיכנות מוכוון אוביקטים בשלבי הפיתוח השונים: ניתוח, עיצוב ובנייה (תיכנות) מתחילים להתייחס לאוביקט כאל רכיב המכיל את הנתונים והפעולות בנוגע ליישות פיזית או לא מוחשית שהאפליקציה צריכה לטפל בה. לדוגמא עובד בשם משה, מכונית סוברו משנת 1992 שמספרה 5678 וכדומה. התבנית ליצירת האוביקטים היא כמובן המחלקה המכילה את הפעולות ואת מבנה הנתונים הדרוש ליצירת האוביקט. האפליקציה יוצרת אוביקטים שונים המתקשרים ביניהם לשם יצירת תהליך מסויים המשפיע על הנתונים באוביקטים. לעומת הסבר ושיטה זו כאשר לומדים שפה ספציפית או סביבת פיתוח כמו JAVA (טפו טפו טפו האמת שאיני מכיר) או כמובן NET. (הנהדרת) עובדים בשיטה אחרת (או שאיני מכיר). בעיקר בכל הקשור לעבודה מול מסדי נתונים, עובדים עם אוביקטים של הסביבה כמו ADO.NET, שבה, יש אוביקטים המכילים את הנתונים כמו DataSet ולא מייצרים אוביקט לכל עובד למשל אלא מחזיקים את כל נתוני העובדים בטבלה מקומית בתוך DataSet ועליהם פועלים. ובכן השאלה היא מהי עבודה נכונה בתיכנות מוכוון אוביקטים? האם יש אוביקט לכל עובד עם הנתונים והשיטות הדרושות או שיש מחלקה המכילה את השיטות וישר אליה פונים ללא יצירת אוביקטים. האם יש שיטת עבודה אחרת? איך מציגים ב UML את האוביקטים/מחלקות? אני מקווה ששאלה זו תוביל לדיון איך עובדים נכון עם OOAD ו OOP במערכות מסוגים שונים בגדלים שונים ובסביבות מיחשוב שונות ואולי נוציא מאמר המסכם זאת. תודה
 

orenphp

New member
למה להתחיל לפתח תיאוריות כאשר MS ..

עשו את רוב העבודה בשבילנו. קריאה מהנה.
 

orengolan

New member
שאלה מצוינת!

אבל נראה לי שלפי התגובה אליה, רוב האנשים כאן לא בקיאים בנושאי design כאלה. דעתי הצנועה, בנושא (ועוד לא קראתי את הלינק כי הוא ארוך מדי לשעה כזו) היא שיש הרבה גורמים שקובעים איך לייצג את בסיס הנתונים בזיכרון של התוכנית שלך. לדוגמא - אם אתה אמור לשלוף הרבה רשומות של לקוחות, אתה לא יכול להרשות לעצמך ליצור אובייקט 'לקוח' עבור כול רשומה, משום שכול אובייקט כזה עלול לתפוס הרבה מקום בזכרון, לכן תנסה לשלוף מעט רשומות, ואז אולי תוכל ליצור מספר מועט של אובייקים. אפשרות נוספת היא לשלוף את הנתונים לתוך dataset, משום שזהו מבנה נתונים דו מימדי שיכול לאחסן בצורה טקסטואלית המון רשומות. ואז אתה יכול להחזיר את ה dataset לשכבת ה presentation, וכלל לא ליצור אובייקטים, אלא פשוט להציג את הנתונים. אני לא מכיר את ה dataset כול כך טוב, אז אני לא יודע אם אפשר לחפש נתונים בתוכו או למיין וכו'. אם לא, יתכן ותצטרך ליצור אובייקטים, או מבני נתונים מסוימים, ולהכניב אליהם את נתוני ה dataset. אגב, האם זה נכון להעביר את ה dataset משכבת ה database לשכבת ה business ועד לשכבת ה presentation? אשמח אם מישהו יסביר קצת על הנושאים הללו..
 

orenphp

New member
תגיד, אתה לא חושב שזה טיפה...

חוצפה מצידך להגיד משהו כמו: "אבל נראה לי שלפי התגובה אליה, רוב האנשים כאן לא בקיאים בנושאי design כאלה. דעתי הצנועה, בנושא (ועוד לא קראתי את הלינק כי הוא ארוך מדי לשעה כזו)" שלחתי לו לינק בדיוק לנושא של איך לבנות את הDAL ואת הBusiness Entities שלו. הם גם מדברים שם איך להעביר את הentity בין השכבות השונות, וזה עונה בדיוק על השאלה שלו. במקום שתתן הערות על רמת האנשים בפורום, תנסה לתת הערות שעונות על השאלות שנשאלו. בלינק ששלחתי, שנורא ארוך לשעה מסתבר, יכלת לראות בבירור שישנן כמה דרכים לממש את אותו "אובייקט מייצג טבלה/אות DB". 1. xml. 2. strong typed dataset. 3. dataset. 4. custom entity class. כמובן שיכלתי לכתוב כאן בדיוק על כל אחת מהדרכים, להסביר איך זה מתחבר לשליפה מהDB ועד העברה חזרה של היישות לשכבות העליונות, אבל למה לעשות את זה כשהכל מפורט(כולל דוגמאות) כל כך טוב בלינק שצירפתי !? אז אני אגיד שוב, קריאה מהנה.
 

orengolan

New member
אורן, אני לא חושב שצריך להרים את

הקול. אני ממש שומע אותך צורח... "בלינק ששלחתי, שנורא ארוך לשעה מסתבר, יכלת לראות בבירור..." הלינק ששלחת מצויין. הוא אצלי ב favorites החל מאתמול בלילה. אבל אתה חייב להבין שהבחור ששאל את השאלה לא בעל נסיון כמוך, וניתן היה לראות את זה לפי השאלה שלו. שים לב לתגובה שלו - המאמר הזה 'גדול' עליו בשלב זה של הקריירה המקצועית שלו. הוא, אני, ורבים אחרים בפורום זקוקים ליותר מלינקים. גם אם אלו לינקים מצויינים. אתה רושם את זה: "במקום שתתן הערות על רמת האנשים בפורום, תנסה לתת הערות שעונות על השאלות שנשאלו" אני ניסיתי לתת לבן אדם קצת ממה שאני מכיר על הנושא, למרות שאני לא מבין יותר מדי, ואתה בא אלי בטענות? לגבי 'החוצפה' שלי - שים לב לשאלות הממוצעות שנשאלות פה. רובן לא רשורות ל architecture או ל design. לכן הבעתי את דעתי שרוב הנפשות הפועלות כאן אינן בקיאות בנושאים אלו! יום נפלא לכולנו, מקווה שהבנת את דברי
 

orenphp

New member
...

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

VoodooKid

New member
OOD

בקשר לדוג' שנתת עם העובדים אז... ההסתכלות שלך לא נכונה כי אתה נכנס לקרביים של המערכת וכשאתה מתכנן אתה צריך לראות אותה בגדול... זה כמו שאני עכשיו יגיד לך, כמובן שזו דוגמא מוגזמת, למה אתה עושה עובד?? תעשה מחלקה רגליים, מחלקה ידיים וכו'... האובייקט DataSet מחזיק כמה רשומות בו זמנית כי בד"כ כשאתה עובד עם מסדי נתונים אתה רוצה להתייחס להרבה עובדים בו זמנית ולבצע חיפושים/ מיונים/ שינויים על הרבה עובדם בו זמנית. בקשר ל UML: UML זו שפה בפני עצמה, אומנם לא שפת תכנות, אבל יש לה את הכללים שלה. וכמו כל שפה יש לה הסברי תחביר... גגל את צמד המילים UML Syntax ואני בטוח שתמצא מלא קישורים. שיסבירו את זה ( אני לא מסביר עכשיו כי זה פשוט נרחב מאוד).
 

tberger

New member
OOA->00D->OOP

קודם כל תודה לכולם. עוד לא קראתי את המאמר כי הוא באמת ארוך וכדי להיכנס לעומק נראה לי שמצריך מספר ימים להבין ולנסות לתרגל ולכתוב קוד, ויכול להיות שכל התשובות מופיעות בו. כ"כ אני יודע UML אבל רק ברמה של לימוד מקורס ניתוח מערכות ולא ברמה של יישום בשטח או נסיון רב. בכל חיפוש על נושא ה UML אני רואה רק שמתייחסים לאוביקטים בודדים לכל יישות ולא מפתחים את נושא העיצוב ואיך באמת אמור להראות היישום ב OOP. כ"כ קראתי ולמדתי את נושא השכבות השונות ביישום לפי הצעות MS ואת האפשרויות למעבר המידע בין השכבות שתלוי במספר גורמים ביניהם האם היישום מבוזר או מקומי ועוד. מה שמעניין הוא איך בפועל מיישמים את העבודה עם אוביקטים בכל שלבי הפיתוח: ניתוח, עיצוב, וכמובן קידוד ומהו המעבר בין השלבים השונים. האם כן בונים אוביקט לכל Instance או כל הנתונים באוביקט אחד (למשל DataSet) ומחלקה אבסטרקטית לטיפול בנתונים? איך מציגים ב UML בשלבים השונים? אם יש כאן אנשים עם נסיון מהשטח אשר יכולים להביא דוגמאות או למישהו יש קישור לאתר העוסק זה יהיה הטוב ביותר.
 
למעלה