הנדסת תוכנה פרק 8 הנדסת תוכנה

Similar documents
ד, ר עמיר תומר

ASP.Net MVC + Entity Framework Code First.

הנדסת תוכנה פרק 9. Prof. Amir Tomer הנדסת תוכנה 1 תכן תוכנה מונחה עצמים

טכנולוגיית WPF מספקת למפתחים מודל תכנות מאוחד לחוויית בניית יישומיי

מכונת מצבים סופית תרגול מס' 4. Moshe Malka & Ben lee Volk

FILED: NEW YORK COUNTY CLERK 07/16/2014 INDEX NO /2014 NYSCEF DOC. NO. 102 RECEIVED NYSCEF: 07/16/2014 EXHIBIT 5

Software Life-Cycle Models מודלים של מחזור חיי תוכנה - 1

State Pattern מימוש מכונת מצבים (FSM) מבוא בעיה תמיכה ועדכונים עדכון מס' 48 מאי 2002

קשירות.s,t V שני צמתים,G=(V,E) קלט: גרף מכוון מ- s t ל- t ; אחרת.0 אם יש מסלול מכוון פלט: הערה: הגרף נתון בייצוג של רשימות סמיכות.

תצוגת LCD חיבור התצוגה לבקר. (Liquid Crystal Display) המערכת.

Rules Game (through lesson 30) by Nancy Decker Preparation: 1. Each rule board is immediately followed by at least three cards containing examples of

המבנה הגאומטרי של מידה

מבוא לתכנות ב- JAVA תרגול 7

הנדסת תוכנה פרק 10 הנדסת תוכנה

Computer Structure. Exercise #1 יש להגיש את התשובות הסופיות על גבי טופס זה.

ניפוי שגיאות )Debug( מאת ישראל אברמוביץ

מטוסים נופלים, כורים מתפוצצים זיכרון אוטומטי מקטסטרופות לומדים בניינים קורסים,

Practical Session No. 13 Amortized Analysis, Union/Find

מה עומד על הפרק? הגדרת Requirements Definition דרי שות , ד" ר ע מיר תו מר ר ע מיר תו מר מבוא הגדרת דרישות - 2 הגדרת דר יש ות

Iris Levari Security Consultant CISSP ISC 2 CISSP Lead lecturer ISO LA מבדקי חדירה ופיתוח מאובטח

Patents Basics. Yehuda Binder. (For copies contact:

FILED: NEW YORK COUNTY CLERK 07/16/2014 INDEX NO /2014 NYSCEF DOC. NO. 134 RECEIVED NYSCEF: 07/16/2014 EXHIBIT 37

Theories of Justice

איתור במחסן הוא יחידת המרחב הקטנה ביותר שניתן להתייחס אליה, במחסן שבו מאוחסנות הסחורות שלך. מחסנים שורה 1 שורה 2 שורה 3

Depth-First Search DFS

ANNEXURE "E1-1" FORM OF IRREVOCABLE STANDBY LETTER OF CREDIT PERFORMANCE OF CONTRACT (WHERE PRICES ARE NOT LINKED TO AN ESCALATION FORMULA)

A R E Y O U R E A L L Y A W A K E?

תוכנה 1 בשפת Java שיעור מספר 8: "ירושה נכונה" בית הספר למדעי המחשב אוניברסיטת תל אביב

תרגול 11 תור עץ חיפוש בינארי

מבוא למחשב בשפת פייתון

הקיטסיגול הרבחה יעדמל בלושמה גוחה


ASTM UL / FM / BS abesco

Reflection Session: Sustainability and Me

2007 Zindell Technologies, Ltd.

Parts of Speech

הקדמה פרופ' מוטי בן-ארי המחלקה להוראת המדעים מכון ויצמן למדע

תמ מהו הקדמה פרופ' מוטי בן-ארי. Peter תמ"ע = עצמים + מחלקות + ירושה. תמ"ע "לייט" לבין תמ"ע אמיתי. Turbo Pascal

קורס תוכנת מטלב ויישומיה שיעור מס' 10: תכנות ממשקי משתמש

הטכנולוגיה בחינוך ד ר קובי גל אוניברסיטת בן גוריון בנגב

Design Patterns מאיר סלע מהדורה ראשונה 2004 הדפסה 1 כל הזכויות שמורות

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

Hebrew Ulpan HEB Young Judaea Year Course in Israel American Jewish University College Initiative

מבוא לתרבות סייבר שיעור מס

הקיטסיגול הרבחה יעדמל בלושמה גוחה

מבוא לתכנות - פיתוח משחקים ב Action Script 3.0

תיק )מסמך( אפיון ת ו כ ן ה ע נ י י נ י ם 0. מנהלה 1. יעדים 2. יישום - מהות המערכת 3. טכנולוגיה ותשתית 4. מימוש 5. עלות משאבים נספחים

מנגנון 5522 מידע על המנגנון מצב תצוגת שעה

3. class attr_accessor def end 9. end puts "

שפת תיאור חומרה VHDL

סמסטר אביב 2015, מועד ב' סמסטר קיץ 2015, מועד א' מתרגלים: אביב - נורית מושקוביץ', הלאל עאסי, אלירן וייס; קיץ מאיה דיאמנט

אנגלית שאלון ז' ג רסה א' הוראות לנבחן בהצלחה! )4( ההנחיות בשאלון זה מנוסחות בלשון זכר ומכוונות לנבחנות ולנבחנים כאחד. (MODULE G)

דיאגרמה לתיאור Classes

Expressions (ex 8) Wild World (ex 7) Cars (ex 9)

ניתוח מערכות מידע בסביבות טכנולוגיות מתקדמות כולל עולמות Mobile, Agile, Cyber, BI & Big Data

sharing food intro price & extra drinks * ניתן להזמין מנות כשרות בתאום מראש for good memories

Advisor Copy. Welcome the NCSYers to your session. Feel free to try a quick icebreaker to learn their names.

byte code :(compiler) .class מהדר בתהליך עורך, סייר, קומפיילר,,JRE וכו'. למשל: אקליפס. נקודות חשובות: חסכון בהקצאת זיכרון.

מדריך לניהול VPS טריפל סי מחשוב ענן בע"מ.

מקוון Sharing and Playing: Serious Games and Collaboration in Online Education

Adam: Meet Haman. A Sermon Delivered by Rabbi Haskel Lookstein on Shabbat Bereishit October 25, 2008

סה"כ נקודות סה"כ 31 נקודות סה"כ 21 תוכן עניינים של פתרון המבחן. לולאת for )נתון אלגוריתם... מעקב, פלט

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

פולימורפיזם. blog.csit.org.il מדעי המחשב

A JEW WALKS INTO A BAR: JEWISH IDENTITY IN NOT SUCH JEWISH PLACES

מבוא לרשתות - תרגול מס' 11 Transparent Bridges

חוק זכויות הסוכן חוק חוזה סוכנות )סוכן מסחרי וספק(

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

מיהו המורה הנושר? מאפיינים דמוגרפיים,תעסוקתיים ומוסדיים של הנשירה מהוראה

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

המחלקה למדעי המחשב, אוניברסיטת בן גוריון מבני נתונים, סמסטר אביב 2102 עבודת בית מספר - 2 מעשית

תרגול מס' 01 אלגוריתם דיניץ

יסודות מבני נתונים. תרגול :9 ערימה - Heap

נילי חמני

Genetic Tests for Partners of CF patients

מדריך למשתמש התקנה עצמית

Apple, keys, pen, pencils, pencilbox,(toy)elephant,( toy) boy, (toy) girl, ball

מערכת ActionBase for Office Light

Name Page 1 of 6. דף ט: This week s bechina starts at the two dots in the middle of

הבינגמה הדובע תביבסב תונכתל ריהמ ךירדמ

A Long Line for a Shorter Wait at the Supermarket

THINKING ABOUT REST THE ORIGIN OF SHABBOS

לשרטוט חשמלי בתוכנת OrCad-Capture

תורשכ ירפס לכ ץבוק " ב י קלח יללכ רעש

מספר ת"ז: יש לסמן את התשובה הטובה ביותר בתשובון. לא יינתן ניקוד על סימון תשובה בטופס הבחינה או במחברת הבחינה.

אנגלית (MODULE E) בהצלחה!

מקומה של הדרכה בבניית ארגון תומך חדשנות פרופ' מרים ארז הטכניון ראש תוכנית ה- MBA ומרכז הידע לחדשנות

Summing up. Big Question: What next for me on my Israel Journey?

חטיבת הביניים "יונתן" עבודה לקיץ באנגלית לבוגרי כיתה עבודה נעימה!

מדריך למשתמש בשירות. yes MultiRoom

CML כנס שנתי של מודעות ל- CML 4-6 לאוקטובר 2018, מלון רמדה, חדרה

שאלון ו' הוראות לנבחן

פיזיקה של נהיגה מדריך למורה

פעולות קלט פלט Streams( )I\O

Visual C# Express Edition 2005

DNS פרק 4 ג' ברק גונן מבוסס על ספר הלימוד "רשתות מחשבים" עומר רוזנבוים 1

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

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

שיטות בהנדסת תוכנה )236321(

Name Page 1 of 5. ,דף ד: This week s bechina starts at the bottom of שיר של חול

Transcription:

פרק 8

CSU Software CSC CSCI System Business פעילות תיכון התוכנה )בגישה מונחית העצמים( מטרת הפעילות הגדרת המודולים )מחלקות מהן יווצרו עצמים( הבונים את התוכנה הקצאת פונקציונאליות למחלקות )מאפיינים ומתודות( קלט ארכיטקטורת התוכנה Diagram) (Component תהליכי התוכנה Diagrams) (Sequence ברמת רכיבים תוצרים מודל מחלקות (Class Diagram) תהליכי תוכנה (Sequence Diagrams) ברמת עצמים תפעול מערכת: שילוב ובדיקות תיקוף אימות מערכת: תהליכים וארכיטקטורה הגדרת דרישות הלקוח ובעלי העניין רמת עניין תוכנה: שילוב ובדיקות אימות תוכנה: תהליכים וארכיטקטורה בניה ובדיקה של רכיבי תוכנה אימות תיכון תוכנה הגדרה ופירוט Definition and Specification זמן מימוש, שילוב ובחינה Implementation, Integration and Testing קידוד ובדיקה של יחידות תוכנה 2 אנליזה פונקציונאלית והגדרת תהליכי תוכנה

תמונת המצב עד כה בנינו ארכיטקטורה של מערכת התוכנה, המפרטת את הפירוק המערכתי של כל פריט תוכנה )ברמת המערכת( (component diagram) (sequence diagrams) (Use Cases) מטרות: רכיבים: ביצוע תהליכי המערכת Software Components עם תפקידים וממשקים מבנה: הקשרים הפנימיים והחיצוניים באמצעות הממשקים התנהגות: אינטראקציה בין הרכיבים למימוש התהליכים ארכיטקטורה התוכנה מאפשרת גם לתאר את האינטראקציה בין פריטי התוכנה השונים User 1.0 push floor button(dir) Operations Manager :Ongoing Operation Manager El: Request Manager Floor Button Caretaker/Rescuer Commands Operations Manager Direct Direct (elevators) Direct (floors) Testing Manager Technician Commands loop [for all elevators] 1.1 get status(): Floor&Direction 1.2 1.3 El= choose elevator() Floor Buttons on/off Rescue Task Allocation Arrival Reports Status Queries Arrival Reports Status Queries 1.6 Button on() 1.4 new request(int): int 1.5 save request(int) Elev. Button Elev. Buttons on/off Rescue Direct Request Manager Arrival reports Arrival Reports Next Stop Queries Next Stop Queries Status Queries Ongoing Operation Manager Engine Commands Door Commands Emergency Stop Emergency Stop 3 תכן תוכנה מונחה עצמים

תכן תוכנה )מונחה עצמים( ברמה הבאה בפירוק המערכתי עלינו לפרט עבור כל רכיב component) :(software מטרות : מימוש הפונקציונאליות של הרכיב מרכיבים: מודולי תוכנה )עצמים( מבנה: הקשרים )ההיכרות( בין העצמים השונים התנהגות: האינטראקציה בין העצמים השונים המביאה למימוש הפונקציונאליות Comp1 B A D C a:a b:b c:c B A D C 4 תכן תוכנה מונחה עצמים

מה ההבדל? 5 תכן תוכנה מונחה עצמים

תוכנה מבנית )structured( ]קלאסית[ מבנה הפרדת המידע )data( מהפונקציונליות ביצוע עץ קריאות בין מודלים כל מודול מבצע מניפולציות על המידע מבני נתונים )מידע( תכנית מבנית )פונקציות/תהליכים( תכנית ראשית קריאות תכנית משנית תכנית משנית תכנית משנית D: מסמך )בעריכה( F: קובץ Open(F) Save(D,F) שגרה / פונקציה שגרה / פונקציה שגרה / פונקציה Open Save 6 תכן תוכנה מונחה עצמים

תוכנה מונחית עצמים מבנה בתוך המידע והפונקציונליות כמוסים (encapsulated) "עצמים" ביצוע העברת "הודעות" בין אובייקטים שם מידע פעולות שם מידע פעולות הודעות שם מידע פעולות שם מידע פעולות 7 תכן תוכנה מונחה עצמים : משתמש...... U D: Save_Yourself : D מסמך... Save F: Open_Yourself F: Save_Me)D( : F קובץ... Open Save

מ Prof. Amir Tomer התבנית מונחית העצמים paradigm( )Object Oriented ושגי יסוד עצם )object( ישות בדידה גבולות וזיהוי מוגדרים מכיל בתוכו )encapsulates( מצב והתנהגות data members, attributes מצב = מבני נתונים - member functions, methods - / התנהגות = פעולות פונקציות מחלקה )class( מחלקות קיימות בקוד אך ורק בזמן ההגדרה עצמים קיימים בזכרון אך ורק בזמן הריצה מתאר )descriptor( של קבוצת עצמים, בעלי מאפיינים משותפים: תכונות פעולות יחסים התנהגות 8 תכן תוכנה מונחה עצמים

מידול מונחה-עצמים של מרחב הבעיה הגישה מונחית-העצמים מאפשרת לבנות תוכנה מישויות המייצגות את מרחב הבעיה בהמשך מוסיפים עליהן ישויות הנדרשות לפתרון כבר בשלב הניתוח המערכתי ניתן לבנות מודל מובנה של עצמים, המייצגים את מונחי מרחב הבעיה והקשרים ביניהם המטרה PDOM = Problem Domain Object Model הבהרה וחידוד של המונחים והיחסים ביניהם שימושים יצירת שפה משותפת בין בעלי העניין יישוב סתירות ואי-בהירויות במפרטי הלקוח מילון מונחים של המערכת בסיס למודל מחלקות עבור התוכנה הטכניקה ישויות המידע בהן נדרשת התוכנה לטפל בניית "רשת סמנטית" בין הישויות, הכוללת קשרים מהסוגים הבאים: )או )B is_a_part_of A )או )B is a_kind_of A A has a B A is a B B <relates to> A 9 תכן תוכנה מונחה עצמים

מערכת המעליות איתור ישויות במרחב הבעיה )סיפור הלקוח ובעלי העניין( נוסע הנמצא בקומה כלשהי ורוצה להזמין מעלית לוחץ על הכפתור המתאים לכיוון הנסיעה המבוקש. אם לא היה דלוק קודם לכן, הכפתור נדלק בעקבות הלחיצה. מעלית כלשהי הנמצאת בכיוון הנסיעה המבוקש תגיע לקומה, תוך דקה לכל היותר. עם הגעתה נפתחת הדלת והכפתור כבה. נוסע הנמצא בתוך המעלית ורוצה להגיע לקומה כלשהי לוחץ על הכפתור המתאים לקומה. אם לא היה דלוק קודם הכפתור נדלק בעקבות הלחיצה ולמעלית נוספת בקשת עצירה. הדלת נסגרת, לאחר השהיה, והמעלית ממשיכה בנסיעה, כאשר היא עוצרת בכל קומה עבורה קיימת בקשת עצירה. כאשר המעלית נעצרת בקומה הדלת נפתחת והכפתור המתאים לקומה כבה. נוסע במעלית יכול לעצור את המעלית בזמן נסיעה באמצעות לחיצה על כפתור עצירת החירום. במקרה זה המעלית עוצרת מיד וכל בקשות העצירה שלה מתבטלות. לאחר מכן ניתן להחזיר את המעלית לפעולה על ידי לחיצה על כפתור עבור קומה כלשהי. במקרה שהמעלית נתקעה במהלך נסיעה מזעיק הנוסע חילוץ באמצעות כפתור החילוץ. המחלץ )שהוא איש האחזקה של הבניין( מגיע לפאנל החילוץ שבחדר המכונות ומפעיל פקודות להורדת המעלית לקומת הקרקע ולפתיחת הדלת. איש האחזקה אחראי להעלות את המערכת Up) (Start בתחילת יום פעילות ולהוריד אותה (Shut-Down) בסיומו. טכנאי, המגיע אחת ל- 6 חודשים, יכול לבצע בדיקה מקיפה של כל המערכת ולתקן תקלות באמצעות פיקוד הטכנאי שבחדר המכונות. מערכת המעליות תעמוד בכל תקני הבטיחות הישימים. המערכת תונגש לבעלי מוגבלויות שונות. 10 תכן תוכנה מונחה עצמים

מערכת המעליות - PDOM 0..* User 0..* relation 1 push is a 1 use Button travel between Elevator Button Stop Button Rescue Button Direction Button 10 1..2 has a Elevator 3 serve 10 Floor generates fulfills rescues maintains maintains Stop Request Rescuer Technician starts up / shuts down CareTaker 11 תכן תוכנה מונחה עצמים

מטלת כיתה epark ערכו מודל מונחה-עצמים במרחב הבעיה (PDOM) למערכת השתמשו במודל class diagram כללו בתרשים את הישויות הבאות: Guardian Account Child eticket Bracelet Entry Device Supervisor 12 תכן תוכנה מונחה עצמים

מרכיבי התוכנה: עצמים ומחלקות עצמים (objects) היחידות הבסיסיות של התוכנה כל עצם מנהל את המידע שבאחריותו באמצעות הפונקציונליות שהוקנתה לו עצמים קיימים בזיכרון המחשב בזמן ריצת התוכנית ניתן לבנות/להרוס עצמים באופן דינמי תוך כדי ריצה = constructor פונקציה הבונה עצם חדש = destructor פונקציה ההורסת )מוחקת( עצם קיים מחלקות לכל עצם יש מפתח גישה ייחודי pointer(,)handle, הניתן לו ברגע בנייתו (classes) התבניות על פיהן נוצרים עצמים חדשים התבנית מכילה 3 "תאים" (compartments) המחלקות מוגדרות בקוד עצמים הם מופעים ספציפיים ע"י כותב התוכנה (instances) של מחלקות שם מאפיינים )מבני נתונים( פעולות )פונקציונלי ות( 13 תכן תוכנה מונחה עצמים

יצירה ותפעול של עצמים Car + maker: string + model: string + licenseplate: string + testdate: Date - owner: Person + sellto(person) : void + getowner(int) : Person + testisvalid(date) : boolean thebluecar : Car maker = mazda model = CX-7 licenseplate = 12-345-67 testdate = 08/09/2010 owner = Lior יצירת עצם "מכונית" חדש thebluecar = new(car) איתחול פרטי המכונית thebluecar.maker = mazda thebluecar.model = CX-7 רישוי וטסט thebluecar.licenseplate = 12-345-67 thebluecar.testdate = 08/09/2010 מכירה thebluecar.sellto(lior) שם המחלקה שם העצם function sellto(x) { owner = X } ; 14 תכן תוכנה מונחה עצמים

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

- תחביר תרשים מחלקות Diagram) (Class מחלקה ClassName - privateattribute: Type + puplicattribute: Type - privatemethod(x:typex, Y:TypeY) : ReturnType + publicmethod(x:typex, Y:TypeY) : ReturnType שם המחלקה מאפיינים מתודות קשרים )משתנים( מאפיין פרטי )-(: ניתן לגשת אליו רק מתוך המחלקה עצמה מאפיין ציבורי )+(: ניתן לגשת אליו גם מבחוץ )פונקציות( מתודה פרטית )-(: ניתן לקרוא לה אך ורק מתוך המחלקה עצמה מתודה ציבורית )+(: ניתן לקרוא לה גם מבחוץ A B זיקה (association) A B ירושה (Inheritance) A B הקבצה (aggregation) תרשים המחלקות מבוסס על עיקרון של רשת סמנטית 16 תכן תוכנה מונחה עצמים

יחס ירושה )inheritance( / הכללה (Generalization) כאשר מחלקה B יורשת/מכלילה את מחלקה A, אזי A מכילה את כל המאפיינים של B A מכילה את כל הפעולות של B בנוסף, B מכילה מאפיינים ופעולות משל עצמה B is-a A ירושה מתארת את היחס הסמנטי A של )sub-class( היא תת-מחלקה B כפתור דולק: }כן, לא{ לחיצה הדלקה/כיבוי מינוח לא מוצלח, כי B מכילה יותר מאשר A יחס הירושה יוצר מבנה היררכי של מחלקות מחלקה אבסטרקטית מחלקה שלא ניתן ליצור ממנה עצמים כל העצמים נוצרים ממחלקות היורשות אותה לדוגמה: "כלי רכב" כפתור מעלית כפתור קומה זיהוי: קומה כיוון: }למעלה, למטה{ 17 תכן תוכנה מונחה עצמים

בעיות ביחסי ירושה ירושה מרובה inheritance) (multiple מחלקה אחת יורש משתי מחלקות שונות הבעיה: עלולות להיווצר סתירות במאפיינים/פעולות הפתרון: רוב שפות התכנות אינן מרשות ירושה מרובה )מבנה של עץ( ירושה עמוקה מדי X... C B A הבעיה: קושי במעקב אחר הקשר )קשיי תחזוקה( הפתרון: "שבירת" העץ בנקודות בהן הזיקה חלשה יותר ירושה מדומה לדוגמה: ריבוע הוא סוג של מלבן, לכן מלבן ריבוע הבעיה: למלבן יש שני מאפיינים )אורך, רוחב( ולריבוע רק אחד )צלע( הפתרון: להגדיר את הירושה על בסיס תכונות משותפות )מאפיינים/פעולות( 18 תכן תוכנה מונחה עצמים

זיקה - association (Company,Person) Company 0..1 navigability multiplicity 0..* Person +employer employ +employee יחס בין מחלקות המגדיר "היכרות" בין עצמים ממחלקות אלה ה"היכרות" הינה באמצעות מצביעים (pointers,references) name role מאפיינים המאפשרים הגדרה ברורה יותר של זיקה שם היחס )name( עשוי להתפרש בכיוונים שונים "Company employs Person Person employed by Company )role( Company is the employer Person is the employee )multiplicity( Company employs 0 or more Persons Person is employed by 0 or 1 company תפקיד ריבוי ניווט (navigability) Person knows who is its Company Company does not know its Persons 19 תכן תוכנה מונחה עצמים

הקבצה )aggregation( סוג מיוחד של זיקה )היכרות בין עצמים( מתארת את היחס הסמנטי (A B has_a שני סוגי הקבצה: הקבצת הרכ ב aggregation) (composite B A הוא חלק בלתי נפרד מ- B, A קיומו של A תלוי בקיומו של B ורק מ- B שמות נוספים: whole-part aggregation non-shared aggregation B A הקבצת שיתוף (shared aggregation) A משוייך אבל ל- B, קיומו של A אינו תלוי בקיומו של B A יכול להיות משותף, כלומר משוייך בו זמנית גם לעצמים אחרים 20 תכן תוכנה מונחה עצמים

הקבצה - דוגמה הקבצת שיתוף )shared( לפיסקה יש סגנון-פיסקה אחד סגנון יכול להיות משותף למספר פיסקאות הסגנון הוא ישות עצמאית, וקיומו אינו מותנה בקיום פיסקאות מחיקת פיסקה אינה מוחקת את הסגנון Paragraph Style Paragraph Style 1..* Word 1 1..* Font Style 1 ניווט )navigation( התו מכיר את הסגנון הסגנון אינו מכיר את התוים המשויכים אליו 1 0..* 0..* 1 Character הקבצת הרכב )composite( פיסקה מורכבת ממילה אחת לפחות כל המילים של הפיסקה שייכות אך ורק לפיסקה זו קיומה של המילה מותנה בקיומה של הפיסקה מחיקת פסקה מוחקת את כל המילים המרכיבות אותה. 21 תכן תוכנה מונחה עצמים 1. A Numbered Title This is the first paragraph of this document. It contains 17 words and 80 non-blank cha r ac t ers.

הקצאת תפקידים לעצמים/מחלקות בדומה לתהליך האנליזה הפונקציונאלית שעשינו בשלבים הקודמים, גם כאן עלינו להקצות פונקציונאליות למרכיבי התוכנה )עצמים/מחלקות( תזכורת: בתוכנה קיימים שני סוגים של דרישות פונקציונאליות דרישות תפעוליות :(OR) מה התוכנה צריכה לעשות דרישות אלה ימומשו באמצעות operations )פונקציות / מתודות( דרישות מידע מקורות לפונקציונאליות סיפור הלקוח :(DR) מה התוכנה צריכה לדעת דרישות אלה ימומשו באמצעות attributes )משתנים / מבני נתונים( מפרט הדרישות/התהליכים Use Case Model, Activity Diagrams - ארכיטקטורת התוכנה מימוש התהליכים באמצעות sequence diagrams בהקצאה הפונקציונאלית יש לשמור על עקרונות המקצוענות והעצמאות לכידות הדוקה: מה המשותף בין כל המאפיינים וכל המתודות שהוקצו למחלקה? צימוד רופף: עד כמה המחלקה תלויה במחלקות אחרות? 22 תכן תוכנה מונחה עצמים

מערכת המעליות מחלקת "מעלית" Elev ator - direction: Dir - downschedule: intlist - isactive: boolean - isinorder: boolean - laststop: int - upschedule: intlist + emergencystop() + getstatus(): int + newrequest(): int + rescuecall() + startoperation(): void בנוסף למאפיינים אלה יש גם מצביעים למחלקות אחרות, הנגזרים מיחסי זיקה/הקבצה בנוסף למאפיינים ולמתודות אלה יש גם מאפיינים ומתודות דרך ירושה 23 תכן תוכנה מונחה עצמים

Diagram) (Class חלקי מערכת המעליות - תרשים מחלקות FloorButton 1..2 Floor Door «abstract» TravelButton - LED: boolean + dirlabel: up_down + floorno: int +ServedFloors 10 + isclosed: boolean + open(): void + close(): void + setled(byte): void ElevatorButton serves +MyDoor 1 + floorlabel: int 0..3 1..* 1..* +MyButtons Elev ator «abstract,virtual» Button + press(): void RescueButton 1 StopButton +MyRB 1 +MySB - direction: Dir - isactive: boolean - isinorder: boolean - laststop: int + startoperation(): void + getstatus(): int + emergencystop() + rescuecall() +MyEngine 1 Engine + goto(floor): void + stop() +MySchedule Schedule - upschedule: intlist - downschedule: intlist + getnextstop(): int + newrequest(int) + clearrequest(int) 24 תכן תוכנה מונחה עצמים

מטלת כיתה ערכו מודל מחלקות ראשוני עבור epark השתמשו בישויות שהגדרתם ב- PDOM כמחלקות הוסיפו למחלקות מאפיינים (attributes) על בסיס שיקול דעתכם הוסיפו בכל מחלקה ו- setter getter לאחד מהמאפיינים כמתודות (operations) אם כבר בשלב זה ידוע לכם על מתודות שיידרשו למחלקה הוסיפו גם אותן 25 תכן תוכנה מונחה עצמים

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

הפקה אוטומטית של קוד סטטי ממודל המחלקות - Attributes FloorButton 1..2 Floor Door Class + dirlabel: up_down + floorno: int + isclosed: boolean ElevatorButton +ServedFloors 10 serves Role + open(): void + close(): void +MyDoor 1 + floorlabel: int 0..3 1..* 1..* +MyButtons RescueButton +MyRB 1 1 +MySB StopButton Elev ator - direction: Dir - isactive: boolean - isinorder: boolean - laststop: int + startoperation(): void + getstatus(): int + emergencystop() + rescuecall() +MySchedule Schedule - upschedule: intlist - downschedule: intlist + getnextstop(): int + newrequest(int) + clearrequest(int) +MyEngine 1 Engine + goto(floor): void + stop() public class Elevator { מאפיינים שהוגדרו במפורש מאפיינים שנגזרו מהזיקות } private Dir direction; private boolean isactive; private boolean isinorder; private int laststop; private intlist upschedule; private intlist downschedule; Class Role public Door MyDoor; public list MyButtons; public StopButton MySB; public RescueButton MyRB; public list ServedFloors; public Engine MyEngine; public Schedule MySchedule; 27 תכן תוכנה מונחה עצמים

הפקה אוטומטית של קוד סטטי ממודל המחלקות - Methods Elev ator - direction: Dir - isactive: boolean - isinorder: boolean - laststop: int + startoperation(): void + getstatus(): int + emergencystop() + rescuecall() Constructor Destructor public class Elevator { מתודות שהוגדרו במפורש public Elevator(){ } public void finalize() throws Throwable { } public void startoperation(){ } public int getstatus(){ return 0; } public emergencystop(){} public rescuecall(){} «<<abstract>>» Trav elbutton - LED: boolean + setled(byte): void ElevatorButton «abs tract,virtual» Button + press(): void + floorlabel: int public class TravelButton extends Button { } private boolean LED; public TravelButton(){ } public void finalize() throws Throwable { super.finalize(); } public void setled(byte on_off){ } 28 תכן תוכנה מונחה עצמים

הפקה אוטומטית של קוד סטטי ממודל המחלקות ירושות «abstract» TravelButton - LED: boolean + setled(byte): void FloorButton + dirlabel: up_down public class FloorButton extends TravelButton { } public up_down dirlabel; public FloorButton(){ } public void finalize() throws Throwable { } super.finalize(); public abstract class TravelButton extends Button { «abstract,virtual» Button } private boolean LED; public TravelButton(){ } public void finalize() throws Throwable { super.finalize(); } public void setled(byte on_off){ } + press(): void public abstract class Button { public Button(){ } public void finalize() throws Throwable { } public void press(){ } } 29 תכן תוכנה מונחה עצמים

מימוש תהליכי התוכנה מימוש הפונקציונאליות של כל רכיב באמצעות עצמים בתוכנה פונקציונאליות הרכיב תפקודו במסגרת מימוש התהליכים המערכתיים עצמים בתוכנה על בסיס מודל המחלקות A Comp1 B D C a:a b:b c:c 30 תכן תוכנה מונחה עצמים

ref Trav elling betw een Floors Sequence Diagram ברמת רכיבים User Request Manager Ongoing Operation Manager Door Engine Operations Manager 1.0 ongoingoperation() loop [while not stuck] 1.3 get next stop request(): int 1.1 close() 1.2 1.4 1.5 go to(n) 1.6 opt Normal Arriv al [arrived at floor] 1.7 open() 1.8 1.9 clear request(int) 1.10 button off() 1.11 report arrival(int): int 1.12 wait(t) 31 תכן תוכנה מונחה עצמים

מימוש פעילות OngoingOperation של רכיב Ongoing Operation Manager באמצעות העצמים המרכיבים אותו Ev: Elevator MyDoor: Door MySchedule: Schedule MyEngine: Engine ElevatorButton[NS]: ElevatorButton DoorHW: DoorEngineHW: Engine Oper. Mgr. UserPanel 1.0 startoperation() 1.1 close() loop [while not stuck] 1.2 CloseDoor(): StatusCode 1.3 1.4 1.5 NS= getnextstop(): int 1.6 1.7 goto(ns) 1.8 SC= goto(ns): StopCause 1.9 1.10 alt [SC=arrived] 1.11 open() 32 תכן תוכנה מונחה עצמים 1.12 OpenDoor(): StstusCode

[while not stuck] 1.4 מימוש פעילות OngoingOperation של רכיב Ongoing Operation Manager 1.5 NS= getnextstop(): int באמצעות העצמים המרכיבים אותו )המשך( 1.6 1.3 Ev: Elevator MyDoor: Door 1.7 goto(ns) MySchedule: Schedule MyEngine: Engine ElevatorButton[NS]: ElevatorButton 1.8 SC= goto(ns): StopCause DoorHW: DoorEngineHW: Engine Oper. Mgr. UserPanel 1.0 startoperation() 1.9 1.1 close() 1.10 alt [SC=arrived] 1.11 open() 1.4 1.2 CloseDoor(): StatusCode 1.3 1.12 OpenDoor(): StstusCode 1.5 NS= getnextstop(): int 1.13 1.14 1.6 1.7 goto(ns) 1.15 report arrival() 1.16 clearrequest(ns) 1.8 SC= goto(ns): StopCause 1.17 setled(off) 1.9 1.10 alt [SC=arrived] 1.18 wait(t) 1.11 open() 1.19 button off (NS) 1.12 OpenDoor(): StstusCode 33 תכן תוכנה מונחה עצמים 1.13

מטלה: Sequence Diagram ברמת עצמים SUC-1 של epark מתאר את תהליך ההרשמה בכניסה לפארק. במסמך SAD מופיע sequence diagram ברמת רכיבים של תהליך זה ערכו sequence diagram ברמת עצמים של התהליך )כלומר, מהלך הפעילות registration() new של רכיב )Usage Manager באמצעות עצמים תוך כדי בניית התרשים הוסיפו את המתודות הנדרשות למחלקות של העצמים המשתתפים פניות לרכיבים אחרים ימומשו כמתודות עצמיות 34 תכן תוכנה מונחה עצמים

/ דלת המעלית דרישות משלימות נגזרות במעלית יש שני כפתורים עבור הדלת Open Door (OD) Close Door (CD) בדלת יש עינית (detector) המזהה מעבר של גוף דרך הדלת בעת פתיחה או סגירה של דלת תושמע הודעה קולית מתאימה כאשר המעלית לא פעילה היא חונה בקומה כלשהיא עם דלת סגורה לחיצה על כפתור קומה בה חונה מעלית תגרום לפתיחת הדלת דלת פתוחה תיסגר אחרי השהיה נתונה או כאשר נלחץ כפתור CD המעלית יכולה לנסוע רק כאשר הדלת סגורה במלואה כל עוד המעלית בתנועה שום אירוע לא יגרום לפתיחת הדלת לאחר עצירת מעלית בקומה כלשהיא הדלת נפתחת כל עוד הדלת לא סגורה כל אחד מהאירועים הבאים יביא לפתיחתה: לחיצה על כפתור OD זיהוי של העינית לחיצה על כפתור קומה בקומה בה היא נמצאת 35 תכן תוכנה מונחה עצמים

מודל מכונת-מצבים Model) (State-Machine מכונת מצבים "אוטומט" )מודל מתימטי( מודל דינמי לתיאור התנהגות שימושי המודל ברמה המערכתית אפיון ההתנהגות הכוללת של מערכת ברמת המחלקה מחזור החיים של אובייקט הדלקה off התקנה הישרפות כיבוי 36 תכן תוכנה מונחה עצמים

State Chart תרשים מצבים מצב (State) מצב רגיל/פסיבי )למשל: "ממתין"( מצב פעיל )למשל: "מעבד"( מעבר (Transition) שינוי מצב הנגרם בעקבות אירוע או תנאי אירוע (Event) גורם למעבר ממצב למצב )למשל: "הדלקת מתג"( תנאי (Guard) State A פעולה מתנה את השפעת האירוע )למשל: "הדלקת מתג ]הדלת סגורה["( (Action) event [guard] / action מתרחשת בעת מעבר או בתוך מצב בכניסה למצב action) (entry/ ביציאה ממצב action) (exit/ State B במהלך שה יה במצב פעיל action) (do/ 37 תכן תוכנה מונחה עצמים

state chart דלת מעלית stopped at floor or OD pressed [not in travel] or detector disturbed [not in travel] Opening entry/ my_elevator:disable() entry/ play_msg(opening)? do/ loop: check_door floor button pressed [parked at floor] [door fully open] Closed entry/ my_elevator:enable() exit/ my_elevator:disable() timeout [door fully closed] Closing entry/ play_msg(closing) do/ loop: check_door OD pressed or detector disturbed or floor button pressed Open entry/ set timer do/ loop: timer = timer-1 CD pressed or [timer == 0] 38 תכן תוכנה מונחה עצמים

מצבים מורכבים / משולבים דוגמה: מדפסת idle cancel End-of-file File-received / notify Busy Printing Do/ loop {print page, eject page} Stuck paper / notify Feeder_empty / notify Feeder_full Jammed Out of paper Cover_opened Repairing Cover_closed [clear] Cover_closed [stuck paper] 39 תכן תוכנה מונחה עצמים

Event Handler דלת מעלית )קטע( void EventHandler(event EventClass)... switch (event): { case OD_Pressed if (current_state==closing) { my_elevator.disable(); play_msg( opening );... current_state=opening; } break; Opening entry/ my_elevator:disable() entry/ play_msg(opening) do/ loop: check_door OD pressed or detector disturbed or floor button pressed? Closing entry/ play_msg(closing) do/ loop: check_door 40 תכן תוכנה מונחה עצמים

מטלת כיתה ערכו State-Machine Diagram למחלקה Device על בסיס סיפור הלקוח זהו את המצבים השונים בהם יכול להיות מתקן הגדירו אירועים למעבר בין המצבים השונים הוסיפו פעולות entry/ do/, exit/, בתוך המצבים, על פי הצורך 41 תכן תוכנה מונחה עצמים

Floor Panel User Panel «delegate» «delegate» «delegate» «delegate» «delegate» Caretaker/Rescuer Commands Floor Button Floor Buttons on/off Rescue Elev. Button Rescue Elev. Buttons on/off Rescuer Panel Operations Manager Task Allocation «delegate» «delegate» «delegate» Request Manager Arrival Reports Central Server Direct «delegate» «delegate» Direct Elevator Port Server Port Status Queries Direct (elevators) «delegate» «delegate» Elevator Controller Arrival Reports Emergency Stop 1..* Next Stop Queries Arrival Reports «delegate» Arrival reports Direct (floors) «delegate» Next Stop Queries Testing Manager «delegate» Emergency Stop Status Queries Status Queries Ongoing Operation Manager Technician Commands «delegate» Engine Commands «delegate» «delegate» Door Commands Technitian Panel Engine Door [Arrived at floor] [Stuck] «structured» System Operation [System in order] [On site repair impossible] [On site repair possible] כל התורה על רגל אחת... ארגון/עסק use 0..* 0..* User 1 push 1 Button No elevator at floor Elavator at floor התנהגות מערכת מבנה «structured» «structured» Using the service System maintenance Arriving for test System Call elevator testing «datastore» Stopping list Test results Ride elevator Elevator Button 10 Stop Button Rescue Button travel between Direction Button 1..2 Rescue Stopping reason? Repair pending Results? Elevator 3 serve 10 Floor Arriving for repair Repair generates fulfills rescues maintains maintains Stop Request Rescuer Technician Start Up starts up / shuts down CareTaker Shut Down «device» Floor Panel 1..* Central Server «CSCI» Server SW 1..* «device» Technician Panel «device» Rescuer Panel פריטים Elevator Controller «CSCI» Elevator SW User «SUC» 1. Call Elevator «SUC» 2. Ride Elevator Elevator System «SUC» 6. Start Up «SUC» 4. System Testing «SUC» 5. Repair Technician «device» User Panel Elevator Controller «CSCI» Elevator SW «device» Engine «device» Door Rescuer «SUC» 3. Rescue «SUC» 7. Shut Down Caretaker Floor Button Floor Buttons on/off Direct Caretaker/Rescuer Commands Operations Manager Status Queries Task Rescue Allocation Arrival Reports Direct (floors) Direct Testing Manager (elevators) Arrival Reports Status Queries Technician Commands רכיבים par [ ] Request Manager User 1.0 push button(int) 1.1 save request(int) 1.2 button off() Ongoing Operation Manager Engine Rescue Direct Elev. Button Request Manager Elev. Buttons on/off Status Arrival Queries reports Arrival Reports Ongoing Operation Next Stop Queries Next Stop Queries Manager Engine Commands Door Commands Request Manager Ongoing Operation Manager Operations Manager 2.0 push stop button() 2.1 emergency stop() 2.3 2.4 clear all requests() 2.2 stop() Emergency Stop Emergency Stop [ ] ref Ongoing Operation «<<abstract>>» Trav elbutton - LED: boolean FloorButton 1..2 Floor + dirlabel: up_down + floorno: int +ServedFloors 10 Door + isclosed: boolean + open(): void + close(): void יחידות + setled(byte): void ElevatorButton + floorlabel: int 1..* +MyButtons 1..* serves 0..3 Elev ator +MyDoor 1 Ev: Elevator 1.0 startoperation() MyDoor: Door MySchedule: Schedule MyEngine: Engine ElevatorButton[NS]: ElevatorButton DoorHW: DoorEngineHW: Engine Oper. Mgr. UserPanel «abstract,virtual» Button + press(): void RescueButton +MyRB 1 1 +MySB StopButton - direction: Dir - isactive: boolean - isinorder: boolean - laststop: int + startoperation(): void + getstatus(): int + emergencystop() + rescuecall() +MyEngine 1 Engine Schedule - upschedule: intlist - downschedule: intlist + getnextstop(): int + newrequest(int) + clearrequest(int) Schedule - upschedule: intlist - downschedule: intlist + getnextstop(): int + newrequest(int) + clearrequest(int) Schedule - upschedule: intlist - downschedule: intlist + getnextstop(): int + newrequest(int) + clearrequest(int) 1.1 close() 1.4 1.5 NS= getnextstop(): int 1.2 CloseDoor(): StatusCode 1.3 + goto(floor): void + stop() 1.6 +MySchedule 1.7 goto(ns) Schedule 1.8 SC= goto(ns): StopCause - upschedule: intlist - downschedule: intlist 1.9 + getnextstop(): int + newrequest(int) + clearrequest(int) 42 תכן תוכנה מונחה עצמים alt [SC=arrived] 1.11 open() 1.14 1.10 1.12 OpenDoor(): StstusCode 1.13 1.15 report arrival()