1 / 24

SCE - 6b תבניות תיכון (המשך) (Design Patterns) דר’ יעקב אקסמן

SCE - 6b תבניות תיכון (המשך) (Design Patterns) דר’ יעקב אקסמן. הנדסת מרכיבי תוכנה. דרישות תוכנה. דגם הייררכי. דגם פיזיקלי. מרכיבים. קוד להרצה = exe. מדידות. תבניות תיכון ספרות. [GoF- 1995] E. Gamma, R. Helm, R. Johnson & J. Vlissides

mendel
Download Presentation

SCE - 6b תבניות תיכון (המשך) (Design Patterns) דר’ יעקב אקסמן

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SCE-6b תבניות תיכון (המשך) (Design Patterns) דר’ יעקב אקסמן

  2. הנדסת מרכיבי תוכנה דרישות תוכנה דגםהייררכי דגםפיזיקלי מרכיבים קוד להרצה = exe מדידות

  3. תבניות תיכון ספרות [GoF- 1995] E. Gamma, R. Helm, R. Johnson & J. Vlissides “Design Patterns – Elements of Reusable Object- Oriented Software” Addison-Wesley – Boston, MA - 1995.

  4. תבניות תיכון דוגמאות • תבניות GoF – מבנה (Structural) • Composite • Flyweight

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

  6. תבניות תיכון מבנה רקורסיבי Composite aComposite aComposite aLeaf aLeaf aLeaf aLeaf aLeaf aLeaf

  7. תבניות תיכון דוגמת Composite <<Abstract>> Graphic 0..* 0..* + draw () + add (g : Graphic) + remove (g : Graphic) + getChild (int) Picture draw (g : Graphic) Rectangle Line Text add (g : Graphic) remove (g : Graphic) getChild () draw(){ for all g in graphics g.draw() }

  8. תבניות תיכון תרשים מחלקות Composite <<Abstract>> Component Client uses children + operation () 0..* 0..* + add () + remove () + getChildren () Composite Leaf + operation () + operation () + add () + remove () + getChildren () operation(){ for all g in graphics g.operation() }

  9. תבניות תיכון בעיות Composite • אפשרי – לקרא לשיטה שמתאימה לעצם פשוט • ע"י תרכובת (composite). • למשל: • Composite comps1; • comps1.repaint; • בעייתי – לקרא לשיטה שמתאימה לתרכובת (composite) ע"י עצם פשוט. • למשל: • LeafObject Lobj1; • Lobj1.addComponent;

  10. תבניות תיכון פתרון בעיית Composite • פתרון אפשרי – בדיקה לפני קריאת השיטה: • If (component.isComposite( ) ) • {… component.addComponent(someCompThatCouldBeComposite); • … • }

  11. תבניות תיכון דוגמה שניה • "נוצות" (Flyweight) • מטרה: • תמיכה במספרים גדולים מאד • של עצמים קטנטנים • "נוצה" (flyweight), הוא עצם משותף • (shared object) בשימוש בהקשרים שונים • שלא ניתן להבדיל מעצם רגיל.

  12. תבניות תיכון דוגמת Flyweight • לצייר 1000 עיגולים • בשישה צבעים

  13. תבניות תיכון דוגמת Flyweight בעייה: for(int i=0; i < NUMBER_OF_CIRCLES; ++i) { Circle circle = new Circle(getRandomColor( ) ); circle.draw(g, getRandomX( ), getRandomY( ), getRandomR( ) );//1000 objects created. }

  14. תבניות תיכון דוגמת Flyweight פתרון: class CircleFactory { private static final HashMap circleByColor = new HashMap(); public static Circle getCircle(Color color) { Circle circle = (Circle)circleByColor.get(color); if(circle == null) { circle = new Circle(color); circleByColor.put(color, circle); System.out.println("Creating " + color + " circle"); } return circle; } }

  15. תבניות תיכון דוגמת Flyweight פתרון: for(int i=0; i < NUMBER_OF_CIRCLES; ++i) { Circle circle = CircleFactory.getCircle(getRandomColor( ) ); circle.draw(g, getRandomX( ), getRandomY( ),getRandomR( )); //Since we have 6 different colors, // we have only 6 objects created. }

  16. תבניות תיכון דוגמת Flyweight

  17. תבניות תיכון דוגמת Flyweight

  18. תבניות תיכון סיווג אחר של GoF

  19. תבניות תיכון רשימת - GoF Creational Patterns

  20. תבניות תיכון רשימת - GoF Structural Patterns

  21. תבניות תיכון רשימת - GoF Behavioral Patterns

  22. תבניות תיכון רשימת - GoF Behavioral Patterns "הסתגלות"

  23. תבניות תיכון תכנוות • גרעיניות – • תבניות קטנות יותר, • תבניות עשויות מתבניות • יעודיות – תבניות J2EE

More Related