קורס Java מתקדם Design Patterns

Slides:



Advertisements
Similar presentations
Object Oriented 33 MCSD DORON AMIR
Advertisements

ממיבחניםC שאלות ++.
תוכנה 1 סמסטר א ' תשע " ב תרגול מס ' 7 * מנשקים, דיאגרמות וביטים * לא בהכרח בסדר הזה.
מבוא למדעי המחשב לתעשייה וניהול
בתרגול הקודם הורשה: –ניתן להרחיב רק מחלקה אחת –כל מה שלא private – עובר בהורשה –המילה השמורה super –יצירת היררכיה –Object היא שורש ההיררכיה –דריסה אופרטור.
1 Formal Specifications for Complex Systems (236368) Tutorial #4 Refinement in Z: data refinement; operations refinement; their combinations.
Interface ממשקים 1. ראינו כי ניתן לשמור אובייקטים במערכים באותו אופן כמו משתנים רגילים. ננסה כעת לראות כיצד למיין מערך של אובייקטים מסוג מסוים. נשתמש.
אקסס מבוא למערכות מידע.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב'
מתמטיקה בדידה תרגול 3.
דוד שוורץ, עידן זק, נטע צור וחיה כהן. הפונקציונאליות : המשתמש יבחר קובץ שעליו הוא רוצה לבצע את האנליזה, וילחץ עליו עם כפתור ימני בעכבר. יפתח תפריט ובו.
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
חורף - תשס " ג 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.
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 של הסדרה הוא קירוב.
דוד שוורץ, עידן זק, נטע צור וחיה כהן. הפונקציונאליות:  המשתמש בוחר קובץ שעליו הוא רוצה לבצע את האנליזה, ולוחץ עליו עם כפתור ימני בעכבר.  נפתח תפריט.
מערכות הפעלה ( אביב 2009) חגית עטיה ©1 מערכת קבצים log-structured  ה log הוא העותק היחיד של הנתונים  כאשר משנים בלוק (data, header) פשוט כותבים את הבלוק.
טיב פני שטח (טפ"ש) טיב פני שטח- רמת החלקות של המשטח.
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 רגיל - דינאמי) * רוצים זמן קבוע.
משטר דינמי – © Dima Elenbogen :14. הגדרת cd ו -pd cd - הזמן שעובר בין הרגע שראשון אותות הכניסה יוצא מתחום לוגי עד אשר אות המוצא יוצא מתחום.
עקרון ההכלה וההדחה.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
Markov Decision Processes (MDP) תומר באום Based on ch. 14 in “Probabilistic Robotics” By Thrun et al. ב"הב"ה.
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
מה היום ? - - חזרה מהירה. - קריאה וכתיבה לקבצים. - בניית תוכנית כתיבה low-level - בניית ערוץ גלובלי והדגמה מול חומרה - low-level DAQ, פולימורפיזם וטריגר.
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
Safari On-line books. מה זה ספארי ספארי זו ספריה וירטואלית בנושא מחשבים היא כוללת יותר מ כותרים כל הספרים הם בטקסט מלא ניתן לחפש ספר בנושא מסוים.
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 1 פרק 7 ISP דוגמא נוספת.
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
תכנון השעור מבוסס על שאלה 3 במבחן המסכם ( מועד א ' ) 2010.
תכנות אסינכרוני, תקשורת ופיתוח אפליקציות ל- Windows 8.1 ואפליקציות ל- Windows Phone 8 Control (Part II)
מבוא למדעי המחשב לתעשייה וניהול הרצאה 7. סברוטינות subroutines.
1 תרגול 11: Design Patterns ומחלקות פנימיות 1 תוכנה 1.
Creational Patterns
 Client, Supplier ומה שביניהם ( ADT!).  שאלה 1: יצירת ADT עבור מעגל במישור נניח שלקוח מעוניין בפעולות הבאות : הזזת מעגל וחישוב שטח מעגל. הספק יספק ללקוח.
תרגול 12: Iterator מחסנית תור 1. מחסנית (stack) מחסנית (stack) היא מבנה נתונים שמזכיר מחסנית של רובה : האיבר שנכנס ראשון למחסנית יוצא ממנה אחרון (LIFO.
1 המרכז להוראת המדעים © האוניברסיטה העברית בירושלים פולימורפיזם מתקדם ממשקים בג ' אווה 1.
שיאון שחוריMilOSS-il מוטיבציה  python זה קל ו C זה מהיר. למה לא לשלב?  יש כבר קוד קיים ב C. אנחנו רוצים להשתמש בו, ולבסס מעליו קוד חדש ב python.
הקדמה Comparator Containers שימושיים Iterator Factory Pattern Trove הטמעה תכנות מתקדם - תרגול 3 Containers ב Java אליהו חלסצ'י תכנות מתקדם
תכנות מכוון עצמים ושפת ++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:
שימוש בעצם ממחלקה אחרת כמאפיין במחלקה הנוכחית
האוניברסיטה העברית בירושלים
© Keren Kalif JDBC קרן כליף.
תרגול 7: מנשקים, פולימורפיזם ועוד
Object Oriented Programming
Object Oriented Programming
Formal Specifications for Complex Systems (236368) Tutorial #1
XML מבוא כללי MCSD Doron Amir
תכנות מכוון עצמים ושפת JAVA
Static and enum קרן כליף.
תכנות מכוון עצמים ושפת JAVA
עבודה עם נתונים באמצעות ADO.NET
תכנות מכוון עצמים בשפת JAVA
ממשקים - interfaces איך לאפשר "הורשה מרובה".
ניתוח מערכות מידע תכנות ב C#
תכנות מכוון עצמים ושפת JAVA
תכנות מכוון עצמים ושפת JAVA
Shell Scripts בסביבת UNIX
תוכנה 1 תרגול 13 – סיכום.
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
הכלת אובייקטים קרן כליף.
פולימורפיזם מתקדם ממשקים בC# עריכה ועיצוב: קרן הרדי
Presentation transcript:

קורס Java מתקדם Design Patterns קרן כליף

ביחידה זו נלמד: מהם Design Patterns Creational Patterns Structural Patterns Behavioral Patterns

מהם Design Patterns Design Pattern (תבנית תיכון) הוא פתרון מקובל וידוע מראש לבעיה נפוצה התבנית מציגה את המחלקות הדרושות כדי לפתור את הבעיה המבוקשת מתארת את הקשרים שבין המחלקות המושג Design Pattern הומצא ע"י הקבוצה GOF (Group Of Four) שהגדירו אוסף פתרונות לבעיות נפוצות

3 משפחות ל- Design Patterns Creational Patterns: הקשורים לאופן יצירת האובייקטים Structural Patterns: הקשורים לאופן ייצוג הקשרים בין המחלקות השונות והעצמים על מנת ליצור אובייקטים גדולים ומורכבים יותר Behavioral Patterns: מאפיינות את הדרכים בהן מחלקות ועצמים מתקשרים ומחלקים אחריות - מכל קבוצה כזו נלמד מספר מצומצם של תבניות -

Singleton Abstract Factory Factory Method Prototype Creational Patterns Singleton Abstract Factory Factory Method Prototype

Singleton שימוש ב- pattern זה מגביל את מספר המופעים של אובייקטים מהמחלקה להיות מקסימום 1 השימוש הוא כאשר יש לנו אובייקט שנרצה מופע יחיד שלו במערכת דוגמאות: מחלקה המבצעת שאילתות מ- DataBase: לא נרצה שיהיו כמה קישורים ל- DB בו-זמנית, ולכן נרצה אובייקט אחד שירכז את כל העבודה מחלקת ניהול מערכת: בכל חנות סרטים נרצה רק אובייקט אחד המכיל את אוסף הסרטים והמלאי שלהם דפי זהב: נרצה רק אובייקט אחד שיהווה ישות מרכזית אחת עם כל הנתונים

מימוש של Singleton 1. הגדרת משתנה סטטי מטיפוס המחלקה 2. הגדרת ה- constructor ב- private 3. הגדרת שיטה סטטית שתחזיר את האוביקט היחיד מהמחלקה

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

Abstract Factory – תרשים כללי

Abstract Factory – דוגמאת עולם החיות דוגמת הקוד בתוך קובץ הזיפ

Prototype משמש ליצור עצם בזמן ריצה, כאשר רק טיפוס הבסיס ידוע בזמן קומפילציה (נקרא גם Virtual Constructor) דוגמאות: בצייר: copy & paste לצורה מסוימת שיכפול תיבת נוח

Composite Adapter Decorator Proxy Builder Facade Structural Patterns Composite Adapter Decorator Proxy Builder Facade

Composite משמש ליצוג מבנה נתונים רקורסיבי והטרגוני לאיברים שונים בעלי בסיס משותף. כל איבר הוא "עלה" או composite דוגמאות: XML: מכיל element'ים ו- attribute'ים, וכל element יכול להכיל בתוכו elementים נוספים תיקיה במחשב: כל תיקיה יכולה להכיל תיקיות נוספות וקבצים קטגוריות בדפי זהב: כל קטגוריה יכולה להכיל תתי קטגוריות, או נתונים

Composite – צורה כללית לפתרון

דוגמת הקוד בתוך קובץ הזיפ Composite - דוגמא דוגמת הקוד בתוך קובץ הזיפ

adapter design pattern זה בא לפתור את הבעיה שיש לנו מחלקה המצפה לקבל נתונים מסוימים, ולנו יש נתונים אחרים שצריכים לעבור מניפולציה כלשהי כדי להתאם לממשק מאפשר תקשורת בין מחלקות שכרגע לא יכולות לתקשר נשתמש בו כאשר איננו רוצים או יכולים לשנות את הממשק של המחלקה עימה נרצה לעבוד דימוי: מתאם שקע-תקע לחו"ל

adapter - צורה כללית לפתרון הממשק הרצוי איתו הקליינט ירצה לעבוד המחלקה המקורית הקיימת המחלקה המתאמת דוגמת הקוד בתוך קובץ הזיפ

ColoredFramedRectangle decorator נועד לאפשר סוגי קומבינציות שונות של אובייקטים ללא ירושה עבור כל טיפוס דוגמה: מחלקת "צורה" שיורשים ממנה "ריבוע" ו"עיגול". עכשיו נרצה להוסיף פונקציונליות של "מסגרת" ו"צבע" הפתרון הרע: Shape Rectangle Circle ColoredRectangle ColoredCircle FramedRectangle FramedCircle ColoredShape FramedShape ColoredFramedRectangle ColoredFramedCircle

decorator – תצורת פתרון כללית http://3.bp.blogspot.com/-zzLaF2f7KzI/UsAdGOueWnI/AAAAAAAAFn4/YPqEdmiWdbQ/s1600/dec_1.png

decorator – שימוש בפתרון לבעית הצורות דוגמת הקוד בתוך קובץ הזיפ Shapeable draw() Shape ShapeProperty draw() draw() Circle Rectangle ShapeWithBorder ShapeWithColor draw() draw() http://3.bp.blogspot.com/-zzLaF2f7KzI/UsAdGOueWnI/AAAAAAAAFn4/YPqEdmiWdbQ/s1600/dec_1.png

מה מקבל ה- c’tor של כל אחת מהמחלקות על מנת שקוד זה יתקמפל? decorator – ה- main מה מקבל ה- c’tor של כל אחת מהמחלקות על מנת שקוד זה יתקמפל?

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

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

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

builder – צורה כללית לפתרון

builder – דומאת המרת מסמך דוגמת הקוד בתוך קובץ הזיפ

facade מטרתו להוות ממשק יחיד לכמה ממשקים שונים בתת-מערכת מורכבת כלשהי כאשר יש הרבה תתי-מערכות התקשורת בינהן מסובכת ה façade מגדיר ממשק high-level יחיד ובכך מקל על העבודה עם תת-המערכת המטרה היא לצמצם ככל הניתן את התקשורת והתלות בין תת-המערכות במערכת למשל במודל ה- MVC אנחנו רוצים שה- controller יעבור בכל צד מול מחלקה אחת: המחלקה המנהלת מצד ה- BL וה- JFrame/Jpanel המרכזי בצד של ה- UI

facade – הצגת הפתרון והבעיה

facade– צורה כללית לפתרון

Facade – דוגמאת המשכנתא דוגמת הקוד בתוך קובץ הזיפ

Behavioral Patterns Observer Command Template Mediator Visitor State Strategy

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

observer– צורת פתרון כללית

Command נועד לאפשר שמירת היסטוריה של פקודות לצורך undo ו- redo לכן פעולה צריכה להיות מיוצגת ע"י אובייקט דוגמה: מעקב אחר פקודות בתפריט

Command – תצורת הפתרון הכללית מכיל מיפוי לכל הפעולות האפשריות מחלקה אבסטרקטית המייצגת פעולה מחלקה המייצגת פעולה ספציפית מקבל בקשה ויודע להפעיל את הפעולה (אובייקט) הספציפית

Command – שימוש בפתרון לבעית המחשבון Operator Operations Calculator Plus / Minus / … דוגמת הקוד בתוך קובץ הזיפ

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

template - צורה כללית לפתרון דוגמת הקוד בתוך קובץ הזיפ

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

mediator– צורה כללית לפתרון

mediator - דוגמא חלון GUI: יש בתוכו למשל combo-box, list, table, text box וכו'. שינוי ב- combo-box יוביל לשינוי בטבלה המטרה היא שה- combo-box לא יכיר את הטבלה, אלא יעדכן את המתווך, והוא יעדכן את הטבלה הסיבה: אם בעתיד נרצה להציג את הנתונים לא בטבלה, אלא בצורה שונה, רק המתווך יטפל בכך הסיבה: אם בעתיד נרצה שבעקבות שנוי ב- combo-box פקד נוסף יתעדכן, רק המתווך יטפל בכך

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

Visitor – צורת פתרון כללית האוסף שמכיל את האובייקטים הוא Visitable האובייקט שנרצה להגדיר עליו את הפעולה מחלקה המגדירה פעולה מסוימת דוגמת הקוד בתוך קובץ הזיפ

Visitor – שימוש בפתרון לבעית הפעלת הפעולות על העובדים Department Visitable IncomeVisitor / VacationVisitor Employee

state מאפשר לעצם לשנות את התנהגותו כתוצאה של שינוי במצבו הפנימי. העצם יראה כאילו הוא החליף מחלקה! דוגמה: מנורה אשר יכולה להיות דלוקה או כבויה

state - צורה כללית לפתרון דוגמת הקוד בתוך קובץ הזיפ

strategy - צורה כללית לפתרון דוגמת הקוד בתוך קובץ הזיפ

ולסיום..

ביחידה זו למדנו: מהם Design Patterns Creational Patterns Structural Patterns Behavioral Patterns