ניתוח ועיצוב מערכות תוכנה אביב 2012

Slides:



Advertisements
Similar presentations
Completeness and Expressiveness. תזכורת למערכת ההוכחה של לוגיקה מסדר ראשון : אקסיומות 1. ) ) (( 2. )) ) (( )) ( ) ((( 3. ))) F( F( ( 4. ) v) ( ) v ((
Advertisements

Object Oriented 33 MCSD DORON AMIR
ממיבחניםC שאלות ++.
תוכנה 1 סמסטר א ' תשע " ב תרגול מס ' 7 * מנשקים, דיאגרמות וביטים * לא בהכרח בסדר הזה.
מבוא למדעי המחשב לתעשייה וניהול
בתרגול הקודם הורשה: –ניתן להרחיב רק מחלקה אחת –כל מה שלא private – עובר בהורשה –המילה השמורה super –יצירת היררכיה –Object היא שורש ההיררכיה –דריסה אופרטור.
1 Formal Specifications for Complex Systems (236368) Tutorial #4 Refinement in Z: data refinement; operations refinement; their combinations.
Present Progressive Present Progressive הווה עכשווי / ממושך.
A smart phone application for sales agents בס"ד.  סוכני מכירות מגיעים ללקוח ומבצעים הזמנות ע " פ דרישות הלקוח  סוכן המכירות נעזר בקטלוג מוצרים, טלפון.
היכרות עם אקסל 1. 2 נושאי המפגש היכרות עם אקסל – אלכסוני הקסם שימושים בהוראה: מחשבון סודי ופעילות לחנוכה שימושים נוספים: ממוצע.
מתמטיקה בדידה תרגול 3.
תמחיר תהליך. מערכת תמחיר תהליך מערכת זו נועדה לספק מידע, כמו מערכת תמחיר הזמנה, על עלות המוצרים שיוצרו בתקופה ועל עלות המוצרים שבתהליך הייצור בסוף התקופה.
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 1 פרק 10 Packages.
משטר דינמי המשך – © Dima Elenbogen :55 חידה שכדאי לעבור עליה: 2011/ho/WCFiles/%D7%97%D7%99%D7%93%D7%94%20%D7%A2%D7%9D%20%D7%91%D7%95%D7%A0%D7%95%D7%A1.doc.
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
שאלות חזרה לבחינה. שאלה דיסקים אופטיים מסוג WORM (write-once-read-many) משמשים חברות לצורך איחסון כמויות גדולות של מידע באופן קבוע ומבלי שניתן לשנותו.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
1 Formal Specifications for Complex Systems (236368) Tutorial #5 Refinement in Z: data refinement; operations refinement; their combinations.
תרגול חזרה. מבנה האובייקט תאר את מבנה האובייקט כולל מבנה טבלאות הפונקציות הוירטואליות עבור התכנית הבאה struct A { int x; virtual void a() {}; }; struct.
Formal Specifications for Complex Systems (236368) Tutorial #6 appendix Statecharts vs. Raphsody 7 (theory vs. practice)
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site : T.A. :Emilia Katz.
מבני בקרה לולאות. שאלה #1 שאלה ב' – תכתוב תוכנה הכותבת את תפריט הבאה Type 1 to find the area of a circle Type 2 to find the circumference of a circle.
טיב פני שטח (טפ"ש) טיב פני שטח- רמת החלקות של המשטח.
Data Structures, CS, TAU, Perfect Hashing 1 Perfect Hashing בעיה : נתונה קבוצה S של n מפתחות מתחום U השוואה ל - Hash : * טבלה קבועה (Hash רגיל - דינאמי.
1 Data Structures, CS, TAU, Perfect Hashing בעיה: נתונה קבוצה S של n מפתחות מתחום U השוואה ל- Hash : * טבלה קבועה (Hash רגיל - דינאמי) * רוצים זמן קבוע.
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
עקרון ההכלה וההדחה.
יחס סדר חלקי.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
תחשיב היחסים (הפרדיקטים)
גיאולוגיה סטרוקטורלית מעגלי מוהר למעוות סופי (המשך...)
מתמטיקה בדידה תרגול 2.
Safari On-line books. מה זה ספארי ספארי זו ספריה וירטואלית בנושא מחשבים היא כוללת יותר מ כותרים כל הספרים הם בטקסט מלא ניתן לחפש ספר בנושא מסוים.
1 Formal Specifications for Complex Systems (236368) Tutorial #3 Z introduction and notation (contd.); Birthday book example (Chapter 1 in the book)
1 מבוא למדעי המחשב backtracking. 2 מוטיבציה בעיית n המלכות: נתון: לוח שחמט בגודל. המטרה: לסדר על הלוח n מלכות כך שאף אחת לא תאיים על השנייה. דוגמא: עבור.
מבוא לחשבונאות ניהולית. היחס בין חשבונאות פיננסית לניהולית פיננסיתניהולית פנימיים מותאמים לארגון בחלקים מסוימים יכול להיות : תחזית כמותי או איכותי מוניטרי.
תרשים המחלקות ותרשים העצמים 1. חלק שלישי: ניתוח ועיצוב מערכות מידע באמצעות שימוש ב-UML ומתודולוגיית ה-Unified Process (UP) E1 3 E2 2.
Structure. מה לומדים היום ? דרך לבנות מבנה נתונים בסיסי – Structure מייצר " טיפוס " חדש מתאים כאשר רוצים לאגד כמה משתנים יחד דוגמאות : עובד : שם, טלפון,
Presentation by Gil Perry Supervised by Amos Fiat 1.
מטא-מודלים Metamodels. מטא-מודל - דגשים לפתרון לקרוא את הכל – זה ארוך אבל הכל נמצא בפנים ! להסתכל על התרשימים הויזואליים ולראות מה מזהים. לקשר בין התמונה.
Kashrut is a mitzvah in the Torah and has been passed on through generations. Kashrut is a chok. this means that we don’t know why we do it but we.
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
Methods public class Demonstrate { public static void main (String argv[]) { public static void main (String argv[]) { int script = 6, acting = 9, directing.
תכנות אסינכרוני, תקשורת ופיתוח אפליקציות ל- Windows 8.1 ואפליקציות ל- Windows Phone 8 Control (Part II)
 Client, Supplier ומה שביניהם ( ADT!).  שאלה 1: יצירת ADT עבור מעגל במישור נניח שלקוח מעוניין בפעולות הבאות : הזזת מעגל וחישוב שטח מעגל. הספק יספק ללקוח.
שיאון שחוריMilOSS-il מוטיבציה  python זה קל ו C זה מהיר. למה לא לשלב?  יש כבר קוד קיים ב C. אנחנו רוצים להשתמש בו, ולבסס מעליו קוד חדש ב python.
1 תרגול 11: Design Patterns ומחלקות פנימיות אסף זריצקי ומתי שמרת 1 תוכנה 1.
Java Reflection הוכן על-ידי אחמד ג'בארה
קצת היסטוריה 1981דיווח ראשון על תסמונת כשל חיסוני נרכש בקרב מספר הומוסקסואלים. 1981דיווח על ביטויים שונים של איידס בקרב מזריקי סמים, חולי המופיליה, מקבלי.
שימוש בעצם ממחלקה אחרת כמאפיין במחלקה הנוכחית
Object Oriented Programming
Object Oriented Programming
ריקי דרורי דירקטורית שיווק איזורית, גוגל אירופה ומזה"ת
Object Oriented Programming
מבוא לתכנות מונחה עצמים Object Oriented Programming
תוכנה 1 תרגול 13 – סיכום.
SQL בסיסי – הגדרה אינדוקטיבית
תכנות מכוון עצמים ושפת JAVA
פרוקטוז, C6H12O6 , חד-סוכר מיוחד
ממשקים - interfaces איך לאפשר "הורשה מרובה".
Marina Kogan Sadetsky –
ניתוח מערכות מידע תכנות ב C#
תכנות מכוון עצמים ושפת JAVA
תזכורת על מה דיברנו שיעור שעבר? בנינו אתר אינטרנט עם כותרות
Shell Scripts בסביבת UNIX
תוכנה 1 תרגול 13 – סיכום.
מבוא למערכות מידע פרק 1.
תוכנה 1 תרגול 13 – סיכום.
פולימורפיזם מתקדם ממשקים בC# עריכה ועיצוב: קרן הרדי
Presentation transcript:

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

A Reminder: What's In Our Modeller's Toolbox? Class Diagram Class Association Self association Aggregation Composition Dependency Object Diagram Qualifiers Association Class Inheritance (Generalization) Review of: Enumerations Data Types Association Classes Self-Association

A Reminder: What's In Our Modeller's Toolbox? Enumerations Data Types Association Classes Self-Association לא מקשרים למחלקת אנומרציה – כי אין לה מופעים, וקשר משמעותו קישור (Link) בין מופעים בזמן ריצה. הסימון <<enumeration>> - סטריאוטיפ ב-Visual Paradigm (לא חובה).

A Reminder: What's In Our Modeller's Toolbox? Enumerations Data Types Association Classes Self-Association מגדירים טיפוס חדש – מעין פרימיטיבי תוצרת המשתמש - ע"מ להכיל מידע. בתרגום לקוד: public abstract class Entity{ public Coordinate location; } public class Coordinate{ int x; int y; המחלקות המשתמשות מכירות את טיפוס-המידע – אך טיפוס המידע לא מכיר את המחלקות המשתמשות בו.

A Reminder: What's In Our Modeller's Toolbox? Enumerations Data Types Association Classes Self-Association עובד ב-Visual Paradigm – אך לא קיים תחבירית! Association Class מתייחסת לקשר אחד ויחיד בלבד. באופן כללי – מהרגע שמחלקה מסויימת הינה מחלקת קשר, היזהרו ושימו לב! לפני שאתם מקשרים אותה למחלקות נוספות, כי יש לה סמנטיקה כובלת מאוד.

A Reminder: What's In Our Modeller's Toolbox? Enumerations Data Types Association Classes Self-Association משמש למידול "רקורסיבי" – כזה בו יש יחסים בין מופעים שונים של אותה מחלקה. למשל: משתמשים בפייסבוק הם בעלי תמונות, אפליקציות וכו' – והם גם בעלי חברים שגם הם משתמשים בפייסבוק (= קשר בין מחלקה לעצמה).

Modus Operandi: Divide and Conquer Read entire story once. Advance sentence by sentence and model. Read ahead only if you need clarification. Change design whenever needed basing on new data. Iterative work – do and fix and do and fix and do and… Submit.

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

קופת חולים לפניכם תיאור מערכת למעקב אחר חולים באחת מקופות החולים. במערכת זו יכולים החולים להזמין ביקורים אצל רופאים ולעיין בתיקם הרפואי. הזמנה כוללת את הרופא, הזמן והמקום. התיק הרפואי של חולה כולל את היסטורית הביקורים, צילומים ומסמכים למיניהם וכן תוצאות בדיקות מעבדה המוזנות למערכת ממערכת חיצונית. הרופא מזין את פרטי הביקור (וכמובן בודק את החולה אם צריך) הכוללים את תלונות החולה, את האבחנות, את הטיפול הנדרש, וכן את התרופות המומלצות. בסוף התהליך, מודפס תיעוד הביקור, מרשמים לתרופות בעת הצורך, וכן קבלת לתשלום. המרשם של תרופה מסוימת כולל את זיהויה, תיאורה וכן את המינון הנדרש. מנהל השירות של קופת החולים יכול להפיק דוחות שונים על ההזמנות והביקורים. הנחת יסוד: מטופל יכול לקבוע יותר מכמה תורים קדימה (ולכן אין זה Association Class). "תיק רפואי" כרגע ריק – נשלים אחר כך. Aggregation?

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

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

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

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

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

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

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

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

פתרונות אפשריים אחרים: הוצאת מקום התור למחלקה (חיבור להזמנה – כמו עם הרופא). הורדת הרופא לדרגת מחרוזת בהזמנה (הכנסתו כשדה להזמנה – כמו עם המקום). אפשרות להגיע לפגישה בלי הזמנה – ירושה ואפשרות להיות קשור ישירות לחולה. הוספת מחלקות עבור תלונת חולה, דיאגנוזה. (או אפילו Enumerations.) לשינויים בקוד (או בשלב שלנו – במידול) שאינם משפיעים על הפונקציונליות קוראים Refactoring ועליהם תלמדו בקורס "הנדסת תוכנה" בסמסטר הבא. http://en.wikipedia.org/wiki/Code_refactoring http://he.wikipedia.org/wiki/Refactoring

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

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

חברת הפרוייקטים 'אוהד' החברה מציעה פרוייקטי מדף ללקוחות. נראה כמו התחלה מבטיחה. שימו לב ששמות מחלקות – בצורת-יחיד: מופע של המחלקה לקוח יתאר לקוח יחיד, של מוצר מדף – מוצר מדף יחיד, וכן הלאה. האם "הצעה" היא קישור? אולי נקשר רק בין לקוחות שהסכימו לקחת מוצר ובין המוצר? האם לקוח נשמר במערכת גם אם לא מוצעים לו כרגע שום מוצרים? (*..0) האם מוצר נשמר גם אם אינו מוצע לאף לקוח? (*..0) נמשיך ונראה.

חברת הפרוייקטים 'אוהד' לקוחות של החברה יכולים להיות חברות או אנשים פרטיים. אולי הירושה הזאת מיותרת ואולי לא – נראה בהמשך מה ההבדלים ונפעל לפיהן. בכל מקרה, "לקוחות יכולים להיות או X או Y" – סימן שייתכן שיש כאן ירושה.

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

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

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

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

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

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

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

חברת הפרוייקטים 'אוהד'

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

חברת הפרוייקטים 'אוהד' נשים לב שלפרוייקט מחיר בסיס, וחברה יכולה לקבל בסיס אחר. נניח שהנושא הוא בטקסט חופשי ולא נושא מתוך רשימת נושאים (Enum או מחלקה...).

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

סימון מחלקה כ-Abstract – דרך II

סימון מחלקה כ-Abstract – דרך II בגירסאות החדשות של VP הסטריאוטיפ "מופשט" אינו מובנה ויש להוסיפו ידנית.

פתרון

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

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

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

כביש בין-עירוני קיים סוג אחר של רכבים שבנוסף ליכולת לקבל שירות, הוא גם ספק ומספק סחורה לבתי העסק בכביש. כלי רכב יכול לשרת מס' בתי עסק, אך פעם אחת בחודש בלבד. לאותו בית עסק יכולים להיות מספר ספקים. המערכת שומרת את נתוני האספקה תוך כדי ציון: זיהוי רכב, זיהוי בית העסק, תאריך, כמות וחשבון. יש לשמור נתונים של חודש אחד בלבד. נתוני אספקה נשמרים רק עבור חודש אחד – ואספקה מתבצעת רק פעם בחודש. כלומר: לכל קשר של אספקה (ספק שעובד עם לקוח), אפשר לשמור רק רישום (=מופע) אחד של נתוני ההספקה!!!

כביש בין-עירוני בתי העסק הנמצאים בכביש הם: תחנות דלק, חנויות ומסעדות. לכל בית עסק יש שם (ערך ייחודי). בתחילת היום כל בית עסק מקליד נתונים יומיים על עצמו. תחנות דלק מקלידות מחירי דלק, חנויות מקלידות מוצרים במבצע ומסעדות מקלידות תפריט לארוחה עסקית ומחירה. הנתונים הנשמרים הם נתונים של היום הנוכחי בלבד. כל כלי-רכב יכול לעיין בנתונים עדכניים של בתי העסק הכוללים את רשימת בתי העסק עם הפרטים הרלוונטיים והעומס הנוכחי (עמוס/לא-עמוס). השינוי – רק בהוספת תתי-מחלקות ל-Business.

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

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