+ All Categories
Home > Documents > Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented...

Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented...

Date post: 16-Aug-2020
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
122
- 1 - האוניברסיטה הפתוחה המחלקה למתמטיקה ולמדעי המחשב דפוסי תכן( תבניות עיצוב) בהנדסת תוכנה: מתיאוריה לשימוש בתעשייהDesign Patterns in Software Engineering: From Theory to Production עבודה מסכמת זו הוגשה כחלק מהדרישות לקבלת תואר" מוסמך למדעים" M.Sc. במדעי המ חשב באוניברסיטה הפתוחה החטיבה למדעי המחשב על- ידי אלי איזק ת. ז. 571520120 דוא" ל: [email protected] העבודה הוכנה בהדרכת ו של ד" ר דן אהרוני הצעה מאושרת הוכנה ב הדרכת ה של ד" ר ציפי ארליך תאריך: 24/01/2013
Transcript
Page 1: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-1-

‏הפתוחה‏האוניברסיטה

‏המחשב‏ולמדעי‏למתמטיקה‏המחלקה

בתעשייה לשימוש מתיאוריה :תוכנה בהנדסת( עיצוב תבניות) תכן דפוסי

Design Patterns in Software Engineering: From Theory to Production

‏תואר‏לקבלת‏מהדרישות‏כחלק‏הוגשה‏זו‏מסכמת‏עבודה

‏חשבהמ‏במדעי‏.M.Sc"‏למדעים‏מוסמך"

‏הפתוחה‏באוניברסיטה

‏המחשב‏למדעי‏החטיבה

‏ידי-על

‏‏‏איזק‏אלי

‏571520120.‏ז.ת

[email protected]:‏‏ל"דוא

‏אהרוני‏דן‏ר"ד‏של‏ובהדרכת‏הוכנה‏העבודה

‏ארליך‏ציפי‏ר"ד‏של‏ההדרכתב‏הוכנה‏מאושרת‏הצעה

24/01/2013:‏‏‏תאריך

Page 2: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-7-

‏תודות

המסכמת‏העבודה‏בהכנת‏ירותבמס‏אותי‏שהנחה‏אהרוני‏דן‏ר"לד‏רבה‏תודה.

‏.המסכמת‏לעבודה‏ההצעה‏בהכנת‏במסירות‏אותי‏שהנחתה‏ארליך‏ציפי‏ר"לד‏רבה‏תודה

המקצועיות‏הערותיו‏על‏לורנץ‏דוד‏לפרופסור‏רבה‏תודה.

Page 3: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-3-

העניינים תוכן

6‏.......................................................................................................................‏ואיורים‏טבלאות‏רשימת

1‏................................................................................................................................................‏תקציר

15‏.........................................................................................................................................‏מבוא 1

ן‏דפוסי 1.1 כ 15‏.........................................................................................................‏ת

15‏......................................................................................‏עצמים‏מונחי‏תכן‏דפוסי 1.2

11‏...................................................................................................‏העבודה‏מטרת 1.3

11‏............................................................................................‏העבודה‏בהמשך‏מה 1.5

13‏.............................................................................................................................‏היסטורי‏רקע 7

13‏........................................................................‏התכן‏דפוסי‏צמחו‏שורשים‏מאיזה 7.1

15‏.................................................................‏תוכנה‏בהנדסת‏התכן‏דפוסי‏התפתחות 7.7

10‏.......................................................................................................................................‏הגדרה 3

10‏....................................................................................‏להגדרה‏משלימות‏הערות 3.1

12‏........................................................................................................‏תכן‏בדפוסי‏לשימוש‏הצדקה 5

11‏....................................................................‏והארות‏הערות,‏ספרות‏סקירת‏—‏תכן‏בדפוסי‏סוגיות 0

11‏...................................................................‏תוכנה‏מערכת‏של‏נכון‏עיצוב‏עקרונות 0.1

73‏......................................................................................תכן‏דפוסי‏של‏קטגוריות 0.7

70‏.......................................................................................‏התכן‏דפוסי‏בין‏קשרים 0.3

72‏.........................................................................................ומורכבות‏קושי‏דרגות 0.5

35‏...............................................................................................‏ברדוקציה‏שימוש 0.0

33‏....................................................................‏תכן‏דפוסי‏עם‏עבודה‏לתחילת‏גישות 0.6

33‏............................................................................................‏תוכנה‏לעצב‏הקושי 0.6.1

33‏....................................................................‏תכן‏בדפוסי‏השימוש‏להפנמת‏גישות 0.6.7

30‏...........................................................................עצמים‏מונחי‏תכן‏דפוסי‏להצגת‏כלי‏-‏UML‏שפת 6

Page 4: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-5-

30‏................................................................................................................‏מבוא 6.1

32‏.......................................................................‏נבחרים‏סטטיים‏תרשימים‏סקירת 6.7

53‏.....................................................................‏נבחרים‏דינאמיים‏תרשימים‏סקירת 6.3

01‏...........................................................................................................‏נבחרים‏תכן‏דפוסי‏סקירת 2

01‏........................................................................‏Behavioral‏בקטגוריה‏תכן‏דפוסי 2.1

01‏.......................................................................................‏Observer‏‏התכן‏דפוס 2.1.1

02‏.........................................................................................‏Strategy‏‏התכן‏דפוס 2.1.7

67‏..........................................................................................‏Iterator‏‏התכן‏דפוס 2.1.3

60‏.........................................................................Creational‏בקטגוריה‏תכן‏דפוסי 2.7

60‏.............................................................................‏Factory Method‏התכן‏דפוס 2.7.1

23‏.......................................................................................‏Singleton‏‏התכן‏דפוס 2.7.7

22‏.........................................................................‏Structural‏בקטגוריה‏תכן‏דפוסי 2.3

22‏.........................................................................................‏Adapter‏‏התכן‏דפוס 2.3.1

27‏...........................................................................................‏Bridge‏‏ןהתכ‏דפוס 2.3.7

26‏....................................................................................‏Composite‏‏התכן‏דפוס 2.3.3

11‏.......................................................‏בתעשייה‏פיתוח‏ובסביבות‏עבודה-במסגרות‏תכן‏בדפוסי‏שימוש 2

17‏...........................................................................................‏Spring-ב‏תכן‏דפוסי 8.1

15‏.............................................................................................‏JUnit-ב‏תכן‏דפוסי 2.7

16‏......................................................................................‏Java JDK-ב‏תכן‏דפוסי 2.3

11‏........................................................................................‏C# SDK-ב‏תכן‏דפוסי 2.5

151‏.....................................................................‏תוכנה‏פיתוח‏בתהליך‏תכן‏בדפוסי‏לשימוש‏דוגמאות 9

151‏............................................................‏חומרה‏עם‏בשילוב‏תוכנה‏לבדיקת‏תוכנה 1.1

153‏.................................................................................‏פשוט‏מחשב‏משחק‏פיתוח 1.7

Page 5: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-0-

150‏..............................................................‏נבחרים‏עצמים‏מונחי(‏anti-patterns)‏נגד-דפוסי‏סקירת 15

15.1 Call Supper156‏...................................................................................................‏

15.7 Sequential Coupling156‏.....................................................................................‏

15.3 Base Bean152‏.....................................................................................................‏

15.5 God Object152‏....................................................................................................‏

152‏......................................................................................................................................‏סיכום 11

151‏....................................................................................‏אנגלית-עברית‏מונחים‏רשימת‏–'‏א‏נספח 12

115‏..................................................‏Spring Framework-ה‏בעזרת‏DI‏עיקרון‏פי‏על‏עבודה‏–'‏ב‏נספח 13

116‏........................................................................................................................‏מקורות‏רשימת 15

Page 6: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-6-

ואיורים טבלאות רשימת

טבלאות

31‏.............................................................‏.(א.א‏—‏ותרגום‏עריכה)[‏Pete]‏המחלקות‏בין‏היחסים:‏1‏טבלה

151‏.....................................................................................................‏ותרגומם‏מונחים‏רשימת:‏7‏טבלה

איורים

76‏....................................................................................‏[bean]‏MVC‏הארכיטקטוני‏התכן‏דפוס:‏1‏איור

72‏...........................................................................‏.[Huy]‏Proxy‏התכן‏דפוס‏של‏מחלקות‏תרשים:‏7‏איור

31‏.........................................................‏[.Commons]‏Composite‏תכן‏הדפוס‏של‏מחלקות‏תרשים:‏3‏איור

31‏..................................................................[.Commons]‏עץ‏הרקורסיבי‏הנתונים‏מבנה‏של‏איור:‏5‏איור

37‏..............................[.Commons]‏Chain Of Responsibility‏התכן‏דפוס‏של‏טיפוסי‏עצמים‏מבנה:‏0‏איור

37‏...................................‏[.Commons]‏Chain Of Responsibility‏התכן‏דפוס‏של‏מחלקות‏תרשים:‏6‏איור

55‏..........................................................................................‏.[Tech]‏מחלקות‏תרשים‏של‏דוגמא:‏2‏איור

51‏...........................................................................................‏.[Tech]‏רכיבים‏תרשים‏של‏דוגמא:‏‏2‏איור

57‏...............................................................................................‏[‏Mill]‏פריסה‏תרשים‏של‏דוגמא:‏1‏איור

53‏..........................................................................................‏.[Tech]‏פעילות‏תרשים‏של‏דוגמא:‏15‏איור

55‏................................................................[.Holub]‏פעילות‏בתרשים‏שגיאה‏במצב‏טיפול‏הצגת:‏‏11‏איור

55‏.....................................................................‏[.Holub]‏פעילות‏בתרשים‏בסיגנלים‏טיפול‏הצגת:‏‏17‏איור

50‏...........................................................................................‏.[‏Mill]‏מצבים‏תרשים‏של‏דוגמא:‏13‏איור

56‏................................................................................................‏.[‏Mill]‏רצף‏תרשים‏של‏דוגמא:‏15‏איור

52‏...............................................................................................‏.[‏Mill]‏‏רצף‏תרשים‏של‏דוגמא:‏10‏איור

52‏...............................................................‏.[Inform]‏רצף‏בתרשים‏Opt‏המסגרת‏לשילוב‏דוגמא:‏16‏איור

Page 7: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-2-

52‏.......................................................................‏[.Inform]‏רצף‏בתרשים‏מסגרות‏לשילוב‏דוגמא:‏12‏איור

51‏.................................................................................‏.[Puff]‏‏שימוש‏מקרי‏תרשים‏‏של‏דוגמא:‏12‏איור

05‏...............................................................................‏.[Devx1]‏‏שימוש‏מקרי‏תרשים‏של‏דוגמא:‏11‏איור

07‏..........................................................................................‏[dev]‏מודולארית‏לא‏שמע‏מערכת:‏75‏איור

07‏......................................................................‏.(א.א‏—‏עריכה)‏‏[dev]‏מודולארית‏שמע‏מערכת:‏71‏איור

03‏.................................................‏[Gof]‏מוטיבציה‏לצורך‏Observer‏התכן‏בדפוס‏לשימוש‏דוגמא:‏77‏איור

05‏................................................................‏.[Code]‏‏Observer‏התכן‏דפוס‏של‏מחלקות‏תרשים:‏73‏איור

05‏.........................................................................‏.[Blog]‏‏Observer‏התכן‏דפוס‏של‏רצף‏תרשים:75‏איור

02‏.......................................‏[Mak]‏Strategy‏התכן‏דפוס‏של‏העיקרון‏את‏שמתאר‏מחלקות‏תרשים:‏70‏איור

01‏......................................................................‏[Rav]‏Strategy‏התכן‏דפוס‏של‏מחלקות‏תרשים:‏76‏איור

01‏.................................................‏[.Tod]‏Strategy‏התכן‏בדפוס‏שימוש‏שמדגים‏מחלקות‏תרשים:‏72‏איור

63‏.....................................................................‏[Dof2]‏‏Iterator‏התכן‏דפוס‏של‏מחלקות‏תרשים:‏72‏איור

62‏......................................................‏[Dof3]‏‏Factory Method‏התכן‏דפוס‏של‏מחלקות‏תרשים:‏71‏איור

61‏...............................................................‏[Jam]‏‏Factory Method‏התכן‏דפוס‏של‏רצף‏תרשים:‏35‏ראיו

25‏...............................(א.א‏—‏עריכה)‏[Dof3]‏Simple Factory‏התכנות‏סגנון‏של‏מחלקות‏תרשים:‏31‏איור

21‏................................‏[Gof]‏‏Factory Method‏התכן‏בדפוס‏לשימוש‏דוגמא‏של‏מחלקות‏תרשים:‏37‏איור

25‏.................................................................‏[Mak2]‏Singleton‏התכן‏דפוס‏של‏מחלקות‏תרשים:‏37‏איור

21‏.................................................‏.[Fbs]‏Adapter‏התבנית‏לתיאור‏היומיום‏מחיי‏בדוגמא‏שימוש:‏33‏איור

21‏........................................................‏[Dof4]‏Adapter‏התכן‏דפוס‏את‏שמתאר‏מחלקות‏תרשים:‏35‏איור

27‏................................................‏Bridge‏התכן‏דפוס‏את‏שמסבירה‏שלי‏לדוגמא‏מחלקות‏תרשים:‏30‏איור

23‏................................................‏Bridge‏התכן‏דפוס‏את‏שמסבירה‏שלי‏לדוגמא‏מחלקות‏תרשים:‏36‏איור

25‏.....................................................................‏[.Dof1]‏‏Bridge‏התכן‏דפוס‏של‏מחלקות‏תרשים:‏32‏איור

Page 8: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-2-

22‏.............................................‏[Gof]‏Composite‏התכן‏בדפוס‏לשימוש‏דוגמא‏-‏מחלקות‏תרשים:‏32‏איור

22‏....................‏[Gof]‏Composite‏התכן‏דפוס‏שיוצר(‏עץ)‏רקורסיבי‏עצמים‏למבנה‏ספציפית‏דוגמא:‏31‏איור

22‏.................................................................‏[Gof]‏‏Composite‏התכן‏דפוס‏של‏מחלקות‏תרשים:‏55‏איור

22‏...................................‏[Gof]‏Composite‏התכן‏דפוס‏שיוצר‏אפשרי(‏עץ)‏רקורסיבי‏עצמים‏מבנה:‏51‏איור

17‏..........‏.(א.א‏—‏עריכה)‏‏[Dof3]‏‏Factory Method‏התכן‏בדפוס‏שימוש‏להדגמת‏מחלקות‏תרשים:‏57‏איור

15‏..........................................‏[Forg]‏‏JUnit‏של‏TestCase‏המחלקה‏את‏שמתאר‏מחלקות‏תרשים:‏53‏איור

155‏....................‏.(א.א‏—‏תוספות)[‏Ravi]‏Strategy‏התכן‏בדפוס‏שימוש‏להדגמת‏מחלקות‏תרשים:‏55‏איור

151‏..................................................................‏[Acd]‏חומרה‏של‏לבדיקות‏נאיבי‏מחלקות‏תרשים:‏50‏איור

157‏..........................‏[Acd]‏‏Strategy‏התכן‏בדפוס‏שמשתמש‏חומרה‏של‏לבדיקות‏מחלקות‏תרשים:‏56‏איור

153‏........................................‏[Wick]‏‏Game of Life‏למשחק‏נאיבי‏עיצוב‏שמציג‏מחלקות‏תרשים:‏52‏איור

155‏.............‏[Wick]‏Game of Life‏-‏ל‏Observer‏התכן‏בדפוס‏חלקי‏שימוש‏שמציג‏מחלקות‏תרשים:‏52‏איור

Page 9: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-1-

תקציר

‏בעיצוב‏שכיחה‏לבעיה‏כללי‏פתרון‏המשמשת‏כללית(‏דפוס‏או)‏תבנית‏הוא‏(design patterns)‏"ןכ‏ת‏‏דפוס"

‏‏.‏רבים‏ביישומים‏תוכנה‏לעיצוב‏שימושית‏להיות‏שעשויה‏תוכנה

‏.‏((object oriented design patterns‏"עצמים‏ימונחדפוסי‏תכן‏"העבודה‏מתמקדת‏ב

-למשל‏נעשה‏בהם‏שימוש‏רב‏במסגרות,‏יש‏כיום‏משקל‏רב‏בתעשיית‏התוכנה‏"עצמים‏מונחידפוסי‏תכן‏"ל

‏.איך‏זה‏קרה‏ומה‏ההצדקה‏לכךהעבודה‏מתארת‏.‏(frameworks)עבודה‏

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

ודוגמאות‏מתעשיית‏‏מעשיותדוגמאות‏וך‏שימוש‏בת‏תוכנה‏הנדסת‏עקרונות‏יישום‏לשיפור‏ורמיםת‏תכן

‏,האצלה‏במקום‏בהורשההרכבה‏ושימוש‏ב:‏הם‏מוצגיםחלק‏מעקרונות‏הנדסת‏התוכנה‏ש‏.התוכנה

Single Responsibility Principle (SRP),‏Open Close Principle (OCP)‏,Inversion of Control (IoC) ‏,

Liskov Substitustion Principle (LSP).‏

‏:כמו‏קרובים‏יםנושא‏בקצרה‏סוקרתהעבודה‏,‏כמו‏כן

‏דפוסי‏תכן‏של‏ארכיטקטורת‏תוכנה‏שהם‏דפוסי‏תכן‏שמספקים‏תבניות‏לארכיטקטים‏של‏תוכנה

.לעיצוב‏מערכות‏מורכבות‏של‏תוכנה‏מקצה‏לקצה

‏מונחי‏עצמים‏נגד-דפוסי(Object Oriented Anti Patterns)‏‏להימנע‏אותנו‏שמלמדים‏תכן‏דפוסישהם‏‏

.שגוי‏עיצוב‏מונחה‏עצמיםמ

‏‏‏

Page 10: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-15-

מבוא 1

את‏מטרת‏ואז‏אתאר‏בקצרה‏"‏דפוסי‏תכן‏מונחי‏עצמים"ועל‏"‏דפוסי‏תכן"הסבר‏מקדים‏על‏‏בפרק‏זה‏אביא

‏.מה‏צפוי‏בהמשך‏העבודההעבודה‏ו

ןכ ת דפוסי 1.1

ן"‏מילהה‏של‏התרגום.‏design patterns))‏"ןכ‏ת‏‏דפוסי"‏המושג‏של‏הלשונית‏במשמעות‏תחילנ כ ‏באנגלית‏"ת

‏במקום.‏styling‏‏ולא‏design‏של‏במשמעות‏"עיצוב"‏להשתמש‏במילה‏גם‏ניתן,‏"תכן"‏במקום.‏Design‏‏הינו

‏תבניות"‏הנפוץ‏םבשמ‏גם‏נקראים‏תכן‏דפוסי‏אכןו‏"תבנית"‏להשתמש‏במונח‏ניתן,‏(pattern)‏"דפוס"‏המונח

‏."עיצוב

‏תבנית‏שזאתנאמר‏‏,בהקשר‏של‏הנדסת‏תוכנה‏(10‏בעמוד‏תובא‏הגדרה)‏"תכן‏דפוס"‏של‏ראשוני‏כתיאור

‏אבל‏‏.רבים‏ביישומים‏שימושית‏להיות‏שעשויה‏תוכנה‏בעיצוב‏שכיחה‏לבעיה‏כללי‏פתרון‏המשמשת‏כללית

,[Alex]‏ערים‏עיצובו‏בנייהדפוסי‏תכן‏שימשו‏ב‏.םאחרי‏רבים‏בתחומים‏גם‏הנדסי‏לשיפור‏וזריםע‏תכן‏דפוסי

[Ais]‏עיצובב‏אפילו דפוסי‏תכן‏משמשים.‏ורק‏בהמשך‏הנושא‏תפס‏תאוצה‏בעולם‏התוכנה‏כפי‏שנראה‏בהמשך‏

‏.[Berg]‏שיעור‏של‏פדגוגי

‏כלליות‏הנדסיות‏תבניות‏מספק‏שהוא‏כךב‏תוכנה‏בהנדסת‏עקרונות‏‏של‏ליישום‏תורם‏תכן‏בדפוסי‏שימוש

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

.ולמנוע‏פיתוח‏חוזר‏של‏תבניות‏שכבר‏פותחו‏[Mha],‏ [Weis]התוכנה‏של‏ההנדסי

‏עיצוב‏של‏היבטים‏לפי‏גם‏אלא,‏שלה‏ריתםהאלגו‏י"ע‏שמוכתבת‏ההתנהגות‏פי‏על‏רק‏לא‏להימדד‏צריכה‏תוכנה

‏כאן(.‏Scalability)‏במקביל‏המשתמשים‏מספר‏של‏ושל‏הקוד‏בסיס‏של‏להרחבה‏וגמישות‏לשינוי‏עמידות‏כמו

‏.[Mgj]‏התכן‏דפוסי‏לעזור‏באים

עצמים מונחי תכן דפוסי 2.1

מתודולוגיה‏של‏ב‏םנעזרי‏התכן‏דפוסי‏לרוב‏אבל,‏מסוימת‏מחשב‏בשפת‏תלויים‏לא‏התכן‏דפוסי‏כלל‏בדרך

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

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

‏.‏תכן‏דפוס‏כל‏יצירת

Page 11: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-11-

עיצוב‏מונחה‏ב‏שימוש‏נעשה‏היה‏לא‏אם‏אבל‏עיצוב‏מונחה‏עצמים‏על‏מבוססים‏להיות‏חייבים‏לא‏תכן‏דפוסי

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

‏יצירת‏לצורך‏בסיסיים‏תכן‏דפוסיכ‏אלו‏ביסודות‏להשתמש‏היה‏אפשר‏שוב‏ואז.‏ופולימורפיזם‏הורשה‏למשל

‏גם‏וכדאי‏תכן‏דפוסי‏ללימוד‏היסוד‏אבני‏את‏נותן‏עיצוב‏מונחה‏עצמיםש‏גם‏נאמר‏.[Gof]‏אחריםה‏התכן‏דפוסי

.‏[Ppp]‏ביחד‏אותם‏וללמוד‏אלו‏נושאים‏בין‏להפריד‏שלא

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

מטרת העבודה 1.1

‏"עצמים‏מונחידפוסי‏תכן‏"הנושא‏החשוב‏בהנדסת‏תוכנה‏שנקרא‏באופן‏מקיף‏את‏‏אסקורבעבודה‏זאת‏

Object Oriented Design Patterns))‏.‏

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

קשה‏להבנה‏)בסופו‏של‏דבר‏מוביל‏ליצירת‏קוד‏תוכנה‏גרוע‏,‏לימוד‏שיטחי‏של‏דוגמאות,‏שהרי.‏דוגמאות

‏.זה‏קורה‏בגלל‏שימוש‏לא‏ראוי‏בכלים‏שנעשה‏בהם‏שימוש‏מבלי‏להבין‏אותם‏היטב.‏(ולתחזוקה

מה בהמשך העבודה 1.1

‏‏.שיעזור‏לתת‏מוטיבציה‏ללימוד‏הנושא‏,אציג‏רקע‏היסטורי‏7בפרק‏

‏.והצדקההגדרה‏‏אתן‏5-ו‏3בפרקים‏

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

אתאר‏את‏המורכבות‏של‏ו‏ואת‏הקשרים‏ביניהם"‏דפוסי‏התכן"שיטות‏הקטלוג‏של‏‏נראה‏תוכנה‏הנדסת

‏‏‏.שונים‏ואת‏הגישות‏ללימוד‏שלהם‏ותחילת‏עבודה‏איתם"‏דפוסי‏תכן"

‏על‏קצרה‏ת‏ריענוןסקיר‏אתן,‏בו‏מתמקדת‏עבודה‏זאת‏"דפוסי‏תכן‏מונחי‏עצמים"כהכנה‏לנושא‏,‏6בפרק‏

‏למשל‏–מונחה‏עצמים‏‏עיצוב‏כל‏על‏שונות‏ראיה‏זוויות‏גראפית‏בצורה‏שמציגים‏UML‏תרשימיב‏השימוש

‏לעומת,‏התוכנה‏קודעיצוב‏וה‏של‏המבנה‏את‏שמתאר‏סטטיהינו‏תרשים‏(‏class diagram)‏מחלקות‏תרשים

‏אותן‏של‏עצמים‏בין‏הנשלחים‏המסרים‏את‏ציגשמ‏דינאמי‏תרשים‏ינושה(‏sequence diagram)‏רצף‏םתרשי

‏.‏מחלקות

‏.אציג‏דפוסי‏תכן‏נבחרים‏2בפרק‏

‏מעשיות‏דוגמאות‏אביא,‏למשל.‏בתעשייה‏פיתוח‏ובסביבות‏עבודה-מסגרותב‏תכן‏בדפוסי‏שימושאציג‏‏2בפרק‏

‏.תכן‏בדפוסי‏תמשתמש‏( (frameworkעבודה-מסגרת‏כיצד‏למשל‏–‏תוכנה‏כמפתח‏עובד‏אני‏בה‏מהתעשייה

Page 12: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-17-

‏.נראה‏דוגמאות‏כיצד‏להשתמש‏בדפוסי‏תכן‏במהלך‏פיתוח‏תוכנה‏1רק‏בפ

object oriented anti)"‏מונחי‏עצמים‏נגד-דפוסי"אציג‏את‏הנושא‏המשלים‏שנקרא‏,‏15בפרק‏,‏לבסוף

patterns.)‏.שגוי‏עיצוב‏מונחה‏עצמיםמ‏להימנע‏אותנו‏שמלמדים‏תכן‏דפוסי‏אלו‏הם‏

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

‏.כאן‏שיתוארו‏התוכנה‏הנדסת‏של‏התיאורטיים‏ביסודות‏מעשי‏שימוש‏שידגים

‏התוכנה‏בקוד‏תכן‏בדפוסי‏נכון‏שימוש‏של‏דוגמה‏לתת‏הפרויקט‏מטרת.‏ציור‏תוכנת‏יהיה‏המעשי‏הפרויקט

העיצוב‏‏במסמך.‏UMLתרשימי‏בעיצוב‏שיעשה‏שימוש‏‏ךמסמ‏בעזרת‏עוצבי‏הפרויקט,‏כלומר.‏עיצובה‏ובמסמכי

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

‏כמו‏–‏תכן‏בדפוסי‏שתתמוך‏כך‏בעצמה‏הורחבה‏זאת‏שפה.‏Java‏שפת‏–‏בתעשייה‏מאוד‏שנפוצה‏העצמים

‏.בהמשך‏כדוגמא‏שאביא‏Observer‏התכן‏בדפוס‏תמיכה‏למשל

Page 13: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-13-

היסטורי רקע 2

התכן דפוסי צמחו שורשים מאיזה 1.1

‏למשל,‏התוכנה‏בתעשיית‏םבה‏השימוש‏לפני‏הרבה‏עודבתחומי‏הנדסה‏שונים‏‏התפתח‏התכן‏דפוסי‏נושא

‏מסוים‏בגובה‏נבנים‏חלונות,‏למשל)‏מסוים‏דפוס‏לפי‏שנבנים‏בתים‏לבניית‏תכן‏דפוסי‏יםקיימ.‏‏באדריכלות

‏(.לבית‏הכניסה‏דלת‏ליד‏ממוקם‏לא‏כלל‏בדרך‏שינה‏חדרו

‏תורת‏מאבות‏כאחד‏שמוכר)‏אלכסנדר‏כריסטופר‏האדריכל‏על‏שמספרת‏היסטורית‏סקירה‏ניתנת‏[Part]‏בספר

‏דומה‏בעיה‏לפתור‏שנועדו‏בנייה‏שיטות‏מהם‏ואסף‏גבוהה‏באיכות‏שנבנו‏מבנים‏שחקר(‏תכן‏דפוסיב‏השימוש

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

‏של‏לאדריכלות‏יםשקשור‏דפוסיםב‏עסק‏אלכסנדר,‏כאמור(.‏patterns)‏דפוסים‏בשם‏האלו‏הדומים‏לדברים

.‏וכבישים‏גנים,‏בניינים‏כמו‏מבנים

‏ [Ais]:הבא‏המפורסם‏טהמשפ‏את‏כתב‏אלכסנדר,‏(התוכנה‏בתעשיית)‏רבים‏במקורות‏מצוטט‏שהוא‏כפי

"The elements of this language are entities called patterns. Each pattern describes a

problem that occurs over and over again in our environment, and then describes the core of the‏

solution to that problem, in such a way that you can use this solution a million times over, without

ever doing it the same way twice." (p. 10)

Page 14: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-15-

תוכנה בהנדסת התכן דפוסי התפתחות 1.1

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

,‏למשל‏.לשינוי‏שמועד‏תוכנה‏קוד‏של(‏encapsulation)‏סכימו‏הוא‏תכן‏דפוסי‏י"ע‏שממומש‏תוכנה‏הנדסת

‏לקוחותמה(‏כימוס‏לו‏עושה)‏שלה‏המימוש‏את‏שמחביאה‏בסיסית‏ישות‏היא‏מחלקה,‏עיצוב‏מונחה‏עצמיםב

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

‏של‏אספקטים‏של‏כימוס‏הנעש‏אם‏לכן(.‏התוכנה‏עלות‏לע‏גם‏משפיע‏שזה)‏וךהאר‏הזמן‏הואש‏,והתיקונים

‏לצמצם‏נוכל,‏הקוד‏את‏לשנות‏שנרצה‏ברגע‏אז(‏זאת‏עבודה‏בהמשך‏כך‏על‏ארחיב)‏לשינוי‏שמועדים‏התוכנה

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

.[Dgd]‏במאמר‏למצוא‏ניתן‏בעבר‏שפותח‏לדוגמה‏דומה

‏זה‏שספר‏כפי‏אך,‏(בהמשך‏שאתאר‏כפי)‏[Gof]‏הספר‏פרסום‏עם‏גדולה‏מרץ‏זריקת‏קיבל‏התכן‏דפוסי‏נושא

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

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

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

.(מיידי‏באופן‏בתעשייה‏מקובל‏כדפוס‏להתקבל‏יוכל‏לא

או‏בקצרה‏‏Gang of Four‏המפורסם‏החיבה‏בשם‏בקיצור‏ביחד‏שידועיםארבעה‏חוקרים‏‏פרסמו‏1115‏בשנת

Gof‏הספר‏את‏[Gof]בתחום‏ך"תנ‏שנחשב‏.

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

‏בשנת,‏למשל.‏[Gof]‏הספר‏פירסום‏לפני‏הרבה‏התכנה‏בתעשיית‏התפתחו‏התכן‏דפוסי,‏לעיל‏שנאמר‏כפי‏אבל

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

(‏עיצוב‏מונחה‏עצמיםב‏שעוסק‏כנס)‏OOPSLA‏בכנס‏מצגת‏והציגו‏משתמש‏ימנשק‏בניית‏לצורך‏תוכנה‏עיצובל

‏נכתבו‏[Gof]‏ספרה‏פרסום‏לאחר‏.עיצוב‏מונחה‏עצמים‏אנשי‏י"ע‏נתרמו‏בנושא‏ומצגות‏מאמרים‏הרבה‏ומאז

ת‏עבודה‏ומסגר‏בתוך‏למשל‏,תכן‏דפוסיב‏נרחב‏שימוש‏נעשה,‏בתעשייה‏.בנושא‏רבים‏וספרים‏ריםמאמ‏עוד

‏.[Acd]שלרוב‏מממשות‏דפוסי‏תכן‏

Page 15: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-10-

הגדרה 3

‏.תכן‏כדפוס‏להיחשב‏יוכל‏מה‏נגדיר‏עתה.‏"תכן‏דפוס"‏של‏הלשונית‏המשמעות‏את‏הצגתי‏המבוא‏בפרק

‏דפוס‏כאשר,‏נתון(‏context)‏בהקשר‏תוכנה‏עיצוב‏של‏תכללי‏בעיה‏של‏לפיתרון‏מופשטת‏כדרך‏תכן‏דפוס‏נגדיר

‏:[Alex, Gof]‏הבאות‏בדרישות‏לעמוד‏צריך‏התכן

‏ושונות‏רבות‏תוכנה‏עיצוב‏בעיות‏לפיתרון‏חוזר‏לשימוש‏ניתן

‏בהמשך‏שנראה‏כפי‏תוכנה‏של‏נכון‏עיצוב‏בעקרונות‏טיואלגנ‏יעיל‏באופן‏להשתמש‏צריך

‏הפיתרון‏נותןש‏והחסרונות‏היתרונות‏את‏לתאר‏צריך

‏האקדמית‏והקהילה‏המקצוע‏אנשי‏מצד‏והביקורות‏הזמן‏מבחן‏את‏לשרוד‏חייב

להגדרה משלימות הערות 1.2

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

‏.[[Mull‏בעיות‏לפתרון‏ואלגנטיות‏יעילות‏לדרכים‏טובות‏דוגמאות

רה‏מושג‏לעיל‏בהגדרה‏הוזכר קש ‏תכן‏דפוס‏מגדיר‏[Alex]‏בספרו‏אלכסנדר‏כריסטופר‏האדריכל(.‏context)‏ה

רק‏ה ‏‏את‏שמגדירה‏כשלישייה ר‏בין‏ש קש ‏נושא‏את‏בחשבון‏לקחת‏מאוד‏חשוב.‏‏והפיתרון‏בעיה,‏מסוים ה

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

[Wick].

‏:זאת‏בעבודה‏נבחרים‏תכן‏דפוסי‏אציג‏גם‏כך‏.[Abcm]‏‏תכן‏דפוס‏להציג‏מקובלתה‏הדרך‏להלן

‏.המשתמש‏של‏המילים‏אוצר‏את‏ומרחיב‏אחיזה‏כנקודת‏משמש‏–‏דפוסה‏שם .1

‏.והבעיה‏ההקשר‏הצגת .7

‏.הפיתרון .3

‏.חסרונותהו‏יתרונותה‏ותאור‏הפיתרון‏של‏התוצאות .5

Page 16: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-16-

‏מה"‏–‏אחד‏כל‏של‏המבט‏בנקודת‏תלויה‏תכן‏כדפוס‏להיחשב‏יכול‏לא‏מה‏ההחלטהש‏בכך‏ההגדרה‏את‏נסייג

‏הנתונים‏מבנה,‏למשל.‏[Gof]‏"פרימיטיבי‏בנייה‏כבלוק‏יראה‏אחר‏אדם,‏תכן‏כדפוס‏יראה‏אחד‏שאדם

-ל‏בניגוד)‏תכן‏דפוס‏איננו‏Singleton-ש‏הטוענים‏ויש‏[[Gof‏‏פי‏על‏תכן‏דפוסל‏נחשב‏אל‏"מקושרות‏רשימות"

Gof).

Page 17: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-12-

תכן בדפוסי לשימוש הצדקה 4

‏התייחסות‏תוך,‏שמתקבלים‏מהיתרונות‏חלק‏להלן‏.רבים‏יתרונות‏נותן‏תוכנה‏הנדסתב‏תכן‏בדפוסי‏השימוש

‏(:מקורות‏ממגוון‏אלו‏יתרונות‏אספתי)‏עצמים‏מונחי‏תכן‏לדפוסי

‏.[Gof]‏אחרים‏מפתחים‏של‏מניסיונם‏ללמוד‏נועדו‏תכן‏דפוסי‏-‏בניסיון שימוש .1

,‏הורשה)‏עיצוב‏מונחה‏עצמים‏ביסודות‏שגוי‏באופן‏להשתמש‏מאוד‏קל‏-‏הנדסיים בכלים נכון שימוש .7

‏מאוד‏קשה‏תוכנה‏נוצרתש‏כך(‏ומימושם‏יםמנשק,‏כימוס,‏פולימורפיזם,‏קומפוזיציה,‏אגריגציה

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

‏להיות‏צריכה‏מחלקה‏-(‏OCP)‏Open-Close Principle-ה בעיקרון עמידה‏היא‏נוספת‏טובה‏דוגמא

‏כאשר‏נרצה‏לשנות‏דברים‏אז‏הקוד‏של‏המחלקה,‏כלומר‏.[Bert]‏לשינויים‏סגורה‏אך‏להרחבות‏פתוחה

.‏אצלההבהורשה‏ושימוש‏בי‏"נשנה‏יהיה‏תוספת‏של‏מחלקות‏חדשות‏עשכן‏מה‏.‏לא‏להשתנותשצריך‏

לחשוף‏ללקוח‏רק‏את‏)נדאג‏לעשות‏לה‏כימוס‏,‏כך‏שכאשר‏נכתוב‏את‏המחלקהי‏"את‏זה‏נשיג‏ע

המחלקה‏תיהיה‏אחראית‏על‏,‏כלומר.‏ונדאג‏שהיא‏תיהיה‏רכיב‏מודולרי‏קטן‏(‏המנשק‏ההכרחי‏אליו

‏(.SRP)‏Single Responsibility Principle-עיקרון ה פי-וזאת‏עלבלבד‏נושא‏אחד‏בודד‏

(‏העצמים‏מונחית)‏התוכנה‏ממערכת‏חלקים‏לתאר‏שנצטרך‏במקום‏-‏‏משותף מילים אוצרב שימוש .3

‏כל‏של‏פירוט‏למשל‏חסכנו‏בכך‏–‏התכן‏דפוס‏שם‏את‏לומר‏כ"בסה‏יכולים‏אנו‏מפורט‏באופן‏שלנו

,‏המחלקות‏בין‏התקשורת‏אופן,‏מבצעות‏שהן‏הפעולות,‏מחזיקות‏שהן‏המידע,‏המשתתפות‏המחלקות

.[Fbs]‏ועוד‏םמנשקיוה‏המחלקות‏בין(‏‏מימוש,‏הכלה,‏רשההו‏למשל)‏היחסים

‏להרבה‏דומה‏מבנה‏בעלי‏יהיו‏שלנו‏מהתוכנה‏גדולים‏חלקים‏-(‏reuse)‏החוזר השימוש הרחבת .5

‏דבר‏–(‏הורשה‏י"ע‏למשל)‏במחלקה‏חוזר‏שימוש‏של‏ברמה‏רק‏ולא‏אחרים‏ושל‏שלנו‏אחרות‏תוכנות

‏.[Njga]‏ותחזוקתה‏התוכנה‏בדיקת,‏התוכנה‏תיעוד‏על‏מאוד‏שיקל

‏מערכת‏של‏נכון‏בעיצו‏עקרונות"‏פרקב‏כך‏על‏יורחב‏–‏שישתנו שסביר עיצובב אספקטים של הסתרה .0

‏.11‏בעמוד‏"תוכנה

‏.פעולה‏שמשתפים‏מודולים/עצמים‏בין‏חלש‏(coupling)‏לצימוד‏לשאוף‏יש‏-‏חלש צימוד .6

‏החלש‏מהצימוד‏צימוד‏רמות‏של‏בסולם‏שמובאות‏הבאות‏האפשרויות‏את‏כולל‏"צימוד"‏גהמוש

‏:[Knob]‏ביותר‏החזק‏לצימוד‏ועד(‏צימוד‏חוסר‏למעשה)‏‏ביותר

‏לשנות‏מבלי‏מהם‏אחד‏כל‏לשנות‏וניתן‏אחר‏קוד‏בקטע‏תלוי‏אינו‏אחד‏קוד‏קטע‏–‏צימוד‏חוסר

‏.האחר‏את

‏חתימה‏צימוד(signature coupling)‏תלות‏כלומר,‏מסוימת‏מחלקה‏של‏בחתימה‏תלוי‏קוד‏‏-‏‏

‏שלה‏המלא‏השם‏י"ע‏שניתן‏,המחלקההמלא‏של‏‏בזיהויו‏המחלקה‏של‏המתודות‏של‏בחתימה

Page 18: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-12-

[package+name]‏מנשקב‏שימוש‏י"ע‏זאת‏לפתור‏ניתן.‏ממנו‏יורשת‏שהיא‏המחלקות‏ובעץ‏

(interface).‏

‏נתונים‏צימוד(data coupling‏)–‏.קטגוריה‏מאותה‏לנתונים‏יחד‏ניגשים‏שונים‏מודולים‏‏

‏סטודנטים‏ניהול"‏מודול‏רק‏,למשל‏.בלבד‏אחריותו‏שבתחום‏בנתונים‏יטפל‏מודול‏שכל‏נרצה

‏‏."הסטודנטים‏נתוני‏בעדכון‏יטפל

‏בקרה‏צימוד(control coupling‏)–‏.אחר‏מודול‏פעולת‏על‏להשפעה‏בקרה‏נתוני‏שולח‏אחד‏מודול‏

‏פי‏על‏פעולתו‏אופן‏את‏משנה‏Y‏מודול‏ואז‏[3..1]‏בתחום‏מספר‏Y‏למודול‏שולח‏X‏מודול,‏למשל

.‏זה‏מספר

‏‏חיצוני‏צימוד(external coupling) –‏.מסוימת‏בחומרה‏או‏מסוימת‏שלישי‏צד‏בתוכנת‏תלות‏

‏משותף‏צימוד(common coupling‏)–‏(.זיכרון‏תא‏למשל)‏משאב‏לאותו‏ישירות‏ניגשים‏מודולים‏

‏תוכן‏צימוד(content coupling‏)–‏.‏‏‏‏אחר‏מודול‏של‏פנימיים‏לנתונים‏ישירות‏ניגש‏מודול‏

‏ברמה‏לחשוב‏במקום‏דפוסים‏של‏יותר‏גבוהה‏ברמה‏לחשוב‏לנו‏יםמאפשר‏התכן‏דפוסי‏–‏הפשטה .2

‏.[Fbs]‏‏הקטנים‏הפרטים‏בכל‏שעוסקת‏מימוש‏של‏יותר‏נמוכה

Page 19: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-11-

הערות והארות, סקירת ספרות —סוגיות בדפוסי תכן 5

תוכנה מערכת של נכון בעיצו עקרונות 1.1

‏העלות‏את‏להפחית‏יעזור‏נכון‏עיצוב.‏התוכנה‏בתעשיית‏מאוד‏חשוב‏דבר‏הוא‏תוכנה‏מערכות‏של‏נכון‏עיצוב

‏קטנה‏בתוכנה‏מדובר‏אם‏–‏ומורכבות‏גדולות‏תוכנה‏מערכות‏על‏מדובר‏בעיקר.‏המערכת‏תחזוקת‏של‏הגבוהה

(‏overhead)‏תקורה‏מחיר‏יש‏שהרי,‏כאן‏שיובאו‏בכלים‏משימוש‏להימנע‏דווקא‏כדאי‏לפעמים‏אז‏ופשוטה

‏.‏אלו‏בכלים‏לשימוש

‏:אותם‏רואה‏שאני‏כפי,‏מקצועיות‏ורמת‏מורכבות‏של‏עולה‏בסידור‏עיצוב‏עקרונות‏להלן

‏Anti-Pattern‏של‏שמו‏זהוש‏נראה‏בהמשך)‏"ספגטי‏קוד"ל‏מובילש‏מודולרי‏לא‏קוד‏–‏עיצוב ללא .1

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

(.לבדוק,‏לתעד,‏לתקן,‏להרחיב,‏לשנות‏כלומר)‏הקוד‏את‏לתחזק‏ויותר

‏י"ע‏גדלה‏דולריותמוה‏–‏ םביניה יםשמתקשר( components) לרכיבים תוכנה מערכת תחלוק .7

.כיביםהר‏בין‏היטב‏מוגדרים‏במנשקים‏ושימוש‏גלובליים‏במשתנים‏השימוש‏צמצום

‏של(‏scope)‏התחום‏צמצום‏י"ע‏מערכת-תת/רכיב‏כל‏בתוך‏גם‏גדלה‏המודולריות‏‏–‏פרוצדוראלי עיצוב .3

-תת‏בתוך‏היטב‏מוגדרים‏במנשקים‏שימוש,‏בקוד‏חוזר‏שימוש,‏שלהם‏החיים‏זמן‏ושל‏המשתנים

.‏המערכת

-תת‏בתוך‏דלהג‏המודולריות.‏תוכנה‏מערכת-תת‏בתוך‏קוד‏של‏מודולים‏יוצרים‏–‏קוד של מודולים .5

‏.המודול‏לתוך‏מצטמצם‏הפרוצדורות‏של‏גםו‏הגלובליים‏המשתנים‏של‏התחוםש‏כךב‏המערכת

‏עתה‏היא‏התוכנה‏מערכת)‏הקוד‏של‏הפשטהה‏רמת‏הרחבת‏מקבלים‏אנחנו‏‏-‏עיצוב מונחה עצמים .0

,‏(מסוימות‏מטרות‏להשגת‏יחד‏שעובדים‏עצמים‏של‏מקבוצה‏שמורכבת‏מסוימת‏מציאות‏של‏מודל

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

‏.פולימורפיזם,‏(בפרוצדורות‏רק‏שימוש‏לעומת

-‏נכון עיצוב מונחה עצמים עיצוב בעקרונות שימוש .6

‏:[Fbs]‏הבאים‏החשובים‏עיצובה‏עקרונותנשתמש‏ב,‏למשל

‏.מודולארי‏קוד‏של‏יתוחלפ‏עוזר‏–‏מימוש‏מול‏ולא‏מנשק‏מול‏תכנות/עיצוב

הרכבה‏‏העדפת(composition)‏והאצלה‏(delegation)בהורשה‏שימוש‏פני‏על‏.

Page 20: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-75-

בקשה‏קבל‏מ‏Xשל‏מחלקה‏האצלה‏נוצרת‏כאשר‏עצם‏‏:[GoF]-כפי‏שמתואר‏ב‏נגדיר‏האצלה

העצם‏‏,‏למימוש‏ספציפי‏X‏אז‏במקום‏שנשתמש‏בהורשה‏של‏המחלקה.‏לביצוע‏פעולה‏מסוימת

Xממחלקה‏י‏כך‏שהוא‏מבקש‏את‏העזרה‏של‏עצם‏"ול‏בבקשה‏זאת‏עציל‏את‏הטיפיא‏Yוזאת‏.‏

ראה‏.‏(Yיצביע‏על‏‏X-י‏כך‏ש"נממש‏זאת‏ע)‏ביחס‏של‏הרכבה‏Yמכיל‏את‏עצם‏‏Xעצם‏כאשר‏

‏.".(א.א‏—עריכה‏ותרגום‏)[‏Pete]‏המחלקות‏בין‏היחסים:‏1‏טבלה"-יחס‏של‏הרכבה‏ב

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

‏X-גרמנו‏בזמן‏ריצה‏שהבקשה‏ל,‏כך.‏ממחלקה‏אחרתעצם‏ולהצביע‏על‏‏Yלהצביע‏על‏העצם‏

כאשר‏אנו‏משתמשים‏‏.יהיה‏מודע‏לכך‏Xתקבל‏טיפול‏שונה‏מבלי‏שהלקוח‏שעובד‏מול‏העצם‏

‏.לא‏נוכל‏לעשות‏שינוי‏זה‏בזמן‏ריצה,‏בהורשה

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

‏.לעומת‏קוד‏סטטי‏יותר,‏להבין‏ולתחזק‏את‏הקוד

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

Open-Close Principle‏(OCP)‏סגורה‏אך‏להרחבות‏פתוחה‏להיות‏צריכה‏מחלקה‏-‏

.ייםלשינו

פעולה‏שמשתפים‏עצמים‏בין‏חלש‏לצימוד‏לשאוף‏יש.

(SRP) Single Responsibility Principle-מחלקה‏של‏לשינוי‏אחת‏סיבה‏רק‏להיות‏צריכה‏.

(.בהמשך‏מיד‏עליו‏ארחיב)‏LSP‏–‏ה‏עיקרון‏הוא‏ומפורסם‏חשוב‏עיקרון‏עוד

.זאת‏בעבודה‏מובאיםש‏היתרונות‏את‏לנו‏נותן‏זה‏‏– תכן דפוסיב שימוש .2

.העבודה‏בהמשך‏פעמים‏כמה‏כך‏על‏ארחיב‏‏–‏תכן דפוסי בין פעולה שיתוף .1

:עבודה-מסגרתב שימוש .15

‏:[GoF]עבודה‏-מסגרת‏הגדרת

‏(.‏OOD software framework)עבודה‏על‏בסיס‏תוכנה‏מונחית‏עצמים‏‏-מדובר‏על‏מסגרת

ואיך‏הן‏שזה‏כולל‏את‏המחלקות‏‏מראש‏את‏העיצוב‏של‏הקוד‏העבודה‏מספקת‏-מסגרת

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

העבודה‏וזה‏יגרום‏-קוד‏של‏מסגרתלתוך‏ה(‏למשל‏מחלקות‏חדשות)את‏קטעי‏הקוד‏שלו‏

עבודה‏מדגישה‏שימוש‏-מסגרת,‏כך.‏העבודה‏לקרוא‏לקוד‏החדש‏במהלך‏ריצתה-למסגרת

כאשר‏אנו‏משתמשים‏בספריות‏של‏)‏בקוד‏תוכנהרק‏וש‏חוזר‏חוזר‏בעיצוב‏תוכנה‏לעומת‏שימ

עבודה‏משתמשת‏-מסגרת‏.(אז‏אנחנו‏עושים‏שימוש‏חוזר‏רק‏בקוד‏של‏תוכנה‏קוד‏תוכנה

או‏‏IoC = Inversion of Control)"‏)היפוך‏שליטה"בעיקרון‏ידוע‏בתעשיית‏התוכנה‏שנקרא‏

היא‏עושה‏.‏”you‏call‏will‏we‏us‏call‏Don’t“שאומר‏"‏העיקרון‏ההוליוודי"בשם‏החיבה‏

Page 21: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-71-

.‏זה‏נעשה‏להיפך,‏התוכנה-י‏כך‏שבמקום‏שהקוד‏של‏המפתח‏יקרא‏לקוד‏של‏מסגרת"זאת‏ע

‏.הקוד‏של‏מסגרת‏התוכנה‏קורא‏לקוד‏של‏המפתח,‏כלומר

עקרונות‏עיצוב‏טובים‏‏"יורשים"איכותית‏אז‏אנחנו‏‏עבודה-כאשר‏אנחנו‏משתמשים‏במסגרת

פעמים‏רבות‏‏מסגרת‏)נה‏יותר‏תוך‏שימוש‏בעקרונות‏אלו‏וגם‏מסתגלים‏לצורת‏עבודה‏נכו

‏במאמר‏שכתבתי‏במקום‏עבודתי‏וגמאד‏מוצגת(.‏עלינו‏אופן‏עבודה‏נכון‏יותר‏העבודה‏תיכפה

[Eli]‏‏‏.151של‏עבודה‏זאת‏בעמוד‏'‏וצירפתי‏כנספח‏א‏

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

.[GoF]‏אחרים‏תכן‏דפוסי‏לבניית‏בהם‏להיעזר‏ניתןש‏בסיסיים‏תכן‏דפוסיכ‏להיחשביכולים‏

‏ליסקוב‏ברברה‏י"ע‏שנכתב(‏Liskov Substitution Principle)‏LSP‏המפורסם‏העיקרון‏על‏נרחיב

‏.[Liskov]‏וינג‏נט'וג

‏:[Lisk]‏כך‏נכתב‏תהפורמאלי‏צורתוב‏LSP-ה‏עיקרון

.Let q(x) be a property provable about objects x of type T“‏‏‏‏‏‏‏‏‏‏

‏‏‏‏‏‏‏‏‏‏‏‏ Then q(y) should be true for objects y of type S where S is a subtype of T." [p. 1811]

‏ממחלקת‏לקוחה ציפה לה המקורית ההתנהגות‏את‏לשנות‏שלא‏חייבת‏יורשת‏מחלקה,‏פשוטות‏במילים‏או

‏כלומר‏–‏להן‏ציפה‏לא‏שהוא‏תוצאות‏יקבל‏הוא‏Polymorphism-ב‏שימוש‏יעשה‏לקוחה‏כאשר,‏אחרת)‏האב

‏.‏(מבחינתו‏נכונות‏לא‏תוצאות

‏הבאה‏הדוגמא‏שמסבירה‏כפי‏,מחלקות‏בין‏ביחס‏של‏הורשה‏ןבאופן‏לא‏נכו‏השתמשל‏נוטים‏רבים‏מפתחים

‏.LSP-ה‏עיקרון‏של‏הפרה‏שמציגה

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

.‏הריבוע‏את‏שמייצגת‏במחלקה‏שמשתמש‏לקוחה מצפה לה התנהגותה‏מבחינת‏לא‏אבל‏מתמטית מבחינה

‏לעדכון‏מתודה‏שמכיל‏מנשק‏לחשוף‏צריכה‏ולכן‏המרובע‏מחלקת‏את‏יורשת‏עהריבו‏שמחלקת‏היא‏הבעיה

‏בכל‏מעדכן‏הריבוע‏מחלקת‏של‏המימוש,‏בפועל‏אבל.‏הריבוע‏רוחב‏של‏עידכוןל‏מתודה‏וגם‏הריבוע‏גובה

‏אז‏אבל,‏בסדר‏נראה‏הכל‏כאן‏עד.‏שוות‏הריבוע‏צלעות‏כל‏שהרי‏הריבוע‏צלע‏שהינו‏יחיד‏ערך‏אותו‏את‏מתודה

‏X‏לערך‏שלהם‏גובהה‏את‏ומעדכן(‏ריבועים‏הם‏שחלקם)‏מוכנים‏מרובעים‏של‏מערך‏מקבל‏לקוחהש‏נניח

‏שמוצגים‏הריבועים‏של‏השטח‏אבל.‏שלהם‏השטח‏את‏מדפיס‏הוא‏ואז‏Y‏לערך‏שלהם‏הרוחב‏את‏מכן‏לאחרו

‏.S=X*Y‏לקבל‏מצפה‏שהוא‏למרות‏S=Y*Y-כ‏יודפס‏כמרובעים‏לקוחל

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

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

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

‏:[Gof] תכן‏לכל‏אחד‏מהאספקטים‏שרוצים‏להחביא

‏.Factory‏–‏עצמים‏יצירת‏אופן‏החבאת .1

‏.Bridge‏–‏מימוש‏תהחבא .7

Page 22: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-77-

‏.Facade‏–‏יםמנשק‏החבאת .3

‏.Flyweight‏–‏עצמיםה‏של‏האחסון‏אופן‏החבאת .5

‏.Proxy‏–(‏אחר‏במחשב‏ליהיות‏כולי‏עצםה‏למשל)‏עצם‏של‏מיקום‏החבאת .0

‏.Iterator‏–‏עצמים‏של‏לסדרה‏הגישה‏אופן‏של‏החבאה .6

‏.State‏–‏חייו‏במהלך‏עצם‏של‏הפנימי‏המצב‏של‏החבאה .2

‏.Strategy‏–‏הספציפי‏םהאלגורית‏של‏החבאה .2

.‏Mediator‏–‏מתקשרים‏הם‏עצמים‏איזה‏ועם‏עצמים‏בין‏התקשורת‏אופן‏של‏החבאה .1

Page 23: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-73-

תכן דפוסי של גוריותקט 1.1

:[GoF]‏הבאות‏ותם‏לקטגוריותנוכל‏לחלק‏א,‏למשל.התכן‏דפוסי‏את‏לקטלג‏נוהגים

Creational Patterns‏.עצמים‏יצירת‏‏‏–‏‏‏

Factory Method‏–‏ו‏Singleton:‏‏התכן‏דפוסי‏למשל‏‏‏‏‏‏‏‏

Structural Patterns‏מחלקות‏או‏עצמים‏הרכבת‏‏‏–‏‏‏(Composition.)‏

‏.Proxy‏–‏ו‏Adapter:‏‏התכן‏דפסוי‏למשל‏‏‏‏‏‏‏‏

Behavioral Patterns‏.‏‏פעולה‏משתפים‏עצמיםוה‏המחלקות‏שבה‏הדרך‏אפיון‏‏‏–‏‏‏

‏.Mediator‏–‏ו‏Observer:‏התכן‏דפוסי‏למשל‏‏‏‏‏‏‏‏

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

:[GoF]‏הבאות

‏שלא‏סטטיים‏בקשרים‏עוסקות‏הן.‏מהן‏שיורשות‏ובמחלקות‏במחלקות‏שעוסקים‏םדפוסי‏‏–‏מחלקה .1

‏.הקומפילציה‏שלב‏לאחר‏משתנים

‏Adapter‏-‏ו‏‏Factory Method:‏למשל

‏הריצה‏זמן‏במהלך‏להשתנות‏יכולים‏אלו‏קשרים.‏עצמים‏שבין‏בקשרים‏שעוסקים‏דפוסים‏‏–‏עצם .7

‏.דינאמיים‏יותר‏והם

.Flyweight‏–‏ו‏Builder:‏‏למשל

‏.[GoF]‏בהם‏השימוש‏אופן‏לפי‏התכן‏דפוסי‏לימוד‏את‏לארגן‏גם‏ניתן

‏.Composite, Iterator, Visitor:‏התכן‏דפוסיב‏ביחד‏כ"בד‏משתמשים‏למשל

-ו‏Composite‏בין‏ברור‏קשר‏יש,‏למשל.‏[GoF]‏ביניהם‏הקשרים‏לפי‏התכן‏דפוסי‏את‏לארגן‏יתןנ‏וכן

Decorator‏דומים‏מאוד‏גם‏והם‏(‏את‏בהמשך‏אציג‏כאשר‏זאת‏אסבירComposite.)‏

[:Part]‏תכן‏דפוסי‏של‏קטגוריות‏עוד

1. Basic‏התכן‏דפוסי‏למשל‏‏–‏‏‏Monitorו‏-Immutable Object‏

7. Concurrency‏התכן‏דפוסי‏למשל‏‏–‏‏‏Critical Section‏–‏ו‏Read-Write Lock‏

‏קשרים "‏בפרק‏בהמשך‏זה‏בנושא‏עוד‏אגע)תכן‏של‏ארכיטקטורות‏תוכנה‏‏דפוסי‏של‏הקטגוריהקיימת‏,‏כמן‏כן‏

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

‏וכיצד‏מערכות-מתת‏שמורכבת‏תוכנה‏מערכת‏של‏ארכיטקטורה‏מציגים‏הם,‏מסויימת‏מערכת-בתת‏למחלקות

‏:[Phd]‏הבאים‏הנפוצים‏יםארכיטקטוניה‏התכן‏דפוסי‏אתנוכל‏למצוא‏‏זאת‏בקטגוריה.‏‏ביניהן‏קשר‏יוצרות‏הן

Page 24: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-75-

1. MVC‏שכוללות‏תוכנה‏במערכות‏מאוד‏ץשנפו‏ארכיטקטוני‏תכן‏דפוס‏‏‏–‏‏‏GUI‏דפוס‏על‏מעט‏ארחיב.‏

‏."התכן‏דפוסי‏בין‏קשרים ‏0.3‏"‏הבא‏הפרק-תתב,‏בהמשך‏זה‏תכן

7. Layersל‏תוכנה‏מערכות‏של‏הפרדה‏‏–‏‏-n‏שכבות‏(N-Tiers‏)‏היא‏רתביו‏הנפוצה‏הארכיטקטורה‏כאשר

‏:‏הבאות‏השכבות‏את‏שכוללת,‏Three-Tiers‏

‏המידע‏שכבת(information tier/bottom tier/data tier‏)–‏בנתונים‏ישירות‏מטפלת‏זאת‏שכבה‏.

‏העבודה‏במקום‏מפתח‏שאני‏בתוכנות)‏נתונים‏בבסיס‏שנמצאים‏בנתונים‏מטפלת‏היא‏כלל‏בדרך

(.DbLayer‏בשם‏זאת‏לשכבה‏קורא‏אני‏שלי

‏האמצע‏שכבת(middle tier/business tier‏)–‏גם‏נקראת‏זאת‏שכבה‏Business Tier‏נותנת‏היא‏כי‏

‏במדיניות‏התחשבות‏כדי‏ותוך‏המידע‏משכבת‏מקבלת‏שהיא‏בנתונים‏שימוש‏י"ע‏ללקוח‏שירות

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

‏הלקוח‏שכבת(client tier/top tier‏)-‏הצגת‏י"ע‏למשל,‏ללקוח‏ישירות‏שירותים‏נותנת‏זאת‏שכבה‏‏

.האינטרנט‏דפדפני‏היא‏זאת‏בשכבה‏שמשמשת‏לתוכנה‏נפוצה‏דוגמא.‏ללקוח‏‏GUI-ה‏מסך

‏אנו‏עוד‏כל‏האחרות‏בשכבות‏תלות‏ללא(‏תוכנה‏מערכת-תת‏שהינה)‏שכבה‏כל‏לשנות‏יכולים‏אנו,‏כך

.ותהשכב‏בין‏ההתקשרות‏פרוטוקול‏את‏משנים‏לא

Page 25: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-70-

התכן דפוסי בין קשרים 1.1

‏התכן‏דפוסי‏את‏למצוא‏כך‏כדי‏ותוך‏(top-down)בפרטים‏‏התעמקות‏ואז‏על‏ממבט‏תוכנה‏מערכת‏לנתח‏יש

‏התכן‏דפוסי‏בין‏הקשרים‏את‏להבין‏הצורך‏על‏נכתב‏[Gof]‏בספר‏.[Weis]‏םביניה‏והקשרים‏יםהמתאימ

אבל‏,‏ין‏זה‏המקום‏להביא‏את‏התרשים‏במלואוא‏.תכן‏דפוסי‏בין‏קשרים‏של‏תרשים‏שם‏מובא‏ואף‏יםהשונ

‏:ההז‏תרשיםבאת‏הקשרים‏הבאים‏המוצגים‏,‏אציין‏כדוגמא

‏התכן‏פוסדChain of Respobsibility‏‏התכן‏דפוס‏עבור‏השרשור‏את‏להגדיר‏יכול‏Composite.

‏התכן‏דפוסComposite‏התכן‏דפוסב‏להיעזר‏יכול‏Iterator‏שמשתתפים‏עצמיםה‏את‏רוקלס‏בכדי‏

.הרקורסיבי‏העץ‏מבנהב

‏התכן‏דפוסFacade‏גם‏נשתמש‏ולכן‏בלבד‏אחד‏מופע‏לה‏שיהיה‏נרצה‏שלרוב‏אחת‏במחלקה‏משתמש‏

‏.Singleton‏התכן‏בדפוס

‏התכן‏דפוס‏את‏בקצרה‏אציג‏עתה.‏תכן‏דפוסי‏בין‏קשרים‏יוצרים‏של‏ארכיטקטורת‏תוכנה‏תכן‏דפוסי‏גם

‏תכן‏דפוס‏[Fbs]‏בספר)‏עצמים-מונחי‏תכן‏דפוסי‏ובתוכ‏לשלב‏ניתן‏איך‏נראה‏ואז‏MVC‏הארכיטקטוני

-תת‏שלוש‏שם‏על‏כך‏נקרא‏‏MVC‏ארכיטקטוניה‏תכןה‏דפוס‏.(”Compound Pattern“‏נקרא‏הז‏ארכיטקטוני

‏‏.Model, View, Controller:‏‏ואות‏שמרכיבים‏המערכות

‏.‏MVC‏-‏ב‏מערכת-תת‏כל‏של‏התפקידים‏את‏מציג,‏להלן‏1‏איור

Page 26: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-76-

MVC [bean] הארכיטקטוני התכן דפוס: 1 איור

-ו‏Strategy,‏Observer‏‏העצמים‏ונחימ‏התכן‏דפוסי‏את‏ובתוכ‏שלבל‏יכול‏MVC‏הארכיטקטוני‏התכן‏דפוס

Composite‏הבא‏באופן‏Fbs]]:

ה-Model‏התכן‏דפוסב‏משתמש‏Observerה‏את‏לעדכן‏בכדי‏-Views‏בצימוד‏להיות‏זאת‏ועם‏

‏.איתם‏חלש

ה-Controllerכ‏משמש‏-Strategyה‏עבור‏-Viewה‏‏‏–‏‏-View‏‏במימושים‏להשתמש‏יכול‏

‏.Controller-ה‏של‏שונים

ה-View‏התכן‏דפוסב‏משמשת‏Composite‏לקוחל‏הגראפי‏מנשקה‏את‏לממש‏בכדי‏(GUI.)‏

‏.‏טקסט‏ותיבות‏כפתורים‏כמו‏פקדים‏ובתוכה‏דיאלוג‏תיבת‏שמכיל‏חלון,‏למשל

‏שכבר‏Controller-ו‏View-ל‏חדש‏Model‏התאמת‏לצורך‏Adapter‏התכן‏דפוסב‏להשתמש‏ניתן‏כן‏כמו

‏.קיימים

MVCכאשר‏מפתחים‏.‏לתחזוקה‏ולהרחבה,‏ט‏כך‏שיהיו‏קלים‏יותר‏לבדיקהאינטרנלבניית‏שירותי‏גם‏עוזר‏‏

‏Dispatcherרכיב‏זה‏נקרא‏.‏View-לבין‏ה‏Model-נוהגים‏להוסיף‏עוד‏רכיב‏תוכנה‏בין‏ה,‏שירותי‏אינטרנט

‏‏‏.[Sbhs]בין‏שכבות‏אלו‏‏Observer-והוא‏מפחית‏עוד‏יותר‏את‏הצימוד‏החלש‏שיוצר‏ה

Page 27: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-72-

‏אנו‏ואז‏םמסוי‏תכן‏דפוסב‏נזכרים‏שאנו‏כך‏י"ע‏םאות‏לזכור‏עוזר‏גם‏התכן‏דפוסי‏בין‏הקשרים‏לימוד

‏.ואלי‏יםשקשור‏יםאחר‏תכן‏דפוסי‏משחזרים

‏כל‏של‏יותר‏טובה‏להבנה‏לתרום‏יכולים‏אלו‏הבדלים.‏יםדומ‏תכן‏דפוסי‏בין‏ההבדלים‏את‏ללמוד‏כדאי,‏בנוסף

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

Adapter‏המוכר‏התכן‏לדפוס‏בפעולתו‏דומה‏Proxyש‏הוא‏ביניהם‏ההבדל‏אבל‏-Adapter‏מנשק‏ללקוח‏מספק‏

‏כפי‏ללקוח‏המנשק‏אותו‏את‏מספק‏Proxy‏זאת‏ולעומת‏מולו‏לעבודה‏הלקוח‏את‏מתאים‏שהוא‏לעצם‏שונה

.‏בקצרה‏כאן‏אותו‏אתאר‏ולכן‏Proxy‏התכן‏דפוס‏את‏הזכרתי.‏[Gof]‏אליו‏לגשת‏רוצה‏שהלקוח‏העצם‏שמספק

‏מבלי‏וזאת‏RealSubject‏לו‏שנקרא,‏מסוים‏לעצם‏הלקוח‏של‏בגישה‏לשלוט‏מאפשר‏Proxy‏התכן‏דפוס

‏הלקוח‏ואז‏מרוחק‏מחשב‏על‏לפעול‏יכול‏RealSubject‏העצם,‏למשל.‏7‏איורב‏שמוצג‏כפי,‏זאת‏יידע‏שהלקוח

‏.RealSubject‏לעצם‏ידיעתו‏ללא‏הלקוח‏את‏שמקשר‏Proxy‏העצם‏למו‏עובד

Proxy [Huy] התכן דפוס של מחלקות תרשים: 1 איור

Page 28: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-72-

ומורכבות קושי תודרג 1.1

‏התוכנה‏את‏לשפר‏דולמל‏בהדרגה‏ואז‏תכן‏דפוסיב‏שימוש‏ללא‏מחשב‏תוכנת‏פתחל‏למודל‏להתחיל‏מומלץ

‏.[Mgj]‏תכן‏דפוסי‏בעזרת

‏:למשל.‏יםפשוט‏תכן‏דפוסי‏בהתחלה‏דוללמ‏מומלץ,‏כמו‏כן

Singleton‏

Proxy

Iterator‏

‏:‏למשל.‏ויותר‏יותר‏יםמורכב‏תכן‏דפוסי‏בהדרגה‏דוללמ‏אפשר‏בהמשך

Compositeלהבנה‏יותר‏קשה‏שלעיתים‏רקורסיבי‏מבנה‏על‏מבוסס‏אבל‏מסובך‏כך‏כל‏לא‏–‏.

Factory Method‏עם‏אותו‏מבלבלים‏כי‏מאוד‏לפשוט‏נחשב‏הוא‏–‏Static Factory‏עם‏או‏

SimpleFactoryהזה‏התכן‏דפוס‏את‏בהמשך‏כשאציג‏זאת‏נראה.‏כלל‏תכן‏דפוסי‏שאינם‏.

Abstract Factory‏התכן‏פוסמד‏יותר‏מורכב‏–‏Factory Method‏סוגי‏של‏משפחות‏ליצירת‏משמש.‏

.Factory Method-ב‏שלו‏ConcreteFactory-ב‏להשתמש‏ניתן(.‏Products‏נקראים)‏עצמים

‏ביותר‏הפשוטות‏התבניות‏את‏ללמוד‏שתתחיל‏כדאי‏אז‏עצמים‏מונחות‏מערכות‏של‏מנוסה‏עצבמ‏לא‏אתה‏אם

‏:[Gof] הבאות‏ביותר‏והנפוצות

Adapter

Composite

Decorator

‏בו‏Double Dispatch-ה‏מנגנון.‏Visitor‏יכול‏ליהיות‏םשלה‏דומילה‏את‏דחותל‏שכדאי‏התכן‏דפוסי‏בין

.‏[Acd]‏(Accessibility)‏"נגישות"‏במילה‏זאת‏תארנ‏.ולזכירה‏ללימוד‏מורכב‏די‏הוא‏הז‏תכן‏דפוס‏משתמש

‏קשה‏יהיה‏זה‏אז‏מידי‏מורכבת‏בדוגמא‏שימוש‏י"ע‏תכן‏דפוס‏נדגים‏אם‏או‏מורכב‏הינו‏התכן‏דפוס‏אם,‏כלומר

‏.התכן‏דפוס‏את‏יעיל‏באופן‏דוללמ

‏Composite‏תכןה‏דפוסב‏שימוש‏למשל.‏תכן‏דפוסי‏בין‏משילוב‏שמורכבים‏פתרונות‏דוללמ‏ניתן‏בהמשך

‏תאחידו‏פעולות‏ולעשות‏שונות‏ממחלקות‏שנוצרים‏עצמים‏של‏עץ‏לבנות‏בבואנו‏Visitor‏תכן‏דפוס‏עם‏בשילוב

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

Page 29: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-71-

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

Command,‏Proxy‏,Composite‏–‏ו‏Mediator‏‏[Abcm].‏

‏בין‏קשרים "‏בפרק‏שהוצג‏MVC‏כמו‏יםארכיטקטוני‏תכן‏דפוסי‏של‏לימוד‏היותל‏יכול‏מתקדם‏שלב‏עוד

‏.70‏בעמוד‏"התכן‏דפוסי

Page 30: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-35-

ברדוקציה שימוש 1.1

.[Baat]י‏תרגום‏שלה‏לקבוצה‏של‏בעיות‏שקל‏לפתור‏אותן‏"רדוקציה‏מאפשרת‏לפתור‏בעיה‏ע

‏דפוסי‏הרבה‏גם‏יםקיימ‏אך‏.Singleton‏או‏Factory‏למשל,‏במהירות‏םאות‏להבין‏שקל‏פשוטים‏תכן‏דפוסי‏יש

‏.Visitor‏למשל,‏יותר‏מאוחר‏םאות‏לזכור‏יותר‏קשה‏ויהיה‏‏ללמוד‏זמן‏יותר‏ייקח‏םשאות‏יותר‏מורכבים‏תכן

‏:הבאים‏היתרונות‏את‏לנו‏שמעניקה‏הרדוקציה‏לעזרתנו‏לבוא‏יכולה‏כאן

‏.החומר‏של‏יותר‏פשוטהו‏הדרגתית‏הצגה

ביותר‏הפשוטים‏בשלבים‏שנזכרים‏זה‏י"ע‏התכן‏דפוס‏את‏בזיכרוננו‏לשחזר‏עזרה.

‏מוצאים‏לא‏ואנו‏לפתור‏נדרשים‏שאנו‏מורכבת‏בעיה‏היא‏תכן‏דפוסי‏בנושא‏ברדוקציה‏לשימוש‏נוספת‏דוגמא

‏פיתרון‏דאח‏כל‏יםשנותנ‏תכן‏דפוסי‏כמה‏לשלב‏שנוכל‏להיות‏יכול‏אבל.‏הבעיה‏לפיתרון‏םשמתאי‏תכן‏דפוס

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

‏.‏המוצגת‏לבעיה

‏ברדוקציה‏להשתמש‏מתקדמים‏סטודנטים‏של‏וגם‏מתחילים‏סטודנטים‏של‏קשיים‏על‏מדווחים‏מחקרים

‏מקורי‏פיתרון‏לתפירת‏רצון‏למשל)‏פסיכולוגיים‏קשיים‏ניהםבי,‏[Baat]‏‏אלו‏לקשיים‏אפשריות‏סיבות‏ונמנים

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

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

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

‏.פיתרון

‏.‏עץ‏-‏נתונים‏מבנה‏של‏ללימוד‏רדוקציה‏י"ע‏Composite‏התכן‏דפוס‏של‏לימוד‏היא‏טובה‏דוגמא

.‏Composite‏התכן‏דפוס‏את‏יותר‏קל‏באופן‏להבין‏נוכל‏רקורסיבי‏נתונים‏מבנה‏הינו‏שעץ‏מבינים‏שאנו‏לאחר

‏.‏[Gof]‏עץ‏הנתונים‏מבנה‏י"ע‏Composite‏התכן‏דפוס‏את‏להסביר‏ניתן

‏אבל‏להבנה‏קשה‏בהתחלה‏להראות‏שעלול‏Composite‏התכן‏דפוס‏של‏מחלקות‏תרשים‏מציג‏3‏איור‏להלן

‏איך‏למשל‏להסביר‏ניתן‏אזו‏.שלאחריו‏5‏איורב‏שהבאתי‏נתונים‏עץ‏של‏לאיור‏ולגשת‏ברדוקציה‏להיעזר‏ניתן

‏.בנים‏לה‏שיש‏בעץ‏כצומת‏מתפקד‏Composite‏עצם‏כל

Page 31: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-31-

Composite [Comm] תכן דפוסה של מחלקות תרשים :1 איור

[Comm] עץ הרקורסיבי הנתונים מבנה של איור: 1 איור

Chain of‏התכן‏דפוס‏את‏קודם‏דוללמ‏גם‏ניתן‏רדוקציה‏י"ע‏Composite‏התכן‏דפוס‏של‏הבנה‏לצורךש,‏אעיר

Respobsibility‏התכן‏דפוס‏את‏הדרגתית‏בצורה‏להבין‏יותר‏קל‏ואז‏Composite.‏בשני‏להשתמש‏ניתן,‏למשל‏

‏.‏Chain of Respobsibility‏התכן‏דפוס‏את‏שממחישים‏הבאים‏האיורים

Page 32: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-37-

‏.‏‏גרפית‏בצורה‏Chain of Respobsibility‏התכן‏דפוס‏את‏םמציגי‏6‏איורו‏0‏איור,‏הבאים‏האיורים‏‏‏‏‏

Chain Of Responsibility [Comm] תכןה דפוס של טיפוסי עצמים מבנה :1 איור

Chain Of Responsibility [Comm] תכןה דפוס של מחלקות תרשים: 6 איור

Page 33: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-33-

תכן דפוסי עם עבודה תחילתל גישות 1.6

תוכנה לעצב הקושי 1.6.5‏

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

‏תוך‏בניסיונם‏נעזרים‏עצמים‏מונחית‏תוכנה‏של‏מנוסים‏מפתחים.‏[Gof]‏הראשונה‏בפעם‏כזה‏טוב‏עיצוב

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

‏עיטור‏כמו‏בתבניות‏משתמשים‏המנוסים‏המפתחים.‏שלהם‏חדש‏פיתרון‏י"ע‏בעיה‏כל‏לפתור‏שנוטים

(decorate‏)‏בתוכנה‏מצבים‏של‏ייצוג‏או‏לתוכנה‏יכולות‏בקלות‏למחוק‏או‏להוסיף‏בכדי‏עצמים‏של(states‏)‏י"ע

‏בעבר‏ששולבו‏תכן‏דפוסי‏םה‏לבחור‏שכדאי‏התכן‏שדפוסי‏הוא‏מוצלח‏לעיצוב‏לעזור‏שיכול‏לכל.‏עצמים

‏.בהצלחה‏תוכנה‏במערכות

תכן בדפוסי השימוש פנמתלה גישות 1.6.5‏

‏האימרה‏נכתבה,‏[Gina]‏טעויות‏עשיית‏בעקבות‏שבא‏בלימוד‏שמשתמשת‏המחשב‏מדעיהוראת‏‏על‏במאמר

‏מהטעויות‏יותר‏טוב‏לומד‏אתה"‏יותר‏החזקה‏האמרה‏וגם‏"ושהע‏שאתה‏מהטעויות‏לומד‏אתה"‏–‏הידועה

‏לפחות‏לנו‏עוזרת‏אכן‏היא‏פעמים‏והרבה‏שלנו‏באינטואיציה‏נעזרים‏אנו‏תחומים‏בהרבה.‏"עושה‏שאתה

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

‏מדויקים‏בכלים‏שימוש‏דורש‏יותר‏מדויק‏פיתרון‏והרי.‏יותר‏מדויק‏פיתרון‏רשותדו‏שמטבען‏לבעיות‏פיתרון

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

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

‏.טוב‏פיתרון‏הוא‏שהפיתרון‏להם‏"ברור"‏שפשוט‏או‏דוגמאות‏מספר

‏להיבטים‏לב‏שמים‏ולא‏שלה‏ההתנהגות‏את‏מעריכים‏שהם‏כך‏י"ע‏תוכנה‏של‏נכונות‏למדוד‏נוטים‏סטודנטים

,‏(‏Scalability)‏במקביל‏המשתמשים‏מספר‏של‏ושל‏הקוד‏בסיס‏של‏רחבהלה‏אפשרות‏מתן‏מוכ‏עיצוב‏של

‏.‏‏[Mgj]‏להרחבה‏ישותוגמ‏לשינוי‏עמידות

‏?האינטואיציה‏מגבלות‏על‏להתגבר‏ללמוד‏ניתן‏כיצד‏אז

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

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

‏"הקשר"ה‏נושא‏את‏מעשי‏באופן‏מתרגלים‏אנחנו‏כאן‏כלומר‏.עבורה‏נכון‏כפיתרון‏מתאים‏לא‏התכן‏שדפוס

(context‏)‏תכן‏דפוס‏בהגדרת‏שמופיע[Mha].‏‏

‏אותם‏עודד‏ואף‏לטעות‏לסטודנטים‏אפשרות‏נתן‏הכותב‏שבו‏פשוט‏שיעור‏הועבר‏איך‏נכתב‏[Weis]‏במאמר

‏לתקן‏קשה‏יהיה‏כיצד‏להם‏והראה‏לבעיה‏הרחבות‏הוסיף‏מכן‏ולאחר‏בהתחלה‏פשוטה‏בעיה‏הצגת‏י"ע‏לטעות

(‏שכר‏לחישוב‏מערכת)‏דוגמא‏נותן‏הוא‏במאמר.‏המורחבת‏הבעיה‏לפיתרון‏שיתאימו‏כך‏שהציגו‏הפתרון‏את

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

Page 34: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-35-

‏הבעיה‏את‏טובה‏בצורה‏פותר‏אכן‏זה‏פיתרון‏למה‏ומסביר‏מלכתחילה‏ללמד‏רצה‏ותוא‏ןהנכו‏הפיתרון

‏.‏Factory Method-ו‏Singleton‏כמו‏תכן‏דפוסי‏הוצגו,‏זאת‏בדרך.‏שהוצגה

‏מחשבה‏פחות‏של‏השקעה‏עם‏יותר‏קשה‏לעבוד‏נוטים‏תוכנה‏ומפתחי‏וגודל‏הולך‏התוכנה‏בעולם‏הסיבוך

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

‏.[Ster]‏תכן‏בדפוסי‏מיטבי‏שימוש‏נזנח‏פעמים‏הרבה‏לכן.‏שלהם‏המנהלים

‏ילמדו‏שהסטודנטים‏צורך‏יש‏.,[Czbd]‏[Trt]למתחילים‏‏כקורס‏תכן‏דפוסי‏ללמד‏טעם‏שאין‏מחקרים‏הראו

‏עוזרים‏תכן‏דפוסי‏אמנם.‏זה‏בתחום‏ניסיון‏ירכשו‏גם‏שהם‏ודמא‏וחשוב‏טובה‏בצורה‏עיצוב‏מונחה‏עצמים

‏להשתמש‏לדעת‏בכדי‏עיצוב‏מונחה‏עצמים‏של‏טובה‏בהכרה‏צורך‏יש‏אבל‏תוכנה‏מערכת‏של‏עיצובה‏את‏לשפר

‏עיצוב‏מונחה‏עצמיםב‏וניסיון‏ידע‏מניחיםשהם‏‏‏,םספר‏של‏בהקדמה,‏כותבים‏GoF‏גם‏.תכן‏בדפוסי‏היטב

[Gof].‏

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

[Weis].‏מונחה‏פיתוח‏של‏לימוד‏עם‏יחד‏תכן‏דפוסי‏לימוד‏לשלב‏עדיף‏ואפילו‏שכדאי‏הטוענים‏יש‏אמנם‏

‏יסותהתפ‏בשינוי‏יותר‏התקשו‏יותר‏מאוחר‏בשלב‏תכן‏דפוסי‏שלמדו‏שסטודנטים‏נטען‏כאשר.‏[Ppp]‏‏עצמים

‏של‏להעברה‏השלבים‏ועל‏לסטודנטים‏שהועברו‏קורסיםמדובר‏על‏‏ואמנם‏.הזמן‏במשך‏אצלם‏שהתגבשו

‏וניתן‏אמיתיים‏קורסים‏על‏הםגם‏חוקרים‏אחרים‏מסתמכיםמאמר‏זאת‏לעומת‏אבל,‏יותר‏קלה‏בצורה‏החומר

‏של‏המתקדם‏הנושא‏את‏ללמוד‏מתחילים‏סטודנטים‏של‏הבעייתית‏הבשלות‏מידת‏על‏[Trt]‏מהם‏להתרשם

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

‏–‏נכון‏עיצוב‏לבנות‏כיצד‏ללמוד‏אלא,‏אותם‏להגדיר‏ולדעת‏תכן‏דפוסי‏של‏שמות‏לשנן‏לא‏הוא‏הרעיון.‏‏עצמים

‏‏.[Mha]‏‏הפיתוח‏אנשי‏של‏בשלות‏דרושה‏כך‏לצורך

‏של‏לימוד‏לשלב‏היא‏להציע‏שאוכל‏פשרה‏גישת‏."תפסת‏לא‏מרובה‏תפסת"‏של‏מצב‏כאן‏להתקיים‏עלול‏לדעתי

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

‏.לכך‏יותר‏בשל‏יהיה‏הוא‏כאשר‏זה‏מתקדם

Page 35: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-30-

יםעצמ מונחי תכן דפוסי להצגת כלי - UML שפת 6

מבוא 6.1

‏שמתעניין‏שמי‏מניח‏אני‏.הנושא‏את‏ללמד‏בא‏ואינו(‏רענון‏לצורך)‏UML‏עיקרי‏את‏בקצרה‏מציג‏זה‏פרק

‏.UML-ו‏עיצוב‏מונחה‏עצמים‏למד‏כבר‏תכן‏דפוסי‏של‏בנושא

‏UML‏בשפת‏משתמשים‏ומבנית‏סטנדרטית‏קלה‏בצורה‏עיצוב‏מונחה‏עצמים‏של‏והתנהגות‏מבנה‏לתעד‏בכדי

(Unified Modeling Language.)‏

UML‏איחדו‏ובהמשך‏עיצוב‏מונחה‏עצמים‏של‏לניתוח‏מתודולוגיות‏בנפרד‏שיצרושלושה‏חוקרים‏‏‏י"ע‏נוצרה‏

‏.[Jose]‏עבודתם‏את

‏.‏(עליה‏מעיד‏ששמה‏כפי)‏מודלים‏לתיאור‏שפה‏היא‏UMLשפת‏

‏מוגדרים‏סימונים‏בעזרת‏ודרישות‏החלטות,‏יחסים,‏רעיונות‏לתפיסת‏אמצעי‏הינו‏מודל‏.מודל‏עתה‏נגדיר

(‏abstract)‏מופשט‏לתיאור‏משמשים‏מודלים.‏[Pilo]‏שונים‏תחומים‏להרבה‏מיושם‏ליהיות‏שיכול‏היטב

[Tome]‏‏מורכבות‏ישויות‏של(‏simplified)ומפושט‏

‏.פרט‏כל‏של‏מלא‏תיעוד‏לעומת‏פשרה‏זאת‏–‏לפרטים‏ירידה‏ללא‏העקרוניים‏באלמנטים‏מתמקד‏מודל

‏האמיתית‏ישותל"‏תרגום"‏דורש‏מודל

‏שונות‏לפרשנויות‏חופש‏דרגות‏יש‏במודל

‏.‏משולב‏או‏טקסטואלי,‏גראפי‏להיות‏יכול‏מודל

‏[Tome]‏הבאים‏הכללים‏י"ע‏מוכתבת‏המודל‏משתמש‏בה‏הגראפית‏השפה

‏והטקסט‏הגראפיות‏הצורות‏הן‏אלו‏‏-(‏‏בית-אלף)‏חוקיים‏סמלים‏של‏אוסף .1

‏הסמלים‏אוסף‏של‏םחוקיי‏צירופים‏‏-(‏‏תחביר)‏חוקיים‏צירופים .7

‏חוקי‏צירוף‏כל‏של‏המשמעות‏‏-(‏‏סמנטיקה)‏משמעויות .3

‏במודל‏לבטא‏ניתן‏מה‏‏-(‏‏expressiveness)‏ביטוי‏כושר .5

Page 36: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-36-

.עיקריות‏קטגוריות‏לשתי‏נחלקים‏המודלים

.‏ביניהם‏וקשרים‏ישויות‏המתאר‏מודל‏‏-‏‏מבני‏/‏סטטי‏מודל .1

‏.מצב‏שינויי‏או‏תהליך‏של‏זרימה‏המתאר‏מודל‏‏-‏‏תפקודי‏/‏התנהגותי‏/‏דינמי‏מודל .7

‏לתת‏באות‏הן‏וכן‏העיצוב‏של‏יותר‏מעמיקה‏להבנה‏שנועדו‏שונות‏ראייה‏זוויות‏נותנות‏אלו‏קטגוריות‏שתי

‏למשל‏–‏העיצוב‏של‏שונה‏ראיה‏זווית‏גראפית‏בצורה‏מציג,‏המודל‏שמציג,‏תרשים‏כל‏.שונים‏עניין‏לבעלי‏מענה

‏דינאמי‏תרשים‏לעומת‏מחלקות‏בתרשים‏המחלקות‏הצגת‏י"ע‏הקוד‏של‏המבנה‏את‏שמתאר‏סטטי‏תרשים

‏.‏רצף‏בתרשים‏מחלקות‏אותן‏של‏עצמים‏בין‏הנשלחים‏המסרים‏את‏שמראה

Page 37: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-32-

נבחרים סטטיים תרשימים סקירת 6.1

(Class Diagram) מחלקות תרשים

‏רטיותהפ‏פונקציות/השיטות,‏המחלקה‏שם‏למשל)‏יםמנשקוה‏המחלקות‏הצגת‏י"ע‏הקוד‏של‏המבנה‏תאור

.‏ביניהן‏והיחסים(‏המאפיינים,‏והציבוריות

.הבאה‏1‏טבלהב‏מפורטים‏המחלקות‏בין‏היחסים‏הצגת

‏תאור ‏סימון המחלקות‏בין‏היחס

‏מחלקות‏שתי‏כאשר

‏לשנייה‏אחת‏‏קשורות

‏של‏יחס‏נוצר,‏דרך‏בכל

‏.בינהן‏אסוציאציה

‏התאחדות‏=‏אסוציאציה

(Association)‏

‏של‏אסוציאציה‏יחס

‏הרבה‏או‏לאחד‏הרבה

‏"הרבה"‏נסמן.‏להרבה

.כוכבית‏י"ע

‏(Multiplicity)‏ריבוי

‏בין‏אסוציאציה‏יחס

‏כיווני‏דו‏הוא‏מחלקות

‏י"ע.‏מחדל‏כברירת

‏את‏נקבע‏חץ‏ראש‏הוספת

‏.האסוציאציה‏יחס‏כיוון

‏יוצא‏החץ,‏כלומר

‏המכילה‏מהמחלקה

מכוונת‏אסוציאציה

(Directed Association)‏

Page 38: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-32-

.המוכלת‏המחלקה‏לכיוון

‏אסוציאציה‏ליחס‏דוגמא

‏למחלקה‏כאשר‏היא‏כזה

‏סוגי‏של‏מגוון‏יש

‏.אחריות

‏עובד,‏למשל

‏יכול‏באוניברסיטה

‏או‏פרופסור‏ליהיות

.הבית‏אב‏או‏דוקטור

‏באסוציאציה‏כמו‏חץ‏של‏סימון‏אותו

‏מהמחלקה‏יוצא‏שהחץ‏אלא,‏נתמכוו

.עצמה‏אל

משקפת‏אסוציאציה

(Reflexive Association)‏

‏נוצרת‏מחלקה‏כאשר

‏מחלקות‏של‏כאוסף

‏ליחס‏נקרא‏אז,‏אחרות

‏יחס‏בשם‏זה‏אסוציאציה

‏.‏אגרגאציה

‏יוצמד‏המעויין‏סימון

.המכילה‏למחלקה

‏התקבצות‏=‏אגרגאציה

(Aggregation/Has A)‏

‏היא‏קומפוזיציה

‏יחס‏על‏וריאציה

‏של‏יחס‏.‏האגריגאציה

‏מרמז‏קומפוזיציה

‏מקשר‏חזק‏חיים‏שמחזור

‏למשל.‏המחלקות‏בין

‏קיום‏זכות‏אין‏למכללה

‏.סטודנטים‏ללא

‏המלא‏המעויין‏סימון

.המכילה‏הלמחלק‏יוצמד

‏הרכב‏=‏קומפוזיציה

(Composition)‏

‏היא‏היורשת‏המחלקה

‏מחלקת‏כמו‏סוג‏מאותו

‏.האב

‏ליצור‏מאפשר‏זה‏יחס

.‏חוזר‏לשימוש‏אלמנטים

‏הכללה/הורשה

(Inheritance/Generalization/

Is A)

Page 39: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-31-

‏בעצם‏היורשת‏המחלקה

‏התפקודיות‏את‏יורשת

‏שהוגדרה‏המשותפת

‏.האב‏במחלקת

‏של‏ביחס,‏כלל‏בדרך

‏אחת‏יישות,‏מימוש

‏אך‏מנשק‏לרוב‏שהיא)

‏גם‏למשל‏ליהיות‏יכולה

‏כלומר‏מופשטת‏מחלקה

(‏מימוש‏ללא‏מחלקה

‏של‏קבוצה‏מגדירה

‏של‏בצורה‏תפקודיות

‏אחרות‏יישויות‏ואז.‏חוזה

(‏מחלקות‏הן‏אלו‏לרוב)

‏.החוזה‏את‏"מממשות"

‏מימוש

(Realization)‏

.(א.א —עריכה ותרגום )[ Pete] המחלקות בין היחסים: 1 טבלה

Page 40: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-55-

‏.‏ביניהן‏יחסיםה‏על‏מסבירו‏מחלקות‏תרשים‏של‏דוגמא‏מציג‏הבא‏2‏איור

[Sagg] מחלקות תרשים של דוגמא: 7 איור

Page 41: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-51-

(Component Diagram) רכיבים תרשים

.ביניהם‏יםמנשקוה‏תוכנה‏רכיבי‏תאור‏מציג‏הבא‏2‏איור

[Sagg] רכיבים תרשים של דוגמא :8 איור

Page 42: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-57-

(Deployment Diagram) פריסה תרשים

.עליהם‏המותקנים‏התוכנה‏רכיבי‏שלו‏ביניהם‏יםמנשקוה‏החומרה‏מארזי‏של‏תאור

.זה‏תרשים‏בתוך‏לעיל‏שהוצג(‏Component Diagram)‏הרכיבים‏של‏תרשיםה‏את‏משלבים‏בעצם

[ Mill] פריסה תרשים של דוגמא: 9 איור

Page 43: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-53-

נבחרים דינאמיים תרשימים סקירת 6.1

(Activity Diagram) פעילות תרשים

‏הזרימה‏תרשים‏של(‏expressiveness)‏ביטוי‏כושר‏יש‏זה‏לתרשים.‏תהליכים‏זרימתזהו‏תיאור‏של‏

(flowchart‏)‏מתחיליםל‏תכנות‏בקורסי‏שלומדים[Jose]‏של‏תוספת‏י"ע‏הביטוי‏כושר‏את‏מרחיב‏אוה‏אך,‏

swimlanes‏(לוגיים‏נושאים‏לפי‏תרשיםה‏חלוקת)‏,Guard conditions‏תנאי‏מקבל‏בתהליך‏מעבר‏כל)‏

,‏(exceptions)‏חריגים‏במקרים‏טיפול,‏(זמנית‏בו‏שקורים‏בתהליכים‏טיפול)‏A fork and join,‏(לביצועו

‏.סיגנלים

‏(.בהמשך‏תוארי)‏המצבים‏תרשיםב‏פעילות‏של‏ביצוע‏טלפר‏בכדי‏זה‏תרשיםב‏להשתמש‏ניתן

[Sagg] פעילות תרשים של דוגמא: 11 איור

Page 44: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-55-

‏.שגיאה‏במצב‏טיפול‏מציג‏11‏איור

.[Alle] פעילות תרשיםב שגיאה מצבב טיפול הצגת: 11 איור

‏.בזמן‏שתלוי‏סיגנל,‏סיגנל‏קבלת,‏סיגנל‏שליחת:‏בסיגנלים‏טיפול‏מציג‏17‏איור

[Alle] פעילות תרשיםב בסיגנלים טיפול הצגת: 11 איור

Page 45: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-50-

(Statechart Diagram) מצבים תרשים

‏.לאירועים‏כתגובה(‏עצמים‏של‏פנימיים‏מצבים‏מוצגים‏לרוב)‏במערכת‏מצבים‏בין‏המעברים

‏שקרה‏האירוע‏את‏לכתוב‏נוכל(‏מרובעים‏י"ע‏מיוצגים‏המצבים)‏מצבים‏בין‏המעבר‏את‏שמציג‏חץ‏כל‏על

(event)‏התנאי‏את,‏(guard‏)‏הפעולה‏ואת‏המעבר‏לביצוע(activity‏)‏במערכות:‏הערה)‏המעבר‏בזמן‏צעתשמתב

‏.‏event [guard] / activity:‏הבא‏באופן‏זאת‏נכתוב(.‏אפסי‏הינו‏המעבר‏שזמן‏מודגש‏אמת‏זמן

‏(.מהמצב‏יציאה‏או‏כניסה‏של‏אירוע‏למשל)‏בו‏שמתבצעות‏הפעולות‏את‏דומה‏באופן‏לכתוב‏נוכל‏מצב‏כל‏בתוך

[ Mill] מצבים תרשים של דוגמא: 11 איור

Page 46: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-56-

(Sequence Diagram) רצף תרשים

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

‏מלמעלה‏מתקדם‏יחיד‏עצם‏של‏ופעילותו‏חייו‏זמן‏ואילו‏לימין‏משמאל‏מתקדם‏העצמים‏בין‏עילותהפ‏זמן

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

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

‏כל‏שמשתנה‏מימוש‏לבין‏עיצוב‏בין‏הפרדה‏לצורך)‏המסר‏מהות‏את‏שיסביר‏שם‏רק‏לציין‏בתעשייה‏נהוג‏אבל

‏(‏.הזמן

[ Mill] רצף תרשים של דוגמא :11 איור

Page 47: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-52-

[ Mill] רצף תרשים של דוגמא :11 איור

‏מסגרות‏בעזרת‏נעשה‏זאת‏את.‏ועוד‏הסתעפויות,‏לולאות‏להוסיף‏האפשרות‏נוספה‏UML-2‏‏-‏ב

‏שני‏אציג‏הבאה‏מההרשי‏לאחר‏.[Info]‏רצף‏תרשיםל‏להוסיף‏שניתן‏מסגרות‏להלן(.‏Interaction Frames)‏

‏.לדוגמא‏תרשימים

Altבוצעי‏מתקיים‏ושל‏שהתנאי‏חלקה‏רק.‏ייםאלטרנטיב‏חלקים‏כמה‏‏‏-‏.

Optל‏דומה.‏אופציה‏–‏-Alt‏.מתקיים‏שלו‏התנאי‏אם‏רק‏שיבוצע‏בלבד‏אחד‏בחלק‏מדובר‏שכאן‏אלא‏

Parבמקביל‏מבוצע‏חלק‏כל.‏מקבילי‏–‏.

Loopה‏וסימון‏עצמו‏על‏חוזר‏החלק.‏לולאה‏–‏-Guard‏.האיטראציה‏בסיס‏את‏מגדיר‏

Region‏רק.‏קריטי‏אזור‏–‏Thread‏.זמנית‏בו‏זה‏בחלק‏להתבצע‏יכול‏אחד‏

Negאפשרית‏לא‏פעילות‏מציג.‏שלילי‏–‏.

Refאחר‏לתרשים‏הקורא‏את‏שמפנה‏סימון.‏התייחסות‏–‏.

Sdזה‏בסימון‏הרצף‏תרשים‏כל‏את‏למסגר‏פשוט‏אפשר‏רוצים‏אם.‏רצף‏תרשים‏–‏.

‏:במסגרות‏השימוש‏להדגמת‏רצף‏תרשימי‏שני‏אציג‏עתה

Page 48: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-52-

[Info] רצף תרשיםב Opt המסגרת שילובל דוגמא: 16 איור

[Info] רצף תרשיםב מסגרות לשילוב דוגמא :17 איור

Page 49: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-51-

‏(Use Case Diagram) מקרי שימוש תרשים

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

‏(Use Case)מקרה‏שימוש‏‏מייצגת‏תרשיםב‏אליפסה‏כל.‏איך‏על‏ופחות‏עושה‏המערכת‏מה‏על‏דגש‏ניתן.‏שלהם

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

‏תנאים,‏(post conditions)‏בסיום‏‏מתקיימיםש‏תנאים,‏הפעולות‏פירוט,‏(preconditions)‏מקדימים

‏.פיתרון‏עדיין‏להם‏ניתן‏שלא‏נושאים,‏(exceptions)‏איתם‏המערכת‏והתמודדות‏בכישלון‏שמתקיימים

‏ששמו‏שחקן‏נציג‏ואז‏כלשהו‏חיצוני‏לשחקן‏קשר‏ללא‏שמתרחשת‏המערכת‏של‏פעולה‏להציג‏נרצה‏לפעמים

Timerברקע‏שמתרחשים‏מקרי‏שימוש‏לתזמן‏ידוותפק‏.

‏או‏אחרים‏Use Cases‏שכוללים‏Use Uase,‏Use Cases-ה‏עם‏שמתקשרים‏שחקנים‏מציג‏הבא‏12‏איור

‏.שם‏לה‏ונותנת‏המערכת‏את‏שתוחמת‏מסגרת‏וכן‏אחרים‏Use Cases‏שמרחיבים

[Puff] ‏מקרי שימוש תרשים של דוגמא :18 איור

‏של‏בהקשר(‏generalization)‏אחר‏Actor‏של‏תפקידיו‏את‏שיורש‏Actor‏למשל‏כמו‏תרשיםל‏הרחבות‏קיימות

‏.הבא‏11‏איורב‏לראות‏שניתן‏כפי,‏המערכת

Page 50: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-05-

[Devx1] ‏מקרי שימוש תרשים של דוגמא: 19 איור

Page 51: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-01-

נבחרים תכן דפוסי סקירת 7

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

‏.קטגוריות‏של‏מדגם

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

‏.‏שאציג‏התכן‏ידפוס‏לעיצוב‏השיקוליםמ‏חלק‏אציג

‏.‏עליי‏החביב‏Observer‏התכן‏דפוס‏בתאור‏אתחיל

Behavioral קטגוריהב תכן דפוסי 7.1

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

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

‏.[GoF]החבאה‏של‏אופן‏ההתקשרות‏בין‏המחלקות‏או‏העצמים‏

Observer התכן דפוס 1.5.5‏

זה תכן לדפוס שניתנו שמות (1

Observer‏השם‏-‏Observer‏"המידע‏מקור"‏עצםב‏שנעשים‏המידע‏בשינויי‏"צופים"‏עצמיםשה‏כך‏על‏מרמז‏

[GoF]הז‏תכן‏דפוסל‏שניתנו‏אחרים‏שמות‏להלן.‏.

Dependentsהמידע‏מקור"‏עצםב‏עצמיםה‏של‏התלות‏על‏שמרמז‏שם‏–‏"[GoF] .

‏. [GoF] הז‏תכן‏דפוסב‏עצמיםה‏בין‏הפעילות‏את‏שמתאר‏שם‏זהו‏-Publish-Subscribe‏

‏.אליהם‏מתפרסם‏המידע‏ואז‏מידע‏שינויי‏על‏עדכונים‏לקבלת‏נרשמים‏עצמים

Model-View‏‏‏–‏Model‏ואילו‏מידע-למקור‏כללי‏שם‏הינו‏View‏מצב.‏מידע‏אותו‏ייצוג‏לאופן‏כללי‏שם‏הינו‏

.Model [GoF] -ב‏שמוחזק‏המידע‏במצב‏תלוי‏View-ה

והבעיה ההקשר הצגת (1

Page 52: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-07-

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

?הבעיה‏מה‏אז‏–‏קצרה‏תקופה‏במשך‏םמרוצי‏והיינו‏זאת‏מערכת‏קנינו.‏שמע‏ליציאת‏שקעים‏וללא‏מובנה

[dev] מודולארית לא שמע מערכת: 11 איור

:שזיהינו‏בעיות

‏.‏מסביבנו‏לאנשים‏לא‏אבל‏לנו‏נעים‏מהרדיו‏שבוקע‏קולה‏לפעמים

‏הרמקול‏את‏להחליף‏וקשה‏יותר‏טובה‏באיכות‏רמקול‏בחנות‏מצאנו.

הפיתרון (1

‏שמע‏מערכת‏מוצגת,‏להלן‏73‏באיור.‏שלנו‏ישןה‏הרדיו‏במקום‏חדישה‏מודולארית‏מערכת‏לקנות‏החלטנו‏אז

‏אותות‏רק‏מייצרת‏המערכת(.‏אחר‏שמע‏אמצעי‏כל‏או)‏ואוזניות‏רמקול‏אליה‏לחבר‏שאפשר‏כזו‏מודולארית

‏.האוזניות‏או‏הרמקול‏רק‏מפיקים‏השמע‏ואת‏חשמליים

‏"הרשמה"‏בשם‏זה‏חיבורל‏קראי‏התכן‏דפוס.‏למערכת‏השמע‏אמצעי‏את‏לחבר‏יש‏כל‏קודם‏אז

(Registration‏‏.)‏אותות‏את‏שמפיקה‏המערכת.‏המערכת‏מפיקהש‏מה‏כל‏את‏מהם‏נשמע‏אוטומטי‏באופן‏ואז

‏אלו‏שמע‏אמצעי‏של‏לקיומם‏מודעת‏לא,‏(Subject‏או‏Model)‏הנתונים‏מקור‏לה‏יקרא‏התכן‏דפוסש,‏השמע

,‏אחר‏אמצעי‏לכל‏קלותב‏להחליפם‏ניתן‏ולכן(‏Observers‏או‏Views)‏התצוגה‏אמצעי‏להם‏קראי‏התכן‏שדפוס

‏בעלי‏עצמים‏עם‏"לדבר"‏רק‏יודעת‏השמע‏אותות‏את‏שמפיקה‏המערכת.‏שנקנה‏חדשה‏הגברה‏למערכת‏למשל

‏.שלה‏למנשק‏שמתאים‏מנשק

(.א.א — עריכה) [dev] מודולארית שמע מערכת: 11 איור

Page 53: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-03-

,‏(Observer‏באיור‏שנקרא)‏גראפי‏חלון‏כלב.‏הבא‏77‏איורב‏מובאת‏התוכנה‏לעולם‏יותר‏קרובה‏נוספת‏דוגמא

‏של‏שונה‏הצגה‏ישנה,‏(Subject‏באיור‏שנקרא)‏הנתונים‏ממקור(‏registration)‏המידע‏לקבלת‏אותו‏שרשמנו

.‏הנתונים

[Gof] יהמוטיבצ לצורך Observer התכן דפוסב שימושל דוגמא: 11 איור

‏?לעיל‏הדוגמאות‏לשתי‏משותף‏מה‏:שאלה

‏הנתונים‏להצגת‏האמצעים‏לבין(‏Subject‏או‏Model‏שנקרא)‏הנתונים‏מקור‏בין‏חזק‏צימוד‏מנענו‏:תשובה

‏(.Observers‏או‏Views‏שנקראים)

‏את‏לשנות‏או‏להחליף‏מבלי‏להחליפם‏וגם‏Observers-ה‏את‏לנתק/לחבר‏הדינאמית‏האפשרות‏חשובה

‏מה.‏נרצה‏אם‏Subject-ה‏את‏גם‏להחליף‏נוכל‏דומה‏באופן.‏המערכת‏את‏לכבות‏מבלי‏אפילו‏ואף‏Subject-ה

‏.התצוגה‏לאמצעי‏הנתונים‏מקור‏בין‏שהוגדר‏מנשקה‏רק‏זה‏משתנה‏שלא

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

‏נוכל‏כך(.‏תצוגה‏או‏שמע‏אמצעי‏עבור‏רק‏לא‏נכון‏זה)‏במצבו‏תלוי‏בםשמצ‏עצמיםה‏לבין

‏.כולה‏המערכת‏בפעולת‏פגיעה‏ללא‏שלנו‏במערכת(‏עצם)‏חלק‏כל‏להחליף/לשנות/לחבר/לנתק

‏או‏"נושא"‏לו‏שנקרא‏מסוים‏עצם‏של‏הפנימי‏במצבו‏עצמים‏כמה‏של‏תלות‏לממש‏בא‏Observer‏‏התכן‏דפוס

‏לשינוי‏יגרום‏זה,‏משתנה‏הזה‏עצםה‏של‏הפנימי‏מצבו‏שכאשר,‏כך‏י"ע‏אתז‏עושה‏אוה.‏"המידע‏מקור"

‏.האחרים‏העצמים‏של‏במצבם‏אוטומטי

‏שיםמשממ‏עצמים(‏attach/register)‏לרשום‏ניתן‏כיצד‏לראות‏ניתן,‏הבא‏73‏איורבש‏המחלקות‏בתרשים

.Subject‏גמסו‏עצם‏בתוך‏שנמצאת‏רשימה‏תוךב‏Observer‏‏מנשק

Page 54: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-05-

‏של‏המפתח,‏למשל.‏במצבו‏שינויים‏על‏Observers-ה‏כל‏את‏יעדכן‏Subject‏מסוג‏עצםה,‏זה‏רישום‏לאחר

‏במצב‏לשינוי‏שגורמת‏מתודה‏מתוך‏Notify‏למתודה‏קריאה‏י"ע‏זאת‏יעשה‏ConcreteSubject‏מסוג‏המחלקה

‏(.לה‏קורא‏לקוחה)‏עצםה

Observer [Sks] התכן דפוס של לקותמח תרשים: 11 איור

‏Observers-שה‏לאחר‏הנתונים‏במקור‏לשינוי‏התכן‏דפוס‏של‏התגובה‏את‏מתאר,‏להלן‏75‏איורב‏הרצף‏תרשים

‏.Subject-ה‏אצל‏כבר‏נרשמו

Observer [Vetr] התכן דפוס של רצף תרשים:11 איור

Page 55: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-00-

‏דפוס‏של‏המחלקות‏בתרשים‏בעיקרו‏בפיתרון‏מעט‏נתעמק‏אם.‏[GoF] ‏כאן‏קצת‏להרחיב‏מעוניין‏אני‏עתה

‏.פשוט‏יותר‏הרבה‏לא‏עיצובו‏למה‏לשאול‏נרצה,‏לעיל‏Observer‏התכן

‏שמציגה‏והמחלקה‏הנתונים‏מקור‏שהיא‏המחלקה‏‏-‏בלבד‏מחלקות‏7-ב‏משתמש‏היה‏הנאיבי‏הפיתרון

.הנתונים‏את

ה‏של‏עדכון‏כל‏למה-Observersב‏שקיים‏במידע‏-Subject‏.לפחות‏פעולות‏משתי‏מורכב‏

‏.הבאות‏הספציפיות‏והתשובות‏השאלות‏בעזרת‏כך‏על‏נענה

‏המופשטת‏המחלקה‏את‏צריך‏למה‏:שאלהSubject‏?‏

‏ספריית‏מתוך‏כללית‏כמחלקה‏לשמש‏יכולה‏Subject‏המחלקה.‏חוזר‏שימוש‏לצורך‏נעשה‏זה‏:תשובה

‏אותה‏מתוך‏כללי‏מנשק‏שהינו‏Observer‏מנשקה‏את‏רק‏מכירה‏היא‏–‏כללי‏לשימוש‏מחלקות

‏ושליחת‏פנימית‏מרשימה‏Observer‏את‏משיםמשמ‏עצמים‏של‏הסרה/בשיוך‏הוא‏עיסוקה‏וכל‏ספרייה

‏מחלקה‏היא‏ConcreteSubject‏המחלקה,‏זאת‏לעומת.‏שינוי‏שחל(‏חסרת‏פרמטרים‏הודעה)‏הודעה

.הספציפית‏לאפליקציה‏ששייכת

‏מנשקה‏את‏צריך‏למה‏:שאלהObserver‏?‏

‏בזמן‏דינמי‏באופן‏נוכל.‏Observer‏מנשקה‏את‏שיממשו‏שונות‏מחלקות‏לפתח‏נוכל‏זה‏באופן‏:תשובה

.Observer‏את‏שמממשת‏נוספת/אחרת‏מחלקה‏מסוג‏עצם‏לרשום‏ריצה

‏למה‏:שאלהConcreteSubjectחסרת‏פרמטרים‏‏הודעה‏שולח‏(‏המתודהupdate‏)‏מצב‏שינוי‏על

‏יבצע‏ConcreteSubject‏-שה‏במקום‏וזאת‏ConcreteObserver-ה‏י"ע‏מידע‏משיכת‏שגורר‏המידע

‏?‏במצבו‏השינוי‏על‏לספר‏פשוט‏יכול‏זה‏םעצ‏הודעה‏לשלוח‏במקום‏כלומר,‏המידע‏של‏פשוטה‏דחיפה

‏אז‏מסויימים‏נתונים‏להם‏ישלח‏הוא‏אם.‏Observers-ה‏את‏יכיר‏לא‏הנתונים‏שמקור‏נרצה‏:תשובה

‏מקור‏את‏להכיר‏יכולים‏‏Observers-ה,‏זאת‏לעומת.‏מסוים‏במנשק‏לשימוש‏אותם‏מגביל‏הוא

‏ConcretSubject-שה‏לומר‏ניתן,‏כלומר.‏אליו‏בהתאמה‏מצבם‏את‏לשנות‏צריכים‏הם‏כי‏הנתונים

‏.מולו‏לעבודה‏תפורים‏Observers-ה‏אליו‏ובניגוד‏עליהם‏אחראי‏שהוא‏הנתונים‏עם‏לעבודה‏מוגבל

Page 56: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-06-

.והחסרונות היתרונות ותאור הפיתרון של התוצאות (1

‏.לשינויים‏וחסינה‏דינאמית,‏מודולארית‏מידע‏והפצת‏הרשמה‏מערכת‏יוצר‏Observer‏התכן‏דפוס

‏של‏מימוש‏לשנות‏גם‏וניתן‏Observers-ה‏של‏שונים‏מימושים‏להסיר/להוסיף/שנות‏ניתן‏ריצה‏בזמן

‏.האחרות‏במחלקות‏הקוד‏את‏לשנות‏לצורך‏יגרמו‏לא‏הללו‏והשינויים.‏Subject-ה‏

:יתרונות

‏אחת‏הודעה‏שולח‏Subject-ה(.‏multicast)‏לרבים‏אחד‏של‏בשידור‏תומך‏Observer‏התכן‏דפוס .1

‏באופן‏מגיעה‏זאת‏הודעה.‏ההודעה‏מיועדת‏למי‏לציין‏מבלי‏אצלו‏השתנה‏שמשהו‏מאוד‏פשוטה

‏.Publish-Subscribe‏-‏ה‏מנגנון‏של‏הקסם‏זהו.‏פעם‏אי‏אצלו‏שנרשמו‏Observers-ה‏לכל‏אוטומאטי

‏הצימוד‏בגלל‏התוכנה‏במערכת‏הפשטה‏של‏שונות‏בשכבות‏להימצא‏יכולים‏Observers-וה‏Subject-ה .7

‏יהיו‏Observers-ה‏ואילו‏DBLayer‏לה‏שנקרא‏בשכבת‏ליהיות‏יכול‏Subject-ה,‏למשל.‏ביניהם‏החלש

.GUI-ב‏הנתונים‏להצגת‏וישמשו‏התצוגה‏בשכבת

‏.הבאים‏העצמים‏מונחה‏תהתכנו‏בעקרונות‏טוב‏שימוש‏םמדגי‏הז‏תכן‏דפוס .3

ה‏–‏שישתנו‏שסביר‏עיצובב‏אספקטים‏של‏הסתרה-Observersה‏מפני‏מוסתרים‏הספציפיים‏-

Subject.

Open-Close Principle‏נעשה‏זה‏‏-(‏לשינויים‏סגורה‏אך‏להרחבות‏פתוחה‏להיות‏צריכה‏מחלקה)‏

‏המידע‏של‏להצגה‏אותה‏להרחיב‏נוכל‏כך,‏המידע‏בהצגת‏גם‏עוסקת‏לא‏Subject-ש‏כך‏י"ע

.אותה‏לשנות‏שנצטרך‏בלא‏שונות‏בצורות

‏–‏פעולה‏שמשתפים‏עצמים‏בין‏חלש‏לצימוד‏לשאוף‏ישSubjectל‏דעמו‏לא‏-Observers‏

.‏כללי‏מנשק‏דרך‏רק‏אלא‏עובד‏הוא‏איתם‏הספציפיים

‏של‏המימוש‏–‏מחלקה‏של‏לשינוי‏אחת‏סיבה‏רק‏להיות‏צריכהSubject‏אם‏רק‏להשתנות‏אמור‏

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

‏:חסרונות

.ובקוד‏וןבתכנ‏טוב‏תיעוד‏דורש,‏ידע‏ורענון‏לימוד‏דורש‏–‏מורכב‏יחסית‏מבנה .1

‏.להשתמש‏לא‏עדיף‏מתי‏לדעת‏כדי‏ניסיון‏צריך‏ .7

‏הוא‏ממנו‏מקבלים‏שהם‏מה‏כל.‏Subject-ב‏השתנה‏מידע‏איזה‏לחקור‏נאלצים‏השונים‏Observers-ה .3

‏.השתנה‏שמשהו‏הודעה

Page 57: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-02-

‏הם.‏שונים‏גורמים‏י"ע‏ואף‏שונים‏בזמנים‏שמפותחים‏שונים‏מימושים‏להיות‏יכולים‏Observers-ה .5

‏של‏ויקרה‏ממושכת‏לפעולה‏לגרום‏יכול‏שבמערכת‏במידע‏שינוי‏ואז‏Subjects-כ‏צמםבע‏לשמש‏יכולים

‏לא‏הם‏כי(‏מסוימות‏מהודעות‏התעלמות‏י"ע‏למשל)‏כזאת‏בבעיה‏יטפלו‏לא‏Observers‏-ה.‏עדכונים

‏.[Gof]‏השינוי‏פרסום‏של‏הכולל‏למחיר‏מודעים‏לא‏הם‏ולכן‏במערכת‏האחרים‏Observers-ל‏מודעים

-ה‏ניהול‏שנושא‏היא‏הטענה.‏Subject-מ‏לרשת‏צריך‏לא‏ConcreteSubject-ש‏הטוענים‏יש .0

Observersמ‏נפרד‏להיות‏צריך‏-ConcreteSubject‏השמור‏המידע‏את‏לנהל‏רק‏להיות‏צריך‏שתפקידו‏

‏Observers-ה‏ניהול,‏שני‏מצד.‏כאן‏וב‏נדון‏שלא‏White Board‏תכן‏דפוס‏את‏מציעים‏הם‏כך‏לשם.‏בו

‏מעוניינים‏אנו‏אם‏בזהירות‏לשקול‏צריך‏לכן‏לשנות‏נרצה‏לא‏המקרים‏שברוב‏וקצר‏פשוט‏בקוד‏נעשה

.‏‏הנוספת‏בתקורה

נעדיף‏שלא‏לשלם‏את‏מחיר‏ההאטה‏שגורם‏במערכות‏תוכנה‏שדורשות‏זמני‏תגובה‏מהירים‏מאוד‏ .6

‏.[Zer]‏דפוס‏תכן‏זה‏

Page 58: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-02-

Strategy התכן דפוס 1.5.5

זה תכן לדפוס שניתנו שמות (1

Strategy‏-ו‏Policyהעבודה‏שיטת/אסטרטגיה/במדיניות‏עוסק‏זה‏תכן‏שדפוס‏יםמספר‏אלו‏מותש‏‏–‏‏ [GoF] .‏

והבעיה ההקשר הצגת (1

‏.פשוטה‏דוגמא‏י"ע‏הבעיה‏את‏ציגא

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

‏או‏יותר‏מהיר‏למיון‏העדפה‏כמו‏להעדפות‏ובהתאם(‏?חלקית‏יןממו‏כבר‏הוא‏האם,‏למשל)‏המספרים‏מערך

‏.המיטבית‏המיון‏שיטת‏על‏להחליט‏ללקוח‏לתת‏נרצה,‏הפנוי‏בזיכרון‏השימוש‏למידת‏העדפה

‏.מיזוג‏מיון,‏מהיר‏מיון,‏מנייה‏מיון‏,‏(Radix Sort)‏בסיס‏מיון,‏בועות‏מיון:‏בין‏לבחור‏יוכל‏הלקוח,‏למשל

‏שתקרא‏…if… else if… else if‏של‏מערכת‏ולכתוב‏מימוש‏כל‏עבור‏מתודה‏לכתוב‏נוכל‏הלקוח‏של‏בקוד‏אז

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

‏.לטעויות‏ופגיע‏לתחזוקה‏יותר‏קשה‏גם‏ולכן‏מורכב‏ויהיה‏יגדל‏הלקוח‏של‏הקוד,‏כן‏כמו.‏המיון‏שיטת

ןהפיתרו (1

‏אבל‏מסוימת‏פעולה‏מבקש‏הלקוח.‏האלגוריתם‏בחירת‏של‏המדיניות‏את‏הלקוח‏של‏מהקוד‏להחביא‏נרצה

‏.הבא‏70‏איורב‏שמתואר‏כפי‏יהיה‏הפיתרון‏כללי‏באופן.‏תתבצע‏היא‏היא‏דרך‏באיזה‏יודע‏לא‏הוא

Strategy [Mak] התכן דפוס של עיקרוןה את שמתאר מחלקות תרשים :11 איור

Page 59: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-01-

‏לראות‏שניתן‏כפי.‏המימוש‏לבין‏הלקוח‏של‏הקוד‏בין‏שתחצוץ‏הפשטה‏של‏אחת‏שכבה‏עוד‏להוסיף‏לנו‏נותר

‏קיים‏בה‏שרק,‏Context‏המחלקה‏מול‏לעבוד‏צריך‏הלקוח‏של‏קודה.‏Context‏המחלקה‏נוספה,‏הבא‏76‏איורב

‏.Strategy‏המנשק‏מול‏ישירות‏ולא,‏לבחור‏יש‏ספציפי‏אלגוריתם‏באיזה‏הידע

Strategy [Rav] התכן דפוס של מחלקות תרשים: 16 איור

‏נשקמה‏בתפקיד‏כאן‏משמשת‏Logger‏נשקהמ.‏זה‏תכן‏בדפוס‏ומעשי‏יפה‏שימוש‏מדגים‏הבא‏72‏איור

Context‏.לעיל‏שהוזכר‏

Strategy [Tod] התכן בדפוס שימוש שמדגים מחלקות תרשים: 17 איור

‏ליהיות‏תחילהשמ(‏switch‏האחרת‏הסינטקטית‏בצורתה‏או)‏if else if‏הסתעפות‏שלנו‏בקוד‏נמצא‏כאשר

‏.Strategy‏התכן‏בדפוס‏שימוש‏על‏לחשוב‏מקוםה‏זה‏אז‏ומורכבת‏גדולה

Page 60: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-65-

.והחסרונות היתרונות ותאור הפיתרון של התוצאות (1

‏מימוש‏ואת‏הרצויה‏באסטרטגיה‏הבחירה‏את‏הלקוח‏של‏מהקוד‏להוציא‏לנו‏עוזר‏Strategy‏התכן‏דפוס

‏הזאת‏ההחלטה‏אבל‏לבחור(‏אלגוריתם)‏אסטרטגיה‏באיזה‏להחליט‏צריך‏מישהו‏דבר‏של‏בסופו.‏האסטרטגיה

‏ההחלטה‏את‏תקרא‏Context‏המחלקה‏אזו‏קונפיגורציה‏בקובץ‏מראש‏נכתבת‏היא‏למשל‏מהלקוח‏מוחבאת

‏בתוך‏יהיו‏.…if… else… if‏שההסתעפויות‏אפילו‏גם‏ניתן‏ביותר‏הפשוט‏באופן)‏הקונפיגורציה‏בקובץ‏שנעשתה

‏.(Context‏המחלקה‏של‏הקוד

‏:יתרונות

‏או)‏…if…else if‏של‏הסתעפויות‏הוספת‏על‏לוותר‏עתה‏יכול‏הלקוח,‏לעיל‏בדוגמא‏שראינו‏כמו .1

switch‏.לתחזוקה‏יותר‏קלה‏תיהיה‏התוכנה‏כך.‏בעיה‏של‏לפיתרון‏באסטרטגיה‏לבחור‏כשנרצה‏בקוד(‏

.לבחירה‏אלגוריתמים‏של‏משפחות‏ליצור‏ניתן‏כך.‏Strategy‏מחלקת‏מכל‏הורשה‏עץ‏ליצור‏ניתן .7

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

‏.ולזכור‏ללמוד‏קל,‏ואינטואיטיבי‏פשוט‏מבנה

‏.מודולארי‏קוד‏של‏לפיתוח‏עוזר‏–‏מימוש‏מול‏ולא‏מנשק‏מול‏תכנות/עיצוב

‏לבחור‏ספציפי‏אלגוריתם‏באיזה‏ההחלטה‏–‏שישתנו‏שסביר‏עיצובב‏אספקטים‏של‏הסתרה

.חמהלקו‏מוסתרת

Open-Close Principle‏(OCP)‏את‏.לשינויים‏סגורה‏אך‏להרחבות‏פתוחה‏להיות‏צריכה‏מחלקה‏-‏

‏במקום‏וזאת‏חדש‏אלגוריתם‏כל‏של‏מימוש‏שמכילה‏מחלקה‏הוספת‏י"ע‏מבצעים‏אנו‏ההרחבה

.אלגוריתם‏לשנות/להוסיף‏שנרצה‏פעם‏בכל‏הלקוח‏מחלקת‏את‏להרחיב

‏העצמים‏את‏מכירה‏לא‏הלקוח‏מחלקת‏–‏פעולה‏פיםשמשת‏עצמים‏בין‏חלש‏לצימוד‏לשאוף‏יש

.המימוש‏את‏שמספקים

בלבד‏אחד‏באלגוריתם‏מטפלת‏מחלקה‏כל‏–‏מחלקה‏של‏לשינוי‏אחת‏סיבה‏רק‏להיות‏צריכה.

‏העדפתComposition‏של‏ההוספה‏י"ע‏ממומש‏זה‏עיקרון‏–‏בהורשה‏שימוש‏פני‏על‏והאצלה‏

‏(.ריצה‏זמן‏לפני)‏המימוש‏את‏להכיר‏אל‏הלקוח‏של‏לקוד‏מאפשר‏זה.‏Context‏המחלקה

‏:חסרונות

.ספציפי‏אלגוריתם‏לכל‏נפרדת‏מחלקה‏–‏בקוד‏המחלקות‏מספר‏את‏מגדיל‏זה‏תכן‏דפוס .1

‏של‏מספר‏שאותו‏אומר‏זה.‏Strategy‏המנשק‏לבין‏Context‏המחלקה‏בין‏קשיח‏מנשק‏קיים .7

‏מממשת‏היא‏אם‏גם‏ConcreteStrategy‏מחלקה‏לכל‏לבסוף‏יגיע‏פרמטרים‏של‏סוג‏ואותו‏פרמטרים

Page 61: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-61-

‏לכל‏זקוק‏אינו‏הוא‏אבל‏אלגוריתמים‏של‏משפחה‏לאותה‏שייך‏שאמנם‏מאוד‏פשוט‏אלגוריתם

.הפרמטרים

Page 62: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-67-

Iterator התכן דפוס 1.5.7

זה תכן לדפוס שניתנו שמות (1

Iterator –‏נתונים‏של‏למערך‏גישה‏לנו‏מאפשר‏זה‏תכן‏שדפוס‏מורה‏זה‏שם‏(to iterate over) [GoF].‏

Cursor‏בעזרתוש‏כסמן‏משמש‏התכן‏שדפוס‏מורה‏זה‏שם.‏נתונים‏בבסיסי‏גם‏דומה‏במשמעות‏קיים‏זה‏שם‏‏–‏

‏. [GoF]הנתונים‏מערך‏את‏סורקים

והבעיה ההקשר הצגת (1

‏.פשוטה‏דוגמא‏י"ע‏הבעיה‏את‏ציגא

.‏מחלקה‏תהאו‏של‏מופע‏שהינם‏עצמים‏של‏מסוימת‏ברשימה‏ששמורים‏לערכים‏לגשת‏מעוניינים‏שאנו‏נניח

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

‏תא‏כל‏מיקום‏את‏שמציין‏באינדקס‏שימוש‏י"ע‏ישירה‏בצורה‏במערך‏עצם‏לכל‏לולאה‏בעזרת‏ניגש‏הוא‏ולכן

‏מספקת‏Assembler-ה‏שפת‏אפילו‏-‏במערך‏תא‏כל‏של‏בזיכרון‏הכתובת‏ציון,‏יותר‏גרוע‏אפילו‏או.‏במערך

‏בטכנולוגיית‏תלוי‏ליהיות‏צריך‏שלא‏מופשט‏נתונים‏מבנה‏הוא‏מערך‏שהרי)‏מכך‏להימנע‏סינטקטיים‏כלים

‏.(מסויימת‏מחשוב

‏בזיכרון‏שימוש‏יעילות‏משיקולי‏עצמיםה‏שמירת‏אופן‏את‏לשנות‏מעוניינים‏אנו,‏חדשה‏דרישה‏נציג‏עתה

‏במקרה.‏מקושרת‏ברשימה‏יישמרו‏שהם‏כך‏י"ע‏‏([fragmentation]‏הפרגמנטציה‏בעיית‏על‏התגברות‏לצורך)

‏(.שלנו‏לקוד‏שלו‏הקוד‏בין‏חזק‏צימוד‏קיים)‏שלו‏הקוד‏את‏לשנות‏צריך‏שלנו‏לקוחה‏זה

Page 63: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-63-

הפיתרון (1

.‏השמורים‏העצמים‏סקירת‏של‏המימוש‏ואת‏העצמים‏רשימת‏את‏שמכיל‏המימוש‏את‏יכיר‏לא‏‏לקוחשה‏נרצה

‏המימוש‏י"ע‏מוגדר‏אליו‏והמעבר‏הבא‏העצם)‏הבא‏לעצם‏לעבור‏האפשרות‏תא‏רק‏שלנו‏‏לקוחל‏נחשוף‏למשל

‏(.לקוחמה‏שמוחבא

.Iterator‏התכן‏בדפוס‏שנעשית‏המימוש‏החבאת‏את‏ממחיש‏להלן‏72‏איור

‏שלה‏למתודה‏לקרא‏צריך‏לקוחוה‏הנתונים‏רשימת‏את‏מכילה‏ConcreteAggregate‏המחלקה

CreateIterator‏מסוג‏העצם‏את‏לקוחל‏שתחזיר‏בכדי‏ConcreteIterator‏את‏לסרוק‏יוכל‏לקוחה‏שבעזרתו‏

‏מסוג‏בעצם‏שמוחזק‏הבא‏הנתון‏את‏לו‏שתחזיר‏למשל‏Next‏למתודה‏קריאה‏י"ע)‏הנתונים

ConcreteAggregate.)‏

Iterator [Dof2] התכן דפוס של מחלקות תרשים: 18 איור

Page 64: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-65-

והחסרונות היתרונות ותאור הפיתרון של התוצאות (1

‏הגבלה‏אין)‏נתונים‏מבני‏עם‏למשל,‏יותר‏גבוהה‏הפשטה‏ברמת‏עבודל‏ללקוח‏עוזר‏Iterator‏התכן‏דפוס

‏של‏הבעיה‏ליהיות‏צריכה‏זאת‏הנתונים‏סריקת‏של‏מימושב‏לעסוק‏צריך‏לא‏לקוחה(.‏נתונים‏במבני‏רק‏לשימוש

‏.‏‏עצמו‏הנתונים‏מבנה

:יתרונות

.ולזכור‏ללמוד‏קל,‏ואינטואיטיבי‏פשוט‏מבנה .1

‏איטראציה‏לולאות‏שיוצרות‏הבאות‏הבעיות‏את‏פותר‏וזה‏מהלקוח‏המימוש‏את‏מסתיר‏זה‏תכן‏דפוס .7

‏:while-ו‏for‏כמו

מהלקוח‏האיטראציהדפוס‏תכן‏זה‏מסתיר‏את‏מימוש‏‏?‏1-מ‏או‏5-מ‏איטרציהה‏את‏להתחיל‏האם.

ב‏משתמשים‏כאשר-Index‏בטעות‏ערכו‏את‏משנה‏התוכנה‏מפתח‏לפעמים‏אז,‏מספר‏שהינו,‏

.דפוס‏תכן‏זה‏מסיר‏את‏הצורך‏בשימוש‏באינדקס‏.האיטראציה‏ריצת‏במהלך

דפוס‏תכן‏זה‏‏.הלקוח‏אצל‏ההאיטראצי‏של‏הקוד‏את‏לשנות‏צריך‏אז‏משתנה‏המימוש‏כאשר

‏.מהלקוח‏האיטראציהמסתיר‏את‏מימוש‏

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

‏הנתונים‏סוג‏וכן‏הנתונים‏מבנה‏של‏מימושה‏–‏שישתנו‏שסביר‏עיצובב‏אספקטים‏של‏הסתרה

.לקוחמה‏מוחבא

‏עובד‏לקוחשה‏המנשק‏בחלק‏המחלקות‏–‏הפעול‏שמשתפים‏עצמים‏בין‏חלש‏לצימוד‏לשאוף‏יש

.‏המימוש‏חלק‏את‏מכירות‏לא‏ישירות‏איתן

‏.מימוש‏מול‏ולא‏מנשק‏מול‏עיצוב

‏המתודה‏–‏בהורשה‏שימוש‏פני‏על‏והאצלה‏הרכבה‏העדפתCreateIterator‏של‏תלות‏מונעת‏

‏.בהאצלה‏שימוש‏י"ע‏המימוש‏של‏בחלק‏לקוחה

‏:חסרונות

.הנתונים‏מבנה‏עם‏לעבוד‏והפשוטה‏הישירה‏הדרך‏לעומת‏יותר‏מורכב‏עיצוב .1

‏.ConcreteIterator‏מחלקה‏נוספת‏ConcreteAggregate‏כל‏עבור‏-‏מחלקות‏ריבוי .7

‏ועבור‏משלה‏ConcreteIterator‏מחלקה‏נצטרך‏ArrayList‏המחלקה‏עבור,‏Java‏בשפת,‏למשל

‏.משלה‏ConcreteIterator‏מחלקה‏כן‏גם‏נצטרך‏LinkedList‏המחלקה

Page 65: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-60-

Creational קטגוריהב תכן דפוסי 7.1

‏.מחלקותאיתחול‏של‏מכילה‏דפוסי‏תכן‏שעוסקים‏ביצירה‏של‏עצמים‏או‏‏Creationalהקטגוריה‏

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

פשרת‏גמישות‏רבה‏בהחלטות‏של‏קטגוריה‏זאת‏מא.‏העצמיםיצירת‏המחלקות‏או‏‏איתחולהחבאה‏של‏אופן‏

‏.[GoF](‏למשל‏בזמן‏קומפילציה‏או‏בזמן‏ריצה)‏איך‏נוצר‏ומתי‏נוצר,‏מי‏היוצר,‏מה‏נוצר

Factory Method התכן דפוס 1.5.5‏

זה תכן לדפוס שניתנו שמות (1

Factory Method –‏עצמים‏לקוחל‏שמייצרת‏מתודה‏מספק‏התכן‏שדפוס‏מרמז‏זה‏שם‏[GoF].‏

Factory‏יותר‏המפורט‏לשם‏קיצור‏הוא‏זה‏שם‏–‏Factory Method‏בספר‏למשל‏בשימוש.‏[Fbs].‏

Virtual Constructor‏שפת‏–‏C++‏עצמים‏שמייצרת‏אב-מחלקת‏של‏מתודה‏לתאר‏בכדי‏זה‏בשם‏משתמשת‏

‏‏היורשת‏במחלקה‏תלויה‏עצם‏כל‏יהיה‏ספציפי-סוג‏מאיזה‏ההחלטה‏אבל‏מחלקה‏אותה‏של‏העל-מסוג‏שהם

‏.[GoF]‏Constructor-ה‏את‏שתממש

‏עבורו‏שנוצר‏העצם‏לסוג‏ישירות‏מקושר‏לא‏לקוחשה‏לכך‏מתייחס‏זה‏שם,‏++C‏בשפה‏זה‏בשם‏לשימוש‏בדומה

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

והבעיה ההקשר הצגת (1

כמו‏אנשי‏‏.[Tony]המאמר‏מועם‏שינויים‏קלים‏בקיצור‏ן‏כאשאציג‏‏פשוטה‏דוגמא‏שאביא‏י"ע‏הבעיה‏את‏ציגא

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

לכן‏אציג‏את‏הדוגמא‏שלו‏ואתקן‏אותה‏ולאחר‏מכן‏אסביר‏.‏Factory Methodהזאת‏טעה‏בהצגת‏דפוס‏התכן‏

‏.התיקוןמהות‏את‏הטעות‏ואת‏

‏.הצגת‏טעות‏נפוצה‏ולימוד‏איך‏לתקן‏את‏הטעות‏היא‏דרך‏נפלאה‏ללמוד‏-

‏.מנשק‏הגדרתנתחיל‏ב(.‏log/trace)נרצה‏לכתוב‏קוד‏שיעזור‏לתוכנה‏שלנו‏לכתוב‏דוח‏מעקב‏של‏פעולותיה‏

public interface Trace { public void debugTitle( ); public void debug( String message ); }

Page 66: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-66-

‏.והמימוש‏השני‏יכתוב‏למסך מימוש‏אחד‏יכתוב‏לקובץ‏.‏נממש‏את‏המנשק‏בשני‏אופניםעתה‏

‏:המימוש‏הראשון‏כותב‏לקובץ

public class FileTrace implements Trace { private java.io.PrintWriter pw; public FileTrace() throws java.io.IOException { pw = new java.io.PrintWriter( new java.io.FileWriter( "c:\trace.log" ) ); } public void debugTitle( ) { pw.println( “Log started on date:”‏+‏new‏Date)( ‏)‏; } public void debug( String message ) { pw.println( "DEBUG: " + message ); } }

:המימוש‏השני‏כותב‏למסך

public class SystemTrace implements Trace { private boolean enableDebug; public void debugTitle( ) { pw.println(“Log‏started‏on‏date:”‏+‏new‏Date)( ‏)‏; } public void debug( String message ) { System.out.println( "DEBUG: " + message ); } }

‏:לעבוד‏ישירות‏מול‏המימוש‏הלקוח‏יכול

SystemTrace log = new SystemTrace(); log.debugTitle( ); log.debug( "entering first log" );

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

‏.תקן‏את‏הפיתרון‏שלוא

Page 67: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-62-

הפיתרון (1

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

public class TraceFactory { public static Trace getTrace() { return new SystemTrace(); } }

‏:עתה‏הקוד‏של‏הלקוח‏ייראה‏כך.‏בחירת‏המימוש‏מוסתרת‏מהלקוח‏כך

Trace log = new TraceFactory().getTrace(); log.debugTitle( ); log.debug( "entering first log" );

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

‏.TraceFactoyכמס‏בתוך‏המחלקה‏ובגלל‏שהמימוש‏מזאת‏.‏Traceמימוש‏של‏המנשק‏ה

חיובי‏אבל‏זה‏‏צעדא‏וה‏,בכדי‏להסתיר‏את‏הפעולה‏מהלקוח‏,אז‏אמנם‏הכימוס‏הזה‏של‏יצירת‏העצם‏המסויים

הוא‏שיטה‏‏יפתגם‏תכנות‏.‏(programming idiom)‏יתכנות‏פתגםהדוגמא‏לעיל‏מציגה‏בעצם‏.‏לא‏מספיק

‏,”Static Factory“שנקרא‏פתגם‏התכנות‏הדוגמא‏לעיל‏מציגה‏את‏ .שמתכנתים‏נוהגים‏להשתמש‏בה‏פשוטה

‏.[Tony]‏”Factory Method“כאילו‏הוא‏דפוס‏התכן‏בטעות‏מציגים‏אותו‏אנשים‏

‏.ואתן‏הסברים‏”Factory Method“עתה‏אציג‏תיקון‏לדוגמא‏לעיל‏בכדי‏להפוך‏אותה‏לדפוס‏התכן‏

‏:ולות‏מהדוגמא‏לעילנסח‏שתי‏בעיות‏שעא

‏‏.(השינוי‏כמוס‏בתוך‏המחלקהלמרות‏ש)‏TraceFactoryבמחלקה‏ישירות‏הקוד‏של‏הלקוח‏תלוי‏.‏1

,‏בדוגמא‏לעיל.‏שנוצר‏עבורו‏Traceללקוח‏גמישות‏גדולה‏מידי‏לאופן‏השימוש‏בעצם‏החדש‏מסוג‏‏ניתנת.‏7

לחייב‏את‏הקריאה‏למתודה‏‏נרצה‏.לא‏לקרוא‏לה‏בכללשאו‏‏debugTitleלקרא‏למתודה‏‏הלקוח‏יכול

debugTitle‏.בשלב‏האיתחול‏

Page 68: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-62-

וסיף‏לה‏מתודה‏בשם‏וגם‏נ‏ת‏אבחלקלמ‏TraceFactoryנהפוך‏את‏,‏לעיל‏בכדי‏לפתור‏את‏שתי‏הבעיות

initializeלקרוא‏לה‏ממחלקה‏שיורשת‏את‏‏ידרשישהלקוח‏‏TraceFactory:‏

public class TraceFactory { //Factory Method pattern calls this method: AnOperation public Trace initialize( ) {

Trace trace = getTrace( ); trace.debugTitle ( ); return trace;

} //Factory Method pattern calls this method: FactoryMethod public Trace getTrace( ) { //Implemented in sub classes only. } }

‏(:initializeדה‏א‏לא‏אמורה‏לדרוס‏את‏המתוהי)‏ראה‏כךית‏TraceFactory‏של‏חלקות‏היורשותהמת‏אח

// Factory Method pattern calls this class: ConcreteCreator public class SystemTraceFactory extends TraceFactory { public Trace getTrace( ) { return new SystemTrace(); } }

‏:ראה‏כךואז‏הקוד‏של‏הלקוח‏י

TraceFactory traceFactory = new SystemTraceFactory( ); Trace trace = traceFactory.initialize( ); Trace.debug( “Entering‏first log”‏(;

‏.לעילמהות‏התיקון‏בכדי‏להבין‏את‏‏אוסיף‏הסבריםו‏”Factory Method“ס‏התכן‏עתה‏אציג‏את‏דפו

‏.Factory Method‏התכן‏דפוס‏של‏הכללי‏המבנה‏את‏מראה,‏להלן‏71‏איור

Factory Method [Dof3] התכן דפוס של מחלקות תרשים: 19 איור

Page 69: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-61-

מאפשר‏שימוש‏בשתי‏היררכיות‏מקבילות‏של‏‏Factory Methodדפוס‏התכן‏,‏לעיל‏71‏איורכפי‏שניתן‏לראות‏ב

קת‏בדרך‏הייחודית‏ליצירת‏כל‏מוצר‏והשנייה‏עוס(‏products)אחת‏עוסקת‏בהגדרת‏המוצרים‏.‏הורשה

(creators.)‏

‏:[GoF]‏באופן‏הבא‏Factory Methodאת‏דפוס‏התכן‏‏נגדיר

“Define an interface for creating an object, but let subclasses decide which class to instantiate.

Factory Method lets a class defer instantiation to subclasses.”‏ (p. 107)

‏.Productיחליטו‏מאיזה‏מחלקה‏ליצור‏את‏העצם‏מסוג‏‏Creatorרק‏המחלקות‏שיורשות‏את‏,‏כלומר

ואפילו‏לא‏את‏‏Productהלקוח‏לא‏מכיר‏בכלל‏את‏המחלקות‏שיורשות‏את‏,‏כפי‏שראינו‏בדוגמא‏לעיל

Product.‏

‏.Factory Methodהתקשורת‏בין‏העצמים‏בדפוס‏התכן‏‏מראה‏את,‏להלן,‏35איור‏

Factory Method [Jam] התכן דפוס שלרצף תרשים: 11איור

Page 70: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-25-

‏למפתחים‏אפשרות‏מתן‏תוך,‏Product–ו‏Creator‏המופשטות‏תהמחלקו‏את‏ליצור‏ותנוהג‏עבודה-מסגרות

‏לסוג‏הייחודי‏היצירה‏אופן‏את‏לספק‏וכן‏למערכת‏עצמים‏של‏חדש‏סוג‏הכרת‏לצורך‏אלו‏מחלקות‏לרשת

‏.‏‏[GoF]‏העצמים‏של‏החדש

Simple"‏שנקראים(‏Programming Idioms)‏התכנות‏פתגמי‏את‏אציג‏עתה.‏בנושא‏יותר‏קצת‏נתעמק‏עתה

Factory"ו‏-"Static Factory"‏בטעות‏להם‏קוראים‏בתעשייה‏רבים‏אנשים.‏"Factory Pattern"‏שהם‏למרות‏

‏."Factory Method"‏התכן‏דפוס‏מהם‏שונה‏במה‏נראה.‏[Fbs]‏תכנות‏סגנון‏רק‏אלא‏כלל‏תכן‏דפוס‏אינם

‏המחלקה‏האם‏השאלה‏לעלות‏היכול,‏לעיל‏71‏איורשב‏המחלקות‏תרשים‏את‏בוחנים‏כאשר‏

ConcreteCreator‏(‏המחלקה‏את‏לרשת‏שצריכהCreator‏)‏לאפשר‏הכל‏בסך‏מעוניינים‏אנחנו‏הרי‏?הכרחית

.‏ישתנה‏ולא‏כך‏על‏ידע‏לא‏הלקוח‏של‏שהקוד‏כך,‏פעם‏בכל‏למערכת‏חדש‏ConcreteProduct‏בקלות‏להוסיף

‏לדחות‏מבלי‏Product‏מסוג‏עצמים‏תיצור‏היא‏כלומר,‏בנושא‏לבדה‏תטפל‏Creator‏המחלקה‏פשוט‏אולי‏אז

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

‏איננו‏נחשב‏לדפוס‏תכן‏”Simple Factory“‏.[Fbs]‏תכן‏דפוס‏לא‏זהו‏אבל‏"Simple Factory"‏בשם‏נקרא

‏.כפי‏שנראה‏כאן‏בהמשך‏”Open-Close Principle“-מכיוון‏שהוא‏מפר‏את‏עיקרון‏ה

‏.Simple Factory‏התכנות‏סגנון‏של‏המחלקות‏תרשים‏את‏מציג,‏להלן‏31‏איור

.(א.א — עריכה) Simple Factory [Dof3] התכנות סגנון של מחלקות תרשים: 11 איור

‏ולא‏Creator‏במחלקה‏סטטיות‏מתודות‏רק‏ללקוח‏ולתת‏פשוט‏יותר‏זאת‏לעשות‏ףא‏נוהגים‏בתעשייה‏אנשים

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

Page 71: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-21-

Factory" ‏תכן‏לדפוס‏נחשב‏לא‏זה‏גםו[Fbs]‏התכנות‏סגנון‏של‏החיסרון.‏Static Factory‏ואשה‏בכך‏הוא‏

.‏"Open-Close Principle"-ה‏עיקרון‏של‏הפרה‏זאת‏,להרחבות‏פתיחות‏פחות‏תוך‏גמישות‏חותפ‏מספק

‏קוד‏לכתוב‏בבואנו‏למשל‏גמישות‏מאיתנו‏מונע‏זה,‏כן‏כמו‏.Creator‏חלקהבמישירות‏‏תלוי‏הלקוח,‏כלומר

‏רתאח‏מחלקה‏של‏בעצם‏תשתמש‏הנבדקת‏שהתוכנה‏שנרצה‏נניח,‏כלומר.‏שלנו‏התוכנה‏ריצת‏את‏שבודק

CreatorMock‏(‏במחלקה‏משתמשת‏לא‏כבר‏שהיא‏"יודעת"‏לא‏הנבדקת‏התוכנהCreator‏)‏לצורך‏רק‏שכתבנו

‏קבועה‏עבודה‏סביבת‏הנבדקת‏התוכנה‏עבורהדמות‏ל‏רוצים‏אנחנו‏הבדיקה‏תרחישי‏לצורך‏כי)‏הבדיקות

‏.לותבק‏זאת‏לעשות‏נוכל‏לא‏אז‏סטטיות‏הן‏Creator‏במחלקה‏המתודות‏אם‏אז(.‏מראש‏וידועה

‏Creator‏מהמחלקה‏לרשת‏מידי‏רב‏חופש‏נותן‏שהוא‏בכך‏הוא‏Simple Factory‏התכנות‏סגנון‏של‏החיסרון

-ה‏שמתודת‏בעצמים‏השימוש‏על‏שליטה‏מאבדים‏אנו‏בכך(.‏בהמשך‏מייד‏אסבירשהדגמתי‏לעיל‏ו‏כפי)

Factory‏תיצור‏[Fbs]‏.‏

‏של‏למימוש‏קשור‏לא‏הלקוח‏"Factory Method"‏התכן‏בדפוס,‏לעיל‏שתיארתי‏התכנות‏לסגנונות‏בניגוד

‏את‏לרשת‏חייבת‏ConcreteCreator‏מסוג‏חדשה‏מחלקה‏שכל‏בגלל‏לכך‏ובנוסף(‏Products)‏המוצרים‏יצירת

‏71‏איורב‏נעשה‏זה.‏המוצרים‏סוגי‏בכל‏בעינינו‏שנכון‏השימוש‏את‏לחייב‏יכולים‏אנחנו‏אז‏Creator‏המחלקה

‏מתודה‏יורשת‏ConcreteCreator‏המחלקה‏וכך‏Creator‏למחלקה‏AnOperation‏המתודה‏הוספת‏י"עלעיל‏

-ב‏תכן‏דפוסי"‏הפרק‏-בתת‏בקצרה‏מציג‏שאני)‏‏Template Method-כ‏אותנו‏משמשת‏זאת‏מתודה‏.זאת

JUnit"‏במתודה‏משתמשת‏היא‏כלומר(‏15‏בעמוד‏FactoryMethod‏זאת‏דגיםנ.‏בה‏להשתמש‏הלקוח‏ועל‏

‏Factory Method-ב‏שמשתמשת‏Template Method‏הינה‏NewDocument‏המתודה‏שבו,‏להלן‏37‏איורב

‏.CreateDocument‏שנקראת

Factory Method [Gof] התכן בדפוס לשימוש דוגמא של מחלקות תרשים: 11 איור

.והחסרונות היתרונות ותאור הפיתרון של התוצאות (1

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

Page 72: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-27-

‏של‏מפיתוח‏חלק‏שהן‏במחלקות‏כאן‏מדובר‏לפעמים.‏Product-ו‏Creator‏המחלקות‏של‏המפתח .1

‏.עבודה-מסגרת

‏במחלקות‏כאן‏מדובר‏לפעמים.‏Concrete Product-ו‏ConcreateCreator‏המחלקות‏של‏המפתח .7

.הסופי‏הלקוח‏עבור‏כספריה‏לשמש‏שנועדו

‏נוספים‏לקוחות‏ליהיות‏יכולים‏לו‏שגם‏כמובן‏כי,‏הפשטות‏לצורך)‏הסופי‏הלקוח‏שהינו‏המפתח .3

‏(.כולם‏של‏הכובע‏את‏לחבוש‏יכול‏גם‏אחד‏שמפתח‏וכמובן

‏שהוא‏העצם‏של‏הסוג‏את‏לקבוע‏האחריות‏את‏הסופי‏הלקוח‏של‏מהקוד‏מוציא‏‏Factory Method‏התכן‏דפוס

‏הקוד‏למשל)‏ConcreteCreator‏המחלקה‏של‏בקוד‏בצעתת‏שנוצר‏העצם‏של‏הסוג‏על‏ההחלטה.‏ליצור‏רוצה

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

‏עצם‏בכל‏עתידי‏בשימוש(‏Framewrok‏שמפתח‏באדם‏למשל‏מדובר‏–‏Creator‏המחלקה‏את‏שכותב‏מיל)

‏.[Fbs]‏שיווצר‏חדש

‏:יתרונות

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

‏.ולזכור‏ללמוד‏קל,‏ואינטואיטיבי‏פשוט‏מבנה

לקוחמה‏מוחבא‏מימושה‏–‏שישתנו‏שסביר‏עיצובב‏אספקטים‏של‏הסתרה.

‏עובד‏לקוחשה‏המנשק‏בחלק‏המחלקות‏–‏פעולה‏שמשתפים‏עצמים‏בין‏חלש‏לצימוד‏לשאוף‏יש

.‏המימוש‏חלק‏את‏מכירות‏לא‏ישירות‏איתן

‏מימוש‏מול‏ולא‏מנשק‏מול‏עיצוב[Fbs].‏

‏העדפתComposition‏המתודה‏–‏בהורשה‏שימוש‏פני‏על‏והאצלה‏factoryMethod‏תלות‏מונעת‏

.בהאצלה‏שימוש‏י"ע‏המימוש‏של‏בחלק‏הסופי‏וחלקה‏של

Open-Close Principle‏את‏.לשינויים‏סגורה‏אך‏להרחבות‏פתוחה‏להיות‏צריכה‏מחלקה‏-‏

‏שניצור‏לעצם‏חדש‏סוג‏תיהיה‏אחת.‏מחלקות‏שתי‏הוספת‏י"ע‏מבצעים‏אנו‏ההרחבה

(ConcreteProduct‏)‏בלבד‏אותו‏ליצור‏שיודעת‏מחלקה‏תיהיה‏והשנייה(ConcreteCreator‏)‏וזאת

‏.[Fbs]‏חדש‏מסוג‏עצם‏ליצור‏שנרצה‏פעם‏בכל‏הסופי‏הלקוח‏מחלקת‏את‏להרחיב‏במקום

‏:חסרונות

Page 73: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-23-

‏ומחלקה‏ConcreteCreator‏מחלקה‏קיימת‏Product‏של‏סוג‏כל‏עבור‏–‏מחלקות‏ריבוי .1

ConcreteProduct.‏

‏עלול‏הלקוח,‏לכן.‏עילל‏שהזכרתי‏AnOperation‏במתודה‏‏להשתמש‏הלקוח‏על‏כופה‏לא‏זה‏תכן‏דפוס .2

‏במתודה‏להשתמש‏שלא‏יכול‏שהוא‏מכיוון‏FactoryMethod‏במתודה‏רצוי‏לא‏שימוש‏לעשות

AnOperation‏במתודה‏הרצוי‏השימוש‏את‏שמספקת‏FactoryMethod.

Page 74: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-25-

Singleton התכן דפוס 1.5.5

זה תכן לדפוס שניתנו שמות (1

Singleton –‏יותר‏באופן‏או.‏ויחיד‏אחד‏מופע‏לה‏שיש‏מחלקה‏ליצור‏לנו‏מאפשר‏זה‏תכן‏שדפוס‏מורה‏זה‏שם‏

.[GoF]‏הלקוח‏של‏לשימושו‏יחיד‏משאב‏יצירת,‏כללי

והבעיה ההקשר הצגת (1

‏.תוכנה‏כמפתח‏מעבודתי‏דוגמא‏כאן‏אתן

‏שאחראי‏DbManager‏לו‏קורא‏שאני‏יחיד‏עצם‏ליצור‏נוהג‏אני‏אז,‏Java‏בשפת‏פרויקטים‏מפתח‏אני‏כאשר

‏עיצוב‏של‏העיקרון‏פי‏על)‏מופשטות‏אותן‏ולעשות‏הנתונים‏בסיס‏מול‏התוכנה‏קוד‏שאר‏של‏הפעולות‏את‏לפשט

‏(.מימוש‏מול‏ולא‏מנשק‏מול

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

‏.בלבד‏שאילתה‏של‏שם

‏הנתונים‏בסיס‏מול‏העבודה‏של‏הפרטים‏את‏יכיר,‏DbManager‏של‏הלקוח‏שהינו,‏הקוד‏ששאר‏מבלי‏זאת‏וכל

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

‏לקוח‏של‏שימוש‏כל‏עבור(‏state)‏שלו‏הפנימי‏המצב‏על‏לשמור‏צריך‏שלא‏עצם‏הוא‏כי,‏DbManager‏מסוג

‏.מסוים

‏נצטרך‏לא‏ואז‏הלקוח‏לשרות‏מחלקה-מתודות‏שתחשוף‏DbManager‏במחלקה‏רק‏אשתמש‏שלא‏למה‏:שאלה

‏?(הפנימי‏מצבו‏על‏לשמור‏צריך‏לא‏שניצור‏העצם‏ממילא‏שהרי)‏המחלקה‏של‏מופעים‏בכלל‏ליצור

‏.‏הקוד‏לבדיקת‏שונים‏תרחישים‏ליצור‏מעוניין‏אניו‏שלי‏לקוד‏בדיקות‏עורך‏אני‏הפיתוח‏בזמן‏‏:תשובה

‏אותו‏וכך‏הנתונים‏בסיס‏את(‏simulate)‏מדמה‏אני.‏Unit Tests‏או‏Developer Tests‏תנקראו‏אלו‏בדיקות

‏ממה‏אחרים‏נתונים‏בדיקה‏תרחיש‏בכל‏מקבל(‏הנתונים‏מבסיס‏שירותים‏שצורך‏קוד)‏אותו‏בודק‏שאני‏קוד

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

‏יבחין‏שהקוד‏מבלי‏וזאת.‏DbManagerMock‏לה‏קורא‏שאני‏אחרת‏מחלקה‏מול‏יעבוד‏התוכנה‏קוד,‏הבדיקות

‏.DbManager‏את‏יורשת‏DbManagerMock‏כי‏בכך

Page 75: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-20-

הפיתרון (1

‏של(‏עצמים)‏חדשים‏מופעים‏ליצור‏מהלקוח‏נמנעו‏Singleton‏בשם‏לה‏קורא‏התכן‏שדפוס‏המחלקה‏את‏ניצור

‏הגדרתו‏תוך‏Default Cosnstructor-ה‏של‏בקוד‏מפורשת‏הצהרה‏י"ע‏לעשות‏ניתן‏תזא‏את.‏מחלקה‏אותה

‏ציבורית‏כמתודה‏אוטומטית‏שנוצר‏Default Constructor-ה‏על‏דורכים‏אנו,‏בכך(.‏private)‏פרטית‏כמתודה

(public‏)‏עבור‏גם‏נעשה‏כך.‏הלקוח‏לשימושConstructors‏.מחלקה‏אותה‏של‏אחרים‏

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

.‏instance‏יהיה‏ששמה‏ציבורית‏מחלקה‏מתודת‏נחשוף‏לכן.‏יחיד‏מופע‏אותו‏נוצר‏מתי‏לדעת‏מבלי‏וזאת‏מופע

‏תחזיר‏היא‏לה‏שנקרא‏הפעמים‏ובכל‏היחיד‏המופע‏את‏לה‏שנקרא‏הראשונה‏בפעם‏רק‏תיצור‏זאת‏מתודה

‏.‏יחיד‏מופע‏אותו‏את‏לקוחל

‏.Singleton‏התכן‏דפוס‏את‏תארמ,‏להלן‏33‏איור

Singleton [Mak2] ןהתכ דפוס של מחלקות תרשים: 11 איור

‏.ביותר‏והנפוץ‏הפשוט‏באופן‏Singleton‏המחלקה‏את‏מממש‏Java‏בשפת‏הבא‏הקוד‏קטע

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

‏.מעט‏עוד‏כך‏על‏ארחיב‏–(‏Multi-Threaded)‏נימים

public class Singleton { static private Singleton instance = null; //Class member that refers to the single object. protected Singleton() { }; //Overrides the Default Constructor, to prevent user access to it.

static public Singleton instance() { //This is a class-method. if ( null == instance ) { //Creates a new instance only on the first call to this method. instance = new Singleton(); } return instance; //Returns to the user the one and only instance (object) of this class.

} }

Page 76: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-26-

‏.Private-כ‏ולא‏Protected-כ‏הוגדרה‏Default Constructor-ה‏שמתודת‏לב‏לשים‏כדאי

-כ‏אותה‏הגדרנו‏כאשר‏ואילו.‏הזאת‏המחלקה‏את‏לרשת‏אפשר‏היה‏לא‏אז‏Private-כ‏מוגדרת‏היתה‏היא‏אם

Protectedה‏באותו‏שנמצאות‏מחלקות‏אז‏-Package‏.ממנה‏לרשת‏יכולות‏

‏בהורשה‏לשימוש‏גמישות‏להוסיף‏אפשר‏למשל,‏אחרות‏רבות‏בדרכים‏ומשממ‏ליהיות‏יכול‏זה‏תכן‏דפוס

‏.‏[Gof]‏בקצרה‏מתוארש‏כפי‏Singleton‏מהמחלקה

Registry of Singletonsב‏שימוש‏י"ע‏מימוש‏-‏-Registry‏המחלקה‏בתוך‏Singleton‏אנו‏כלומר,‏

‏Singleton‏קתמחל‏מאותה‏שיורשות‏מחלקות‏של‏עצמים‏Singleton‏המחלקה‏בתוך‏מראש‏רושמים

‏של‏רשימה‏שהינו)‏Registry-ב‏לו‏שניתן‏השם‏י"עפ‏מסויימת‏מחלקה‏של‏עצם‏לבקש‏יכול‏הלקוח‏ואז

‏שמחייב‏הצימוד‏את‏למנוע‏נוכל(.‏אותו‏רושמים‏אנו‏כאשר‏עצם‏לכל‏נותנים‏שאנו‏השם‏עם‏יחד‏עצמים

Environment‏בתוך‏זה‏שם‏כתיבת‏י"ע‏למשל‏צריך‏שהוא‏העצם‏של‏השם‏את‏לספק‏הלקוח‏את

Variable‏במחלקה‏הקוד‏של‏לשימושו,‏ההפעלה‏מערכת‏של‏Singleton.

נימים ריבוי עם עבודה

‏מופעים‏שני‏יוצרים‏הלקוח‏של(‏threads)‏נימים‏ששני‏מצב‏להיווצר‏שעלול‏היא‏לעיל‏שהצגתי‏בקוד‏הבעיה

‏נוכל.‏אטומית‏תאח‏כיחידה‏מתבצעת‏לא‏Instance‏המתודה‏כי‏קורה‏וזה‏Singleton-ה‏מחלקת‏של‏שונים

‏כולה‏המתודה‏הגדרת‏אבל‏synchronized‏-כ‏אותה‏נגדיר‏אם‏אטומי‏באופן‏להתבצע‏Instance‏למתודה‏לגרום

‏שברוב‏בשביל‏רק‏זאת‏וכל(‏נימים‏סינכרון)‏בעבודתה‏מאוד‏משמעותית‏להאטה‏ורמתג‏synchronized-כ

מקביליות‏ה‏מעולם‏התכן‏בדפוס‏וששימ‏י"ע‏למשל‏לפתור‏ניתן‏זה‏את.‏קיים‏כבר‏המופע‏אם‏נשאל‏הפעמים

(concurrency)‏שנקרא‏"Double Checked Locking"‏קיים‏כבר‏המופע‏אם‏בדיקות‏שתי‏עושה‏שהוא‏בגלל‏.

-כ‏הפעם‏מוגדרת‏אבל‏זהה‏נוספת‏בדיקה‏כהבתוו‏קיים‏המופע‏אם‏ומהירה‏רגילה‏בדיקה‏בודק‏הוא

Synchronized‏רק‏מתבצעת‏היא‏אבל‏זמן‏הרבה‏צורכת‏האטומית‏הפנימית‏הבדיקה.‏אטומית‏היא‏ולכן‏

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

‏.‏[Hagg]‏-‏ב‏גםו[Koch] ‏במאמר

‏מהדיסק‏נטענת‏המחלקה‏כאשר‏עוד‏להיווצר‏היחיד‏למופע‏שגורם,‏[Fbs]‏Java‏בשפת‏הבא‏הקוד‏את‏ציגנ

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

public class Singleton { private static final Singleton uniqueInstance = new Singleton(); private Singleton() { } public static Singleton getInstance() { return uniqueInstance; } }

Page 77: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-22-

‏לקוח‏אף‏אם‏גם‏ואז(.‏lazy initialization)‏העצל‏האיתחול‏את‏נפסיד‏אז‏זה‏בקוד‏משתמשים‏אנו‏כאשר‏אבל

‏המופע‏ביצירת‏שכרוכות‏הפעולות‏כל‏נעשות‏עדיין‏התוכנית‏ריצת‏במהלך‏Singleton-ב‏להשתמש‏צריך‏אינו

‏את‏לאתחל‏האפשרות‏את‏כך‏בגלל‏נפסיד,‏כן‏כמו(.‏זיכרון‏ומשאבי‏זמן‏שצורכות‏כאלו‏הרבה‏ליהיות‏יכולות)

‏.צורך‏בו‏יש‏כאשר‏רק‏Singleton-ה

והחסרונות היתרונות ותאור הפיתרון של התוצאות (1

‏הלקוח.‏מחלקה‏של‏בלבד‏אחד(‏עצם)‏במופע‏שימוש‏הלקוח‏על‏לכפות‏הדרך‏את‏לנו‏נותן‏Singleton‏התכן‏דפוס

‏.ואיך‏המופע‏נוצר‏מתי‏יודע‏נואי‏והוא‏המופע‏ליצית‏אחראי‏לא‏כבר

‏:יתרונות

.ולזכור‏ללמוד‏קל,‏ואינטואיטיבי‏מאוד‏פשוט‏מבנה .1

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

‏איך,‏היחיד‏המופע‏נוצר‏מתי‏מהלקוח‏מסתירים‏–‏שישתנו‏שסביר‏עיצובב‏אספקטים‏של‏הסתרה

‏(.Singleton‏את‏שיורשת)‏הוא‏פיתספצי‏מחלקה‏איזה‏של,‏נוצר‏הוא

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

‏לשלוט‏ואף‏אחד‏ממופע‏ליותר‏גישה‏יקבל‏שהלקוח‏בהמשך‏להחליט‏ניתן,‏‏למשל‏–‏שלו‏הקוד

.[Gof]‏יקבל‏שהלקוח‏המופעים‏במספר

‏מחלקהה‏–‏מימוש‏מול‏ולא‏מנשק‏מול‏עיצובSingleton‏לרשת‏ואפשר‏הכללי‏המנשק‏את‏נותנת‏

.ממנה

‏שהדגמתי‏כפי(developer tests)‏התכן‏דפוס,‏Singletonבמתודות‏שימוש‏לעומת‏גמישות‏מוסיף‏-

.[Gof]‏Singleton‏מהמחלקה‏ירושה‏י"ע‏המימוש‏את‏לעדן‏קל,‏למשל.‏בלבד‏מחלקה

‏הקוד‏על‏ישפיע‏שזה‏מבלי‏יקבל‏שהלקוח‏העצמים‏יצירת‏מדיניות‏את‏בקלות‏בהמשך‏לשנות‏ניתן

.הלקוח‏של

ה‏של‏אחד‏במופע‏רק‏להשתמש‏שרוצים‏להחליט‏אפשר-Singleton‏לשנות‏ניתן‏יהיה‏עדיין‏אבל‏

‏.‏[Mak3]‏ידיעתו‏ללא‏וזאת‏אליהם‏גישה‏יקבל‏שהלקוח‏העצמים‏מספר‏את‏בהמשך

Page 78: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-22-

‏:חסרונות

‏פוגעים‏שכידוע,‏גלובאליים‏יםבמשתנ‏רב‏לשימוש‏כתרוץ‏זאת‏במחלקה‏להשתמש‏נוטים‏מפתחים .1

‏המשתנים‏בעיית‏את‏פותרת‏לא‏Singlton‏מסוג‏בעצם‏נתונים‏שמירת.‏התוכנה‏של‏במודולאריות

.[Mak3]‏הבעיה‏שם‏את‏מחליפה‏רק‏אלא‏הגלובאליים

‏ולספק‏מראש‏היחיד‏העצם‏את‏ליצור,‏למשל‏אפשר.‏Singleton-ב‏להשתמש‏כדאי‏לא‏מקרים‏בהרבה .7

‏האית‏משתמש‏שאני‏העבודה-מסגרת‏למשל‏עושה‏כך)‏שירותיו‏את‏צריךש‏לעצם‏אליו‏הגישה‏את

(.Spring‏תשנקרא,‏בעבודתי

‏להוסיף‏נצטרך‏Singleton-ה‏עצםמ‏שירותים‏שדורשים(‏multy-threaded)‏מיםניריבוי‏‏עם‏עבודהב .3

.מייצג‏הוא‏שאותו‏היחיד‏המשאב‏מול‏הנימים‏של‏העבודה‏את‏שמסנכרן‏נוסף‏קוד

Page 79: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-21-

Structural וריהקטגב תכן דפוסי 7.1

גדולים‏של‏עצמים‏או‏של‏מחלקות‏ליצירת‏מבנים‏‏הרכבהמכילה‏דפוסי‏תכן‏שעוסקים‏ב‏Creationalהקטגוריה‏

‏.(יצירת‏מבנים‏רקורסיביים‏בזמן‏ריצה,‏למשל)ומורכבים‏יותר‏

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

‏.[GoF]העצמים‏‏שלהמחלקות‏או‏של‏‏ההרכבההחבאה‏של‏אופן‏

Adapter התכן דפוס 1.7.5‏

זה תכן לדפוס שניתנו שמות (1

Adapter‏שיוכלו‏נרצה‏אך‏אותן‏לשנות‏נרצה‏שלא‏שונות‏חלקותמ‏בין‏לתאם‏בא‏התכן‏שדפוס‏מורה‏זה‏שם‏–‏

.[GoF]‏ביניהן‏לתקשר

Wrapper‏מולה‏לעבוד‏ווכלי‏תואחר‏חלקותשמ‏כך‏שונה‏מנשקב‏מחלקה‏עוטפים‏שאנו‏לכך‏מתייחס‏זה‏שם‏–‏

‏.[GoF]‏להשתנות‏מבלי

Patcher‏בו‏משתמשים,‏קיימת‏תוכנה‏מערכת‏לתקן‏שבמקום‏בגלל.‏זה‏תכן‏לדפוס‏להעניק‏שבחרתי‏שםה‏זה‏–‏

‏של‏התיעוד‏תיקון,‏כסף,‏פיתוח‏זמן‏כמו‏במשאבים‏חיסכון‏תוך‏חייה‏את‏להאריך‏שיעזרוטלאים‏‏להוסיף‏כדי

‏כלומר‏נכון‏בדתעו‏עדיין‏ששונתה‏המערכת-שתת‏בדיקה‏כלומר‏(regression tests)‏נסיגה‏בדיקות,‏המערכת

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

והבעיה ההקשר הצגת (1

‏.[Fbs]‏בספר‏המובאת‏היומיום‏מחיי‏פשוטה‏דוגמא‏י"ע‏הבעיה‏את‏נציג

‏לחשמל‏תקע‏עם‏מחשב‏באמריקה‏קנינו‏אבל‏אירופאי‏תקו‏לפי‏עשויים‏שלו‏שהחורים‏חשמל‏שקע‏בקיר‏לנו‏יש

‏.ביניהם‏קשר‏ליצור‏יכולים‏שלא‏עצמים‏שני‏לנו‏יש‏כלומר.‏אמריקאי‏תקן‏לפי‏שמיוצר

הפיתרון (1

‏.זה‏עם‏זה‏לעבוד‏העצמים‏לשני‏שיעזור‏מתאם‏ניצור

Page 80: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-25-

Adapter [Fbs] התבנית לתיאור היומיום מחיי בדוגמא שימוש: 11 איור

‏למתודה‏לקרא‏רגילהש‏Client‏המחלקה‏בין‏מתאמת‏Adapter‏המחלקה‏כיצד‏לראות‏ניתן,‏הלןל‏30‏איורב

Request‏המחלקה‏לבין‏Adaptee‏המתודה‏את‏שחושפת‏SpecificRequst.‏

Adapter [Dof4] התכן דפוס את שמתאר מחלקות תרשים: 11 איור

‏.‏קצת‏כאן‏רחיבא

‏?חדשה‏Target‏מחלקת‏נכתוב‏פשוט‏אולי‏?Target‏מהמחלקה‏לרשת‏צריכה‏‏Adapter‏המחלקה‏למה‏:שאלה

Page 81: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-21-

‏.הבאים‏תפקידיםה‏בשני‏כאן‏משמש‏ההורשה‏יחס‏:בהתשו

‏תוכל‏Client‏המחלקה.‏Target‏לבין‏Client‏הותיקות‏המחלקות‏בין‏בזמנו‏שנחתם‏החוזה‏תנאי‏קבלת .1

‏ההתחייבויות‏כל‏את‏תספק‏החדשה‏שהיישות‏בתנאי‏מולה‏עובדת‏שהיא‏היישות‏לשינוי‏"להסכים"

.הישנות

‏‏במחלקה‏תלוי‏והוא‏יותר‏נגיש‏אינו‏אפילו‏שאולי‏קוד‏תוךב‏כתובה‏ליהיות‏יכולה‏Client‏המחלקה .7

Target‏מהמחלקה‏הורשה‏י"ע.‏יותר‏נגיש‏אינו‏שלה‏הקוד‏םגש‏Target‏מחלקהל‏אומרים‏אנו‏Client‏

.Target‏מסוג‏מחלקה‏עם‏עובד‏עדיין‏יאה‏השמבחינת

.והחסרונות היתרונות ותאור הפיתרון של התוצאות (1

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

‏לבין‏השירות‏את‏שנותן‏הקוד‏בין‏המערכת‏עיצוב‏של‏הראשונים‏בשלבים‏עוד‏מפרידש‏Bridge‏התכן‏לדפוס

‏.(ההבדלים‏את‏יותר‏נבין‏אז)‏Bridge‏התכן‏דפוס‏של‏בסקירה‏יותר‏שאסביר‏כפי,‏[Gof]‏אליו‏המנשק

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

‏.בהן‏תומכות‏שרות‏שנותנות‏שהמחלקות‏בקשות‏של‏אוסף‏או‏לבקשה‏מסויימת‏מחלקה‏של‏השירות‏בקשת

‏:יתרונות

.ולזכור‏ללמוד‏קל,‏ואינטואיטיבי‏פשוט‏מבנה .1

(‏לעיל‏זה‏תכן‏דפוס‏של‏הסקירה‏בתחילת‏מהם‏חלק‏פירטתי)‏ויקרים‏רבים‏פיתוח‏משאבי‏לחסוך‏עוזר .7

‏.קיים‏קוד‏של‏תיקונים‏במקום‏טלאים‏תפירת‏י"ע

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

לקוחמה‏מוחבא‏מימושה‏–‏שישתנו‏שסביר‏עיצובב‏אספקטים‏של‏הסתרה.

‏בלבד‏המתאמת‏במחלקה‏תלוי‏לקוחה‏–‏פעולה‏שמשתפים‏עצמים‏בין‏חלש‏לצימוד‏לשאוף‏יש.

‏העדפתComposition‏בספר‏שנכתב‏כפי‏–‏בהורשה‏שימוש‏פני‏על‏והאצלה‏[Gof]‏את‏לממש‏ניתן,‏

-ש‏נעדיף‏אך.‏Adaptee‏המחלקה‏את‏תירש‏Adapter‏שהמחלקה‏כך‏י"ע‏גם‏הזה‏התכן‏דפוס

Adapter‏למחלקה‏העבודה‏את‏תאציל‏Adapteeאותה‏תירש‏ולא‏.

‏:חסרונות

,‏קיים‏בקוד‏משינוי‏הימנעות‏י"ע‏פיתוח‏משאבי‏לחסוך‏עוזר‏שהוא‏בכך,‏זה‏תכן‏דפוס‏שמביא‏כההבר .1

‏תאורטי‏באופן.‏למערכת‏טלאים‏ועוד‏עוד‏להוסיף‏להמשיך‏שנוטים‏בגלל‏לקללה‏בהמשך‏הופכת

Page 82: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-27-

‏וגם‏אותן‏לאתר‏שקשה‏התאמות‏חוסר‏נגרמות‏במציאות‏אבל‏הבעיות‏את‏פותרים‏האלו‏הטלאים

.אותן‏לתחזק

‏-תת‏בין‏התאום‏לצורך‏מורכבות‏פעולות‏לעשות‏צריך‏שלפעמים)‏החוצצת‏בשכבה‏נוסף‏בקוד‏שימושה .7

‏לגרום‏וכן(‏לתקלות‏סיכוי‏יותר‏=‏קוד‏יותר)‏נוספות‏צפויות‏לא‏לתקלות‏פתח‏לתת‏יכול(‏המערכות

‏.המערכת‏של‏יותר‏איטית‏לפעולה

Page 83: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-23-

Bridge התכן דפוס 1.7.5

זה תכן לדפוס שניתנו שמות (1

Bridge‏השם‏,בהמשך‏שנראה‏כפי‏–‏Bridge‏לבין‏ללקוח‏חושפים‏שאנו‏המנשק‏בין‏שנוצר‏"גשר"ה‏על‏מרמז‏

‏.‏[GoF]‏הפנימי‏המימוש

Handle/Body‏למנשק‏מתייחס‏זה‏שם,‏כלומר.‏התכן‏דפוס‏את‏שמרכיבים‏החלקים‏לשני‏מתייחס‏זה‏שם‏–‏

‏.[GoF]‏הפנימי‏המימוש‏שהינו‏לגוף‏מתייחס‏וכן‏עבורו‏אחיזה‏כידית‏ללקוח‏חושפים‏שאנו

והבעיה ההקשר הצגת (1

‏בגלל‏הזאת‏במחלקה‏תלויה‏נעשית‏היא‏אז‏מסויימת‏במחלקה‏משתמשת‏תוכנה‏שכאשר‏הוא‏הבעיה‏מקור

‏.מחלקה‏אותה‏של‏במנשק‏משתמשת‏שהיא

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

‏זהים‏המוצרים‏אבל,‏בפלסטיק‏רק‏משתמש‏פלסטיק-מפעל‏ואילו‏בעץ‏רק‏משתמש‏עץה-מפעל‏.פלסטיק-ומפעל

‏.‏שונה‏בחומר‏לשימוש‏פרט

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

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

‏מחלקות‏שתי‏עוד‏נצטרך‏דומה‏ובאופן(‏הלןל‏36‏איור‏ראה)‏PlasticCar‏-ו‏WoodCar‏‏המחלקות‏את‏לבנות

‏המחלקות‏מספר‏את‏לצמצם‏נוכל‏איך.‏PlasticMotorcycle-ו‏WoodMotorcycle‏צעצוע-אופנוע‏לבניית‏כאלו

‏?גומי-למפעל‏למשל,‏נוספים‏למפעלים‏יותר‏הרמ‏להתאים‏שנוכל‏תוכנה‏ליצור‏וגם

Bridge התכן דפוס את שמסבירה דוגמאל מחלקות תרשים: 16 איור

Page 84: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-25-

הפיתרון (1

‏.‏האיור‏אחרי‏שמוסבר‏וכפי‏להלן‏32‏איורב‏שמתואר‏כפי,‏הבא‏באופן‏המימוש‏לבין‏המנשק‏בין‏נפריד

Bridge התכן דפוס את שמסבירה דוגמאל מחלקות תרשים: 17 איור

‏.לקוחל שנחשוף המנשק חלק את רק ניצור כל קודם

‏בשם‏כזאת‏למחלקה‏קורא‏התכן‏דפוס)‏Toy‏לה‏שנקרא‏צעצועים‏לייצור‏מופשטת‏מחלקה‏ניצור

Abstraction ‏מופשטות‏מחלקות‏ניצור,‏עתה .(ההפשטה‏של‏ביותר‏הגבוהה‏הרמה‏את‏מספקת‏כי

‏בשם‏להן‏קורא‏התכן‏דפוס)‏Motorcycle-ו‏Car‏להן‏ונקרא‏Toy‏המחלקה‏את‏שיורשות

RefinedAbstraction‏מימוש‏מספקות‏לא‏הן‏עדיין‏אבל‏ההפשטה‏את‏מחדדות/מעדנות‏הן‏כי‏.)

‏שלהשתמ‏וכיצד‏להשתמש‏חומר‏באיזה)‏צעצוע‏כל‏ממש‏לייצר‏כיצד‏יודעות‏לא‏זה‏בחלק‏המחלקות

‏.לאופנוע‏גלגלים‏לבניית‏בקשה‏למשל‏כמו‏כלליות‏בנייה‏בקשות‏מהלקוח‏לקבל‏רק‏אלא(‏בחומר

‏(.לקוחל חשוף שלא) המימוש את רק ניצור עתה

‏ToyImpl‏‏לה‏שנקרא‏צעצועים‏לייצור(‏המימוש‏בחלק‏נמצאת‏שהיא‏למרות)‏מופשטת‏מחלקה‏ניצור

‏חלק‏של‏המנשק‏את‏מפרסמת‏יאה‏כי Implementor‏בשם‏כזאת‏למחלקה‏קורא‏התכן‏דפוס)

‏הספציפי‏הצעצוע‏את‏ייצרו‏הן,‏ToyImpl‏מהמחלקה‏שיורשת‏מחלקה‏יצורנ‏מפעל‏כל‏עבור‏.(המימוש

‏למחלקות‏קורא‏התכן‏דפוס)‏מפעל‏אותו‏של‏ובטכניקה‏מפעל‏אותו‏של‏הייחודי‏חומרב‏שימוש‏ויעשו

.(הספציפי‏המימוש‏את‏מכילות‏הן‏כי‏ConcreteImplementor‏בשם‏כאלו

‏מהמחלקה‏"גשר"‏ניצור,‏לבסוףToy‏‏המחלקה‏אל‏ToyImpl‏.ביניהן‏אגרגאציה‏של‏יחס‏הוספת‏י"ע‏

‏מן‏המימוש‏חלק‏להסתרת‏שגורם‏זה‏שהוא‏מכיוון‏Bridge‏התכן‏בדפוס‏העיקרי‏הדבר‏הוא‏זה‏"גשר"

.הלקוח

‏למחלקה‏אפשרמ‏וזה.‏ממנה‏שנוצר‏ההורשה‏עץ‏ולכל‏Implementor-ה‏במחלקת‏לשימוש‏מודע‏לא‏הלקוח,‏כך

‏המחלקה‏אצל‏לשינוי‏לגרום‏מבלי‏שלהן‏המנשק‏את‏לשנות‏ואף‏להשתנות‏ממנה‏היורשות‏המחלקות‏ולכל‏זאת

‏.הלקוח‏משתמש‏בה

Page 85: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-20-

‏.להלן‏32‏איורב‏מובא‏זה‏תכן‏דפוס‏של‏הכללי‏המבנה

Bridge [Dof1] התכן דפוס של מחלקות תרשים: 18 איור ‏

.והחסרונות היתרונות ותאור הפיתרון של התוצאות (1

‏.המימוש‏לבין‏הלקוח‏בין‏שחוצצת‏שכבה‏מוסיף‏Bridge‏התכן‏דפוס

‏שני‏בין‏ההבדל‏מה‏אז‏דומה‏דבר‏עושה‏לעיל‏שתיארתי‏Adapter‏התכן‏שדפוס‏לציין‏מעניין,‏[Gof]‏שמסביר‏כפי

‏?אלו‏תכן‏דפוסי

,‏העיצוב‏בשלב‏ודע,‏נועד‏Bridge-ש‏בעוד‏קיימות‏מערכות-תת‏בין‏להתאים‏נועד‏Adapter-ש‏בכך‏הוא‏ההבדל

‏להשתנות‏יוכלו‏המימוש‏של‏בהיררכיה‏המחלקות‏כלו‏המנשק‏של‏בהיררכיה‏המחלקות‏כל‏שבה‏מערכת‏לבנות

‏.חברתה‏על‏תשפיע‏אחת‏שהיררכיה‏מבלי

‏:יתרונות

‏.‏במימוש‏תלות‏ללא‏להתפתח‏יכול‏עצמו‏המנשק‏עתה.‏במנשק‏השימוש‏עיקרון‏של‏העצמה .1

‏.הבאים‏העצמים‏מונחה‏תהתכנו‏בעקרונות‏טוב‏שימוש‏םמדגי‏הז‏תכן‏דפוס .7

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

Open-Close Principle‏-(‏לשינויים‏סגורה‏אך‏להרחבות‏פתוחה‏להיות‏צריכה‏מחלקה)‏

‏פתוחות‏אך‏להשתנות‏צריכות‏לא‏המימוש‏ובחלק‏המנשק‏שבחלק‏המופשטות‏המחלקות

.להרחבה

‏עובד‏שהלקוח‏המנשק‏בחלק‏המחלקות‏–‏פעולה‏שמשתפים‏עצמים‏בין‏חלש‏לצימוד‏לשאוף‏יש

.‏זה‏תכן‏שבדפוס‏המימוש‏חלק‏את‏מכירות‏לא(‏תהמופשט‏המחלקה‏ללא)‏ישירות‏אין

Page 86: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-26-

‏.מימוש‏מול‏ולא‏מנשק‏מול‏עיצוב

‏העדפתComposition‏למנוע‏בכדי‏האצלה‏י"ע‏נוצר‏"גשר"ה‏–‏בהורשה‏שימוש‏פני‏על‏והאצלה‏

‏.המימוש‏של‏בחלק‏הלקוח‏של‏עקיפה‏תלות

:חסרונות

‏עדיף‏מתי‏לדעת‏כדי‏ניסיון‏צריך,‏ובקוד‏תכנוןב‏טוב‏תיעוד‏דורש,‏ידע‏ורענון‏לימוד‏דורש‏–‏מורכב‏יחסית‏מבנה

‏.להשתמש‏לא

Page 87: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-22-

Composite התכן דפוס 1.7.7

זה תכן לדפוס שניתנו שמות (1

Composite –‏מרכיב‏זה‏תכן‏דפוס‏(Composes‏)חלק‏של‏היררכיות‏להציג‏בכדי‏עצים‏של‏למבנים‏עצמים-

‏‏שמורכב‏מכלול‏מייצג‏שלה‏ופעמ‏כלש‏בגלל‏Composite‏נקראת‏זה‏תכן‏בדפוס‏המחלקות‏אחת‏.[Gof]‏מכלול

‏.אחרים‏עצמים‏ועוד‏ממנה

והבעיה ההקשר הצגת (1

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

אני‏מעוניין‏‏ואז‏;Picture-1‏נקרא‏בחר‏שהוא‏הזאת‏לקבוצה;‏ולאחד‏אותן‏לקבוצה‏אחת‏שונות‏צורות‏לסמן

‏.המסך‏על‏אחד‏כגוף‏הקבוצה‏כל‏את‏הזיזול‏ציירל‏לו‏אפשרל

‏שהלקוח‏Picture-2‏עם‏יחד‏גם‏ואולי‏אחרת‏צורה‏עם‏יחד‏Picture-1‏את‏עתה‏לסמן‏יוכל‏הלקוח‏אופן‏ובאותו

‏בהרבה‏למצוא‏שאפשר‏התנהגות‏זאת.‏Picture-10‏בשם‏לה‏נקראולאחדן‏לקבוצה‏חדשה‏ש‏מקודם‏הגדיר

‏.ווקטורי‏שרטוט‏תוכנות

‏מיכל‏ליצור‏אצטרך(.‏ולהרחיב‏לתחזק‏קשה‏יהיה‏כך‏שאחר)‏מורכב‏די‏קוד‏לכתוב‏אצטרך‏זה‏את‏לממש‏בכדי

(Container‏)‏קוד‏לכתוב‏אצטרך,‏הזאת‏הקבוצה‏את‏להזיז‏ללקוח‏לאפשר‏וכדי.‏צורות‏של‏קבוצה‏כל‏עבור

‏.לזוז‏מהן‏ולבקש‏שבמיכל(‏Iterator‏התכן‏בדפוס‏להשתמש‏אוכל)‏הצורות‏כל‏על‏שעובר

‏‏

הפיתרון (1

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

Graphics‏כמו‏שמחלקות‏כך‏Picture‏המתודה‏על‏לדרוך‏וגם‏במיכלים‏הטיפול‏את‏ממנה‏לרשת‏יוכלו‏Draw‏

‏לראות‏שניתן‏כפי,‏Draw‏כמו‏הבסיסיות‏הפונקציונאליות‏המתודות‏על‏רק‏ידרכו‏Rectangle‏כמו‏ומחלקות

.להלן‏31‏איורב

Page 88: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-22-

Composite [Gof] התכן בדפוס לשימוש דוגמא - מחלקות תרשים: 19 איור

‏מבנה‏יוצר‏Graphics‏שלה‏המופשטת‏האב-תלמחלק‏Picture‏המחלקה‏בין‏האגרגאציה‏שיחס‏לב‏לשים‏כדאי

‏מסוג‏עצמים‏עוד‏לתוכו‏לקבץ‏יכול‏Graphic‏מסוג‏עצם‏גם‏שהינו‏Picture‏מסוג‏עצם‏כלומר,‏רקורסיבי‏עצמים

Graphics‏(‏מסוג‏אחרים‏עצמים‏גם‏כולל‏שזהPicture‏.)‏הרקורסיבי‏המבנה‏את‏מתאר‏להלן‏55‏ראיו

.שתיארתי

Composite [Gof] התכן דפוס שיוצר( עץ) רקורסיבי עצמים מבנהל ספציפית וגמאד: 11 ראיו

Page 89: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-21-

.להלן‏51‏איורב‏התכן‏דפוס‏מוצג,‏כללי‏באופן

‏Composite [Gof] התכן דפוס של מחלקות תרשים: 11 איור

.להלן‏57‏איורב‏מוצג‏כללי‏באופן‏ליצור‏שאפשר‏הרקורסיבי‏העצמים‏מבנה

Composite [Gof] התכן דפוס שיוצר אפשרי( עץ) רקורסיבי עצמים מבנה: 11 איור

‏לא‏שאני‏Decorator‏התכן‏לדפוס,‏למשל.‏התכן‏דפוסי‏בין‏קשרים‏ישנם,‏קודם‏בפרק‏שציינתי‏כפי.‏כאן‏נרחיב

‏הבדל‏ביניהם‏יש‏אבל,‏עצמים‏של‏רקורסיבי‏מבנה‏שמתאר‏מאוד‏דומה‏מחלקות‏תרשים‏שי‏זאת‏בעבודה‏מציג

‏שרשור‏בעזרת‏מסויים‏לעצם‏תפקידים‏להוספת‏משמש‏Decorator.‏שנוצר‏הרקורסיבי‏ובמבנה‏בשימוש

‏וגם‏הלקוח‏בקשת‏את‏אליו‏ומעביר‏בשרשרת‏הבא‏העצם‏על‏מצביע‏עצם‏כל‏כלומר.‏אליו‏עצמים‏של‏רקורסיבי

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

‏את‏יציג‏הראשון‏העצם‏אז‏חלון‏להציג‏מבקש‏הלקוח‏אם,‏למשל)‏הלקוח‏לבקשת‏השירות‏של(‏ריצה‏בזמן

‏-‏ל‏בניגוד‏זאתו(.‏‏שהוצג‏לחלון‏גלילה‏פסי‏יציג‏הבא‏העצם‏ואז.‏חלקו‏את‏להציג‏הבא‏מהעצם‏ויבקש‏החלון

Composite‏עצמים‏בין‏דינאמי‏הכלה‏יחס‏של‏שירות‏לנו‏שנותן‏[Gof].‏

‏שרשרת‏יצרים‏שניהם)‏Decorator‏–‏ל‏יותר‏דומה‏אפילו‏Chain of Responsibility‏התכן‏שדפוס‏להעיר‏כדאי

Page 90: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-15-

‏היא‏Chain of Responsibility‏של‏מטרתו)‏שונים‏בתפקידים‏מדובר‏כאן‏גם‏אבל(‏עצמים‏של‏רקורסיבית

‏לקוח‏י"ע‏[Fbs]-ב‏מודגם‏זה.‏השירות‏את‏לו‏נתנו‏עצמים‏איזה‏ברורה‏ידיעה‏ללא‏שירות‏לבקש‏יוכל‏שהלקוח

‏(.לשף‏ההזמנה‏את‏שמעביר‏מהמלצר‏מנה‏שמזמין‏במסעדה

.והחסרונות היתרונות ותאור הפיתרון של התוצאות (1

‏קל‏נוצר‏שהמבנה‏לאחר.‏עצמים‏בין‏הכלה‏של‏רקורסיביים‏מבנים‏ליצור‏לנו‏מאפשר‏Composite‏התכן‏דפוס

‏.מסוים‏עץ-בתת‏או‏שבעץ‏העצמים‏לכל‏בקשה/הודעה‏לשדר‏ללקוח

:יתרונות

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

‏עוברת‏ירותש‏לקבלת‏הלקוח‏של‏הבקשה.‏מפורש‏באופן‏עצם‏מכל‏בנפרד‏שירות‏לבקש‏צורך‏אין .7

‏המבנה‏בצורת‏תלות‏ללא‏וזאת‏נפרד‏תקשורת‏ערוץ‏ביצירת‏צורך‏ללא‏העצמים‏מבנה‏בתוך‏במהירות

‏.שיתקבל

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

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

Open-Close Principle‏ההמחלק‏-(‏לשינויים‏סגורה‏אך‏להרחבות‏פתוחה‏להיות‏צריכה‏מחלקה)‏

-ו‏Composite‏מחלקות‏י"ע‏להרחבה‏הפתוח‏אך‏להשתנות‏הצריכ‏לא‏Component‏המופשטת

Leaf.

‏מסוג‏עצם‏כל‏–‏פעולה‏שמשתפים‏עצמים‏בין‏חלש‏לצימוד‏לשאוף‏ישComposite‏שהוא‏רק‏יודע‏

.מזה‏יותר‏אול‏Component‏מסוג‏אחרים‏עצמים‏מקבץ

‏המחלקה‏מול‏עובד‏הלקוח,‏למשל‏–‏מימוש‏מול‏ולא‏מנשק‏מול‏עיצובComponent‏חייב‏ולא‏

‏.ממנה‏שיורשות‏המחלקות‏את‏להכיר

:חסרונות

.‏מסויים‏עצם‏של‏חיפוש‏כמו‏לפעולות‏רקורסיביים‏אלגוריתמים‏להפעיל‏נצטרך‏ולכן‏עצמים‏של‏עץ‏נוצר .5

‏ולתעד‏אותם‏לתחזק‏קשה‏יותר‏ולכן‏יותר‏מורכבים‏תמיםלאלגורי‏נחשבים‏רקורסיביים‏אלגוריתמים

.אותם

‏שנמצא‏מעצם‏מבקש‏שהלקוח‏בקשה‏כאן,‏Observer‏התכן‏דפוס‏של‏בהצגה‏שראינו‏למה‏דומה‏באופן .0

‏למשמעות‏מודע‏יהיה‏לא‏הלקוח‏לפעמים,‏לכן.‏העץ‏במורד‏לעצמים‏רבות‏לבקשות‏תתורגם‏העץ‏במעלה

Page 91: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-11-

‏נבנה‏לא‏העץ‏מקרים‏שבהרבה‏בגלל‏בעיקר)‏לבקשתו‏המערכת‏היענות‏של(‏התוכנה‏עבודת‏מבחינת)

‏‏(.עצמו‏הלקוח‏למשל‏כמו‏אחרים‏גורמים‏ידי‏על‏אלא‏המפתח‏י"ע‏מראש

Page 92: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-17-

בתעשייה פיתוח סביבותבו ודהבע-מסגרותב תכן דפוסיב שימוש 8

‏.התוכנה‏בתעשיית‏שונות‏פיתוח‏ובסביבות‏עבודה-מסגרותב‏נרחב‏בשימוש‏נמצאים‏תכן‏דפוסי

‏.לכך‏דוגמאות‏בקצרה‏כאן‏אסקור‏הבאים‏םבעמודי

Page 93: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-13-

Spring-ב תכן דפוסי 8.1

Spring‏נרחב‏בשימוש‏והוא‏בעבודתי‏בו‏משתמש‏שאני,‏פתוח‏קוד‏מבוסס‏תוכנה‏לפיתוח‏עבודה-מסגרת‏הינו‏

‏הוא,‏אחרות‏עבודה-מסגרות‏בהרבה‏כמו,‏Spring-ב‏מרכזי‏עיקרון.‏[Spri]‏בעולם‏Java‏מפתחי‏י"ע‏מאוד

‏של‏מימוש‏הינו‏DI‏התכן‏דפוס.‏(DI‏בקיצור‏או‏Depency Injection"‏)תלות-הזרקת"‏תכןה‏בדפוס‏השימוש

אומר‏"‏היפוך‏השליטה"עיקרון‏,‏בקצרה.‏(IoC‏בקיצור‏או‏Inversion of Control"‏)השליטה-היפוך"‏עיקרון

קוד‏,‏משלל)אז‏קיים‏קוד‏אחר‏,‏(שנמצא‏למשל‏בספריות‏של‏קוד‏תוכנה)שבמקום‏שהקוד‏שלך‏יקרא‏לקוד‏אחר‏

שייקרא‏לקוד‏שלך‏ובנוסף‏הקוד‏האחר‏גם‏ייקבע‏את‏המימוש‏של‏הקוד‏האחר‏(‏עבודה-התוכנה‏של‏מסגרת

‏על‏שמרחיב‏[Eli]‏שלי‏העבודה‏במקום‏שכתבתי‏מאמר‏צירפתי,‏151‏שבעמוד‏'א‏בנספח.‏שהקוד‏שלך‏תלוי‏בו

Spring‏ועל‏DIו‏-IoC‏על‏בעיקר‏ומתבסס‏[Mart1]‏.‏

1) Spring התכן בדפוס משתמש Factory Method

Spring‏התכן‏דפוסב‏משתמש‏Factory Method‏לטעינת‏Beans‏השם)‏"Bean"‏כללי‏לשימוש‏מחלקות‏מתאר‏

‏שמרחיב‏ApplicationContext‏באמצעות‏גםו)‏BeanFactory‏באמצעות(‏Java‏בשפת‏נרחב‏שימוש‏בהן‏שנעשה

‏‏‏.[John]‏קוד‏לש‏דוגמא‏ןללה(.‏BeanFactory‏את

BeanFactory bf = new XmlBeanFactory(new ClassPathResource("myFile.xml", getClass())); MyBusinessObject mbo = (MyBusinessObject) bf.getBean("exampleBusinessObject");

‏ואז(‏כזה‏קובץ‏של‏תוכן‏אדגים‏הבאה‏בדוגמא)‏myFile.xml‏מהקובץ‏Bean-ה‏הגדרת‏את‏קורא‏לעיל‏הקוד

‏(.בעבר‏נוצר‏או‏עכשיו‏שנוצר‏עצם)‏שקיבלנו‏העצם‏על‏צביעלה‏mbo‏משתנהל‏גורם

‏דפוס‏איך‏‏זה‏מחלקות‏לתרשים‏הוספתי,‏הלןל‏53‏איורב.‏Factory‏התכן‏דפוס‏של‏המחלקות‏בתרשים‏ניזכר

.‏לעיל‏בקוד‏שמוזכרת‏מחלקה‏לכל‏קורא‏התכן

(.א.א — עריכה) Factory Method [Dof3] התכן דפוסב שימוש להדגמת מחלקות תרשים: 11 איור

Page 94: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-15-

1) Spring התכן בדפוס משתמש Singleton

‏דוגמא‏נראה,‏Factory Metod‏התכן‏בדפוס‏שימוש‏י"ע‏Spring‏בעזרת‏Bean‏לקבלת‏דוגמא‏שראינו‏לאחר‏.Singleton‏התכן‏בדפוס‏שימוש‏סףבנו‏נראה‏הפעם‏אבל.‏כזאת‏נוספת‏שקורא‏[7Devx]‏מתוך‏הבא‏הקוד‏בקטע‏לראות‏ניתן‏Singleton‏התכן‏בדפוס‏Spring‏של‏לשימוש‏יפה‏דוגמא .הקוד‏קטע‏לאחר‏מובא‏שתוכנו‏XML-ה‏קובץ‏את

InputStream is = new FileInputStream("src/examples/spring/beans.xml"); BeanFactory factory = new XmlBeanFactory(is); DataProcessor dataProcessor = (DataProcessor) factory.getBean("fileDataProcessor"); Result result = dataProcessor.processData();

‏.Singleton‏התוכן‏בדפוס‏השימוש‏את‏הדגשתי.‏XML-ה‏קובץ‏תוכן‏להלן

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean name="fileDataProcessor" class="examples.spring.DataProcessor" singleton="true"> <constructor-arg> <ref bean="fileDataReader"/> </constructor-arg> </bean> <bean name="fileDataReader" class="examples.spring.FileDataReader" singleton="true"> <constructor-arg> <value>/data/file1.data</value> </constructor-arg> </bean> </beans>

Page 95: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-10-

JUnit-ב תכן דפוסי 8.1

Junit התכן בדפוס משתמש Template Method

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

‏הוא‏הרעיון.‏JUnit‏השם‏ניתן‏ומכאן‏Unit Tests‏גם‏שנקראים‏Developer Tests‏ליצור‏התוכנה‏למפתח‏לעזור

‏.הנבדק‏הקוד‏על‏שונים‏בדיקה‏תרחישי‏שיריץ‏תוכנה‏קוד‏כתובל

‏"Frameworks-ה‏של‏האבא"‏גם‏שנקרא‏Template‏התכן‏דפוס‏את‏בקצרה‏נכיר,‏כאן‏שאתן‏הדוגמא‏במהלך

-מסגרתב‏שמשתמש‏התוכנה‏למפתח‏מאפשר‏הוא‏כלומר.‏Hot Spots‏ליצירת‏הבסיס‏את‏נותן‏שהוא‏כך‏על

‏.העבודת‏במהלך‏שימוש‏בהם‏עשהת‏העבודה-מסגרתש‏מסויימים‏במקומות‏קוד‏לכתוב,‏העבודה

‏למשל‏אפשר,‏עיצוב‏מונחה‏עצמיםב‏שימוש‏מחייבת‏לא‏זאת‏עבודה‏שיטת.‏Hot Spots‏נקראים‏אלו‏מקומות

‏ידית/ייחוס/מצביע/הכתובת‏את‏העבודה-מסגרתל‏יםמספק‏אנחנו‏כלומר.‏Callback Functions-ב‏להשתמש

‏‏התעבוד‏במהלך‏ואז‏שכתבנו‏פרוצדורה/הפונקציה‏להפעלת(‏address/pointer/reference/handle)‏אחיזה

‏.עיצוב‏מונחה‏עצמיםב‏נעשה‏זה‏צדיכ‏דוגמא‏נראה‏עתה.‏שלנו‏קודב‏שתמשהעבודה‏ת-מסגרת

JUnit‏בשם‏מחלקה‏מספק‏TestCase‏.להלן‏55‏איורב‏שמוצגות‏כפי‏הבאות‏המתודות‏את‏בעיקר‏שחושפת‏

‏.Template Method‏בשם‏run‏למתודה‏קוראים‏אנו‏למה‏אסביר‏בהמשך

JUnit [Forg] של TestCase המחלקה את שמתאר מחלקות תרשים :11 איור

‏לקרוא‏נרצה‏הבדיקה‏בתחילת‏כלומר.‏הבודק‏הקוד‏של‏שלם‏חיים‏מחזור‏מספקת‏TestCase‏המחלקה

‏קוד‏להריץ‏נרצה‏ולבסוף‏runTest‏למתודה‏קריאה‏י"ע‏עצמה‏הבדיקה‏את‏להריץ‏נרצה‏ואז‏setup‏מתודהל

‏למתודות‏קוראת‏פשוט‏run‏המתודה.‏tearDown‏למתודה‏קריאה‏י"ע‏ההבדיק‏שלפני‏המצב‏את‏שמחזיר

‏.הנכון‏הסדר‏לפי‏האחרות

Page 96: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-16-

‏מהמחלקה‏שיורשת‏מחלקה‏בכות‏הוא‏אז‏שלו‏הקוד‏את‏שיבדוק‏קוד‏לכתוב‏רוצה‏התוכנה‏מפתח‏כאשר

TestCase‏לעיל‏.JUnit‏הבא‏המימוש‏את‏מספקת‏[Forg]‏מתודהל‏run.

public void run() { setUp(); runTest(); tearDown(); }

‏.TearDown-ו‏runTest,‏setup‏המתודות‏את‏TestCase-מ‏שיורשת‏שלו‏במחלקה‏לממש‏צריך‏התוכנה‏מפתח

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

‏ולקרוא‏אותה‏לרשת‏רק‏אלא‏run‏המתודה‏את‏שלו‏במחלקה‏לממש‏צריך‏לא‏חתפהמ,‏כלומר.‏מראש‏שהוכתב

.‏האחרות‏למתודות‏הקריאה‏לאופן‏תבנית‏מספקת‏היא‏כי‏Template Method‏נקראת‏run‏המתודה.‏לה

‏‏‏‏‏.התוכנה‏מפתח‏שיוצר‏Hot Spots‏מספקות‏TearDown-ו‏runTest,‏setup‏המתודות

‏.Hook Methods‏בשם‏גם‏נקראות‏אלה‏מתודות

‏.JUnit-ב‏למימוש‏בא‏שהוא‏כפי‏Template Method‏התכן‏דפוס‏של‏הרעיון‏זה

Page 97: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-12-

Java JDK-ב תכן דפוסי 8.1

‏.תכן‏דפוסיב‏Java JDK‏של‏לשימוש‏דוגמאות‏לושש‏כאן‏אתן

1) Java JDK התכן בדפוס משתמש Observer

‏התכן‏דפוס‏לש‏Subject‏המופשטת‏המחלקה‏בעצם‏היא‏Java.util.Observerable‏המופשטת‏המחלקה

Observer‏(‏התכן‏דפוס‏של‏לקותמח‏תרשים:‏73‏איורראה‏Observer‏‏[Sks])‏מנשקה‏Java.util.Observer‏‏

‏.Observer‏התכן‏דפוס‏של‏Observer‏המנשק‏ועלי‏מעיד‏וששמ‏כפי‏ואה

.Observer‏התכן‏דפוס‏על‏מבוסס‏Java‏של‏‏GUI Event Model‏‏–‏ה

‏Event Source-כ‏שישמש‏עצם‏י"ע‏מיוצג‏יהיה‏שלנו‏האפליקציה‏של‏הגראפי‏מנשקב‏"OK"‏כפתור‏למשל

.ConcreteSubject‏-כ‏מתפקד‏בעצם‏זה‏עצם‏אבל‏Java‏של‏בתיעוד

-כ‏מתפקד‏בעצם‏זה‏עצם‏אבל‏‏Java‏של‏בתיעוד‏Event Listener-כ‏שישמש‏עצםכ‏מיוצג‏יהיה‏גראפי‏חלון

ConcreteObserver‏מנשק‏לממש‏לויכ‏ראפיהג‏החלון.‏ActionListenerכ‏מתפקד‏שבעצם,‏-Observer‏כמו.‏

(‏Observer‏בעצם‏שזה)‏Event Listener-כ‏הגראפי‏החלון‏את‏לרשום‏נצטרך,‏Observer‏התכן‏דפוסב‏ראינוש

‏ורושם‏הכפתור‏עצם‏את‏יוצר‏הוא‏נוצר‏הגראפי‏החלון‏שכאשר‏נהוג,‏למשל.‏הכפתור‏את‏שמייצג‏עצםה‏תוךב

‏.okButton.addActionListener(this):‏‏‏כך‏הכפתור‏אצל‏עצמו‏את

Page 98: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-12-

1) Java JDK התכן בדפוס משתמש Iterator

‏Java JDK-ה‏שמספק‏Iterator‏במחלקה‏שימוש‏מציגה‏[Prac1]‏הבאה‏הפשוטה‏הדוגמא

‏.[Dof2]‏‏Iterator‏התכן‏דפוס‏של‏מחלקות‏תרשים:‏72‏איורראה‏)

-ב‏לשימוש‏מאוד‏שדומה,‏Generics-ב‏שימוש‏שזה‏"<Iterator<String"‏כתוב‏הבא‏בקוד‏:הערה

Templates‏בשפת‏C++למחרוזות‏באיטראטור‏להשתמש‏מבקשים‏אנו,‏כלומר.‏.

import java.util.*; public final class LoopStyles { public static void main( String... aArguments ) { List<String> flavours = new ArrayList<String>(); flavours.add("chocolate"); flavours.add("strawberry"); flavours.add("vanilla"); useWhileLoop( flavours ); useForLoop( flavours ); } private static void useWhileLoop( Collection<String> aFlavours ) { Iterator<String> flavoursIter = aFlavours.iterator(); while ( flavoursIter.hasNext() ){ System.out.println( flavoursIter.next() ); } } // Note that this for-loop does not use an integer index. private static void useForLoop( Collection<String> aFlavours ) { for ( Iterator<String> flavoursIter = aFlavours.iterator(); flavoursIter.hasNext(); ) { System.out.println( flavoursIter.next() ); } } }

‏מרומזת‏בצורה‏להשתמש‏התוכנה‏למפתחי‏יותר‏נוחה‏דרך‏מספקות‏Java‏של‏האחרונות‏הגרסאות

‏נקראת‏במהות‏שינוי‏ללא‏התוכנה‏מפתח‏לשימוש‏זאת‏נוחה‏דרך.‏Iterator‏התכן‏בדפוס‏בלבד

‏.[Prac2]‏קוד‏של‏דוגמא‏להלן(.‏Syntax Sugar)‏"סוכר‏סינטקטי"

List<String> trees = Arrays.asList("Maple", "Birch", "Poplar"); for (String tree: trees) {

log(tree); }

Page 99: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-11-

1) Java JDK ןהתכ בדפוס משתמש Facade

‏המחשב‏במדעי‏שני‏לתואר‏לימודיי‏במסגרת‏"Java‏בשפת‏מתקדם‏תכנות"‏הקורס‏את‏למדתי

‏.[Phd]‏הספר‏ליווה‏הזה‏הקורס‏את.‏הפתוחה‏באוניברסיטה

‏.Facade‏התכן‏בדפוס‏Java JDK-ה‏של‏לשימוש‏הבאה‏הדוגמא‏מובאת‏בספר

‏.Facade-כ‏משמשת‏java.net‏שנקרא‏package-ב‏שנמצאת‏URL‏המחלקה

‏המחשב‏של‏IP-ה‏כתובת‏על‏מידע‏שמכיל‏InetAddress‏מהמחלקה‏לעצם‏מצביע‏מכילה‏המחלקה

‏הוא‏שתפקידו‏URLStreamHandler‏מהמחלקה‏לעצם‏מצביע‏מכילה‏המחלקה,‏כן‏כמו.‏המארח

‏.המארח‏שבמחשב‏URL-ה‏לכתובת‏התקשורת‏את‏ליצור

‏שהלקוח‏מבלי‏זאת‏אבל‏לעיל‏שהוזכרו‏המחלקות‏של‏בשרות‏משתמש‏URL‏המחלקה‏של‏הלקוח

‏.URL‏העצם‏מאחורי‏תפקידם‏את‏מבצעים‏האלו‏המחלקות‏של‏העצמים‏כיצד‏יידע

Page 100: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-155-

C# SDK-ב תכן דפוסי 8.1

‏.‏תכן‏דפוסיב‏C# SDK‏של‏לשימוש‏דוגמא‏כאן‏אתן

C# SDK התכן בדפוס משתמש Strategy

‏של‏עיקרוןה‏את‏שמתאר‏מחלקות‏תרשים‏:70‏איורראה‏)‏Strategy‏התכן‏דפוסב‏משתמשת‏List‏‏המחלקה

‏יכול‏שהוא‏כך‏י"ע‏המיון‏אסטרטגיית‏את‏לבחור‏לקוחל‏גמישות‏נותנת‏היא‏(.[Mak]‏Strategy‏התכן‏דפוס

‏המחלקה‏של‏Sort‏המתודה‏את‏ציגשמ‏להלן‏הקוד‏בקטע‏לראות‏שניתן‏כפי‏IComparer‏מנשקה‏את‏לממש

List.‏

public void Sort(IComparer<T> comparer)

‏‏.[Dijk]‏קוד‏של‏דוגמא‏להלן

using System; using System.Collections.Generic; namespace IComparer { public class ReverseStringComparer : IComparer<string> {

public int Compare(string x, string y) { // We reverse the result by flipping the input parameters. return String.Compare(y,x);

} } class MainClass { public static void Main(string[] args) {

List<string> myList = new List<string>(); myList.Add("a"); myList.Add("b"); myList.Add("c"); ReverseStringComparer myComparer = new ReverseStringComparer(); myList.Sort(myComparer);

} } }

‏דפוס‏איך‏זה‏מחלקות‏לתרשים‏הוספתי‏להלן‏50‏איורב.‏Strategy‏התכן‏דפוס‏של‏המחלקות‏בתרשים‏ניזכר

.‏לעיל‏בקוד‏שמוזכרת‏מחלקה‏לכל‏קורא‏התכן

Page 101: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-151-

(.א.א —תוספות )Strategy [Ravi ] התכן בדפוס שימוש להדגמת מחלקות תרשים: 11 איור

Page 102: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-157-

בדפוסי תכן בתהליך פיתוח תוכנה שימושל דוגמאות 9

חומרה עם בשילוב תוכנה בדיקתל כנהתו 9.1

‏תוכנה‏של‏מודול‏מפתחים‏זאת‏שיטה‏לפי.‏[Acd]‏והחומרה‏התוכנה‏בתעשיית‏מאוד‏נפוצה‏פיתוח‏שיטת‏,להלן

‏שניהם‏את‏מפתחים‏אלא‏מוכן‏יהיה‏'ב‏שהמודול‏עד‏מחכים‏לא‏אבל,‏'ב‏במודול‏שמשתמש‏'א‏מודול‏לו‏שנקרא

‏שהם‏בגלל.‏חומרה‏של‏מודולים‏שהינם‏A, B, C‏‏במודולים‏שתמשמ‏'א‏מודולש‏נניח,‏דומה‏באופן.‏במקביל

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

‏עם‏יחד)‏החומרה‏את‏מפתחים‏הזה‏במקרה‏גם‏אז‏קיימת‏לא‏עדיין‏החומרה‏אם.‏Driver‏נקראת‏זאת‏תוכנה

‏.'א‏התוכנה‏מודול‏יתוחלפ‏במקביל(‏שלה‏Driver-ה

‏מחלקה.‏ClassUnderTest‏הזאת‏למחלקה‏נקרא.‏'א‏מודול‏של‏בתוכנה‏מסוימת‏מחלקה‏לבדוק‏נרצה,‏עתה

‏.להלן‏56‏איורב‏מובא‏זאת‏מחלקה‏לבדיקת‏נאיבי‏מימוש.‏החומרה‏של‏המודולים‏מול‏עובדת‏זאת

[Acd] חומרה של לבדיקות נאיבי מחלקות יםתרש: 16 איור

Page 103: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-153-

‏המחלקה‏את‏לבדוק‏שנתחיל‏לפני‏מוכנים‏יהיו‏Drivers-שה‏דורש‏לעיל‏שהובא‏הנאבי‏המימוש‏אבל

ClassUnderTest‏התכן‏בדפוס‏נשתמש,‏זאת‏לפתור‏בכדי.‏Strategyה‏בין‏מנשק‏הוספת‏י"ע‏-Drivers‏לבין‏

,‏מוכנים‏לא‏עוד‏Drivers-ה‏כאשר‏הפיתוח‏בזמן,‏נוכל‏כך.‏‏להלן‏52‏איורב‏לראות‏שניתן‏כפי,‏שלנו‏התוכנה

‏בשם‏זה‏לקוד‏נקרא)‏שונים‏בדיקה‏בתרחישי‏Drivers-ה‏פעולת‏את‏שלנו‏הבדיקה‏עבור‏שידמה‏קוד‏פתחל

Mock Driver.)‏

Strategy [Acd] התכן בדפוס תמששמש חומרה של לבדיקות מחלקות תרשים: 17 איור

Page 104: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-155-

פשוט מחשב משחק פיתוח 9.1

בשנות‏משחק‏זה‏פורסם‏‏.‏[Wick]‏Game of Life‏שנקרא‏ומוכר‏פשוט‏מחשב‏משחק‏של‏פיתוח‏להלן‏יוצג

.‏[Gab] שהמציא‏משחקים‏מתמטיים‏,(John H. Conway)‏ון‏קונווי'י‏מתמטקאי‏מפורסם‏בשם‏ג"השבעים‏ע

ואת‏"‏חיות"המשתמש‏מגדיר‏בתחילת‏המשחק‏את‏המשבצות‏ה.‏ת‏דו‏ממדיהמשחק‏מתנהל‏על‏לוח‏משבצו

‏:משבצות‏בהתאם‏לחוקים‏הבאים"‏מתות"או‏"‏נולדות"בכל‏תור‏.‏מספר‏התורות‏שהמחשב‏יריץ‏את‏המשחק

.משבצת‏נולדת‏מחדש‏כאשר‏יש‏לה‏בדיוק‏שלוש‏שכנות‏חיות .1

.משבצת‏שורדת‏כאשר‏יש‏לה‏שתיים‏או‏שלוש‏שכנות‏חיות‏ .7

‏.שכנות‏חיות‏שלושמות‏אם‏יש‏לה‏פחות‏משתי‏שכנות‏חיות‏או‏יותר‏ממשבצת‏ת .3

‏.שנקבעו‏החוקים‏פי‏על‏המשחק‏לוח‏עלגאומטריות‏מפתיעות‏‏צורות‏מתקבלות‏זאת‏בדרך

‏נכניס,‏למשל.‏[Wick]‏המשחק‏של‏האספקטים‏רוב‏את‏מחלקה‏לאותה‏נכניס‏המשחק‏של‏נאיבי‏תוכנה‏בעיצוב

‏המשחק‏חוקי‏לחישוב‏המשמשות‏המתודות‏וגם(‏Panel)‏המשחק‏לוח‏לציור‏המתודות‏את‏מחלקה‏לאותה

‏.להלן‏52‏איורב‏לראות‏שניתן‏כפי(.‏מסוים‏תא‏של‏השכנים‏מספר‏חישוב,‏למשל)

Game of Life [Wick] למשחק נאיבי עיצוב שמציג מחלקות תרשים: 18 איור

Page 105: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-150-

‏לממש‏אפשר‏זה‏ואת.‏המשחק‏חוקי‏את‏שמפעיל‏הקוד‏לבין‏המשחק‏לוח‏את‏שמציג‏הקוד‏בין‏דלהפרי‏נרצה

‏Observer‏התכן‏בדפוס‏חלקי‏באופן‏רק‏להשתמש‏בחרו‏[Wick]‏במאמר.‏Observer‏התכן‏בדפוס‏שימוש‏י"ע

‏מלא‏ששבשימו‏תהיתרונו‏על‏ויתור‏יש‏כך‏כדי‏שתוך,‏כמובן.‏האפשר‏ככל‏פשוט‏תוכנה‏עיצוב‏להציג‏מנת‏על

‏התכן‏בדפוס‏חלקי‏שימוש‏מציג‏להלן‏51‏איור.‏אותו‏הצגתי‏כאשר‏שהובאו‏כפי‏Observer‏התכן‏בדפוס

Observer‏התכן‏בדפוס‏מנשקים/מחלקות‏בארבע‏השימוש‏לעומת‏בלבד‏מחלקות‏בשתי‏שימוש‏שעושה‏

Observer‏.‏

Game of Life [Wick] - ל Observer התכן בדפוס חלקי שימוש שמציג קותמחל תרשים: 19 איור

Page 106: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-156-

יםנבחר עצמים מונחי( anti-patterns) נגד-דפוסי סקירת 11

עיצוב‏מ‏להימנע‏אותנו‏שמלמדים‏תכן‏דפוסי‏הינם‏(object oriented anti patterns)‏"מונחי‏עצמים‏נגד-דפוסי"

.שגוי‏מונחה‏עצמים

‏תכנות‏של‏נגד-דפוסי‏למשל,‏נגד-דפוסי‏של‏אחרות‏רבות‏טגוריותק‏שקיימות‏לציין‏כדאי

(programming anti-patterns)‏.הבאים‏הידועים‏הנושאים‏את‏השאר‏בין‏שכולל‏

‏מבני‏באופן‏לתכנת‏מהצורך‏שמתעלמת‏לשמצה‏ידועהה‏התכנות‏שיטת‏-‏ספגטי קוד

Goto‏כמו‏פקודות‏בעזרת‏ודבק‏רבות‏בהסתעפויות‏לשימוש‏שגורם‏דבר‏(structured programming)‏

<#line>‏את‏לאבד‏מתחילים‏המערכת‏התפתחות‏בהמשך‏כאשר‏גלובאליים‏נתונים‏במבני‏שימוש‏וכן‏

(.כתיבה/קריאה)‏לנתונים‏ומתי‏ניגש‏מי‏עלו‏התוכנית‏זרימת‏אופן‏על‏ההבנה

‏שניתן)‏בקוד‏שמוטמע‏הסבר‏באף‏שימוש‏ללא‏התוכנה‏קוד‏לתוך‏מספרים‏הכנסת‏-‏קסם מספרי

(.‏Java-ב‏final‏הגדרת‏י"ע‏או‏‏C-ב‏const‏הגדרת‏י"ע‏למשל‏הוסיפול

‏.עצמים‏מונחי‏נגד-דפוסי‏של‏בחרמ‏רהבקצ‏אציג‏הבאים‏בעמודים

Page 107: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-152-

11.1 Call Supper

‏המתודה‏את(‏overrides)‏ורסד‏האב‏ממחלקת‏שיורשת‏מחלקה‏של‏המתכנת,‏[7Mart]-ב‏שמתואר‏כפי

‏למתודה‏לקרוא‏כותב‏שהוא‏הראשונה‏בפקודה‏נדרש‏אהו,‏האב‏מחלקת‏של‏התיעוד‏י"עפ.‏האב‏במחלקת

‏או‏זאת‏למתודה‏לקרוא‏לשכוח‏עלול‏שהמתכנת‏מצב‏יוצר‏זה(.‏ושאותה‏הוא‏דורס)‏האב‏במחלקת‏שמומשה

‏המחלקות‏בין‏במערכת‏אחידות‏חוסר‏יצוריש‏דבר‏וזה‏לה‏לקרוא‏במקום‏אחרת‏בדרך‏אותה‏לממש‏להחליט

.להלן‏מובאת‏קוד‏של‏דוגמא‏.‏השונות‏היורשות

public class EventHandler ... //Override this method by first calling this overrided method. public void handle (BankingEvent e) {

housekeeping(e); } public class TransferEventHandler extends EventHandler... public void handle(BankingEvent e) {

super.handle(e); //The developer calls the overrided method. initiateTransfer(e);

} ‏

‏היורשת‏המחלקה‏של‏למתכנת‏שמאפשר‏Template Method‏התכן‏דפוסב‏שימוש‏י"ע‏זאת‏בעיה‏לפתור‏ניתן‏.לו‏תיקרא(‏התכן‏דפוס‏מתודת)‏האב‏מחלקת‏של‏המתודה‏כאשר,‏שלו‏מתודהה‏את‏לממש‏רק

‏בשפת‏קוד‏קטע‏להלן.‏hook method‏נקראת‏לממש‏יצטרך‏היורשת‏המחלקה‏של‏שהמתכנת‏מתודה‏אותהJava‏למתודה‏רק‏יקרא‏שלהלן‏הקוד‏כל‏של‏לקוחה,‏לבסוף‏‏.זאת‏שמתאר‏‏handle.‏

public class EventHandler ... public void handle (BankingEvent e) {

housekeeping(e); doHandle(e); //The super-class calls the hook method.

} protected void doHandle(BankingEvent e) { } public class TransferEventHandler extends EventHandler ... //The sub-class developer implements the hook method. protected void doHandle(BankingEvent e) {

initiateTransfer(e); }

11.1 Sequential Coupling

‏.מסויים‏בסדר‏להתבצע‏חייבות‏המחלקה‏של‏המתודות

‏.init, do, end:‏המתודות‏את‏מכילה‏המחלקה‏למשל

‏מהסדר‏תעלםלהו‏לשכוח‏נוטים‏הקוד‏חיתשמפ‏בגלל‏במחלקה‏שמשתמשת‏בתוכנה‏רבות‏לבעיות‏גורם‏זה‏דבר

‏.לעיל‏שהבאתי‏Call Super‏הנגד-בדפוס‏שהזכרתי‏דומה‏בעיה‏מזכיר‏זה.‏הנדרש

Page 108: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-152-

‏.הבא‏הצימוד‏את‏הבאתי‏צימודים‏של‏סוגים‏סקרתי‏כאשר

‏."אחר‏מודול‏פעולת‏על‏להשפעה‏בקרה‏נתוני‏שולח‏אחד‏מודול‏–(‏control coupling)‏בקרה‏צימוד"‏‏‏

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

‏.הקוד‏תיעוד

11.1 Base Bean

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

‏(.Java‏בשפת‏נרחב‏שימוש‏בהן‏שנעשה)‏כללי‏לשימוש‏מחלקות‏מתאר‏"Bean"‏השם‏.מחלקה‏מאותה

‏Composition‏להעדיף‏שיש,‏ספרות‏סקירת‏של‏בפרק‏שהזכרתי‏תוכנה‏לעיצוב‏הכלל‏על‏יםעובר‏אנו‏בכך

‏.בהורשה‏שימוש‏פני‏על‏והאצלה

11.1 God Object

‏הכלל‏על‏עוברים‏אנו,‏כאן‏(.ממוקדת‏להיות‏צריכה‏מחלקה)‏אחת‏במחלקה‏פונקציונאליות‏מידי‏יותר‏הכללת

-ב‏ואילו‏.מחלקה‏של‏לשינוי‏אחת‏סיבה‏רק‏להיות‏יכהצרש,‏‏ספרות‏סקירת‏של‏בפרק‏שהזכרתי‏תוכנה‏לעיצוב

God Object‏.המחלקה‏את‏לשנות‏רבות‏לסיבות‏גדול‏פוטנציאל‏יש‏

Page 109: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-151-

סיכום 11

שהרי‏דפוסי‏התכן‏,‏בתעשייה‏עובד‏עם‏דפוסי‏תכן‏גם‏אם‏זה‏לא‏בא‏מיוזמתומהנדס‏תוכנה‏,‏כפי‏שראינו

‏.עבודהה-ובמסגרות‏Javaמשולבים‏בשפות‏התוכנה‏המודרניות‏כמו‏שפת‏

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

‏‏.דפוסי‏תכן‏מונחי‏עצמים‏בתעשיית‏התכנה

תוכנה‏איכותי‏יותר‏ולתאר‏את‏כתוב‏קוד‏דפוסי‏תכן‏מונחי‏עצמים‏באים‏לעזור‏למהנדס‏התכנה‏לראינו‏כיצד‏

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

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

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

‏.ה‏שדפוסי‏התכן‏באים‏לעזור‏לנו‏לממש‏באופן‏מיטביהנדסת‏התכנ

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

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

דתי‏על‏טעות‏שמאוד‏נפוצה‏בתעשיית‏התוכנה‏בהצגת‏ומימוש‏דפוס‏התכן‏תוך‏כדי‏כתיבת‏עבודה‏זאת‏למ

“Factory Method”הצגתי‏את‏הנושא‏והרחבתי‏את‏ההסבר‏עליו‏כאשר‏הצגתי‏‏.כפי‏שהסברתי‏בגוף‏העבודה,‏

‏.את‏דפוס‏התכן‏הזה

לי‏‏עבודה‏זאת‏תרמה.‏שעבודה‏זאת‏תתרום‏לעוד‏הרבה‏אנשים‏שרוצים‏לפתח‏תוכנות‏איכותיותאני‏מקוה‏

באופן‏אישי‏לחדד‏את‏ההבנה‏שלי‏בנושא‏דפוסי‏תכן‏מונחי‏עצמים‏וזה‏כבר‏משפיע‏על‏אופן‏פיתוח‏התוכנה‏

‏.‏במקום‏עבודתי

ר‏דן‏אהרוני‏שעזר‏לי‏לתקן‏את‏התובנות‏שהגעתי‏אליהן‏בעבודה‏זאת‏וללטש‏את‏העבודה‏כך‏"תודה‏מיוחדת‏לד

.‏שתעמוד‏בסטנדרטים‏האקדמאים

Page 110: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-115-

אנגלית-עברית מונחים רשימת –' נספח א 12

Design (vs. planning)‏‏ןכ‏ת‏/‏‏עיצוב

Design patterns‏עיצוב‏תבניות/‏‏ןכ‏ת‏‏דפוסי

Anti patterns‏תבניות‏נגד/‏דפוסי‏נגד‏

ר קש ‏Context ה

‏תמיכה‏למשל‏–‏בעתיד‏להתרחב‏תוכנה‏של‏יכולת‏זמנית‏בו‏משתמשים‏ביותר

Scalability‏

Composition‏הרכבה

‏Object Oriented Design (OOD)‏עצמים‏מונחה‏ןכ‏ת‏/עיצוב

‏Inheritance הורשה

Delegation‏האצלה

Polymorphism‏תצורתיות‏רב

Encapsulation כימוס

Class מחלקה

Super class / Base class‏אב‏מחלקת

Framework‏עבודה-מסגרת

Object / Class instance‏מופע‏של‏מחלקה‏/‏‏עצם

Coupling‏צימוד

Use Case‏שימוש‏מקרה

Actor‏(שימוש‏מקרהב)‏שחקן

Sequence diagram‏(או‏תרשים‏רצף‏העבודה)‏רצף‏תרשים

Class diagram‏מחלקות‏תרשים

Interface‏(בשפה‏בטעות‏השתרשה‏ממשק‏המילה)‏מנשק

State diagram‏מצבים‏תרשים

Deployment diagram‏פריסה‏תרשים

Component diagram‏רכיבים‏תרשים

Activity diagram‏פעילות‏תרשים

Use case diagram‏שימוש‏מקרי‏תרשים

רשימת מונחים ותרגומם: 1 טבלה

Page 111: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-111-

Spring Framework-ה בעזרת DI עיקרון פי על עבודה –' ב נספח 13

Spring“-ה‏בעזרת‏Dependency Injection-ה‏עיקרון‏פי‏על‏עבודה‏שמתאר‏שלי‏מאמר‏מובא‏להלן

“Framework‏זאת‏מסכמת‏עבודה‏כתיבת‏כדי‏תוך‏אבל‏7552‏במאי‏עבודתי‏במקום‏שכתבתי‏מאמר‏זהו.‏

‏ארבעה‏עוד‏של‏משוב‏בזמנו‏עבר‏שהמאמר‏למרות)‏במאמר‏מדוייקים‏לא‏דברים‏ומצאתי‏יותר‏התעמקתי

‏(.‏ומוכשרים‏מקצועיים‏עמיתים

‏התכן‏בדפוס‏לשימוש‏דוגמאניתנת‏‏‏מאמרבFactory Methodב‏לשימוש‏דוגמא‏זאת‏בעצם‏אבל‏-

Static Method‏בתעשייה‏מאוד‏נפוצה‏טעות‏זאת.‏כלל‏תכן‏דפוס‏שאיננו‏[Fbs]‏שהרי.‏Factory

Method‏שיורשים‏למפתחים‏המימוש‏החלטת‏את‏לדחות‏בכדי‏הורשה‏של‏היררכיות‏בשתי‏משתמש‏

(.‏Product-ה‏את‏שיוצר)‏Creator-ו‏Product‏המחלקה‏את

‏כתבתיש‏כפי,‏יותר‏יש‏אבל‏תוכנה‏במערכת‏צימוד‏של‏סוגים‏שני‏שקיימים‏במאמר‏מספר‏מסופר

.זאת‏מסכמת‏בעבודה

‏.כלשונו‏המאמר‏מובא‏ועתה

CH Line Development:

Improve Code Modularity using Dependency Injection (DI) via Spring

Author: Eli Isaak, a developer in NDS Israel/CH Line

Reviewers: Four names that were omitted here for their privacy sake

Target Audience: OOP Developers (not only JAVA developers)

Date: 22 May, 2008

What is Spring?

Spring is a Java Framework Open Source library that was developed as a reaction to the difficulty and expense in deploying Java Enterprise Edition (JEE).

JEE is usually deployed using an Application Server which delivers common features needed in Java Enterprise applications (e.g., Persistence, Queues, Scheduler, Thread Pool, etc.). As a lightweight container, Spring enables using most of the JEE features without installing an application server or

Page 112: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-117-

dealing with JEE complexity. Each application remains a standalone application, and by using Spring it obtains the JEE features as needed.

For more information, see http://www.springframework.org/.

What Do We Gain By Using Spring?

One of the important advantages of using Spring is improved code modularity in order to reduce complexity of large systems. It allows for loose coupling of modules which keep dependencies to a minimum.

Coupling can appear either as data dependency (i.e., some code sections share the same data) or as flow dependency (i.e., one code section depends on another code section's execution). In this article, we will address flow dependency and how to reduce it.

Spring uses some OOP features more efficiently in order to reduce coupling. For this, Spring provides a simple feature called "Dependency Injection" (DI), which is an implementation of the "Inversion of Control" (IoC) design pattern (a note on DI vs. IoC will follow).

Read on to learn about DI (supported by Spring) and how it is used to improve our code.

Trying to Reduce Coupling

Before illustrating how we use Spring (and DI), let’s try to improve our code using the Factory pattern.

At first, we will use a simple code sample that doesn’t use the Factory pattern. Below is a sample application (using simple free style Java code) that creates and sends messages. It contains the following classes.

A MessageProvider class that creates a message.

A MessageSender class that sends a ready message provided to it.

A main class to run our application.

Class MessageProvider { public String getMessage() {

return "Hello"; } } Class MessageSender { public void sendMessage() {

//Do you see a problem here? See explanation below. MessageProvider messageProvider = new MessageProvider();

sendMessageUsingTcp( messageProvider.getMessage() ); } } Class Main() { public void main( ) {

//Do you see a problem here? See explanation below. MessageSender sender = new MessageSender();

sender.sendMessage(); } } Now, let’s improve this code using the Factory pattern. Class MessageSender { public void sendMessage() {

//Can you see a new problem with this fixed line? See explanation below. MessageProviderInterface messageProvider = MyFactory.getMessageProvider(); sendMessageUsingTcp( messageProvider.getMessage() );

}

Page 113: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-113-

} Class Main() {

public void main( ) { MessageSenderInterface sender = MyFactory.getSender(); sender.sendMessage();

} }

What Did We Improve?

The Factory methods (methods of the MyFactory class) decouple the implementation from our code (there is no need to initialize an object of a specific class). For example:

The Factory methods may read a configuration file (e.g., an XML file) that will guide them in creating mock objects instead of real objects.

Note on Mock objects

We use mock objects in order to test the application using a simulated environment (mock objects

simulate the real objects that our application depends on, e.g. they return the same dummy

response for any request ).

The objects may be initialized when these Factory methods are called or the objects may be brought from a pool of ready objects.

The objects implementation may be easily replaced – even at runtime.

However, we still need to further reduce coupling because the MessageSender class now depends on the

MyFactory Class. We want to reduce coupling to the minimum. It is preferable that the MessageSender

class doesn’t care about wiring the MessageProvider to itself.

Further Improving Our Code Using Spring

Let me now introduce a better, yet simpler (simplicity is great), MessageSender class:

Class MessageSender { MessageProviderInterface messageProvider = null; //We let another entity to inject this dependency for this class. public void setMessageProvider( MessageProviderInterface messageProvider ) { this.messageProvider = messageProvider; } public void sendMessage() { String message = this.messageProvider.getMessage(); //Using the injected object. sendMessageUsingTcp( message ); } }

Now we can integrate this simple MessageSender class into the Spring framework.

Page 114: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-115-

As a matter of fact, Spring supplies us with a Factory which has the following advantages:

You don’t have to write the Factory code yourself – Spring provides it for free.

As demonstrated in the above simple class, your application code (the business logic) doesn’t

depend on Spring API.

You don’t have to wire the dependencies into your class (in the sample code above, sender depends on messageProvider) – this is done in an XML file (as illustrated later on this article). This is called Dependency Injection (DI). DI is known a "Don’t call us, we will call you" approach, i.e., another entity injects to our class the dependencies that our class relies on.

Note on Dependency Injection (DI) vs. Inversion of Control (IoC)

In many articles and presentations, the difference between "Inversion of Control" (IoC) and "Dependency

Injection" (DI) is somehow obscured or doesn’t exist.

In short, IoC is a more generic design principle, while DI is implemented using IoC.

"Inversion of Control" (IoC) means that the application code is called by the framework instead of the

application calling the framework methods by itself.

On the other hand, "Dependency Injection" (DI) is a programming style where dependee classes are not

directly created by the dependent class but rather "injected" by a framework, thus executing IoC.

Compare the following sample code, which uses Spring, and the XML section below it to the previous

code samples:

main() { BeanFactory factory = new XmlBeanFactory ( new FileSystemResource("applicationContext.xml") ); MessageSenderInterface sender = (MessageSenderInterface) factory.getBean("msgSender"); // This "wiring" is now remarked out and moves into the bellow XML file: // sender.setMessageProvider(messageProvider); sender.sendMessage(); }

Below is a section from the applicationContext.xml file:

<bean id="msgSender" class="com.nds.MessageSender"> <property name="messageProvider" ref="messageProvider" />

</bean>

Page 115: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-110-

<bean id="messageProvider" class="com.nds.MessageProviderMock"/>

The object messageProvider is configured to be a mock object (its class is configured to be

MessageProviderMock). Note how this object is injected into the msgSender object and may be easily

changed by a simple update to this XML file. The msgSender object is not aware of how the

messageProvider was initialized and what its specific class is. These "wiring" decisions are left to the

integrator, after the development phase is completed.

How Do We Use Spring in Our Projects?

In the CH Line, we develop Spring-based Java projects. A good example of such a project is the successful S4 project which was entirely written in Java.

Each developer develops their part of the project and writes POJO (Plain Old Java Object) classes which

are unaware of the Spring framework (we write simple classes, much like the last MessageSender class

sample above). Each component is delivered to the development integrator as two Java Archive (JAR)

files – one JAR contains the implementation classes and the second JAR contains the interfaces to the

implementation classes.

Using Spring, the development integrator wires all the parts of the project to create a final product. This is

done by creating the above-mentioned applicationContext.xml file to "wire" the released classes.

At run-time, when the application is initialized, Spring injects the dependencies to each class by calling the

setter methods of the class (Spring does this by reading the XML file and using the Java programming

language feature called Reflection).

Summary

The advantages of using Spring in our development process are as follows:

Gain of efficiency in development time as we minimize the dependency between the different parts of the product\system during development.

Developers only get the interfaces to the other components of the project, and therefore changes to the implementation of one component won’t affect the other components.

We clearly separate the business logic (delivered in the JARs) from the technical (infrastructure) layer, added later by the integrator.

Page 116: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-116-

The integrator can add several common services (such as common system configuration and persistency) across the project by injecting them to each delivered JAR using DI.

Possibility to simply replace any implementation or infrastructure in the future without an overall recompilation.

Possibility to add more services to the application, such as changing the application to be a distributed application. This is transparent to the developers and to the business logic implementation.

Note that just like any other tool, Spring can be abused to add complexity to the application instead of

reducing it. Dependency injections can be easily abused and cause code to be hidden in large XML files

which will need to be debugged. Remember that you must maintain the code together with the XML files

in order to get the whole picture.

Bibliography

http://martinfowler.com/articles/injection.html

Page 117: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-112-

מקורות רשימת 14

[Abcm] Astrachan O., Berry G., Cox L., & Mitchener G. (1998), Design Patterns: An Essential Component of CS Curricula, Proceedings of the 29th SIGCSE technical symposium on Computer science education, 30:1, 153-160.

[Acd] Alphonce C., Caspersen M., & Decker A. (2007), Killer ‘Killer Examples’ for Design Patterns, Proceedings of the 38th SIGCSE technical symposium on Computer science education, 228-232.

[Ais] Alexander Christopher, S. Ishikawa and Murray Silverstein (1977). A Pattern Language:Towns, Buildings, Construction. Oxford University Press.

[Alex] Alexander Christopher (1979). A Timeless Way of Building, Oxford University Press.

[Alle] Allen H. (2011), Activity Diagram – Exception Handling. From: http://www.holub.com/goodies/uml. Retrievd: 9/2011.

[Baat] Baat L. (2007), Teaching the Linked List, Open University Seminar Work.

[Bean] NetBeans community, MVC Pattern. From: http://netbeans.org/kb/docs/javaee/ecommerce/design.html. Retrieved: 10/2011.

[Berg] Bergin, J. (2002), Fourteen Pedagogical patterns for teaching computer science. From: http://csis.pace.edu/~bergin/PedPat1.3.htm. Retrieved: 11/2011

[Bert] Bertrand M. (1998), Object Oriented Software Construction, Prentice Hall.

[Comm] Wikimedia commons. Composite & Chain of Responsibility patterns.‏ Retrieved: 9/2011‏ http://commons.wikimedia.org‏:From ‏‏‏

[Czbd] Cheng Z., Budgen D. (2012), What Do We Know about the Effectiveness of Software Design Patterns, IEEE Transactions on Software Engineering. 38:5, 1213-1231.[Dev] GPWiki, Observer Pattern. From: wiki.gamedev.net Retrieved: 7/2011.

[Devx1] Developer.com, Use Case Diagram Example. From: http://www.devx.com/architect/Article/45984/1954. Retrieved: 8/2011.

[Devx2] Developer.com. Spring Uses Singleton. From: http://www.devx.com/java/Article/21665/0/page/2 Retrieved: 11/2011.

[Dgd] Denzler C., Gruntz D. (2008), Design Patterns: Between Programming and Software Design, roceedings of the 30th international conference on Software engineering, 801-804.

[Dijk] Dijksterhuis M. (1/1/2009), C# Uses Strategy Pattern. From: http://www.dijksterhuis.org/sorting-generic-lists. Retrieved: 11/2011.

[Dof1] Data & Object Factory, Bridge Pattern. From: http://www.dofactory.com/Patterns/PatternBridge.aspx. Retrieved: 10/2011.

[Dof2] Data & Object Factory, Iterator Pattern. From: http://www.dofactory.com/Patterns/PatternIterator.aspx. Retrieved: 10/2011.

Page 118: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-112-

[Dof3] Data & Object Factory, Factory Method Pattern. From: http://www.dofactory.com/Patterns/PatternIterator.aspx. Retrieved: 10/2011.

[Dof4] Data & Object Factory, Adapter Pattern. From: http://www.dofactory.com/Patterns/PatternAdapter.aspx. Retrieved: 9/2011.

[Eli] Eli I. (2008). CH Line Development:Improve Code Modularity using Dependency Injection (DI) via Spring. From: NDS intranet. Retrieved: 11/2011.

[Fbs] Freeman E., Bates B., Sierra K. (2004), Head First Design Patterns, O' Reilly & Associates‏.

[Forg] Sourceforge.net, JUnit TestCase class. From: http://junit.sourceforge.net/doc/cookstour/cookstour.htm Retrieved: 11/2011.

[Gab] Gaby C. The Game of Life. From: http://www.snunit.k12.il/heb_journals/kimat2000/1308.html. Retrieved: 3/2012.

[Gina] Ginat D. (2003), The greedy trap and learning from mistakes, Proceedings of the 34th SIGCSE technical symposium on Computer science education, 11-15.

[Gof] Gof (Gang Of Four): Gamma E., Helm R., Johnson R., Vlissides J. (1994), Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley.

[Hagg] Haggar P. (1/5/2002), Singleton Pattern. From: http://www.ibm.com/developerworks/java/library/j-dcl/index.html. Retrieved: 10/2011.

[Huy] Huy T. (5/2011). Proxy Pattern. From: http://tndhuy.wordpress.com/page/2. Retrieved: 11/2011.

[Info] InformIT. Sequence Diagram. From: http://www.informit.com/articles. Retrieved: 8/2011.

[Jam] James S. (2010), Design Patterns Uncovered: The Factory Method Pattern. From: http://java.dzone.com/articles/design-patterns-factory. Retrieved: 3/2012.

[John] Johnson R. (2005), Spring Uses Factory Method Pattern. From: http://www.theserverside.com/news/1364527/Introduction-to-the-Spring- Framework.‏Retieved: 8/2011.

[Jose] Joseph S. (1999), Sams Teach Yourself UML, Sams Publishing‏.

[Knob] Knobel, E. (2004), Coupling. From:http://study.eitan.ac.il/sites/index.php?portlet_id=110513&page_id=27. Retrieved: 9/2011.

[Koch] Kochhar V. (2004), Singleton Pattern. From: http://www.oaklib.org/docs/oak/singleton.html‏Retrieved: 10/2011.

[Lisk] Barbara H. Liskov, Jeannette M. Wing (1999),"Behavioral Subtyping Using Invariants and Constraints". From: http://reports-archive.adm.cs.cmu.edu/anon/1999/CMU-CS-99-156.ps. Retrieved: 10/2011.

[Mak1] SourceMaking, Strategy Pattern. From: http://sourcemaking.com/design_patterns/strategy. Retrieved: 9/2011.

[Mak2] SourceMaking, Strategy Pattern. From: http://sourcemaking.com/design_patterns/singleton. Retrieved: 10/2011.

Page 119: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-111-

[Mak3] SourceMaking, Singleton pattern. http://sourcemaking.com/design_patterns/singleton. Retrieved: 11/2011.

[Mart1] Fowler M. (2004), Dependency Injection Pattern.‏ From:‏http://martinfowler.com/articles/injection.html. Retrieved: 8/2011.

[Mart2] Fowler M. (2005), Call Super Anti Pattern. From: http://www.martinfowler.com/bliki/CallSuper.html Retrived: 11/2005.

[Mgj] Marco A.G., Guillermo J.D., Javier A. (2009), Teaching Design Patterns Using a Family of Games, ITiCSE ‘09, 41:3, 268-272.

[Mha] Muller, O., Haberman, B., Averbuch, H. (2004), (An almost) pedagogical pattern for pattern-based problem solving instruction, Proceedings of ITiCSE'04, 36:3, 102-106.

[Mill] Miller R. (2010), Deployment Diagram Example. From: http://edn.embarcadero.com/article/31863 Retrieved: 8/2011.

[Mull] Muller, O. (2005), Pattern oriented instruction and the enhancement of analogical reasoning , Proceedings of the first international workshop on Computing education research, 57-67.

[Njga] Neelam S., Jason O. H., Guoqiang S., Adem Delibas. (2008), Patterns: from system design to software testing, Innovations System Software Eng., 4:71–85

[Part] Partha K. (2004), Software Architecture Design Patterns in Java, CRC Press LLC.

[Pete] Peter L. (2007), Relations Between Classes (9/2011). From: http://www.peter-lo.com/Teaching/M8748/ Relationships Between Classes.pdf. Retrieved: 9/2011.

[Phd] Paul Deitel, Harvey Deitel (2002), Java How to Program – Introducing OOD With The ‏‏‏ UML and Design Patterns - Fourth Edition, Prentice Hall.

[Pilo] Pilone D. (2005), UML 2.0 in a Nutshell, O’REILLY

[Ppp] Pecinovsk R., Pavlkov J., Pavlek L. (2006), Let’s Modify the Objects-First Approach into Design-Patterns-First, ACM SIGCSE Bulletin. 38:3, 188-192.

[Prac1] Hirondelle Systems. Java Uses Iterator. From: http://www.javapractices.com/topic/TopicAction.do?Id=88. Retrieved: 11/2011.

[Prac2] Hirondelle Systems. Java Uses Iterator. From: http://www.javapractices.com/topic/TopicAction.do?Id=125. Retrieved: 11/2011.

[Puff] Tecademy. Use Case Diagram Example. From: http://www.puffinonline.com/Tecademy/umlqrg.pdf. Retrieved: 8/2011.

[Ravi] Ravish S. (2010), Strategy Pattern. From: http://ravish9507.blogspot.com/2010/05/design-pattern.html. Retrieved: 9/2011.

[Robe] Robert C. M. (2004) Strategy Pattern. From: http://today.java.net/pub/a/today/2004/10/29/patterns.html. Retrieved: 9/2011

[Sagg] Saggu J. (2011), Class Diagram Example. From: http://www.techpost.info/2011/01/uml-quick-reference-guide.html Retrieved: 8/2011.

[Sbhs] Shikha B., Harshpreet S. (2012), ANALYZING AND IMPROVING WEB APPLICATION QUALITY USING DESIGN PATTERNS, International Journal of Computers & Technology. 2:2, 112-116

Page 120: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-175-

[SID] Shlezinger G., Iris R. B., Dov D. (2010), Modeling design patterns for semi-automatic reuse in system design., Journal of Database Management 21.1: 29+.

[Sks] Sunil K.S. (2004), Observer Pattern (8/2011). From: http://codeproject.com. Retrieved: 10/2011.

[Spri] SpringSource. Spring Framework. From: http://www.springsource.org. Retrieved: 8/2011.

[Tome] Dr. Tomer A. (2011), Software Engineering. From: http://webcourse.cs.technion.ac.il/236321/Spring2011/ho/WCFiles/ SWE-2011-02-development-process.pdf. Retrieved: 11/2011.

[Tony] Tony S. (2001). Factory Method. From: http://www.javaworld.com/javaworld/javaqa/2001-05/02-qa-0511-factory.html. Retrieved: 3/2012.

[Vetr] Vetro S. (2006), Observer Pattern. From: http://bp.blogspot.com. Retrieved: 8/2011.

[Weis] Weiss S. (2005), Teaching Design Patterns By Stealth, Proceedings of the 36th SIGCSE technical symposium on Computer science education, 492-444.

[Wick] Wick M. R. (2005), Teaching Design Patterns in CS1: a Closed Laboratory Sequence based on the Game of Life, Proceedings of the 36th SIGCSE technical symposium on computer science education, 487-491.

[Zer] Zhu G.K., Edward S., Rogers Sr. (2012), Applying Software Design Patterns in Electromagnetic Field Simulators, Antennas and Propagation Magazine, IEEE. 54:2, 174-179

Page 121: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-171-

Abstract

A design pattern can be none-formally described as a general pattern which is used to solve a

frequent problem in software design. The same design pattern can be used to design different

software codes in many applications.

This work focuses on Object Oriented Design Patterns.

Object Oriented Design patterns are frequently used in the software industry. They are

embedded in software frameworks and in modern software languages such as Java.

This work reviews why and how design patterns became important in the software industry.

We will see how we should learn and correctly work with design patterns and how design

patterns help us using software engineering principles such as:

Single Responsibility Principle (SRP) ‏, Open Close Principle (OCP), Inversion of Control

(IoC) ‏,Liskov Substitustion Principle (LSP), using composition and deligation instead of

inheritance, design to an interface and not to an implementation.

This work also shortly review close topics such as:

Object Oriented Anti Patterns which are patterns that teach us wrong ways to design our

Object Oriented code.

Architectural Software Design Patterns such as the Model-View-Controller (MVC) which

are used by software architects to design complex software systems.

Page 122: Early Sketch Processing with Application in Online Sketch … Patterns.pdf · .)object oriented design patterns) " £¨ ¬ £¡ª ¨ £« ® " ¬ -´ ² « ¨£³ ³¬ª ³¨ , ª¥

-177-

The Open University of Israel

Department of Mathematics and Computer Science

Design Patterns in Software Engineering:

From Theory to Production‏

Final Paper submitted as partial fulfillment of the requirements

towards an M.Sc. degree in Computer Science

The Open University of Israel

Computer Science Division

By

Eli Isaak

ID: 029475175

Email: [email protected]

Prepared under the supervision of Dr. Dan Aharoni

Approved proposal prepared under the supervision of Dr. Tzipi Erlich

January 2013


Recommended