Iterator design Pattern

Wednesday, May 1, 2013

  ה"איטרטור" נשמע לנו קצת כמו "איטרציות" וזה מזכיר לנו סיבובים בלולאה.. עפ"י המילון העברי איטרציה בשפה תקינה ניתן לומר "חזרור".. וואלה !! בכל מקרה מטרת התבנית כפי שהוצגה בתקופה הפרהיסטורית, היא לאפשר גישה לאוספים (רשימות, מערכים, עצים)  של אובייקטים מבלי לחשוף את המבנה הפנימי או את כל מה שהאובייקט מכיל, למעשה שימוש ב"איטרטור" הוא חלק מתהליך האינקפסולציה. ממשק איטרציות אינו תלוי במימוש כזה או אחר, אלא מהווה דרך משותפת למעבר על רשימות בצורה "מוגנת"בדוט נט לרוב ניתן  לומר שIteraror Pattern == IEnumerable  וזה קיים גם בסביבות פיתוח מקבילות בJava, C++. כשאני מגדיר על אובייקט מסויים שהוא מימוש של IEnumerable זה נותן לי את היכולת לעבור עליו באיטרציות של ForEach. היחודיות של ForEach...

Object Oriented Architecture מבוא לתכנון מונחה עצמים

Friday, April 5, 2013

  מהו  Object Oriented ? כיצד נתכנן מערכת בחשיבה מונחית עצמים? שאלת השאלות איפה עוצרים כשמחפשים ישויות להגדרה במערכת שלנו? נענה אחת אחת. אבל תחילה מבוא. התבקשתי לאחרונה למסור הרצאה קטנה על מבוא לobject oriented והעליתי לעצמי נקודות בכתב כדי לסדר את המחשבה. הנה התוצאה בקיצור נמרץ. תרחיש א' (דמיוני בהחלט): אתה נכנס למסעדה, ומבקש "תן לי מנה.." איזה? שואל המלצר.. "לא חשוב" אתה עונה.. "העיקר מנה.." המלצר מביא לך מנה צמחונית על בסיס עולש, פטריות יער ונבטים אורגניים.. ואתה התכוונת לסטייק בפיתה..  למה זה קרה? כי במקום להתמש בשיטה הקיימת שמקטלגת מנות לתפריטים בחרת להפר את הסדר העולמי.   תרחיש ב' (דמיוני בהחלט): אתה נכנס למוסך, "יש בעיה" אתה אומר.. "מה הבעיה?" שואל המוסכניק? "תשמע.. נפגשתי אתמול עם ע' ובדרך חזור היו פקקים,...

Observer Pattern

Thursday, November 29, 2012

Observer Pattern  תבנית הobserver היא אחת הנפוצות ביותר מכל תבניות העיצוב בכלל. ובתכנות מונחה עצמים בפרט. עצמים=קלאסים, נרצה לדעת כשאובייקט משנה סטייט ולהגיב בהתאם. מה המוטיבציה? כהסבר ראשוני נניח שאובייקט A  רוצה לדעת כשאובייקט B משנה סטטוס, אבל לA  אין גישה לB !! ז"א A הוא אובייקט עצמאי , וגם B.. אני צריך דרך ליידע את A  שנעשה שינוי אצל B.. ואני לא מתכוון להריץ טיימר שבכל חלקיק שניה יבדוק מה מצבם של האובייקטים במערכת, (תנסו, תספרו אח"כ איך היה..) כאן בדיוק נכנסת המחלקה ה"אובזרברית" שתפקידה לספר לכולם שB   עבר שינוי. ואובייקט A יהיה רשום אצל B  ויבקש ממנו, "B  יקירי, אנא עדכן אותי אם משתנה X...
12 תגובות

State Pattern

Monday, November 12, 2012

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

Facade

Wednesday, October 31, 2012

  תבנית הFacade מגדירה ממשק חיצוני שמאגד בתוכו כמה תתי אובייקטים שאני לא רוצה להסתבך ולעבוד מול כל אחד בנפרד אלא יותר נוח לי לעבוד  מול מעטפת חיצונית . התבנית מזכירה מעט את מבנה הפרוקסי , אולם בפרוקסי אני בעיקר משיקולי אבטחה עוטף יישות  במעטפת חיצונית כדי לא לאפשר גישה ישירה , ואילו Facade נועד להקל על גישה לאובייקטים מרובים דרך ממשק אחיד. הFacade מחזיק אצלו את כל האובייקטים שאליהם הוא אמור לפנות, וכשאני יכתוב Façade f = new Façade(); אני למעשה מרים את כל האובייקטים שלו לאוויר. למה זה טוב? ובכן ,  נניח שיש לי שישה אובייקטים שתלויים זה בזה,  וכל מה שאני רוצה זה להפעיל את האחרון בשרשרת , משיקולי תכנון הם לא מכירים...

בתכנות מונחה עצמים(Design Patterns) מבוא לתבניות עיצוב

Monday, September 3, 2012

  מבוא לDesign Patterns (תבניות עיצוב) בתכנות מונחה עצמים  סטודנטים ואנשי תוכנה מתחילים נתקלים פעמים רבות במושג:  Design patterns ולא ממש יודעים איך לאכול אותו.סביר להניח שכולנו שמענו על סינגל טון (singleton pattern) אבל משם ואילך העסק נהיה יותר ויותר קודר. אז מה זה בדיוק?תבנית עיצוב כהגדרה זה פתרון מוכח לבעיה ידועה שכנראה חוזרת על עצמה והפתרון שנמצא ניתן לשימוש חוזר בבעיות דומות.בוא נניח שהבעיה היא חציית נהר בעזרת סירה במהירות מקסימלית. עכשיו בוא נניח  שאדון  X מהעיר דלהי פיתח שיטה לחציית נהר הגנגס בהינף משוט אחד, האם לא יוכל אדון Y מלונדון לחצות את התמזה באותה שיטה?ומה לגבי Z על נהר הירקון ?? אם נמצא דרך שבה...