אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 1 פרק 7 ISP דוגמא נוספת.

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 * מנשקים, דיאגרמות וביטים * לא בהכרח בסדר הזה.
מבוא למדעי המחשב לתעשייה וניהול
האוניברסיטה העברית בירושלים
Interface ממשקים 1. ראינו כי ניתן לשמור אובייקטים במערכים באותו אופן כמו משתנים רגילים. ננסה כעת לראות כיצד למיין מערך של אובייקטים מסוג מסוים. נשתמש.
5/12/2015 All Rights Reserved-Dr. Reuven Gallant Slide I-1 תיכון מערכות תוכנה להנדסה ופיתוח פרויקט אישי Dr. Reuven Gallant Jerusalem College of Technology.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב'
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 1 פרק 10 Packages.
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
מה החומר למבחן ? כל החומר שנלמד בהרצאות ובתרגולים. לגבי backtracking: לא תידרשו לממש אלגוריתם, אך כן להבין או להשלים מימוש נתון. אחת משאלות המבחן מבוססת.
מבוא לשפת C חידות ונקודות חשובות נכתב על-ידי יורי פקלני. © כל הזכויות שמורות לטכניון – מכון טכנולוגי לישראל.
מבוא למדעי המחשב תרגול 8 - מחרוזות שעת קבלה : יום שני 11:00-12:00 דוא " ל :
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site : T.A. :Emilia Katz.
מצגת פרויקט עקיבה אחרי גוף נע פרויקט סמסטריאלי סטודנטים : וסילי גנקין מראט אקולוב מנחה : אריה נחמני סמסטר אביב תשס " ז.
בהסתברות לפחות למצא בעיה במודל PAC עבור בהסתברות ε הפונקציה f טועה מודל ONLINE 1. אחרי כל טעות הפונקציה משתפרת 2. מספר הטעיות קטן.
תרגול חזרה. מבנה האובייקט תאר את מבנה האובייקט כולל מבנה טבלאות הפונקציות הוירטואליות עבור התכנית הבאה struct A { int x; virtual void a() {}; }; struct.
מסדי נתונים תשס " ג 1 תכנון סכמות – אלגוריתם פירוק לתבניות בצורת BCNF מסדי נתונים.
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 1 תיכון מערכות תוכנה להנדסה ופיתוח פרוייקט אישי Software Design.
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 1 פרק 13 Case Study: Weather Station.
Formal Specifications for Complex Systems (236368) Tutorial #6 appendix Statecharts vs. Raphsody 7 (theory vs. practice)
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
ספריה וירטואלית בטכנולוגית J2EE הטכניון – מכון טכנולוגי לישראל הפקולטה להנדסת חשמל המעבדה למערכות תוכנה עזרן אייל טרבלסי אורדן סמסטר חורף תשס " ד מנחה.
מערכות הפעלה ( אביב 2009) חגית עטיה ©1 מערכת קבצים log-structured  ה log הוא העותק היחיד של הנתונים  כאשר משנים בלוק (data, header) פשוט כותבים את הבלוק.
מודל ONLINE לומדמורה 1. כל ניתן לחישוב בזמן פולינומיאלי 2. אחרי מספר פולינומיאלי של טעיות ( ) הלומד לא טועה ז"א שווה ל- Littlestone 1988.
Motion planning via potential fields תומר באום Based on ch. 4 in “Principles of robot motion” By Choset et al. ב"הב"ה.
אביב תשס"ה JCTתיכון תוכנה: ד"ר ראובן גלנט1 פרק 9 נקודות חשובות בתרגיל 10 Guarded Operation.
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 1 פרק 6 DIP דוגמאות נוספות.
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 1 פרק 4 LSP.
הקדמה. תנועת גל בחומר. קריסת הגל. משוואת ברגר (Burgers’ equation) ופתרונה. גלי הלם. סיכום.
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 1 פרק 11 Statecharts תכונות מתקדמות.
1 Data Structures, CS, TAU, Perfect Hashing בעיה: נתונה קבוצה S של n מפתחות מתחום U השוואה ל- Hash : * טבלה קבועה (Hash רגיל - דינאמי) * רוצים זמן קבוע.
משטר דינמי – © Dima Elenbogen :14. הגדרת cd ו -pd cd - הזמן שעובר בין הרגע שראשון אותות הכניסה יוצא מתחום לוגי עד אשר אות המוצא יוצא מתחום.
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 1 פרק 12 אינטרקציה בין statecharts של אובייקטים שונים דוגמא : Dishwasher.
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א מודל הלמידה מדוגמאות Learning.
עקרון ההכלה וההדחה.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
Markov Decision Processes (MDP) תומר באום Based on ch. 14 in “Probabilistic Robotics” By Thrun et al. ב"הב"ה.
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א.
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכורות שמורות 1 פרק 3 OCP.
מתמטיקה בדידה תרגול 2.
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
Points on a perimeter (Convex Hull) קורס – מבוא לעבוד מקבילי מבצעים – אריאל פנדלר יאיר ברעם.
בקרה תומר באום ב"הב"ה. סוגי בקרה חוג פתוח Open-loop control : אנו מכוונים את הרובוט למצב הבא שהוא אמור להיות בו לפי מודל מסוים, כמו שעשינו בקינמטיקה הפוכה.
Text to speech In Mobile Phones איתי לוי. הקדמה שימוש בהודעות טקסט על המכשירים הסלולארים היא דרך תקשורת מאוד פופולארית בימינו אשר משתמשים בה למטרות רבות,
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
1 המרכז להוראת המדעים © האוניברסיטה העברית בירושלים פולימורפיזם מתקדם ממשקים בג ' אווה 1.
שיאון שחוריMilOSS-il מוטיבציה  python זה קל ו C זה מהיר. למה לא לשלב?  יש כבר קוד קיים ב C. אנחנו רוצים להשתמש בו, ולבסס מעליו קוד חדש ב python.
תכנות מכוון עצמים ושפת ++C וויסאם חלילי. TODAY TOPICS: 1. Function Overloading & Default Parameters 2. Arguments By Reference 3. Multiple #include’s 4.
1 תרגול 11: Design Patterns ומחלקות פנימיות אסף זריצקי ומתי שמרת 1 תוכנה 1.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site:
שיתוף PDT בין חוטים PDT Thread A Process Descriptor File Object 1 File Object 2 File 1 File 2 pthread_create Thread B Process Descriptor ה PDT משותף לכל.
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 1 פרק 5 תרשימי מצבים Statecharts למחלקות תגובתיות Reactive Classes הקדמה ודוגמא.
האוניברסיטה העברית בירושלים
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
Object Oriented Programming
More Design Heuristics
Object Oriented Programming
Operators Overloading
Formal Specifications for Complex Systems (236368) Tutorial #1
Object Oriented Programming
מבוא למדעי המחשב סיבוכיות.
ממשקים - interfaces איך לאפשר "הורשה מרובה".
Marina Kogan Sadetsky –
קצוות תמונה Edge Detection
Shell Scripts בסביבת UNIX
פולימורפיזם מתקדם ממשקים בC# עריכה ועיצוב: קרן הרדי
Presentation transcript:

אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 1 פרק 7 ISP דוגמא נוספת

אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 2 Interface Segregation Principle עיקרון הפרדת ממשקים הקליינט יהיה חשוף אך ורק לממשק שהוא זקוק לו אסור להכריח קליינט להיות תלוי בממשק בו הוא לא משתמש

אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 3 דוגמא : דלת ביטחון שלב א ' הגדרת ממשק Security Door – דלת ביטחון פשוטה שלב ב ' ממימוש של הממשק הנ " ל עם תוספת Timed Security Door – דלת שמתריעה כאשר היא פתוחה יותר מידי זמן. האתגר האיכותי : – להימנע מ " זיהום ממשקים " (interface pollution) ב Timed Door.

אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 4 שלב א ' דלת ביטחון פשוטה Security Door למופעים של מחלקה Door יש היכולות הבאות : דלת יכולה להיות נעולה (locked). דלת יכולה להיות לא נעולה (unlocked). דלת יכולה לדעת אם היא פתוחה (open) או סגורה (closed)

אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 5 שלב א ' ממשק של Security Door // file Door.h #ifndef Door_H #define Door_H class Door { public : virtual void lock()=0; virtual void unlock()=0; virtual bool isOpen()=0; }; #endif

אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 6 שלב ב ' ממימוש של הממשק הנ " ל עם תוספת : Timed Security Door על מנת להתריעה כאשר היא פתוחה יותר מידי זמן צריך להגדיר מחלקה TimedDoor: – TimedDoor הוא בן (sub-Class) של Door. – לכן TimedDoor יממש lock(), unlock(), isOpen() – בנוסף TimedDoor יתקשר לאוביקט נוסף בשם Timer – הקישור בין TimedDoor יהיה לפי הפרוטוקול Timer-TimerClient:

אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 7 הפרוטוקול Timer-TimerClient // file Timer.h #ifnder Timer_H #define Timer_H class TimerClient; class Timer { public: void register_(int timeout, const TimerClient & client) }; #endif // file TimerClient.h #ifndef TimerClient_H #define TimerClient_H class TimerClient { public: virtual void timeOut( ) = 0; }; #endif

אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 8 פתרון מצוי : TimeClient עומד בראש היארכי הירושה +timeOut():void TimerClient > +lock():void +unlock():void +isOpen():bool +timeOut():void Door +lock():void +unlock():void +isOpen():bool +timeOut():void TimedDoor +register_(int timeout,TimerClient client):void Timer itsTimerClient *

אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 9 הצעת שיפור ל TimedDoor נאפשר ביטול של timeouts שאינם רלוונטיות. תסריט שממחיש את הצורך בשיפור הנ " ל : – נניח שמשך ה timeout הוא 20 שניות. – ביום מסוים משעמם לפ ' רדי, הוא מחפש אתגר ומצליח לפתוח ולסגור את הדלת כל 7 שניות.

אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 10 // file Timer.h #ifndef Timer_H #define Timer_H class TimerClient; class Timer { public: void register_ (int timeout, int timeOutId, TimerClient & client) ; }; #endif מימוש של השיפור : על " מי " זה ישפיע ? // file TimerClient.h #ifndef TimerClient_H #define TimerClient_H class TimerClient { public: virtual void timeOut(int timeOutId)=0;}; }; #endif +timeOut():void TimerClient > +lock():void +unlock():void +isOpen():bool +timeOut():void Door +lock():void +unlock():void +isOpen():bool +timeOut():void TimedDoor +register_(int timeout,int timeOutid,TimerClient client):void Timer itsTimerClient *

אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 11 Interface Segregation Principle עיקרון הפרדת ממשקים הקליינט יהיה חשוף אך ורק לממשק שהוא זקוק לו אסור להכריח קליינט להיות תלוי בממשק בו הוא לא משתמש

אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 12 שתי פתרונות לפי ISP Class Adapter Pattern – יתרון : אין תוספת אובייקטים הצורכים זיכרון וכו ' – חסרון : אי אפשר אם ה sub Class אינו מממש את הממשק timeOut() Object Adapter – יתרון : מאפשר שימוש ב sub Class שאינו מממש את הממשק timeOut() – חסרון : יש תוספת אובייקטים הצורכים זיכרון וכו '

אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 13 Class Adapter Pattern Solution // file TimerClient.h class TimerClient { public : virtual void timeOut(int timeout, int timeOutId)=0; }; // file Door.h class Door { public : virtual void lock()=0; virtual void unlock()=0; virtual bool isOpen()=0; }; // file Timer.h class TimerClient; class Timer { public: void register_(int timeout, int timeOutId, const TimerClient & client) }; // file TimedDoor.h #include “Door.h”; #include “TimerClient.h”; class TimedDoor : public Door, public TimerClient { public : virtual void lock(); virtual void unlock(); virtual bool isOpen(); virtual void timeOut(int timeout, int timeOutId); }; // file Timer.cpp #include “Timer.h” #include “TimerClient.h” …

אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 14 Object Adapter Pattern Solution: Delegation ( האצלה ) // file TimedDoor.h #include “Door.h” #include “TimedDoorAdapter.h” class Door : public Door { public : virtual void lock()=0; virtual void unlock()=0; virtual bool isOpen()=0; virtual void soundAlarm(int timeOutId)=0; }; //file TimedDoorAdapter.cpp #include “TimedDoorAdapter.h” #include “TimedDoor.h” void TimedDoorAdapter::timeOut(int timeOutId) { itsTimedDoor->soundAlarm(timeOutId); }