1 / 135

עיצוב תוכנה מבוסס עצמים סדנאות תשס"ח-תשס"ט

עיצוב תוכנה מבוסס עצמים סדנאות תשס"ח-תשס"ט. פתיחת חלק השני של השתלמות 10.09.08 מרצים ד"ר יבגני קנל אניטה קספו. תכונית ההשתלמות. חלק א' – 28 שעות מ- 06.02.2008 עד 30.04.2008 חלק ב' – 28 שעות מ- 10.09.08 עד 26.11.08 אתר מלווה קורס

hue
Download Presentation

עיצוב תוכנה מבוסס עצמים סדנאות תשס"ח-תשס"ט

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. עיצוב תוכנה מבוסס עצמים סדנאות תשס"ח-תשס"ט פתיחת חלק השני של השתלמות 10.09.08 מרצים ד"ר יבגני קנל אניטה קספו עיצוב תוכנה מבוסס עצמים באר-שבע 2008

  2. תכונית ההשתלמות • חלק א' – 28 שעות • מ- 06.02.2008 עד 30.04.2008 • חלק ב' – 28 שעות • מ- 10.09.08 עד 26.11.08 • אתר מלווה קורס http://www.orianit.edu-negev.gov.il/anitaksp נא להיכנס להירשם באתר - הדיונים בפורום סגורים לאורחים  סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  3. תכונית ההשתלמות • ההשתלמות מוגדרת – ל-56 שעות עם ציון • דרישות ההשתלמות: • שיעורי בית , שיוכנסו לאתר המלווה לאחר כל מפגש – ישלחו אל יבגני במייל. • בעיה מלווה יבוצעו בזוגות ויוצגו במחצית השנייה של ההשתלמות. • כל משתלמם יכתוב שאלה חדשה לכל פרק. ובעזרת כל המשתתפים יבנה מאגר שאלות. סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  4. לוח זמנים • 10.09.08 – חזרה לכיתה. מיסודות - לעיצוב. המלצות לתכנון. מבוא, פרקים 1,2,3. • 17.09.08 – רקורסיה (פרק 4), יעילות (פרק 5) • 24.09.08 – עץ בינארי (פרק 10) • 22.10.08 – מפה – סוג חדש של אוסף נתונים. • 29.10.08 – • 12.11.08 – • 26.11.08 – סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  5. לוח הזמנים של המפגשים • 5:45 – 4:30 – הרצאה פרונטאלית תיאוריה • 6:30 – 5:45 – תרגול ישוום התיאוריה • 6:45 – 6:30 – הפסקה • 7:45 – 6:45 – הרצאה ו/או דיון סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  6. מה לא לימדנו? (כלל או מספיק...) סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  7. מה נצטרך ללמד? האם נספיק? סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  8. מה נצטרך ללמד? האם נספיק? (המשך) מבחנים מתכונות טיולים, פעילויות... מחלות, שביתות... סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  9. לוח זמנים שנתי תשס"ט המלצה סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  10. חזרה והשלמה • רענון אלגוריתמים וטכניקות שונות • יישור קו ויצירת שפה משותפת • דגש על לימוד עצמי – API/MSDN • בניית מחלקות שרות – עבודה עם מספר קבצים בו-זמנית, הכנה לעצמים. סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  11. מחלקות מוכנות • JavaAPI – אוסף הממשקים של המחלקות המוכנות לשימוש • דוגמה: המחלקה String • לרוב יש צורך לייבא את המחלקות המוכנות באמצעות הפקודה import • קיימת ספרייה unit4 המכילה מחלקות עזר לצורך יחידת לימוד זו. סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  12. מחלקות מוכנות • MSDN – אוסף הממשקים של המחלקות המוכנות לשימוש • דוגמה: המחלקה string • לרוב יש צורך לייבא את המחלקות המוכנות באמצעות הפקודה using • קיימת ספרייה Unit4 המכילה מחלקות עזר לצורך יחידת לימוד זו סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  13. חזרה והשלמה • מערך חד-מימדי • מחרוזת • צב גראפי • דלי גראפי סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

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

  15. יסודות 2 – תוכנית לימודים חזרה והשלמה -מחרוזת • פרק 3: תווים ומחרוזות6) שעות ( • התאמה ל-C# וג`אווה • מטרת הפרק • להקנותכלים לפתרון בעיות לעיבוד טקסט. • פירוט התכנים • מחרוזות; יחס סדר מילוני; ייצוג מחרוזות כמערכי תווים; בניית אלגוריתמיםעבור מחרוזות. • שימוש בפעולות פשוטות של המחלקה : String • אורך מחרוזת, השוואת מחרוזות, העתקת מחרוזות, מחיקת מחרוזות, שרשור מחרוזות, מציאת תת-מחרוזת. סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  16. מחרוזות • הטיפוס String הוא טיפוס בנוי בשפה. המחלקה מוגדרת כ-final זאת אומרת שאי-אפשר לבנות מחלקה ש"יורשת" מ-String סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  17. מה שזה לא !! • הטיפוס String מוגדר מראש כטיפוס לכל דבר. • עצם מטיפוס String אינו מערך של תווים!! (ניתן להמיר מן האחד לשני.) • עצם מטיפוס String הוא קבוע שאי-אפשר לשנות על ידי פנייה לתווים בודדים!! • עיבוד מחרוזות מתבצע ע"י פירוק לתת-מחרוזות והרכבה בשרשור. • קיים טיפוס StringBuffer הדומה למחרוזות המוכרות מ-Pascal ו-C. לא נהוג להשתמש בו. סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  18. הצהרה ויצירה • הצהרה על משתנה מטיפוס String String s; • אתחול s=“Hello”; • הצהרה ואתחול String s=“Hello”; סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  19. מחרוזת – פעולות בסיסיות כל פלט ב-JAVA הוא למעשה פלט של מחרוזת אחת! • פלט System.out.println(s); • הצבה String s1=“aa”; String s2=s1; • שרשור String s3=s1+s2; s1+=s2; String s1="abc"; String s2=s1; String s3="ABC"; s1+=s3; System.out.println(s1); System.out.println(s2); System.out.println(s3); abcABC abc ABC סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  20. כל פלט ב-JAVA הוא למעשה פלט של מחרוזת אחת! שרשור • פעולת השרשור מוגדרת על ידי האופרטור +. • שרשור מייצר עצם חדש: s = s + “***” + t + “\n”; • כל ערךעובר המרה אוטומטית למחרוזת כאשר +מופיע: int count = …; System.out.println(“Count is = “ + count); four=22 String s=“four=“+2+2; סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  21. שימוש בקלט/פלט סטנדרטי אין קלט מסוים לתווים!char c=input.next().charAt(0); סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  22. ערכים של משתנה מהטיפוס String הם עצמים. • בשפה אף מוגדרות פעולות בונות עבור עצמים מן הטיפוס String, למרות שלא חייבים להשתמש בהן. סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  23. שיטות שימושיות ליצירת מחרוזת • יצירת מחרוזת ריקה String s=new String(); • יצירת מחרוזת זהה למחרוזת אחרת s1 String s=new String(s1); • יצירת מחרוזת ממערך תווים String s=new String(charArr); • יצירת מחרוזת מחלק של מערך תווים String s=new String(charArr, 3, 5); סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  24. ניהול הזיכרון עבור משתנים וקבועים String s0; s0="aaa"; String s1="aaa"; if(s1==s0)System.out.println("yes"); else System.out.println("no"); String s2="aaa"; if(s1==s2)System.out.println("yes"); else System.out.println("no"); String s3=new String(s1); if(s1==s3)System.out.println("yes"); else System.out.println("no"); String s4=in.nextLine(); if(s1==s4)System.out.println("yes"); else System.out.println("no"); yes yes no “aaa” no סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  25. s1 s3 s4 s2 “aaa” ניהול הזיכרון עבור משתנים וקבועים String s0; s0="aaa"; String s1="aaa"; if(s1==s0)System.out.println("yes"); else System.out.println("no"); String s2="aaa"; if(s1==s2)System.out.println("yes"); else System.out.println("no"); String s3=new String(s1); if(s1==s3)System.out.println("yes"); else System.out.println("no"); String s4=in.nextLine(); if(s1==s4)System.out.println("yes"); else System.out.println("no"); s0 yes “aaa” yes no “aaa” “aaa” no סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  26. מחרוזות על עצמים מן הטיפוס String ניתן להפעיל פעולות המוגדרות בטיפוס.למשל: indexOf, substring, length, replace… סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  27. מחרוזות ומה עם פעולות? • מאחר ומחרוזות הן עצמים, כאשר מפעילים עליהן פעולות המוגדרות בטיפוס String, משתמשים בתחביר הפעלת פעולה על עצם. כלומר:על העצם ... הפעל את הפעולה ... רשימת פרמטרים ) ( שם העצם . שם הפעולה String s1 = “abcde”; int p = s1.indexOf(‘d’); סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  28. הפעולה int length() • לכל מחרוזת קיימת פעולה length(), המחזירה את האורך של המחרוזת. String s=“ABCD”; System.out.println(s.length()); 4 String s=“”; System.out.println(s.length()); 0 String s; System.out.println(s.length()); Error: variable s might not have been initialized String s=null; System.out.println(s.length()); NullPointerException סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  29. מחרוזת לעומת מערך (length) • שים לב!! • מחרוזת היא עצם שעליה מוגדרת פעולה ללא פרמטרים length(). if (s.length() > 0) …. • לכל מערך קיימת תכונהlength. int[] a = new int[10]; for (int i = 0; i < a.length; i++) סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  30. גישה לתווים בודדים char charAt(int index) • ניתן לקרוא תווים בודדים לפי מיקומם for (int i = 0; i < s.length(); i++) if (s.charAt(i) == ‘*’) count++; מספור מתחיל מ-0! String s=“aaa”; System.out.println(s.charAt(s.length())); StringIndexOutOfBoundsException: String index out of range: 3 • אך אי-אפשר לשנות אותם: String s="aaa"; s.charAt(1)='b'; Error: unexpected type required: variable found : value סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  31. שליפת קבוצת תווים • void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) String s="We love Java"; int start=3, end=7; char[] dst=new char[end-start]; s.getChars(start,end,dst,0); for(int i=0;i<dst.length;i++) System.out.println(dst[i]); l o v e String s="We love Java"; char[] ch=s.toCharArray(); • char[] toCharArray() s.length() == ch.length סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  32. ממערך תווים– למחרוזת • public staticString valueOf(char[] data, int start, int count) • public staticString valueOf(char[] data) char [] a={'W','e',' ','l','o','v','e',' ','J','a','v','a'}; String sd=String.valueOf(a); System.out.println(sd); We love Java פעולת מחלקה סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  33. מחרוזת --> מערך --> מחרוזת כתוב תוכנית אשר קולטת מחרוזת וממיינת את התווים שבה לפי סדר המילוני We love Java String s=in.nextLine(); System.out.println(s); char [] temp=s.toCharArray(); Arrays.sort(temp); s=String.valueOf(temp); System.out.println(s); We love Java JWaaeelovv סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  34. השוואות בין מחרוזות המחלקה String מספקת מספר מתודות לביצוע השוואה בין אובייקט מטיפוס String מסוים לאובייקט אחר מטיפוס String. public boolean equals(String otherString) מחזירה true אם המחרוזת שמיוצגת על ידי otherString זהה למחרוזת שמיוצגת על ידי האובייקט שממנו מתודה זו הופעלה. public boolean equalsIgnoreCase(String otherString) מחזירהtrue אם המחרוזת שמיוצגת על ידי otherString זהה למחרוזת שמיוצגת על ידי האובייקט שממנו מתודה זו הופעלה. בביצוע ההשוואה אין התחשבות בהבדלים שבין אותיות קטנות וגדולות. public int compareTo(String otherString) מחזירה 0 אם שתי המחרוזות זהות, משמע: ערכן זהה.(הערך מחושב על פי ערך התווים בחישוב עפ"י טבלת ה-Unicode). מחזירה ערך שלילי אם המחרוזת הנתונה בעלת ערך נמוך מהאחרת. מחזירה ערך חיובי אם המחרוזת הנתונה בעלת ערך גבוה מהאחרת סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  35. s1 הבדל בין == ו-equal מאחר וערך של משתנה מטיפוס String הוא עצם, אזי למעשה הערך איננו העצם אלא הוא המצביע אל העצם. בהתאם לכך הפלט של קטע התכנית הבא יהיה No String s1 = “abcde”; String s2 = “abc”; s2 = s2 + “de”; if (s1 == s2) System.out.println(“Yes”); else System.out.println(“No”); “abcde” “de” s2 “abc” “abcde” No סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  36. הבדל בין == ו-equal • אם רוצים להתייחס אל השוואה לקסיקוגראפית כדי לקבל פלט Yes - יש להשתמש בפעולה equals המוגדרת בטיפוס String. String s1 = “abcde”; String s2 = “abc” + “de”; if (s1.equals(s2)) System.out.println(“Yes”); else System.out.println(“No”); סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  37. השוואות בין מחרוזות • equals מחזיר boolean (true/false - זהות/לא זהות) • compareTo משווה שתי מחרוזות לפי סדר מילוני lexicographic. הפונקציה מחזירה int: סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  38. פלט ידוע. מהו הקלט? import java.util.*; public class test42{ static Scanner reader=new Scanner(System.in); public static void main(String[] args){ String s1="abc"; String s2=reader.next(); System.out.println(s1.compareTo(s2)); }} ? -3 d… ae… abf… abcabc abc123 ? ? ? abc סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  39. השוואת מחרוזות - פעולות נוספות • public boolean startsWith(String prefix) • מחזירה true אם המחרוזת הנתונה מתחילה במחרוזת האחרת (prefix) • public boolean endsWith(String suffix) • מחזירה true אם המחרוזת שמיוצגת על ידי האובייקט מסתיימת במחרוזת האחרת (suffix). • public boolean regionMatches(int thisBgn, • String otherStr, int otherStr, int length) • מחזירה true אם שתי המחרוזות זהות בטווח המצוין. ההשוואה נעשית החל ממספר האינדקס thisBgn במחרוזת שמייצג האובייקט לאורך length תווים. במחרוזת האחרת ההשוואה נעשית החל מהתו שמספר האינדקס שלו הוא otherStr. מתודה זו מתחשבת בהבדלים של אותיות קטנות/גדולות. סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  40. מציאת תווים ותת-מחרוזות כל אחת מהמתודות מחזירה את מיקום התו או תת המחרוזתהמבוקשים במחרוזת עפ"י האינדקס המקובל: מ-0עד length-1 אם התו או תת המחרוזת המבוקשת לא נמצאים במחרוזת שמייצג האובייקט אז מוחזר הערך .–1 • public int indexOf(char ch) • מתודה שמחזירה את מספר האינדקס אשר בו נמצא התו ch במחרוזת שמייצג האובייקט. החיפוש אחרי התו מתחיל מתחילתה של המחרוזת, ומספר האינדקס של התו הראשון, שנמצא זהה לתו ch, מוחזר. • public int lastIndexOf(char ch) • מתודה שמחזירה את מספר האינדקס אשר בו נמצא התו ch במחרוזת שמייצג האובייקט. החיפוש אחרי התו מתחיל מסופה של המחרוזת, והמיקום של התו הראשון שנמצא זהה לתו ch מוחזר. סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  41. מציאת תווים ותת-מחרוזות public int indexOf(char ch, int begin) מתודה שמחזירה את מספר האינדקס אשר בו נמצא התו ch במחרוזת שמייצג האובייקט. החיפוש אחריו מתחיל ממספר האינדקס שנשלח אל המתודה, מ- begin, ומספר האינדקס של התו הראשון שנמצא זהה לתו ch מוחזר. public int lastIndexOf(char ch, int fromIndex) מתודה זו מחפשת את התו ch במחרוזת שממנה היא מופעלת החל מאינדקס fromIndex לכיוון התחלתה. התו הראשון שהמתודה מוצאת כזהה לתו ch מוחזר על ידה. סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  42. מציאת תווים ותת-מחרוזות • public int indexOf(String str) • מתודה זו מחפשת מתחילתה של המחרוזת שהאובייקט מייצג את המחרוזת str. מספר האינדקס שבו היא נמצאת מוחזר על ידי המתודה.   • public int indexOf(String str, int begin) • מתודה זו מחפשת במחרוזת שהאובייקט מייצג את המחרוזת str החל מהמקום שמספר האינדקס שלו הוא begin לכיוון סופה.   • public int lastIndexOf(String str) • מתודה זו מחפשת במחרוזת שמייצג האובייקט את המחרוזת שמיוצגת על ידי str. החיפוש מתחיל מסופה של המחרוזת לכיוון התחלתה. מספר האינדקס שהחל ממנו str נמצאת לראשונה מוחזר על ידי המתודה. • public int lastIndexOf(String str, int fromIndex) • מתודה זו מחפשת במחרוזת שמייצג האובייקט את המחרוזת שמיוצגת על ידי str. החיפוש מתחיל ממיקום fromIndex לכיוון התחלתה של המחרוזת. מספר האינדקס שהחל ממנו str נמצאת לראשונה מוחזר על ידי המתודה. סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  43. "שינוי במחרוזת" חשוב לזכור, כי אף אחת מהמתודות ששייכות למחלקה String, לא משנה את המחרוזת שמיוצגת על ידי האובייקט. כל אחת מהמתודות שייסקרו בחלק זה מחזירה הפניה לאובייקט חדש מטיפוס String אשר מהווה תוצאה של שינויים למחרוזת שמייצג האובייקט שממנו המתודה הופעלה. סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  44. "שינוי במחרוזת" • public String replace (char oldChar, char newChar) • מתודה זו מחזירה הפנייה לאובייקט חדש מטיפוס String אשר מייצג מחרוזת תווים שמתקבלת מהמחרוזת, שמייצג האובייקט שממנו המתודה הופעלה, לאחר שכל תו שזהה לתו oldChar מוחלף בתו newChar.  • public String toLowerCase() • מתודה זו מחזירה הפנייהלאובייקט חדש מטיפוס String אשר מתאר את מחרוזת תווים שמתקבלת מהמחרוזת שמייצג האובייקט כאשר מחליפים את כל אחת מהאותיות הגדולות לאות קטנה.  • public String toUpperCase() • מתודה זו מחזירה הפנייה לאובייקט חדש מטיפוס String אשר מתאר את מחרוזת התווים שמתקבלת מהמחרוזת שמייצג האובייקט כאשר מחליפים את כל האותיות הקטנות לאותיות גדולות. • public String trim() • מתודה זו מחזירה הפנייה לאובייקט חדש מטיפוס String שמתאר מחרוזת תווים שמתקבלת מהמחרוזת שמייצג האובייקט לאחר שכל תווי הריווח שמופיעים בתחילת המחרוזת ובסופה נמחקים. סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  45. "שינוי במחרוזת" String s = new String("We love Java"); System.out.println(s); s.toLowerCase(); System.out.println(s); s.toUpperCase(); System.out.println(s); s.replace(' ','*'); System.out.println(s); We love Java We love Java We love Java We love Java סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  46. "שינוי במחרוזת" String s="We love Java"; System.out.println(s); String s1=s.toLowerCase(); System.out.println(s1); s=s.toUpperCase(); System.out.println(s); s=s.replace(' ','*'); System.out.println(s); We love Java we love java WE LOVE JAVA WE*LOVE*JAVA סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  47. החלפת רצף תווים בתוך מחרוזת String s="We love Java"; System.out.println(s); We love Java s=s.replace("Java", in.nextLine()); System.out.println(s); We love C# C# s=s.replace(" ",""); System.out.println(s); מחיקה? WeloveC# Error: cannot find symbol symbol : method replace(char,java.lang.String) location: class java.lang.String s=s.replace('e',"ee"); System.out.println(s); סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  48. שליפה תת-מחרוזת • public String substring(int begin) • מתודה זו מחזירה הפנייה לאובייקט חדש מטיפוס String שמייצג תת מחרוזת למחרוזת שמייצג האובייקט. תת המחרוזת שמוחזרת מורכבת מכל התווים שהחל מהתו שמספר האינדקס שלו begin ועד לסופה של המחרוזת שמייצג האובייקט. • public String substring(int begin, int end) • מתודה זו מחזירה הפנייה לאובייקט חדש מטיפוס String שמייצג תת מחרוזת למחרוזת שמייצג האובייקט. תת המחרוזת שמוחזרת מורכבת מכל התווים החל מהתו שמספר האינדקס שלו begin (כולל) ועד לתו שמספר האינדקס שלו end (לא כולל). סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  49. מה קורה באמת? כאשר הקומפיילר נתקל בשורה כדוגמת: String s=“abc” + “def” + “ghi”; האופן שבו השורה מטופלת הוא כדלקמן: String s=(((new StringBuffer(“abc”)) . append(“def”)). append(“ghi”)). toString() סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

  50. די דיינו? ואם לא? • אבל מה קורה כאשר נרצה להגדיר פעולה משלנו שתפעל על מחרוזות? • למשל: פעולה הפועלת על מחרוזת ומחזירה את מספר המופעים של תו מסוים בתוך מחרוזת. • מאחר והטיפוס String הוא טיפוס בנוי בשפה, איננו יכולים להרחיב את אוסף הפעולות שלו. המשמעות היא: • עלינו להגדיר את הפעולה כפעולה סטטית (static). • הפעולה תקבל את המחרוזת כפרמטר. סדנה ב-"עיצוב תוכנה מבוסס עצמים" באר-שבע 2008

More Related