יחידת עיצוב תכנה המחודשת
Download
Report
Transcript יחידת עיצוב תכנה המחודשת
יום עיון
עיצוב תוכנה מבוסס עצמים
מרכז המורים הארצי
המרכז להוראת המדעים
האוניברסיטה העברית ירושלים
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
1
מתוך הגדרת הפרויקט של מל"מ
...לפתח גירסה של היחידה הרביעית המתבססת על שפה מונחת
אובייקטים ,במקום על שפה אימפרטיבית כפסקל או כ.C-
מושגי האובייקט והמחלקה מהוים תשתית טובה לרעיון ההפשטה
ולשאר התכנים של היחידה הרביעית.
השימוש בהפניות ( )referenceלבניית טיפוסי נתונים כרשימות
ועצים ,חוסך ועוקף את העיסוק במצביעים ,והוא קל יותר להבנה...
אנו מעריכים כי ביסוס היחידה הרביעית על שפה מונחית עצמים
יאפשר לעסוק בתכני היחידה באופן מקיף...
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
2
מתוך הגדרת הפרויקט של מל"מ
...התכנים והרעיונות הקיימים [בפרקים] ...יבואו לידי ביטוי כנדרש
על ידי הפרדיגמה המתקדמת .הצגת הדברים ברוח OOPהיא שונה
ומתקדמת יותר ,הקוד ושימושיו יוחלפו ,דרכי מידול ותרגול יותאמו
כנדרש .רעיונות בסיס תיאורטיים ישארו...
בנוסף – הזדמנות יחודית של פתיחת היחידה מחדש
תיקון טעויות – קשיים – מחלוקות שנתגלו במהלך השנים
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
3
תמונת מצב עדכנית
• הסתיימה שנת פעילות ראשונה
• ניסוי בשטח וניסוי מקביל בהשתלמות מורים
• כל פרסום הוא תוצאה של חשיבה ,דיונים,
התלבטויות והמלצות
• אין כרגע אמירות סגורות ומוחלטות
• יש משמעות גדולה לדבריהם של מורים מוסמכים
המנמקים ומצדיקים בקשות והמלצות
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
4
צוות הפיתוח
• קיבל מנדט (ותקציב) לתקופה מוגבלת ולמטרה
מוגדרת היטב
• תקציב מל"מ – מוגבל לתקופת פיתוח
לא כולל תקופת ליווי והטמעה
• הצוות -כולל אנשי מקצוע ,תמיכה טכנית
מורה מוסמך מן השטח
,
• קשוב למורים מן השטח (פורום ,השתלמויות)
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
5
שתי שפות מקבילות
• היחידה נכתבת במקביל ב Java-ובC#-
• על פי הוראת הפיקוח ילמד ויבחן המכנה
המשותף של השפות
• ברמה הנדרשת לצרכי היחידות – השפות שוות ערך
וכל הזמן משלימות את ההישגים זו של זו
• הבחירה תעשה על ידי המורה (שיקולים פנימיים)
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
6
הנחות בסיס בעבודת הצוות
• חובת שיתוף הפעולה בין כל הגורמים
• בפרט ,בין צוות יסודות וצוות עיצוב תוכנה
• שיתוף פעולה ותיאום עם הפיקוח
• הוצאת מסמכי תיאום שונים
• כל ההחלטות הסופיות:
מבנה הממשקים הסופי
מבנה הבגרות ...
יפורסמו על ידי הפיקוח על מדעי המחשב
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
7
החיבור בין יחידות הלימוד
הנחת המוצא
:
יש וחייב להיות רצף בין היחידות החל מהיסודות
ועד עיצוב והרחבה בתכנות מונחה עצמים (יחידה
חמישית)
כדי להבין את הרצף והקישור
נתחיל מסקירת תוכן היחידה הרביעית
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
8
תוכן העניינים – יחידה רביעית
הדגשה והערה :כאמור אין התחייבות שאלו התכנים הסופיים
הפרקים
.1מבוא
.8יעילות
[ .2עוברים שפה]
.9מחסנית
.3עצמים
.10רשימה
.4מחלקות
.11עץ בינרי
.5עצמים והפניות
.12שילוב והרכבה של מבני נתונים
[השלמות מתוך פרק 5יחידה = 5צפונות הMain-
.6מבני נתונים
.7רקורסיה
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
9
סקירת שינויים
הקדמה
• אשתדל לדבר באופן שיובן על ידי כלל השומעים
• נושאים תלויי שפה או ידיעת הפרדיגמה –
אשתדל להבהיר כמידת יכולתי
• התייחסות לקוד תעשה באופן שווה כמעט בין
שתי השפות
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
10
סקירת שינויים
מה לא ישתנה
• פרק הרקורסיה (מתי ילמד?)
• פרק יעילות
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
11
סקירת שינויים
ממשקים א1 -
הנאמר להלן הוא בגדר המלצה בלבד!!
• המושג ממשק הוא חלק מהשפה והוא אופן העבודה
התקני עם טיפוסי נתונים = מחלקות
• שתי עמודות:
.1שם הפעולה כולל ערך החזרה ורשימת הפרמטרים
שהיא מקבלת
.2תיאור הפעולה כולל הנחות (חוזה)
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
12
סקירת שינויים
ממשקים א2 -
• הורדת המושג ממשק עברי
• מקורב מאד לאופן הצגת הממשקים בתוך
השפות עצמן.
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
13
ממשק המחסנית
()C#
ממשקים א3-
פעולה בונה היוצרת מחסנית ריקה
)(Stack
מחזירה 'אמת' אם המחסנית הנוכחית ריקה,
ו'שקר' אחרת
)(bool IsEmpty
מכניסה את הערך xלראש המחסנית הנוכחית
void Push
)(<info_type> x
מוציאה את הערך שבראש המחסנית הנוכחית
ומחזירה אותו.
הנחה :המחסנית הנוכחית לא ריקה
)(<info_type> Pop
מחזירה את הערך שבראש המחסנית הנוכחית
מבלי להוציאו.
הנחה :המחסנית הנוכחית לא ריקה
)(<info_type> Top
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
14
המחסנית של C#
(מתוך ה)MSDN-
ממשקים א4-
ממשקים
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
15
המחסנית של ג'אווה
(מתוך )Java APIממשקים א5-
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
16
ממשק הרשימה (ג'אווה)
ממשקים א6-
ממשק החוליה
פעולה בונה של החוליה .הערך של
החוליה הוא ,xוהעוקב שלה הוא
null
פעולה בונה של החוליה .הערך של
החוליה הוא x
והעוקב שלה הוא החוליה p
הפעולה מחזירה את הערך של החוליה
)Node (<info_type> x
)Node (<info_type> x, Node p
)(<info_type> getInfo
הפעולה מחזירה את העוקב של החוליה.
אם אין לחוליה עוקב ,הפעולה
nullתחזיר
)(Node getNext
הפעולה משנה את ערך החוליה להיות x
)void setInfo (<info_type> x
הפעולה משנה את עוקב החוליה להיות
p
)void setNext (Node p
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
17
ממשק הרשימה (ג'אווה)
ממשקים א7-
ממשק חלקי של הרשימה
פעולה בונה היוצרת רשימה ריקה
)(List
מחזירה את המקום של החוליה הראשונה
ברשימה הנוכחית .אם הרשימה ריקה ,הפעולה
תחזיר null
)(Node getFirst
מכניסה לרשימה הנוכחית את האיבר xמקום
אחד אחרי המקום .pהפעולה מחזירה את
המקום של החוליה החדשה שהוכנסה.
על מנת להכניס חוליה ראשונה יש לשלוח null
כפרמטר המקום.
הנחה p :הוא מקום קיים ברשימה הנוכחית
>Node insert (Node p, <info_type
)x
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
18
ממשק עצים
ממשקים א8-
• נמצא בדפים שלפניכם
• השינוי המשמעותי – אין עץ ריק – הוסבר בהרצאתה של יעל
• מעבר לכך הדברים נשארו כמעט כפי שהיו
• בהשתלמויות ובמאמרים ניתן יהיה לרדת לעומקם של דברים
• וכאמור – ההחלטה הסופית תפורסם על ידי הפיקוח ובאישורו
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
19
סקירת שינויים
אלגוריתמיקה
1
הנאמר להלן הוא בגדר המלצה בלבד!!
• הכתיבה האלגוריתמית המפורטת – הטייה חזקה של
שנות התשעים
• אופן הכתיבה הקיים – משקף התנסחות פרוצדורלית
• אין צורך ברמת פירוט כל כך גבוהה בשלב תכנות מתקדם
שכזה .מספיק שהאלגוריתם ישקף כיוון פעולה.
• עם ביטול שמות הפעולה העבריים – רישום אלגוריתם
מפורט יראה ממש כמו כתיבת הקוד.
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
20
אלגוריתם מעיצוב תוכנה "הישן"
אלגוריתמיקה 2
הדפס-רשימה ()L
{ האלגוריתם מדפיס את איברי הרשימה Lלפי הסדר.
qהוא מקום ברשימה x .הוא איבר ברשימה} .
( )1עוגן-רשימה .q )L(
( )2עוקב-ברשימה .q )L, q(
{ qהוא המקום הראשון ברשימה} .
( )3כל עוד >< qסוף-רשימה ( ,)Lבצע:
( )3.1אחזר-מרשימה (.x )L, q
( )3.2הדפס את .x
( )3.3עוקב-ברשימה (.q )L, q
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
21
אלגוריתם בעיצוב החדש
אלגוריתמיקה 3
(פעולה חיצונית)
הדפס-רשימה ()lst
{ טענת כניסה :הפעולה מקבלת את הרשימה lstכפרמטר}
{ טענת יציאה :הפעולה מחזירה הדפסה של איברי הרשימה לפי הסדר }
עבור על חוליות הרשימה lstמתחילתה ועד סופה
הדפס את ערך כל אחת מהחוליות.
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
22
אלגוריתמיקה 4
דוגמה לפעולה פנימית (מרחיבה את אוסף פעולות הטיפוס)
אחזר מקום ()x
{טענת כניסה :הפעולה מקבלת מספר שלם xופועלת על הרשימה הנוכחית}
{טענת יציאה :הפעולה מחזירה את המקום הראשון של xברשימה הנוכחית
אם xמופיע ,אחרת מחזירה }null
עבור על חוליות הרשימה הנוכחית מתחילתה
אם ערך החוליה ברשימה הנוכחית שווה ל ,x-החזר את מקומה.
אם הגעת לסוף הרשימה ,החזר
.null
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
23
אלגוריתמיקה 5
דוגמה לפעולה חיצונית המקבלת את העצם כפרמטר
ופועלת עליו
בטל -כל -המופעים ()lst, x
{טענת כניסה :הפעולה מקבלת מספר שלם xורשימה }lst
{טענת יציאה :הפעולה מוחקת מהרשימה lstאת כל החוליות שערכן } x
עבור על חוליות הרשימה lstמתחילתה ועד סופה
אם ערך החוליה הנוכחית שווה ל ,x-הוצא אותה מהרשימה.
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
24
סקירת שינויים
אלגוריתמיקה 6
• אין הורדה בחשיבות ערכו של אלגוריתם
• מורידים את השפה הפורמלית הנוספת הנדרשת לניסוח
אלגוריתמים מדויקים
ההמלצות שלנו בשלב זה:
אלגוריתם – יסרטט את כיוון הפתרון אבל לא במדויק
לא לבקש מתלמיד לכתוב אלגוריתם בזמן מבחן
הבגרות -אבל בהחלט עליו להוכיח יכולת קריאה
והבנה של אלגוריתמים
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
25
מה גודלו של ממשק?
•
ממשקים ב1-
ממשק צריך להיות מינימלי ומספק
• לפעמים כדאי לצורך אפליקציה מסוימת ואפילו לצורך תרגול "סתם"
להוסיף פעולות נוספות לממשק
• הפתרון ברמת ההפשטה שקיימת ביחידת הלימוד הנוכחית:
מכיון שאנחנו הכותבים של המחלקה – להוסיף פעולות בממשק
(הפרדה)
• הפתרון הזה לא טוב כאשר רוצים לעשות זאת לגבי מחלקה סגורה
שלא אנחנו כתבנו
• הפתרון האמיתי צריך להעזר בירושה וממשקים ()Interface
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
26
תוספת פעולות למבנה נתונים
ממשקים ב2-
פעולות פנימיות
פעולה פנימית – חלק מממשק המחלקה
פועלת על העצם הנוכחי
יכולה לפנות ישירות למימוש של המחלקה
דוגמה:
החזר אורך רשימה ()
{טענת כניסה :הפעולה מחשבת את אורכה של הרשימה הנוכחית }
{טענת יציאה :הפעולה מחזירה את מספר האיברים ברשימה}
עבור על הרשימה הנוכחית מתחילתה ועד סופה
החזר את מספר צעדי המעבר מחוליה לחוליה שבוצעו.
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
27
תוספת פעולות למבנה נתונים
ממשקים ב3-
)( public int getLength
{
;int len = 0
;Node p = this. head
{)while ( p!=null
;len++
;)(p = p.getNext
}
;return len
}
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
28
תוספת פעולות למבנה נתונים
ממשקים ב4-
פעולות חיצוניות
פעולה חיצונית – מקבלת את העצם כפרמטר ופועלת עליו
דומה באופן החשיבה והכתיבה לפעולה פרוצדורלית
מחויבת להשתמש בממשק המחלקה בלבד
דוגמה:
החזר אורך רשימה ()lst
{טענת כניסה :הפרמטר הוא רשימה }
{טענת יציאה :הפעולה מחזירה את מספר האיברים ברשימה}
עבור על הרשימה מתחילתה ועד סופה
החזר את מספר צעדי המעבר מחוליה לחוליה שבוצעו.
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
29
תוספת פעולות למבנה נתונים
ממשקים ב5-
)public static int getLength (List ls
{
;int len = 0
;)(Node p = ls.getFirst
{ )while ( p!=null
;len++
;)(p = p.getNext
}
;return len
}
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
30
סקירת שינויים
גנריות
הדיון 1
הבא הוא
בגדר הרהור ואתגר בלבד לעת עתה
• שדה התוכן של מבני הנתונים היה מתואר
בעיצוב תוכנה כ info_type :שאחריו שלוש נקודות...
• בשפות מבוססות עצמים ,טיפוס מוגדר על ידי מחלקה
• הגדרת מחלקה לכל טיפוס -תצריך שינויים והתאמות
עבור כל אפליקציה
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
31
סקירת שינויים
גנריות
2
• בשפות מונחות עצמים (גרסאות אחרונות) ניתן
להגדיר טיפוס כללי/גנרי.
← מבנה הנתונים יוגדר עבור הטיפוס הכללי
• קביעת הטיפוס תעשה רק בזמן הריצה ועבור כל
תוכנית בנפרד.
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
32
סקירת שינויים
גנריות
3
היתרון של שימוש בגנריות בולט ומובן
חסרונות לדוגמה :איך מגדירים פעולת השוואה כללית?
לבטים :האם ללמד את ההכללה וההפשטה הזו כבר
במבנה הנתונים הראשון או לחדש רעיון ו"לנוח"?
ההמלצה שלנו בשלב זה :ללמד גנריות החל
מרשימה ולחזור למחסנית בהמשך
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
33
סקירת שינויים
גנריות
הדגמה :חוליה גנרית /רשימה 4
גנרית ותוכנית המשתמשת בהם
>public class Node<T
{
;private T info
;private Node<T> next
)public Node(T x
{
;this.info = x
;this.next = null
}
)public Node (T x, Node<T> next
{
…;this.info = x
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
34
5 גנריות
סקירת שינויים
public class List<T>
{
private Node<T> head;
public List()
{
this.head = null;
}
public Node<T> getFirst()
{
return(this.head);
}
public boolean isEmpty()
{
return(this.head == null);
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
}35
© המרכז להוראת המדעים
האוניברסיטה העברית בירושלים
סקירת שינויים
גנריות 6
public class Test
{
)public static void main (String[] args
;)(>List<Point> lst = new List<Point
;)(>List<Date> l2 = new List<Date
…
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
}
36
סקירת שינויים נוספים בקצרה
• העלמות המושג "מופשט" מהגדרת טיפוס נתונים
• מעבר לסביבות עבודה חדשות
• מבנה בחינת הבגרות :שינוי הלוקח בחשבון
מינימום שינויים
מקסימום התחשבות בתלונות קיימות וישנות...
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
37
קשר בין היחידות
•
•
•
•
•
מחכים ליסודות ומשתדלים לתאם מושגים ,מחלקות
(קלט/פלט) ,כיווני עבודה וסביבות עבודה
הקשר עם היחידה החמישית מובן מאליו
היחידה החמישית מרחיבה ומעמיקה את הידע בתמ"ע
שינויים לשוניים קלים בין יחידות 4ו5-
הקשר לימודי חזק בשילוב היחידות ה 4-וה5-
הקשר לימודי חזק בין כל מכלול היחידות בשפות
מבוססות עצמים ולימודים מעבר לחמש יחידות
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
38
קשר עם ועדת המקצוע והפיקוח
• ועדת המקצוע והפיקוח יצטרכו לתת דעתם על העומס
הקיים ביחידה
• על התכנים הרצויים וההדגשים הרצויים עם עריכת
היחידה מחדש
עיצוב תוכנה מבוסס עצמים – יום עיון מרכז המורים הארצי
המרכז להוראת המדעים ©
האוניברסיטה העברית בירושלים
39