תונכת החנומ םימצע - cs.tau.ac.ilstoledo/courses/oopj/presentation.pdf · גב...
TRANSCRIPT
בגם מיעצ
ה חונמ
ת נותכ
'והאו
יוןס
דוולט
איודיה
ם ירעמו
שבמח העימד לפרהס
ת בי
,יבאב
ל תטתסיברוניא
©
לותורשמ
ת ויוזכ הכל
איודיה
ם ירעמו ולדטו
ון סי
,20
04
סורק התרוטמ
•
ה יד מנהבק
ה כנתו
ח תופי בותיעסישמ
ת גיולודותומ
ת בנהולגד
:יםצמ עחהמונ
ת כנות
,יםחוז
ת זרבע
ון יכת
,ע צובי
יהלצפיומ קמןבז
ת קודי בוםימקסמ
,טיומוט ארוןיכל זהוני
•
גפתש
ם עותכרהי
'והאו
•
ותכנ תותנויוממי
ר פושי
•
יםדמתק מוחית פלי כעם
ת רויכה
יםארשת נונוקרע
,יםלפתחומ
ם תניש מוחית פליוכ
ת פוש
זו התצגמ בשמושי
ט רמפו בכם ליםלקמח
ו אנ
ת צגהמ
ת א
ה. יםודעמ
ם הבץקו ביםגיהזו
וריעש ביםרינמק
נו שא
ם פישקה
,וה
דימוע
זהמו כברהס
פי דהם
ם גיי זואי הם
.סךהמ
ל עגתמצ האת
א רולק
ן ובכמ
ם ליכו יתםא
;ת איםראקו
ם את
ם א
סךהמ
ל עגתמצה
,ת אירעבלה
ף דיע
Acr
obat
א מל
ך מס ל
)co
ntro
l-L( ,
די כ
בסטטקשה
דימוע
די מטן קדלגו בצג יולא
ר סבהה
.
אתא רולק
ם פידימע
ם את
ם א
יר ניעל
ת צגהמ
,
יםודעמ הכל
ת איסדפלה
וי רצ
,ירהני
ב וחלר
,ירהני
פי דשל
ם דיצד השני
ל ע
,ון ליהע
ל שו ביםדפ האת
ך שדול
הםשל
.תהאו
ם חיותופ
זו כרהצו בגתמצ האת
ם סיפימד
ר שכא
,ד מובע
ע פייו
קףש היוןעלה
,תיותחומ
,קבעו הודעמב
,יםברהסה
.
יםברהס
ש ף ישק
ל לכ
א ל
.אין
ר שכא
,דףה
ק רי
ר שא נקףש לקבעו ה
)ת מנ
ל ע
סתדפמו הרתובהח
ל ש
ה בנהמ
ל עורשמל
.(
ת יופצי
ם אותי
)הןליאמ
ת נוובמ לברעמ
(
תנואי מתםא
:
• שהמעה וריאותי לנתאוז מותחסתייה
•
יםבנמום וליעיד ימולי
רי ומח
•
ותטלהמ
ע צובי בכהמית
כם מחנואנ
:
• לקחושי
ר ומהח
ל כאתריק
,ם ריעושי הותדמתקלה
ם תאבה
)סו בלאו
טרמסהס
ף (
• מןבז
לו וטשי
ת לומט הכל
ע צובי
,קובדא ישל
ת לומט
ל ולכ
•
יםרט פשל
מי עצ
ד מולי
•
להעי פותתפשתה
םצימלמו
ם ריפסר ועז
רי מחו
זר עריומ חשל
ם גיסו
י שנ
ם לכ
ק חל נאנו
:ד מולי לדהבו עפיוד
ו הז
ת צגהמ
וחיתהפ
ת יבסב
.
פיציספ
ד מולי
ר ספ
ל עססבומ
נו אי
ס ורהק
,ם ריספ
ר ספ משל יאב
ם וייששע
ת כנובת וללבכ
ם מיעצ
ה נחמו
ת כנובת
ם יכותיעיד
ת איברחלה
ם לכ
ע סייל 'בג
טפר בוהאו
.
• O
bjec
t O
rien
ted
Soft
war
e C
onst
ruct
ion,
sec
ond
edit
ion,
by
Bert
rand
Mey
er, P
rent
ice
Hal
l, 19
97.
ה הז
ר ספה
האת
ג צימ
ס בסמת
ה הז
ס ורהקש
ם מיעצ
ה נחמו
ת כנולת
ה שגי
יהעל
.ר ספה
אתג צימ
ש מושי
ך תו
ה שגי ה
שפב
תותכנהת
Ei
ffel
,ל אב
ותחר אותכנ תותשפ בגם
ם פיתק
ת ונוקרהע
. ם טיורמפ
ם ונידי
ל כימ
ר ספה
הזוה שגי השל
ם טיפקאס הכלב
,ל כל
ך דר באתקרשנ
desi
gn b
y co
ntra
ct.
• Pr
ogra
m D
evel
opm
ent
in J
ava,
by
Barb
ara
Lisk
ov a
nd J
ohn
Gut
tag,
Add
ison
-Wes
ley,
200
0.
פרס
מהדו
ה שגי
ג צישמ
ד מולי
,
הה זלא
ל אב
,יםמדמל
נו שא
זו ל
.ל ש
ה שגיה
יראי משל
זו מיתמטרג פתר יופרהס
,ה קיי נותפח
ר ספ בגתוצשמ
ה ריאותיוה
יראי משל
זו מ
.בג
ש תמש מפרהס
'יוןלד
ה רמפולטכפ
ה אוו
,ם אישבנו
ן דגםו
לגם פייציספ
'והאו
,בג
ם גירי חמוכ
'והאו
,לג
ד מולי
ר ספ
א לוא הבלא
'או. וה
)קהפימס
ט רופי
ת רמ בבו
ם ונייד נלא
ה שפ ביםרב
ם בישו חיםשאנו
(.
ר ספה
לנוש
ס ורהק
אי שנו לברמעש
ם אישנו
ג צי מגם
,ותשרי דוחית ונותשרי דמוכ
.
• Th
e Ja
va P
rogr
amm
ing
Lang
uage
, th
ird
edit
ion,
by
Ken
Arn
old,
Jam
es J
oslin
g, a
nd D
avid
Hol
mes
, A
ddis
on-W
esle
y,
2000
.
ר ספ
געל
'פהש האת
ו תחפיש
ם שיאנ האת מוהאו
.ה שפ בצהממ
ן דיו
ותלוהנ
ת ריוספוב
,א של
ת סייח
ם חיידם נאיש נועל
ם גיםרטפו מיםברהס
ל ולכ
יםחר איםפרבס
א מל
ן ופבא
ם סיכומ
.ל כיקצדלה
ם ריחבהמ
ל ש
ן צוהר
ל גל ב
בהת רוחס
ת רואח
ת ונותכ
ע דו ממקלנ ופהש לששי
ה כונת
,ד מי תלא
ן דיוה
ל כאת
ג צימ
גןהו
פן או ביםטיוונרל היםבטהיה
.יתרתקובי
ין בע
א רולק
אי כד
. או ה שפ ביםסו מנוןנג מעלפו
ד יצ כוקדי בביןלה
ם צירו
ר שכא
ל עימו
ל אב
ותריספב
. פהש השל
ר ותת יאורס גותיגמצ
ר ספ השל
ר ותת ישנות ירודומה
, ת ויותחתפ הרותאשי
ותספ נוותורהד מורלא
אויצ
ידעתשב
יחהנ לשוי
ותספנו
.
• Ja
va
in
a N
utsh
ell,
by
Dav
id
Flan
agan
, th
ird
edit
ion,
O
'Rei
lly, 1
999.
י יתמצ תוריאת
ותלוהנ
ת ריוספוה
ה שפ השל
.ע ודשי
י למ
ר יקבע
י שמושי
גודלמ לצהרות וחר אפהש בנתתכל
'והאו
, גדעשיו
מי ול
'ר ספ בייןעונומ
ה אוו
כחשש
ם טיפר בכרהיז לנת מעל
ר עז
.ר ספשב
ה מז
ה רבבה
י יתמצ תיוןד
הדםקו
.ותלוהנ
ת ריוספ השל
ר רצקצ
ד עותי לשקדמו
ר ספ השל
ני ש הציהח
;ווןמק הודיעבת
ם גיעופ מדעמי התואו
,ע ידלמ
ת שלג
ח נויםעמלפ
ל אב
פרבס
.
רנוזכשה
ם וניחרהא
רי ספ השני לרטפ
, גפתש ביםדנש
'והאו
,ת רוש עוד עשי
)ותמא
לי או
( געל
ם ריספ
'
והאו
,הס
ת ויוחנוב
ה ריספ בולגד
ר בחמ
ל ולכ
יםפר
,יתברבע
ם ריספ
ר ספ מללכוו
.רנוזכשה
ם נייש בקרעי ביםשתמש מאנו
,ל אב
צי מאנו
לנת מעל
ם ריאח
ם ריספ בגם
ף פדלד
ם לכ
ם עי
ם לכ
ל שק
ר ספ
א צומ
בוש תמשלה
.את זמתעו ל
,ל ש
ה ריאותי האת
ם גיצישמ
ם בי ריםפר סאין
רנוזכשה
ם נייש לרט פיםצמ עחהמונ
ת כנות
.
מקד עותי
ת ללכו
ח תופי הבתביס
ה צמ עבהביהס
ת דואו
ן וו
)ת תח
help
שירא היטפרבת
( ,פהש לותלוהנ
ת ריוספ השל
ד עותי
כן ו
.ט רננטאי התר אגם
ת בר חשל
Sun
,פהש האת
ה תחפיש
,ל כימ
א הו
ם ג
ל ש
ן קווהמ
ד עותי האת
ותריספה
,יםספנו
ד מולי
רי ומ חכןו
.
םמיעצ
ה חונמ
ת נותכ
ה מל
?
• ותופטרטס קיםיתלע
ת רוקו
ה דסהנב
: קיםיינבנ
יםרסו
,יםפל נויםוסמט
,יםצצפומת
ם ריכו
•
יםמדלו
ת פורוסטקטמ
•
יםשבמח הלםעוב
,ח פת ללוןשכי באובטהת
ת פורוסטקט הובר
נהוכת
ה ולגד
חהותשפ
ה כנתו
ש מישלה
ון שלכי באו
;ב רו
ל ש
ל ודהג מעונב
ת פורוסטקטה
הנהוכת
•
ת כנו תשל
ת גיולודותוהמ
ח תופי
ת אלהכל
ם חילק הקתהפ
יםצמ עחהמונ
,עז בכוןתי
ם וזי חרת
)de
sign
by
cont
ract
( ,יהלצפיומ קמןבז
ת ינותק
ת קודי בוםימקס מועיצב
,ל הוני
טיומוט ארוןיכז
יםברהס
ק חל
1 ותלקמחם ומיעצ
םייברע
ם חיונמ
ש תמשלה
ו לנתדש הלוהל
ם פישקב
יםריעב
ם חימונב
.ל כי מזה הדףה
ם חימונ
של
יםומרגהת
מתשיר
יםצמ עחהמונ
ת כנובת
ם בישוח
.
תריעב
-נגא
תלי
ולתחא
in
itia
lizat
ion
איבנ
co
nstr
ucto
r
שגו
bl
ock
רהגדה
de
fini
tion
סהעמה
ov
erlo
adin
g
רההע
co
mm
ent
רהצהה
de
clar
atio
n
להביח
pa
ckag
e
ורזרח
it
erat
ion
יגחר
ex
cept
ion
וסיפט
ty
pe
וסיחי
re
fere
nce
וחלק
cl
ient
פעמו
in
stan
ce
קהחלמ
cl
ass
זתרומח
st
ring
ק שמנ
)שקממ
(
inte
rfac
e
רךמע
ar
ray
בעקומ
im
mut
able
מרשתמ
in
vari
ant
נהשתמ
va
riab
le
קפס
supp
lier
צםע
ob
ject
דהקופ
co
mm
and
תהילשא
qu
ery
דהש
fi
eld
טהשי
m
etho
d
ותימקד
pr
eced
ence
עוןיבק
im
mut
abili
ty
חר אאיתנ
pr
econ
diti
on
דם קאיתנ
po
stco
ndit
ion
תקוחלמם ומיעצ
•
ם עצ
)ob
ject
ה) ם תירושי
ת פקמסש
ה כנתו
ת ידיח
א ו
)m
etho
ds (
ם ומיסוימ
שעי רג
ב מצ
מן ת זודנק
ל בכ
ה לשי
ם סוימ
)st
ate
( •
ה לקמח
)cl
ass
(וג סתואו מיםצמ עשל
ה וצקב
א הי
,ר ומכל
רהצו
ה ותבא
ם תירושי
ם ות אאת
ם קיספשמ
•
ם עיופ מהם
ם מיעצה
)in
stan
ces
(קהחלהמ
ל ש
•
ריםצבבמ
ם אימצה נלקמח
ה ותמא
ם וניש
ם מיעצ
יםשונ
ם עייג
•
ורמק הודבק
ת טיסט הותשהי
א הי
ה לקמחה
;א הו
ם עצה
צהרי המןבז
ת מידינ הותשהי
יםברהס
תרודווצפר
ת מעו לםתירושי
•
ותירש
ק ספשמ
ם עצ
א הי
ע לנוקו
ת ופק
:יםיסרט כרתכימ
•
צםהע
ל ש
עי רג הצבבמ
וי תל
ל קב מוחלקש
ת רושיה
:ה כמ
זהאיו וכרנמ
ר כב
ם סיטיכר
•
רהדווצפר
א הי
ה פרמס
:קוהל
ר ש קלי בפרסו מצאויו
ס כנח נ
פרמס השל
ב מצל
יםדמקו
ת חוקו ללויבשק
ת רושי לאו
ה
רהספבמ
או ע לנוקו הפתקו בורמת
ת מועלמת
לו הל
ת אוגמדוה
,ה הוושמ
ר תו
חיוכ נצבמ
ל ש
ג סו
.יעמג
נו של
ח קוהל
ר שכאש
ת חומני
ת אוגמדוה
,ור תאין
.וחלק הורעב
ת פיסו האהוצהת
ל עיעשפ מלא
ם גורהת
, העל
ק ר
ש רושד
מן ז
ותירש האת
ל קב לנת מעל
.
םסיפוטי
•
ם מיעצ
ת חומונ
ת פושב
)שללמ
Java
, C#
, C+
+, P
ytho
n,
Smal
ltal
k (
יםוסיפט
ם גהן
ת קוחלמ
) ty
pes
( •
וסיפט
ש ה ייצהר
מן בז
ם עצ
ל לכ
:יךשי
א הו
ה לישא
ה לקמחה
•
ת טיסט
ה ורבצ
ם סיפוטי
ת קוודשב
ת פושב
)יהלצפיומ קמןבז
( ,יםתנשמ
,יתכנתו בותשמ
,מו
וסיפט
ם עיםרזכ
:ה תנש מאם
ללבכ
הו שלמ
ס יחתימ
,ה לקמחמה
ם עצ
א הו
ה הז
הו שהמ
זתכרמוה
•
שק חול
רנויאת
שהמ במדנלש
ל כל המן
ם איוצש י י
ך'ג •
יתטט סרהצו ביםוסיפט
ת דקבו
ה אוו
,ם גוהכמו
C#
,C
++
;Py
thon
,Sm
allt
alk
ותדקבו
א ל
יםברהס
םסיפוטית וקוחלמ
:מהוגד
קהחל מירגדנ
class VersionedString {…
} יתכנתו בחר אוםמקב
,יםתא מוסיפט
ם ענהשת מירגדנ
,ס פוטי מנהשתומ
String
) ירגדלה
ך ור צאיןש
ת ימקי
ה לקמח
(: VersionedString vs;
הנהשתמ
צםלע
ס יחתי מלא
ין די ע
String
s; ל"כנ
קהחלהמ משחד
ם עצ
ר צוני
, האת
ר שונקו
נהשתמ
vs
ליו א
,
vs = new VersionedString();
ס פוטי משם
ר שולק
ר שאפ
אי ל אב
String
ה לקמחמה
ם עצ ל
VersionedString
:
s
= vs; יהלצפיומ קאתגיש
!
יםברהס
נהשוא רקהחלמ
:יהורטסהי
ם ע
ת וזחרמ
קהחל מירגדת נכע
.יתשרא
,ם מיעצ
ה מיםילבמ
ר דינג
קוספם י היםותירש
ה איזו וצג ייקהחלהממ
.
• גשל
ה דר סצגמיי
ם עצ
זתרומח
ל ש
ת אורס
•
זתרומח ליתכנעד
ה רס גפתוס ההם
ק ספם יעצשה
ם תירושיה
,ת כניעד הסהגר הפתליש
)נהרואח
( ,ה שנה ירס גפתליש
מתסוימ
,זתרומח
ל ש
ת אורסהג
ר ספ מרתפיוס
•
כךל כשימושי
ם עצ
א ל
,ת דר סיםצגמייש
ם מידו
ם מיעצ
ל אב
יםשימושי
כן ם הבץקו
ל ש
ת אורסג
•
בשמושי
ת וזוחרמ
וםמקב
ציקב
ם
שטמפ
מהדגהה
ת א
יםברהס
נהשואהר
ה קחלמה
:ת דרהג
םתירושיה
class VersionedString {
public void add(String s) {…
} public int length() {…
} public String getLastVersion() {…
} public String getVersion(int i) {…
} }
• public
:ריבוצי
ת רושי
,שהגי
ת בלהג
ין א
•
void
:מהאומ
;רך עירחז מינו אותירששה
מן מסש
ה זר חרךע
•
int
:לםש
ר ספמ
•
String
:ותרוזמח
ג צוליי
ה לקמח
, גפתש ביתבנמו
'והאו
יםברהס
םשיעו
ם תירושי המה
?זהחוה
class
VersionedString:
In
itia
l Sta
te: l
engt
h()
== 0
add(String s):
R
equ
ires
: s
!= n
ull
E
nsu
res
: len
gth(
) ==
old
len
gth(
)+1
g
etV
ersi
on(l
engt
h())
==
s int length():
R
equ
ires
: not
hin
g
En
sure
s : r
etu
rn_v
alu
e==n
um
ber
of c
alls
to a
dd()
so
far
יםברהס
םשיעו
ם תירושי המה
?ה וזחה
)שךמה
(
String getVersion(int i):
R
equ
ires
: 0 <
i <=
len
gth(
)
En
sure
s : r
etu
rn_v
alu
e ! =
nu
ll String getLastVersion():
R
equ
ires
: len
gth(
) >
0
En
sure
s : r
etu
rn_v
alu
e ==
get
Ver
sion
(len
gth(
))
יםברהס
זהחוה
:ק
אי תנ
דא
אי תנם ו
רח
• תיחלהת
ב מצ
ש ם ימיעצל
•
שנים דיצממו
ת רושי
ל לכ
יםנא ת
•
ם קד האיתנ
)pr
econ
diti
on (
פהמצ
ת רושי המה
ר דימג
•
ר אח האיתנ
)po
stco
ndit
ion
(פקמס
ת רושי המה
ר דימג
•
יםקימת
ם קד האיתנ
ם א
,יםקי ליבחי
ת רושיה
,א הוש
ר אחל
יםסימ
,חרהא
אי תנ
ת א
•
יםקימת
א לדםהק
אי תנ
ם א
,וםכל ליבחו מלא
ת רושיה
;א ל
ורעצל
,יתכנתו האת
ף עילה מנעימלה
א ל
,ה יעפג מנעימלה
א ל
יםתוני נבנבמ
,וםכל
יםברהס
תחוקוול
ם קיפס
•
יםדד צשני
ה חוזל
:וחלקק וספ
•
יםירגדשמ
ה לקמח הוא הפקהס
;ת אשממ לכהרי ציאה
גודבק
ם תירושיה
'יםתא מוהאו
•
קהחלהמ מיםצמבע
ש תמששמ
ד קו
א הו
ח קוהל
•
ותירש לראקו
א הוש
ני לפ
ם קד האיתנ
ת איםקי ליבחו מוחלקה
•
יבחו מפקהס
,ם קד האיתנו ולק חאת
ם קיי
ח קוהל
ם א
יםקימת
,חרהא
אי תנ
ת איםקיל
יםברהס
חקו לשל
ת נוכונ
vs = new VersionedString();
vs
.len
gth(
) ==
0
vs.add("The letter A");
argu
men
t !=
nu
ll
vs
.len
gth(
) ==
1
vs
.get
Ver
sion
(1)
== "
The
lett
er A
" vs.add("The letter B");
argu
men
t !=
nu
ll
vs
.len
gth(
) ==
2
vs
.get
Ver
sion
(2)
== "
The
lett
er B
"
0 <
1 <
= v
s.le
ngt
h()
== 2
System.out.println(vs.getVersion(1));
תנוכונ
,עד צריחא
ד עצ
יא הוחלק השל
ה שונרא הרהשוה
vs = n
ew V
ersion
edSt
ring()
;
דם־קאיתנ
ן אי
ם עצ הרתצילי
,ת כע
ה ות אצעלב
ח קולל
ר ות מכןול
)ל בכ
ו א
חר אצבמ
.(יא האההב
ה ורשה
vs.add
("Th
e lett
er A
");
ת רושיל
add
חד אדם קאיתנ
ש י
:ת היו לנטומרגלא
ר סוא
null
.ר ביהע
ח קוהל
זתרומח לותחסתייה
,א ל
null
,דםהק
אי תנ
ת אלאמי
ח קוהל
כן ול
.ר אח האיתנ
ש יםיחבטמ
-le
ngth
() עת כוא ה
1)
דםקו
1-ב
( לאהרישקו
-ge
tVer
sion
(1)
ת רהעבהוש
ת רוזמח האת
ר חזי
,"T
he le
tter
A"
.
מהדו
פן אוב
,אההב
ה ורשה
,
vs.add
("Th
e lett
er B
");
ת אובש
ת דממק
leng
th()
שה יחבטומ
-
getV
ersi
on(2
)ת אירחז י
ת רוזמחה
"The
lett
er B
" .
וניקר עפןאוב
,ה שנ תתר יורתוחמא
ה ודפקש
כן ית
שך ער האת
-ge
tVer
sion
(2)
,כןית
א לזה
ו לנש
ה לקמח בבלא
,ם שומ
ל ש
ך ערשה
leng
th()
ולגד לרק
ל כו י
,א הי
ה ידיח הדהקוהפש
ם שוומ
add
,ל ש
ך ער האת
ת בעקוש
getV
ersi
onט מנגואר הורעב
le
ngth
().
לאהריהק
-ge
tVer
sion
רהשו ב
System
.out
.prinl
n( g
etVers
ion(
1) );
ל ש
ם קד האיתנ
ת אמתקיימ
getV
ersi
on,
נטומרגהאש
ם שו מ
,1 , מולגד
-0 ל ש
י כחהנו
ך ער לוהשו
ו אטןוק
leng
th()
.כך לאי
,ת ארהחזי מאהריהק
ת רוזמחה
"The
lett
er A
".
Syst
em.o
ut.
pri
ntl
n
ה גרשה
Syst
em.o
ut.p
rint
lnלהש
ט מנגואר האת
ה יסדפ מ
,ך רישצ
זתרומח
ת היול
,טידרטנהס
ט פלל
,אההב
ה ורש לרתובוע
.ס ורהק
ך שהמב
ממדנל
רהשג השם
ת עושמ מה
.
םזיחו
ה מל
?
• שהמומי בותתל
א לל
ה לקמח
ל ש
ת עושמהמ
ת אירגד מזהחוה
•
לשראפ מזהחוה
ל ש
ה וקחזהתח ותופי האת
ד ריהפ
ק ספה
ותוחלק השל
לו מא
;ה כנתו
ח תופי בתחמפ
ה הוו מהזו
ה רדהפה
קףהי
ת חבר
•
ותוחלק
ל ש
ת ונונכ
ח כיהו לשראפ מלירמפו
ה חוז
•
ך שהמב
ס ורהק
הוה חוזשה
ה ראנ
ב כימר
א )
דילע בלא
(ת כחהוב
פק סשל
ת ונונכ
•
אהנר
ס ורהק
ך שהמב
גם
ש
ל עקהחל משל
ת עושמהמ
ת דרהג
ה חוז
די י
יםצמ עחהמונ
ת כנובת
ד וחמי בבהשוח
•
ובט
ת חו פזהחוב וטו
ה חוז
ש שי
בן מוכ
;ע ציס נורהק
ך שהמב
יםובט
ם וזי חרתגדלה
ת טושי
םביטו
ת חופ
ם זיחו
ת מעו לםביטו
ם זיחו
מום וזי חרתגדה
נהוכ תכוןתי בבתרכמוה וובש חדהקו ניא היםלחצ
,ך שהמוב
וטטררובפ
ה בדון נרסקוה
.ה מעל
ב שולח
ל חיהת לשיועכ
ר כב
י דא כבלאועגר לאו
ב טו לזהחו
ך ופה
.ם ולבע
ם וזי חשל
ר שהק בכך
ל עובשלח
ר שאפ
שיממה
,ותלקמח
ין ביםחוז
ל ש
ר שהק בקאדוו
א ל
.
תואו
ן בילה
ל שק
ה חוז
א הו
ב טו
ה חוז
,אפש
לו וכ ייםדדהצ
י שנש
ת פולצ
ר ש
בוד מולע
,שראפ הדתמישבו
,וי ילבמ
ני ש הצד הדתמי עאת
א ודלו
ל כוד י צכל
תיוויויבחיהת
.
תתוילאשת ודוקופ
•
ת רושיה
add
דהקו פוא הרנוגדשה
ה לקמח ב
) co
mm
and
( :יםתונהנ
ה בנ מצב מאת
ה שנ מואה
•
ם תירושיה
length
,getVersion
,getLastVersion
ם ה
ותלתאיש
) qu
erie
s( :
ה בנ מצב מותוד אדעמי
ם ריחזי מהם
יםתונהנ
,תואו
ם שני מלא
ל אב
•
ותלתאישת ודוקו פבין
נו רדהפ
:ש
ין א
יה ודפק
ם גהםש
ם תירו
תהילשא
ם וג
•
דהפרהה
ת בושיח
:קהחל משל
ק שממ הנתהב
ל עלהקימ
,זהחו הרתגד העל
ה ילמק
•
ם תיעיל
)ותוקרח
(ד ריהפ ללא
ת בוטו
ת בוסי
ש י
)יםועיצב
,(..
.
ב •בהטו
ה יב סדריעה
,דוריהפ
!
יםברהס
VersionedString
n: 26
last:
Version
value: "The letter Z"
previous:
Version
value: "The letter Y"
previous:
Version
value: "The letter A"
previous: null
השמומי
קהחלמ
:וןעיהר
יםברהס
קהחלמ השמומי
:תדושה
ותשד במרשם נעצ
ל ש
עי רג הצבהמ
,צםלע
ם כישייש
ם תנישמ
: class Version {
String value; זוסהגר
ל ש
ך ער ה
Version previous;
מתודהק
ה רסלג
ת סויחתיה
,שם יא
} class VersionedString {
protected int n; ותסאגר הפרמס
protected Version last; נהרואח
ה רסלג
ת סויחתי ה
…
}
ת דוש
)fi
eld
s (
םעצ
ל ש
ותשדה
יםתנש משל
ה וצקב
ם הצם עשל
.
ב מצ האת
ם גייצמי
ם להש
ם כיערה
צםהע
ל ש
עי רגה
.לו
ם טייפר
ת דוש
ש ת יימסו מקהחלממ
ם עצ
ל לכ
.
המ מרלוכ
יםתנש משל
יתבנ תעין מיא הקהחל
.
ם עצ
יםצר יושרכא
קהחלהממ
,ל ש
י טפר
ק ות עלו
ש שי
ם עצ
ו הז
ת בניהת מצקנו
ד אח
ל כ
ותשדמה
.
צר נוצםהע
ר שכא
טי ומוט אפןאו ביםחלותמא
ם עצ
ל ש
ת דושה
.ם תניש מגם ךדר
ה ותבא
ת טיומוט איםחלותמא
ם תירושי וותגרש
ל ש
ם נייזמ
.קי חו
ת א
שךהמ במדנל
ל חואתה
.
Vers
ione
dStr
ing
n: 2
6la
st:
Vers
ion
valu
e: "
The
lett
er Z
"pr
evio
us:
Vers
ion
valu
e: "
The
lett
er Y
"pr
evio
us:
Vers
ion
valu
e: "
The
lett
er A
"pr
evio
us:
null
קהחלמ השמומי
:דהקופה
public void add(String s) {
Version l = new Version();
l.previous = last;
l.value = s;
last = l;
n = n+1;
}
יםברהס
קהחלמ השמומי
:תתוילאשה
public String getLastVersion() {
return getVersion( length() );
} public String getVersion(i) {
Version v = last;
for (int j = length(); j > i; j--)
v = v.previous;
return v.value;
} public int length() { return n; }
יםברהס
ק חל
2 'ג
יםילתחלמ
ה אוו
יםברהס
םביטימיריפ
ם כיער
ת מעו לתיוסוחייתה
•
'בגה יאוו
יםוסיפט
גי סו
ני ש
ש ,
יםתנש מגיסו
ני ש
ך לכ
ם תאבהו
•
יסבס
ם רייספ מיםוסיפמט
ם תנישמ
יםי
,יםלמש
,ם ריספמ
פה צדהקובנ
,יםתוו
,יםאניליבו
ם כיערו
,ם תניש מיםראנק
יםביטימיריפ
;קהחלממ
ם עצ
די ל י עיםצגמיו
ם אינ
ם ה
;יםסו מותרוישאפ
ם חומת
ך ער
ל כי מזה כנהשתמ
,ה תנשומ
של כוו יאינ
ה כז
רך עילהכ ללא
•
ת סויחתי הילהכ ליםוליכ
ם ריאח
ם סיפוטי מיםתנשמ )
refe
renc
e (
מהאימת
ה לקמח מצםלע
,ך ער האת
או null
צם עוםש לעת כחסתיי מינו אנהשתהמש
תו עושמשמ
•
יםצמבע
ת דוש
ליםחלותמא
-0
או
false
או
null
•
לותחלותמא
ת ויוחסתייה
-null
ניאליבו הספוטיה
ם ניייאול ביםתנשמ
)bo
olea
n (
יםרכ עשני
ל קב ליםוליכ
,tr
ue- ו
fals
e .
אהשוו השל
ם ריטופראו
,ון כג
==) יוןשוו
( ,!=)
יוןשוו
אי ( ,< ,> ,
<= ,>=)
טן ק
, מ מולגד
,והשו
או טן ק
,והשו
או ל דוג
(אניליבו
ך ער
ם ריחזימ
.
םמישל
ם סיפוטי
'גיםלמש
ם תניש מסיפוטי
גי סו
ה בעאר
ת פקמס
ה אוו
:
byte
8
ש מוגיצבי
ת ביוסי
ם לי
2
short
16
ם ליש מוגיצבי
ת ביוסי
2
int
32
ם ליש מוגיצבי
ת ביוסי
2
long
64
ם ליש מוגיצבי
ת ביוסי
2
ם לייליש
או ם בייחיו
ם מישל
ם ריספ מצגליי
ם ליכום ישל
ס פוטי מיםתנשמ
)או
פסא
.(וגיצבי
ת ביוסי הפרמס
פי ל עבענק
ס פוטי
ל כשל
ח טווה
,ל שלמ
-128
ד ע
127
וסיפמט
ם תנישלמ
byte
.
בגין א
'בדבל
ם לייליש
אי ם ריספ מוגיצלי
ם סיפוטי
ה אוו
,ת גמדוכ
unsi
gned
int
ת שפ ב
C.
char
םשל כתו בשמושים ווית
ג צויי ל
'גיםתוו
ג צוליי
י יביטימפר
ס פוטי
ת פקמס
ה אוו
.נו שא
ם ליסמ ההם
ם ווית
סטטק
ג צוליי
ם בה
ם שיתמשמ
,ותתי־בפאאל
ת תיואו
ם ליול כהםו
,ותפרס
,סופי
מניסיו
ק
.ותימסוי מותשפב
,
יתסינ ויתפנ יגוןכ
,
ם גייצמי
יםתוו
ותרמוגדאאי
,לםש
ון עי ראו
ה למש
ה יל מיםצגמייש
ם ליסמ
.ם גיםללכו
ם ווי ת
יםכניוט
ם טייתמ מיםמנסי
,יםיצח
,ודוע
.
'בגל ש
ג צוביי
ם לייליש
י איםפרמס
י יד
ל עיםצגמיו
ם ווי תוהאו
16ותביסי
.
ודיד קפי
ל עיםתוו
ם דיודמק
ם ריספמ
ודיקיונ
)
Uni
code
( ,ל עדרוגשמ
ד דוקי
מי אונלבי
ון רג אדיי
)ww
w.un
icod
e.or
g.(
תול כורעב
ר ספ מירגד מודיקיונ
.
שללמ
,תו ה
'A'
ר ספהמ
די ל י עדדקו מ
65 ,תו הלואיו
' א'ר ספהמ
די ל י עדדקומ
1488
.
ס פוטי מיםועקב
char
ך ער הותצעאמ באו
ם שייגר
ן בי
ת כניתו בצגליי
ן ית נ
ריספהמ
:
char c
= '
A';
c = 14
88;
//א
ת ריעב הותהא
ת אצגמיי
ה תנשהמ
ת כע
ותרוזמח
ו איםתוו
ל עותולפעב
,יםתוו כיםתוו לסתיחתי מפהשה
,ת עלפוו
אםהתב
.שללמ
,תו כתואו
ר ששר מזתרומח לתו
ר שושר
,ל ש
ר שושר
ת ומלע
לםש
,רךהע
ל ש
ני רושהע
ג צוהיי
ת אזתרומח לשרשרשמ
,
char c
= '
A';
String
s =
"The
lett
er "+c
; //
s is
"T
he le
tter
A"
int i
= 65
; String
t =
"The
numb
er "+i
; //
t is
"T
he n
um
ber
65"
יםפרמס
ל עותולפע בלםאו
'ג, יםליליש
אי ם מישל
ל כא
ם ווילת
ס יחתי מוהאו
,יםפרמס לתםאו
ף סיהו לתןוני
,יםפרמס מתםאו
ר חסל
,ליכוו
.ר חב לגם
תן ני
ווימת
ם ריספ מסרלחו
, םיםחר איםתוו
ר יצמיש
ה מ
:
char c
= '
A';
char d
= c
+ 1;
// d
is 'B
' int i
= 3
- d;
// i
= 3
– 6
6 =
-63
פה צדהקול נש
ם סיפוטי
'גם שייממ
ם ריספ מיםילמכש
ם תניש מורעב
ם סיפוטי
י שנ
ת פקמס
ה אוו
פה צדהקול נש
ג צוביי
:
float
32
ותביסי
:1
מןסי ל
,8ה זקלח
)
ל ש
-ו, )223 ל
ברש
double
64
ותביסי
:1
מןסי ל
,11
קהחז ל
-ו, 23
ברש ל
ם ש בטידרטנ סמטורבפ
ג צוליי
ם דיועמי
ם סיפוטי השני
IEEE
-754
.ם תנישמ
יםשיממ
ם ריספ משל
ה וצקב
ק רלא
ג יצלי
ם ליכוו ילל היםוגיצבי
,גם
א אל
•
וףנסאי
ס ינוומ
ף סואינ
,או
ג צוהיי
ל ש
ח טוו לברמעש
ר ספ מיםצגמייש
מתש
ה דר סשל
ל בוג
וףנסאי לסתכנ
.שללמ
,-1.0/0.0=-∞
.
• "
פרמס
נו אי
" ,N
ot a
Num
ber
או
NaN
,ב שוחי
ת צאתו
או ך ער
ג יצמיש
רתגדמו
א ל
,מו כ
0.0/
0.0
.
•
יםליליש ויםביחיו
ם סיאפ
,ך ער האת
ם גייצמיש
0ה דר סשל
ל בו גאו
לסתכנמתש
-0) ליליש האו
בי חיו הווןכימה
.(
מהשה
ו םטימנגואר
ת ברעה
םייטבמיריפ
ה שמה
חרלא
ד אח
ה תנשממ
בי טימירי פרך עקהתימע
,או
נהשתלמ
ה תנשממ
ת סויחתי הקהתימע
int x = 5;
int y = x;
y = 3;
ל ש
ך ערה
xין די ע
5 ,ה תנשלמ
ק עתהו
ק רלוש
ך ערשה
ם שומ
y שךהמ בנהשוש
;רך עסוןאח לכלמי
א הו
בי טימירי פנהשתמ
. מהשלה
ה ולשק
ת רושי לביטימירי פרך ערתעבה
ע צובי
ני לפ
ף גו
ותירשה
:
void f(int y) { y = 3; }
int x = 5;
f(x);
// x
sti
ll co
nta
in 5
; equ
ival
ent t
o { y
=x; y
=3; }
יםברהס
s: t:Ve
rsio
nedS
trin
g
n: 1
last
:
תיוסוחיית התברעוה
ה משה
ת סויחתי המתשה
)נטומרגכא
ה רתעב האו
(ת אקהתימע
ותחסתייהה
,ליו איםחסתיישמ
ם עצ האת
א ל
:
VersionedString s = new VersionedString();
s.add("V 1");
VersionedString t = s;
t.add("V 2
");
s.getLastVersion(); // r
etu
rns
"V 2
" מהשהה
רי אח
,וקדי בצם עתואו ליםחסתיי מיםתנשהמ
ני ש
,ך דר
ם עצ הצב מנוישי
כן ול
tש
ם עצ האת
ה שנ מ
-sס יחתי מ
ליוא
,מהגריאבד
מו כ
:
יםברהס
ון עיבק
)im
mu
tab
ilit
y(
ת רושיב
add
רהעבהוש
ת רוזמח לותחסתייהה
ת אקנועת ה
,
public void add(String s) {
Version l = new Version();
l.previous = last;
l.value = s;
last = l;
n = n+1;
}
ת רוזמח השל
כן תו האם
ותתנשלה
וי שע
,ם עצשה
ת אורסהג
זי א
תנושר יומש
נו של
;הת
ה לז
א ל
ונוכו
.
בגת וזוחר מבלא
'רןצו ייחרלא
ת תנוש מלאת ועוובמק
ה אוו
.
יםברהס
מהשוה
ון עיבק
ס פוטי מיםתנששמ
א הו
ם עיובמק
ם מיעצ
ל ש
ת ונותרהי
ד אח
יםביטימירי פיםתנש ממו כרךבע
ם גינהמת
ע ובמק
,בן מוב
נהשתלמ
ך ער
ת בעקו
ם וכלת
ה שמשה
,ה תנשא ישל
ך ער שחד
ה שמלה
ט פר
ה ולפע
ם שו מאהוצכת
נהשת מתואו לה
.
public void add(String s) {
Version l = new Version();
l.previous = last;
l.value = s;
last = l;
n = n+1;
}
יםברהס
וןוישו
ת קדיב
ר טופראוה
==
יוןשוו
ק וד ב
:
• יםבייטימפר
ם כיער
ין ביוןשוו
•
ותסוייחתי הבין
ון וויש
,לוכ
ת ויוחסתיי התיש
ם הא
ר מרוןיכבז
ם עצ
תו או לותחסתיימ
•
ם וניש
ם מיעצ
ני ש לאם הדקבו
א ל
)תםהובז
(ההך זער
ש י
:
String s = "The letter A";
String t = "The letter " ; t = t + 'A';
if ( s == t ) …
//
retu
rns
fals
e
• ת רושיה
equals
יםרכ עבין
ון וויש
ק דולב
ר מו א
if ( s.equals(t) ) …
//
retu
rns
tru
e
םמישל
ם ביטמיריפ
ם כיער
ין בוןוישו
ותתעהפ
ן אי
:ר טופראוה
==
ר חזימ
true
כםער ביםשוו
ם מישל השני
ם א
,ם תוי
בי לג
ל כנו
)ch
ar (
יםאניליבו
ם כיערו
.
פה צדהקוי נרכע
ין בוןוישו
ותתעהפ
ש ן יכא
,יוןהג
הן ריחומא
ר תתמס
ל אב
.ם אינש
ם ליגי ריםפרמס
בי לג
0 ,
התה
טהשו פותהגנ
==
:ר חזימ
true
יםשוו
ם כיער השני
ם א
,ת חרא
fals
e .)
וקדי ביםשוו
!וליג עותיאשג
ל גלב
,1e20+1e0-1e20==0
,שללמ
(
יםפס אבילג
, =
=ר חזימ
true
פס אהם
ם כיער השני
ם א
,ד אח
ם אגם
א הו
ם כיערה
0.0
א הו
ני שוה
-0.0
.ה דר סשל
ל בו גיםקפש מלוהל
ם כיערה
לסתכנמתש
-0יווהכ מ
ליליש הווןכימה
או בי חיו הן
.ס אפ השל
מן סיה
"כרזו
" לסהכנהת
ה דרהס
ן יכמה
-0 ,
ר טופראו הבילג
ל אב
==
ה דרהס
ן לא
ב שוח
סהכנהת
,עהגי היא הכןהי מלא
.ם סיאפ
ן בי
ן ויושו
)ה צפ
ה ודנק
י רכ עביןו
ליכל
ן ופבא
(הה זפןאו ביםהגתנ מיםשוו היםרכהע
ני שש
ד למ מלא
.שללמ
,שונ
ם מניסי מיםפסא
נהשו
ן ופבא
ם סידפמו
ם י
;י טובי הרךע
1.0/
0.0
א הו
וי יטהב
ך ער
ל אב
ף סואינ
1.0/
-0.0
וףנסאי
ס ינו מוא ה
.
תר יווטש פפןאו ביםהגתנ מיםופנסאי
:בי חיו
ף סואינ לוהשו
י ובחי
ף סואינ
ליליש ללילישו
,ליליש
ף סואינ לוהשו
א לביחיו
ף סואינ
ל אב
.
ר ספ מינוא
)N
aN ,
not
a nu
mbe
r(
עכל מנהשו
, רךל מכ
ל ולכ
NaN
.ה זגם
יעפתמ
,וניגי הבלא
.כוער
ה מיםדע יואיןש
ך ער
ג יצמי
ה תנש משרכא
,אי
חר אנהשת משל
ך ער לוהשו
א הוש
ר ומ לשראפ
,ה תנשהמ
ל ש
כו ער
ם אגם
חרהא
ועיד
נו אי
.
וםיכלס
,ר טופראוה
==
ון וויש
א ול
תי מו כיוןשוו
ה צפ
ה ודנק
כי ער
בי לג
ק ודב ם כיער השל
ם גיצוהיי
ן בי
שבמחב
.יםקרהמ
ב רוב
,ל ש
ת גונההתה
==
א הי
יםריומם נמייתורלגבא
ה צויהר
ת גונההתה
.
תעובוק
ת זורוחמ
ין בוןוישו
ה ועקב
ת רוזמח
ה ותבא
ם מיפע
ר ספ משתתמש מיתכנתו
ר שכא
)ר מלוכ
יתכנתו בעהפימוש
ת רוזמח
( ,
ג ואוד
ר חוז השמושי האת
ה זה מלרפייומהק
מרש יזתרומח השל
ד אח
ק ות ערקש
.גו
ה ז
ין ביוןשוו
ת יקבדש
ך לכ
ם ר
ה ירחז מעהבו קזתרומח
ה ותלא
ת ונוש
ת ויוחסתייה
true
.שללמ
,
String
s =
"The
lett
er A";
String
t =
"The
lett
er ";
t = t
+ 'A
';
if ( s
==
"The l
ette
r A" )
… //
retu
rns
tru
e if ( t
==
"The l
ette
r A" )
… //
retu
rns
fals
e
רהמוז
ת קצ הותהגתנהה
לל כרךבד
ה יעפר מלא
זו ה
,ין בותזה
ם קיודשב
ון כימ
ת רושי הרתעז בותרוזמח
equa
lsת זרבע
א ול
.=
=
ם עיובקמ
ם מיעצ
ל ש
ת הות זקדי בדיל יע
ון וישו
ת קדיב
)תזורוחמו
(
ת רושי הרתעז ביוןשוו
ת יקבד
equa
lsר שמא
ה יליע
ת חו פלל כרךבד
א הי
ת זרבע
ת ויוחסתיי השל
ת הו זקתדיב
.==
שללמ
,יקבד
ת וזוחר מבין
ן ויושו
ת ותרוזמח התיש
ת אקתודב
תור אח
תו
.
בגת וזוחרמ
'ם עיובמק
ם מיעצ
הן ה אוו
)im
mut
able
.(ם עצ
ל ש
כו ערש
רי אח
בענק
ה כז
,תר יונהשת מינו אואה
.ך כזתרומח לותחסתיי הותשנ לתןני
רתאח
ת רוזמח לחסתיישת
,מןעצ
ת וזוחרהמ
ת אותשנ לתן נילא
ל אב
.
עבין
ון וויש
תן ני
ל לכ
ד אח
ם עצ
ת ירשמ
די ל י עלהעיה יורבצ
ם עיובמק
ם מיצ
רישאפ
ך ער
ל מכ
ר ותהי
.שפוחי
ר שאפשמ
ם ונינת
ה בנ מיםצריו
,ץ עמוכ
וביב גלתטב
ו אשפוחי
.א הו
ק ספ מזה היםתונהנ
ה בנשמ
ד חיהי
ת רושיה
כותו לצם עסתכנה
.צםלע
ת סויחתי הירחז מותירשה
.ה יאקר המןבז
ם א
יםתונהנ
ה בנבמ
ן אי
ת רושיל
הה זרך עעם
ם עצ
,
ם עצ האת
ס כני מותירשה סכנהוש
ם עצ לותחסתיי הירחזומ
ם ונינת הנהמבל
.ם עצם ענהמב בש יאם
הה זרךע
,נהמבשב
ם עצ לותחסתיי הירחז מותירשה
,ת אנהמב ליסכנ מלאו
ברועשה
ם עצה
.אי תנ היםקימת
ה הז
ת רושימה
ו זרוחשה
ת ויוחסתיי הבין
עבהוש
ם מיעצ האם
ת שוו
ת ויוחסתיישה
יםזה
ת רושי לרו
.ם מיעצ הסתכנה
רהיק
ת היו ליהשו ענהמבל
,לה זויא הותזה
ת יקבד
ן מכ
ר אח לבלא
'ג. ה אוו
ת רושי הרך דזה כנהמב
ת פקמס
inte
rnותרוזמח
ל ע
:
s = s.
inte
rn();
t = t.
inte
rn();
if ( s
==
t )
… //
retu
rns
tru
e
equ
als
•
ת רושיה
equals
יוןשוו
ק דולב
ר מו א
, עשניש
בן מוב
ם מיצ
ם ארקם ו איםשוו
יםזה
ם תירושי
ד תיבע
קו ספם יה
•
מרלוכ
,ם א
sו -tהםיני ביףחללה
ר שאפ
אז ם הי ז
,ם קובמו
s בידתמ
ש תמשלה
-tפךהיול
'ג •ת רושי
טי ומוט אפןאו בקתספ מוהאו
equals
קהחל מכל ל
•
ר חזי מפקסוהמ
ת רושיה
true
ם הים זמיעצ השני
ם ארק
)
צם עתואו
( ;כונה נדרהג
ל כל
ך דר בזו
וי שינ
רי ביםצמלע
ה )
mut
able
,יםבעקו מלא
( •
ת רושי האת
ר דיהג ליךצר
ם עיובמק
ם מיעצ
ל ש
ת קוחלבמ
שחדמ
;כוןת נעלפו
ה אינ
ל חדהמ
ת ירבר
•
יםבעקו מיםצמ עורעב
,ל שכ
ל כל
ך דר ביא הנהכוהנ
ה דרהגה
יתיברסקו ריםשוו
ם הותשד הותוגז
יםברהס
ה פשה
טהמ ללהעממל
•
ת עושמבמ
ה כעד
נו דזה
ק חלב
ותשדם ותניש משל
•
ה לקמח השל
ש מומי ביםרט פירבה הזה היוןהד
Ver
sion
edSt
ring
כהד עיםורבר
יו הלאש
• רסקו השל
ה הז
ק חל השךהמב
,ר ספ מארנת
יםבטהי
ם נייטכ
גפתש
ל ש
'ותכניתו
ין הבול
ב תולכ
ה ש קהםדילעשב
ה אוו
•
ם תירושי
ש מומי ליםורש קעת כהם בדוןשנ
ם טייבהה
ותורצדרוופ
•
ש השל
ם טייבה
נו דו יייםצמ עחהמונ
ת כנולת
ם רישושק
ה פ
ה ק זחל בלאס וורהק
ך שהמב
יםברהס
גתיוכנתו
'והאו
•
גיתכנתו
'ותלקמח לקתולמח
ה אוו
;ט פר
ת כניתו בבר דוםש
ין א
ותלקמחל
•
ת לוביבח
ת דווגמא
ת קוחלמ
)pa
ckag
es(
• ה לקמחה
Ver
sion
edSt
ring
ה ילחב ב
il.ac
.tau
.cs.
ooj
ץ ובבק
ת דרוגמ
il/ac
/tau
/cs/
ooj/V
ersi
oned
Stri
ng.ja
va
• ותלקמח
ד עו
ל כילה
ל כוץ יובהק
,ת קוחללמ
ק רותשגין נ הבלא
בץקו
תו או בותחרא
;ל ש
ה שנ מותלניקב
הן V
ersi
oned
Stri
ng
• ץ ובהק
ת אגםתר מלרפייומהק
.java
ץ ובלק
.c
lass
•
צי קב
.cla
ssג סו מיוןרכבא
ל כל
ך דר ביםרזנא
ja
r
• רכמע
די ל י עלתפעמוש
ה יצהר
מן ת זיבסב
ה יצמר
ה עלהפ הת
ת רושי
ת רצ הדיל י עיתכנתו האת
mai
nותלקמח החתבא
יםברהס
תרועה
ב שמח הדיל י עראיקלה
ת עדמיו
ת כניתוה
)די ל י עשהמעל
לרפייומהק
( ,יםתנכניתו
די ל י עגם
ל אב
יםשיאנו
ם איורלק
ק רעדמיוש
ת כניתו בסטטק
הן ת רוהע
/** Returns a specific version */
public String getVersion(int i) {
Version v = last;
/* count down the list */
for (int j = length(); j != i; j--)
v = v.previous;
return v.value;
// we are done
}
ף ד
יםברהס
יק ר
תרוע הגיסו
'בג
ותער הגיסו
ה שלוש
ה אוו
/** doc comment;ד עותי לרתובשע
ה ער ה
*/
/*
להגי ררההע
,ותורש
ר ספ מעל
ס פרהת ללהכוי
*/
//ה ורש הוף סעד
ה ער ה
ד עותי לותערה
)do
c co
mm
ents
(ת דרהג
ני לפ
ת עופימוש
קהחלמ
,דהש
,ותברעו
ת רושי
או ,
א קרשנ
לי כרתעזב
java
doc
קהחלהמ
ל ש
ון קוהמ
ד עותיל
; ותבנמו
הן ד עותי לותערה
,ש וי
כניתו לשראפ לעדמיוש
ד וחמי
ט רמפו
הן ל
ת אעדלת
תן ותירש
ל ש
ם טימנגוארה
,רהחז הרך עותמעש מאת
,מהדווכ
.ערהצ
ה רבלמ
,זהחו הודיע תאת
ל ול כלא
ט רמפוה
ד וחמי
פן גו באו
ת ריעב בעופי יוותער היםקפשב
)co
mm
ents
(ר וחמי המוןסי הלאל
)/* *
/או
//(
ף ד
יםברהס
יק ר
תקוחלמ
ת דרהג
ח פתהמ
ת יל מדיל י ערתגדמו
ה לקמח
clas
s ,
לאם ש
ה ריח
קהחלהמ
,ותיטשוה
ת דוש הותדרהג
ה ריאחול
;ובש חלא
ר סדה
class VersionedString {
int n;
public void add(String s) {…
} public int length() {…
} public String getLastVersion() {…
} public String getVersion(int i) {…
} Version last;
}
ף ד
יםברהס
יק ר
תרודווצפרם ותירושי
ת דרהג
הותירש
יא
רהשג
קהחלהמ
ל ש
ע ופ משל
ת דוש לשהגי
ה לששי
ה ורצדרופ
)הלנו
(פעמו
ל ש
ת דוש לשהגי
ה לאיןש
ה גרש
א הי
,ח פתהמ
ת יל מרתעז ברתגדמו
א היו
static
ת רוצה השל
ה דר סדיל י עותדרוג מיםוגהס
ני ש מותגרש
ל ע
יםתנשמ
יםמני ז
) va
riab
le d
ecla
rati
ons
(ועיצ ברי ביםוקפסו
ותהרהצ
ל כילה
ת לוכו י
ועיצ בבר
ל חוית אוקפס
public String getVersion(int i) {
Version v
= last
; for (int j
= l
ength(); j
!=
i; j
--)
…
בו
ש מושי האת
ם דיהק לכהרי צמניה זתנש מרתגדה
ף ד
יםברהס
יק ר
םיימנם זניתשמ
ל חותא
ת שתמש מיאשה
ני לפ
ה תנש מעל
ר היהצ לרק
א לבתחיי
ה גרש , בו
ם שיתמששמ
ני לפ
ה שמ הדיל י ערך ערובו עירגדלה
ם גלאא
רתאח
ך דר בבו
;יהלצפיומ קרתוב עאההב
ה גרש האםה
? public void test(char c) {
int i;
int x = 3453;
int d = x/c;
int r = x%c;
if (d*c + r == x) i = 1;
System.out.println("i = "+i)
; }
םניתשמ
ל ש
ם תוסש וורפמ
ל חותא
בגה הז
ק חוה
'והאו
,בו
ם שיתמששמ
ני לפ
ני זמ
ה תנשלמ
ך ער
ע בולק
ם ביחייש
,יםגמ פעם
ת ניווכ תובכת ליםנתתכ מעל
ת שוהק לעדנו
,הם ליעסי לכךוב
.
ותיבנטטראל
י שת
ש יזה הוקלח
.חתהא
,נתתכהמ
ל עוךסמל
/רו זכשי
ת ל
בוש מושי הפני לנהשתלמ
ך ער
ע בוק
.רך עלו
ע קב נלא
ם א
,תירוריש
כו ער
. ם קו מתואו בורשמ
ה היש
ן רואח הרךהע
ל כל
ך דר בוא התירוריש הרךהע
רוןיכבז
,ה תנש מורעב
ה הי
ה הז
ון כרהזי
א בת
ם ודהק
ש מושישה
ר בישס
ת רולמ
יתכנתו בחרא
.ת פוש בוקהח
ה ז
C- ו
C+
+ :
ם ליתחאו מנםאי
ם תנישמ
יתמטטואו
נתתכהמש
ק וד בנואי
ר ילפיומהק ו
/חלית את
/תםאו
ה .
יםסוי מרךלע
י מטטואו
ן ופבא
ם תניש מתלאח ליא היהשני הבהטירנלטהא
,שג
י כפ
'ם מיעצ
ל ש
ע ופ מותשד
ת חלאת מוהאו
) לולתחא
-0 ,
fals
e ,
או nu
ll.(
ותימסוי מותשפ
,
מו כ
Eiff
el ,
אתת זשועו
.
יםקי הוקהח
ת ומלע
ת בוטירנלטהא
י שת
ל ש
ן רויסהח
בג
'אי ש
א הי
ה אוו
נתתכהמ
די ל י עולתחא
/יתכנתו בגם פלל כרךבד
א הו
ת :
נתתכהמ
/ט שו פת
כחש
/בו
ון שרא השמושי הפני לנהשתהמ
ת אחלאת לה
'ג. ק חו ברתוח בוהאו ולתח אאי
ת לולג
ר ילפיומהק
ל ש
ת וליכ העל
ך תממסש
ני מרש
,ע סיי לנתמ
ל ע
צהפוה ניאשג מנעימלה
ם תיכנמתל
.
מרף שק במהוגהדש
י כפ
אה ,
ל תחתא
ד מי תרהשג ההםשב
ם רימק
ש י
נהשתמ
,כך בוחבט
ת היו לוליכ
א ללרפייומהק
ל אב
.ה שגי בקט נולרפייומהק
להכא
ת רושג
ל מפלק
ב סרומ
ת רנישמ
.
גשל
ק חול
'נהשורא הבהטירנלטלא
ס יח ברוןיס חגם
ש ה יאוו
,ה טנ קעהגיפ
ותיליעב
.אהמר
ף שק במהוגהדש
י כפ
,ת אחלאת ליךצר
ם בהש
ם רימק
ש י
כךר אח
ס דר נידתמ
י לתתחהה
ך ערשה
ת רולמ
ה תנשהמ
.ר ובמדש
ן יוומכ
ת דדבו
ה כונמ
ת ודפק בידתמ
ט מעכ
)מהשה
( ,נהט קותיליע בעהגיהפ
.
גשל
ק חול
'ועקב
ך ער לטיומוט אולתח אמתעו לרוןיס חשהמע לאין
ה אוו
,נתתכהמש
ם שומ
/מועצ בזה הרךלע
ל תחלא
ל כו ית
.ט קסלט
ה טנ קפתוסת
חנהאי
ת כניתו השל
רוןיס
,ה מוםסת
א ול
ש ורמפ
פן או באהמר
א היש
ם גמה
נהשתהמ
ל ש
כו ער
.
שמושיוה
ה הרהצ הדרס
ם קו מבין
ס יח הוא היםמני זיםתנשמ
ן בי ופעמו
ת דוש
ן בי
י רנצו
ל בד הודע
הם בשוןרא השמושי הוםמק והםלי ערהצההה
.ה גרש ביםמני זיםתנש מעל
הם בשוןרא השמושי הפני לירצהלה
ם ביחיי
.אתת זומלע
,ת רושי
ל ש
ה דרהגה
ני לפ
ע פיהו ללהכו יקהחלבמ
ם ריאח
ת רושי לאו
ע ופ מנהשתלמ
ס יחתישמ
חרהא
ת רושי השל
ה דרהג האו
ה תנשהמ
ל ערהצההה
.
ותמעש משה יגרש ביםוקפס הדרלסש
א הי
ך לכ
ת רייקהע
ה יבהס
:ם קיסוהפ
דרהס
י לפ
ם עיוצמב
,ותלאלו ברק
ת שרחמת
ם וד קוקפס לרהחזו
.ת ומלע
אתז
,יבהא
ן בי
קהחלמ
ל ש
ם רי
,להש
ם תירושיול
ת דושל
,ר סד
ס יח
ן אי
תיעושממ
.
שגך לכ
ת שני מבהסי
'ת דוש ויםותירש לחסתיילה
ת רושי לרתשאפ מוהאו
וי ש עיםותירש
ן בי
ס יחש
א הי
ה לקמח הרתגד השךהמ בעהפימו
ם רתגדשה
ליעג מותהיל
.מרלוכ
,ת רושי
fת רושי לואקר לשוי ע
g לראקו
ו ידמצש
-f ,
שיא י ליהרסקובר
. רהזה כרהמקב
,ש מושי הפני לותירש
ל כירגדלה
ר שאפ
אי .בו
געדומ
'עפמו
ת דוש
ת טימטואו
ת חלתאמ
ה ווא
?
בהשו תלנו
אין
הזו
להשאל
.
ר ות ישהשק
הן
ותרישאפ
ותובש תתיש
מני זנהשת משל
ר שמא
ה שד
ל ש
ל חואת
י אוקבד ללרפייומלק
,אי ש
ו א
ת וניווכבת
ר ותר ידי נגם פוא הפעמו
ה שד
ל ש
ל חואת
ל עגןלה
ך ור צאין
כן ל
ניומפ
ם תיכנמת
.נהכוה ננייש הבהשוהתש
ה ראכנ
.
רהק בנימב
םייקרעי
if ( i < vs.length() )
System.out.println( vs.getVersion(i) );
else // י נלציוופ א
System.out.println( "No such version!" );
while
( v != null
) v = v.previous;
for ( i = n; i > 0; i--
) v = v.previous;
לאול
ת d
o
קףש בינוראש
ת אווללל
ף וסבנ
'ג, פתוסה נלאלו
ג סו בגם
ת מכתו
ה אוו
,
do
v =
v.pr
evious
; while
( v
!= nul
l )
ת לאלוב
doעתבצמת
ד מי תנהשורא היהרציטהא
.
ק בד נאניליבו האיתנה
יהרציט אכל
ף סוב
,יםקימת
א הו
ם וא
,טראי
ת צעתבמ
ל ש
ת ספ נויהצ
אהולהל
. האתוללל
ה ולשק
ה עללמש
ה לאלו ה
-w
hile
v = v.
prev
ious;
while
( v
!= nul
l )
v =
v.pr
evious
;
האתולל
-do
אהולהל
ני לפש
ה ורש האת
ת סכחו
,
אהולהל
ף גו לההא זהיש
.
םקיסופ
שי גו
ל עוטשל לדי כרהבק
ה בנבמ
ש תמשלה
ך רי צותובקר
ם תיעיל
קיסו פשגו
ל ש
ע צובי
דדבו
ק סו פלאם ושל
ם
זה כשגו
פההק
די ל י עמןסו מ
יםסלולמס
ם רייוגבס
i = n;
while ( i > 0 ) {
v = v.previous;
i--;
}
ף ד
יםברהס
יק ר
עלה הרהצ
שגו
ך תו בםניתשמ
שגו הוךבת
ק רשתלג
תן נישגו
ך תו בהרוצשמ
ה תנשלמ
ת לאלו
ל ש
ל חואת הוקפס ברהצה הלתול כשגו ברהצהה
for
int s = 0;
for ( int i = 1; i < n; i++ ) {
int j = i*i;
s = s + j;
} System.out.println("j="+j);
erro
r, j
un
decl
ared
System.out.println("i="+i);
erro
r, i
un
decl
ared
System.out.println("s="+s);
OK
ף ד
יםברהס
יק ר
bre
ak- ו
con
tin
ue
ק סופ
brea
kהל
ת ירעצ לרםגו
תואו
ה יפמקש
ה לאו
for ( int i = 1; i < 1000; i++ ) {
int j = i*i;
if (j > 1000) break;
s = s + j;
}
ק סופ
cont
inue
אהולהל
ל ש
א הב
ע ופלמ
ך שיממ
for ( int i = 1; i < 100; i++ ) {
if ( j % 17 ) continue;
s = s + i; ביםלקתח מלאש
ם מישל האת
ם כוס
-17
}
וית
ת ו
)la
bel
s(
י וקפס
brea
k- ו
cont
inue
ה לאלו האת
ק רלא
ך שיהמ לאו
ר צולע
ם ליכו י
תרביו
ת מיפניה
,יתצונחי
ת אוול לגם
א אל
,ון ימלס
ת וויבת
ש מושי
ת זרבע
הםלי אחסתיי מוקפסשה
ם קיסוהפ
ש גו
ו אאהולהל
.אההב
ה גרשה
,שללמ
,שתמשמ
ת- ב
brea
kשפוחי
ר צולע
ת מנ
ל ע
,
boolea
n co
ntains
Zero
s(doub
le[]
[] A,
int
n) {
bool
ean
found
= fa
lse;
oute
r: f
or (in
t i=
0; i <
n;
i++) {
fo
r (i
nt j=0
; j
< n; j
++)
{
if (
A[i][j
] ==
0.0)
{
fo
und =
true
;
br
eak ou
ter;
} }
}
retu
rn f
ound;
}
שהמעל
,כא
ה גרשמה
ר חזו ליה השראפ
ם איוצ משר
0 ,
ה גרש האם
ל אב
צאנמש
ך ער האם
הו ש מותשלע
ה יכצר
ה יתהי
, הוקפס
אז -
brea
kת אמ ביה ה
וץנח
.
swit
ch
System.out.print("You won ");
switch ( n ) {
case 1: // לםש
רי ספ מועקב
ת היו ליבחי
System.out.println("a medal");
break; //
ע בצק נסוהפ
די לעב
ה קר מאת
ם ג
2
case 2:
System.out.println("a pair of medals");
break;
default:
System.out.println("many medals");
}
ף ד
יםברהס
יק ר
םיינרבי
ם ריטופראו
- + % / *
פלכ
,וקילח
,יתארש
,וריבח
,וריסח
+
ת רוזמח לורששר
)פרמס
ר שושר
ל ולכ
,,תו
כו ו
'(
>>> >> <<
להמאש
ת ביוסי
ל ש
ה זזה
,גילוי ומטיתאר
ה מיני
<= >= < >
מולגד
, מטןק
,והשו
או ל דוג
,והשו
או טן ק
!= ==
שאי ן וויושו
יוןוו
| ^ &
גםו
,ביסילוסקאק
או , (או
ול ביםרכ עעל
יאו
ם נייא
ותביסי
ל ש
ם ריטווקכו
ם מישל
ל ע
(
|| &&
גםו
,, או
ם ריקצ
ם ניייאולב
)הא מלםתעמ
נדפרו
אהוצהת
ת אבעקו
ר כב
ון שרא האם
ני שה
(
הםשל
ת מודיהק
ר סד
פי לקףש ביםדרסו מיםוררטופהא
ף ד
יםברהס
יק ר
םיינראו
ם ריטופראו
איתנ הורטפראו ו
x-- x++
דםמק
אז ם וודהק
ך ער האת
ר חזימ
/ בידורמ
-1
--x ++x
דםמק
/רימו
בד
-1שחד הרךהע
ת אירחז מאז ו
-
די נג
ר ספמ
)מןסי
ת יכהפ
(
~ לםש
ל ש
ת ביוסי הכל
ת יכהפ
! אניליבו
ך ער
ל ש
ה יכהפ
ותימקד
ר סד
פי לאן כגם
;יםריבינ ליםדמקו
ם רייאונ
ה ואשוהה
ר טופראו
)ותימקד ביםריבינ הריאח
(מהוג דעם
:
bool
ean
-exp
ress
ion ? i
f-tr
ue-
valu
e :
if-f
alse
val
ue
System.out.println( n==1 ? "child"
: "children" );
ף ד
יםברהס
יק ר
להעופ
ם ע
ה משה
'ג
ה שמוה
ם רייבינ
ם ריטופראו
ר בו עצרקו ממוןסי בכתומ תוהאו
ה צאתו השל
הוךלת
ה זרח
נדפראו
שוןרא ה
x += y i
s eq
uiv
alen
t to
x = x + y כך
ש תמשלה
תן נייםריבינ היםוררטופהא
ל בכ
ט מעכ
*= /= %= += -= <<= >>= >>>= &= ^= |=
ותימקד הדרבס
ם וניחר איםיעופ מלוהל
ם בילושיה
,ם עחדי
ל גיהר
ה שמהה
ר טופראו
)=( ,וי יטהב
ל ש
ין ימ
ד צדםקוש
ך כ
)y (שבחומ
,ל מאש
ד צבין
ה ולפע העתבצמת
ך כחרא
)x (ין וב
צאתו
ובשחי הת
,מהשהה
ך כחרוא
ף ד
יםברהס
יק ר
םריטופראו
:תיויבטאציסואת ומודיק
ים וררטופלא
ת ביוטייאוצאסת ומודי קקיחו
ה ירגד מפהשה
פוי צפןאו בלל כרךבד
ם גינהמת
ם קיחוה
,שללמ
x + y * z ≡
x + ( y * z ) ת מודי ק
x + y + z ≡
(x + y ) + z ותביטייאוצאס
x = y = z ≡
x = ( y = z ) ת ביוטייאוצאס
הםלימא
ם בנימו
ם אינש
ם רימק בבלא
,ם רייוגבס
ש תמשלה
אי כד
)ותמוידיהק
ת בלבט
ר עזהי ליךצר
ם ארטבפ
/ותביטייאוצאס
;ם א
להטב ליםוקזק
ם את
,לה
ק קוה זהיד יקו האת
א ורשק
מי ם ג
:( x
+ y >> z
≡
??? יךצר
א לליאום ורייוג סיךצר
לי או
,איכד
ה קר מכל בבלא
ף ד
יםברהס
יק ר
םכיערמ
int[] primes; // רהצה ה
primes = new int[37]; // מהשוה
ה צאהק
primes[0] = 1; //
א הו
ון שרא הקסנדאיה
0
…
for (int i=0;
i<primes.length; //
ך ערהמ
"דעיו
"כוור אאת
i++)
System.out.println(primes[i]
+" is a prime");
םכיערמ
ה מל
?
בגש תמשלה
ן ית נרךמע
ם קובמ
'יםצמבע
ה אוו
.שללמ
,ל ש
ך ער מוםמקב
doub
les
קהחלבמ
ש תמשלה
תן ני
class
Doub
leArra
y {
publ
ic v
oid
put(
int in
dex,
doubl
e va
lue) {
…}
publ
ic d
ouble
get(
int in
dex)
{
…}
...
//ע ופ מתניש מ
}
ועמד
,כך
ם א
,יםרכמע
ה שפ הלתולכ
?ותיליע
א הי
ה ובשהת
.ל ש
ש מומיה
בגם כיערמ
'ש מומי
ל מכ
ן רויכ זנתחימב וצהרי
ן זמ
ת חינמב
ר ות ייליע
ה אוו
רנוגדשה
זו מו כקהחללמ
רי שאפ
.
בגם כיערמ
'רהש פהם
ה אוו
. הפהשה
יהםדילע בתר יויתנטלג אתהי
,כימ
וון
היאשה
יית
תר יויתמליני מה
.דךאימ
,ם כיערבמ
ת שותמששמ
ת בו רותכניתו
תר יוותטיאי
ו הי
.די כיתטגנאל
ת חו פפהש
ל ערושתפ הפהש הנניתכמ
תר יויםובט
ם עיצובי
ת שראפשמ
ה שפ
ג שילה
.
םכיערמ לתיוסוחייתה
int[] primes;
רהצהה
רךמע לותחסתיי העל
primes = new int[37];
computePrimes(primes);
רךמע האת
א מל תרהשג ה
System.out.println(primes[4]);
ס פייד
7
int[] old_primes = primes; רךמע לשהחד
ת סויחתי ה
primes = new int[100]; ותחסתייהה
ל ש
ש חד ממהש ה
System.out.println(primes[4]);
ס פייד
0
למה וליכ
ה גרש האםה
רךמע בשימיהח
ר יבהא
ת אלא
? computePrime(primes[4],4);
, לאלהכוא י ליאה
.ת איםירעב משרכא
prim
esרהשג ל
,ת סויחתי הרתעבמו
רךמעל
.ת איםירעבמ
ר שכא
ל אב
prim
es[4
] ,
לםש
ל ש
ק ות עברועמ
,ון כימ
וי יטהבש
prim
es[4
]לםש
ר חזי מ
,ביטימירי פוסיפט
א הוש
,ת סויחתי הלאו
רךמעל
.
יןא
בג
'םיימדמי
ב רםכיערמ
ה ווא
יםרכמע לותסוייחתי השל
ם כיער משל יאב
,
double[][] matrix = new double[10][];
for (i=0; i<matrix.length; i++)
matrix[i] = new double[10];
ם גשראפו
)וקדי בותמעש מתהאו
(,
double[][] matrix = new double[10][10];
נהתותח
ת שיולש מצהרימט
double[][] tri = new double[10][];
for (i=0; i<matrix.length; i++)
tri[i] = new double[i+1];
tri[7][3] ≡
( tri[7] ) [3] אלשמ לותביטייאוצאס
ף ד
יםברהס
יק ר
םיימנינוא
ם כיערמם וכיערמ
ת דרהג
int[] primes = { 1, 2, 3, 5, 7, 11, 13 };
בע
ש תמשלה
ה וליכ
ה דרהגה
יםשבחו מיםרכ
,יםועקב
ק רלא
, int[] primes = { getPrime(1),
getPrime(2),
…
getPrime(7) };
מיוניאנ
ך ערלמ
ת סויחתי הירעבלה
ר שאפ
ה גרשל
,
printPrimes( new int[] { 1, 2, 3, 5, 7 } );
ף ד
יםברהס
יק ר
ק חל
3 יםחוז
דעמי
ת תרהסו
ף ד
יםברהס
יק ר
תורזכת
:זהחוה
class
VersionedString:
In
itia
l Sta
te: l
engt
h()
== 0
add(String s):
R
equ
ires
: s
!= n
ull
E
nsu
res
: len
gth(
) ==
old
len
gth(
)+1
g
etV
ersi
on(l
engt
h())
==
s int length():
E
nsu
res
: n
um
ber
of c
alls
to a
dd()
so
far
String getVersion(int i):
R
equ
ires
: 0
< i <
= le
ngt
h()
E
nsu
res
: re
turn
_val
ue
! = n
ull
ת רושי השל
ם איתנ האת
ן כא
ו טנשמה
getL
astV
ersi
on ,
ל קוש
א הוש
ה יאקר לריגמל
getV
ersi
on(l
engt
h())
.אי תנ
ת אטנושמ הכן
ו כמ
ת רושי השל
ק רי הדםהק
leng
th.
,
איתנ
חראוה
ם קד ה
•
יםצמ עבההר
ם חיי
ת כניתו השל
ון כרבזי
יםתנשומ
,
ע רגשב
יםסו מצבבמ
וי מצ
ם מה
ד אח
ל כתוןנ
•
לאת רושי
ם בהש
ת כניתו
ל ש
ם עיירג
ם בימצ
ש י
ולפע לוליכ
• ם קד האיתנ
)pr
econ
diti
on (
שם בימצ האת
ר תאמ
ח בטמו
הם בולפע לוליכ
ת רושישה
•
שללמ
,ת רושיה
getVersion
אםל עולפ
ל כו י
ק ספשמ
ם עצ לחת אסהגר
ת חולפ
ר כב
ה ספתוו הותירש האת
•
ר אח האיתנ
)po
stco
ndit
ion
(ם מיעצ השל
ב מצ האת
ר תאמ צעתב מותירששה
ר אח ליתכנתוב
,ם קד האיתנש
ה נחבה
יםקיהת
ותירש לאנוקר
ר שכא
• ל ש
ר אח האיתנ
GetVersion
ר חזמו הרךהעש
ח טימב
הושכל
ם עצ לחסתיימ
ף ד
יםברהס
יק ר
ת יודדהצ
ד ח
םאיתנ השל
•
יםקימת
א לדםהק
אי תנ
ם א
,ת איםקי ללאש
ר ות מותירשליםסי מואשה כחרהא
אי תנ
;ם קד האיתנ
ר שכא
ת רושי לאהריק
יתכנתו בגם פעל
ה ידמעש
ה קל תוההו מיםקימת
א ללוש
•
יםקימת
א לדםהק
אי תנ
ם אגם
ל אב
,ל עולפ
ת רושי לתרמו
חרהא
אי תנ
ת איםקיול
•
שללמ
,ת אשממ לתרמו
getVersion
ת רוזמח
ר חזישי
ך כ
סהגר
ף אייןעד
נו ספהו
א לאם
ם ג
•
ר ותה ירב הצב מיםסי מוא השרכא
ר יצלי
ם גתרמו
ת רושיל
חרהא
אי תנ בארתוהמ
ה מז
פי ציספ
;ב חיי
א לחרהא
אי תנ
צריוושי
ב מצ האת
ק דיו בארלת
•
שללמ
,זתרומח לחסתיי מזרוחהמ
ך ערשה
ח טיהב ליה השראפ
יק ריםברהס
ף ד
.
םייחמה
ת אומוגד
•
די ל י עקהעס הקתפס הלתעו פותדרוג מקהעס הזהחוב
ק סימעה
)די ל י עקהעסהה
ת סקהפ
ל ש
ת חר אלהעו פגםובדעוה
( •
דם קאיתנ
ש ה יסקהע הקתפסלה
:שללמ
,ד ובלע
ה תנשני
דםקו
ם סוי ממןק זפר
תו סקהע
ת סקהפ
ל עעהודה
או
כן ל
ידעבבמ
ל מע
ד ובהעש
•
מתתיימס
ה סקהעשה
א הו
ר אח האיתנ
•
שיק בנ
ל מו
ה חוזב
ת אומח הודיבוכ
ם מנימזו
ת יכש משל
ם תירו
ם מויני מרתית ביםתנמו
)בהחו
ת תרי יולא
(בוןשבח
א •
וםיממינמה
ה טנ קרהית הם
,שא רנקהב
ת אצעלב
א של
י ותירשה
,תואו
ע בצ ללו
ר ות מבלא
ף ד
יםברהס
יק ר
תואיצ
איוו ל
•
ה גמדו הקתחל משל
ה חוזב
VersionedString
,ם איתנה
ומרגהא
ת ארקך ו אלוביהג
יםותירש השל
ם טינ
,ך ער האת
ותלתאיש מזרוחהמ
,ותירש האת
ק ספשמ
ם עצ האתו
•
יםחר איםצמ עשל
ב מצ
ל ביהג לגם
ם ליכוו ילל היםנאהת
•
ליו איעיג
ם עצש
ב מצ
ר תא מחרהא
אי תנ בוקפס
ר שכא
,ך ער האו
ת רושי האת
ק ספשמ
ם עצ הינו אזה הצםהעו
זרוחהמ
,ר תא מוקפסה
תוצא
אילוו
)
side
eff
ect
(שי השל
ותר
ף ד
יםברהס
יק ר
VersionedFolder
strings:
NamedVersString
name: "ex1.doc"
values:
NamedVersString
name: "ex2.doc"
values:
NamedVersString
name: "ex9.doc"
values:
VersionedString
n: 26
last:
VersionedString
n: 26
last:
VersionedString
n: 26
last: ת למהוגד
וצא
אי וו ל
)וירצ
(
vf.add("ex2.doc","This exercise…
");
יםצמלע
ה קרה ימ
?
ף ד
יםברהס
יק ר
VersionedFolder
strings:
NamedVersString
name: "ex1.doc"
values:
NamedVersString
name: "ex2.doc"
values:
NamedVersString
name: "ex9.doc"
values:
VersionedString
n: 27
last:
VersionedString
n: 27
last:
VersionedString
n: 27
last:
תוך שמה
אצ
וירצ האיווהל
חרהא
אי תנ
:יךדרבמ
ת וזוחרהמ
ל לכ
ה רס גפתוסנ
;זו הסהגרב
הן מחתא
,ה שמש
זו ex2.doc
,ה היה ירכע
This
exercise...
,ארש הכלו
,א יל
תנוש
.
ף ד
יםברהס
יק ר
סקדופר
קבנ ב
•
בו ד קיהפן ובוש חולתמ אתח פנק בשל
ח קושל
ח נני
1000
קלש
. לבא
א הו
ם היו
ב סר מנקהב
ד קיופ
ף כס האת
ך שומ
פס איא הבוןשבח
ה תרהיש
ה ענבט
•
זהחו האת
ך בכ
ר מפ
ק בנה
:ל אב
ם קד האיתנ
ת איםקי
ח קוהל
יםמנמזו הכתשי מותירש
ת אילפעלה
ח לימצ
א ל
•
פקה
נהכוה נורבצ
ם מנימזו הכתשי מלתעו פאת
ע בצ מיד
: פס ארתית
ה רא משבמח האם
ה יכשהמ
ת אצעלב
לו ר סוא
•
יהבע הכןהי
?כוןש נומממ
ת רושיה
,אי תנ
ת איםקי
ח קוהלו
דםהק
ף ד
יםברהס
יק ר
סקדופר הוןתרפ
•
בי לג
ה רא משבמחשה
ה מאת
ון נכ
ש פר מלא
ד קיהפש
או בוןשהח
,לג
ק בנ השל
ר אח
ת רושיש
או ע בצהת
א לבוןשהח
בי ון נכ
)דהפקהה
ל שלמ
( •
ם ולהע
בי לג
ם קד האיתנ ברק
א ללוי תלהעוהפ
ון נכ
ע צובי
שבמח בנקהב
ון שב חשל
ג צוביי
ם גלאא
•
ון שבהח
בי לג
ם תירושי הכל
ל ש
ר אח האיתנם וקד האיתנ
ב מצ
ל ש
מי פני הוגיצהיש
ם חיטימבש
ם קיסו פולכל ליםיכצר
ת אנהכוה נורבצ
ף שק מבוןשהח
ותולפעה
עווצשב
• ולפע לכל יוזה הותירששה
די כדםהק
אי תנ
,די כחרהא
אי תנ
ידעת בולפע ללווכם יריאח
ם תירושיש
•
וחלק העם
ה חוזמה
ק חל
ם אינ
לו הל
ם קיסוהפ
,א לוגיצהי
כי תואו
ין ענימ
;ם ה
כםהס
יםשונ הבוןשהח
תי רושי
ין ב
ף ד
יםברהס
יק ר
מרתשמ
וגיצהי
• ל ש
ם תירושי היםמכסת ממה
ל ע
VersionedString
? •
וגיצהי
ל וע
ם להש
ם קד האיתנ
ל עיםמכסת מהם
: •
ה שד הרךע
n לאוקרש
ם מיפע הפרמס לוהשו
-
add
•
ה שדה
last
ליעצב מ
-V
ersi
onה שדשה
va
lue
ת אילמכ
לו ש
ה רסג
nזתרומח השל
• ה שדה
prev
ם עצ
ל ש
V
ersi
onס פוטי
תו או מצםלע
ע בימצ
זתרומח
ה ות אשל
ת דמקו הסהגר האת
ג יצמיש
,גר
ש ם יג
ה ס
מתודק
,כו ערש
או nu
llה שונרא הסהגר האת
ג יצמי
ם עצ האם
ת רוזמח
ל ש
•
ם איקרו נלל היםנאהת
מרשתמ
ג צוהיי
)
repr
esen
tati
on
inva
rian
t (
ה יאיצוב
ת רושי
ל לכ
ה יסכנ ביםקיהת ליםיכצר
ם והותירש
ל מכ
ף ד
יםברהס
יק ר
קהחלמ
ל ש
ת נוכות נחוכה
•
אלבש
' :כי
ח כינו
שחד
ם עצ
ר וצר נשכא
,הו
ת איםקי מא
מרשתמ
וגיצהי
• בלבש
':יחוכה נלקמח בותירש
ל כורעב
:
ה יסכנ ביםקימת
ם א
ם וג
ם קד האיתנ
ת רושיל
ר תמשהמ
קיימת
, םה יאיצ באזי
ם וג
ר אח האיתנ
ם קיימת
ת רושימה
יםקימת
ר תמשהמ
•
גלבש
' :קהחלהמ
ל ש
ם תירושי לרט פכי
ח כינו
,ת כניתו באין
האת
ר הפ לשוישע
ד קו
מרשתמ
האם
ו
ר כב
א קיימת
ם)
נקהב
ון שב חשל
ה גילואנב
,ת אותשנ לגלסושמ
ל וכן נאי
נקהב
ל ש
ב שמח בבוןשהח
ל ש
ג צוהיי
(
ף ד
יםברהס
יק ר
ון קרע
ת תרסה
העידמ
•
השל
ם קיסוהפ
ם א
מרשתמ
צםהע
ל ש
ת דוש לרק
ם סייחתימ
,
הםלו הל
ת דוש האםו
" יםטיפר
"צםלע
,ד קו
ם שו לאין
ר ומכל
בםמצ
ת אותשנ ללתכור יאח
,ב של
אז ' ג
יתמטטואו
ון נכ
•
יםקימת
ון קרעי האם
,ני מפ
בו מצ
ל ש
ג צוהיי
ת אירסת מצםהע
ונייצהח
ם ולהע
•
ת חב רנהוכ תוחיתבפ
ר ותבי
ב שוהח
לי או
א הו
ה הז
ון קרעיה
קףהי
,ה לקמח
ל ש
ת ונונכ
ח כיהו לרק
א לשראפ מואשה
ם שומ
)ותגרש
או ם תירושי
ת וצקב
(ודהק
ר שא לותחסתיי הלאל
,א אל
קהחלהמ
ת אשממ לגם
ודהק
ר שא בותתל
א לל
ה ות אוקבדול
;
ותתל האי
יםטנ קיםלקלח
ל דו גקטרוי פרקלפ
ת שראפמ
ף ד
יםברהס
יק ר
עידמ
ם ריתיסמ
ד יצכ
•
ם הצם עשל
ת דוששה
ח טיהב לקל
א ל
"יםטיפר
" •
יתשרא
,לו
ש שי
ח קושל
ח טיהב לשי
צםלע
ת סויחתיה
,ל כושיו
יםותירש
ל עיהפל
,ת איםיברכשמ
ת דוש האת
ת שנו לכל יולא
הוגיצי
,א רולק
ל כוח יקו לוד קאם
ם גמרלוכ
vs.add("x")
,ע בצ לכלשיו
ר סוא
vs.n=3
או
vs.last=null
'ג •
ם ריגדמו
ת דוש האם
ה ת ז אחהטימב
ה אוו
private
•
יתשנ
,יםבעקו מלא
ם מיעצ לותסוייחתי ההם
ת דוש האם
,ש י
ם מיעצ לותסוייחתי ההיוא י לקהחללמ
ץ חו מודלקש
ח טיהבל
לוהל
, ליםצמלע
א ול
לי כום ויהאל
ם סייחתי מהםש
ם עיובמק
א בי סיוררק
פן אוב
א(ר ספ מהיושי
ר סו
ם סיחויי
ותשדל
( •
תהאו
ש רולד
תן נילאי ומד
ה זק חהזו
ה שריהד
ם תיעיל
ף ד
יםברהס
יק ר
תיוטפר בעהגיפ
ם ע
ת דוודמתה
•
וטש פכיה
:ש
ם מיעצה
-"יםלפדו
" יםבעקו מ
•
וטש פגם
:ל ש
ב מצה
שם מיעצה
תףשת מלא
ם פיולד
ורינובא
טהאני
•
שללמ
,ותבעקו מהיו
א לותרוזמח
ם א
,ש
ר דיהג ללנוכוי
-getVersion
זתרומח לותחסתיי הירחז מ
,כן יתש
ת רולמ לסהכנהוש
אז מתהאו
ה שינ
ני צוחי
ד קוש
-VersionedString
•
רהרי באין
לי או
ל אב
ע רוג
:דםהק
אי תנ
ני צוחי
ד קוש
ם שיור ד
פודלש
ם מיעצ האת
ה שנא יל
,ליכל
ר ותן יופבא
או ,
תנה
ם אי
פודלש
ם מיעצ ביםתרמו היםנוישי האת
ם ליבימג
ף ד
יםברהס
יק ר
אהמל
א לתיוטפר
:ורטטראי
םי
יםסוי מצם עשל
ם רייב אוקסר לשראפ מוררטיטא
class VFIterator {
VersionedFolder vf;
int nextString;
public boolean hasNext
() {
return nextString < vf.strings.length-1;
}
public NamedVersString next() {
return vf.strings[ nextString++ ];
}
}
ף ד
יםברהס
יק ר
תייבנ
ורטטראי ה
class VersionedFolder {
NamedVersString strings[];
…
public VFIterator iterator() {
VFIterator i = new VFIterator();
i.vf = this; // זה היךדרלמ
ס יחתי מוררטיטהא
i.nextString = 0; //ה שונרא הזתרומחול
return i;
}
}
ף ד
יםברהס
יק ר
תולעפ
ה ורטטראי
VersionedFolder vf = …
; …
VFIterator i = vf.iterator();
while (i.hasNext()) {
NamedVersString nvs = i.next();
…
//
יםשתמשמ
רהחזהוש
ת רוזמח ב
}
• יךדרבמ
ת וזוחרהמ
ל כאת
ר חזילה
ה יכצר
זו כאהולל
•
ר טוטראי לותיאקר הבין
ך רימד האת
ם שני מאם
)רי אח
או בו
ש מושי הפניול
רו צויי
( ,כוןא נ לולפע לולעל
א הו
•
שללמ
,רךמע הלתחיבת
ך רימד ליםספ נויםבראי
ם א
,דלשג
ף ד
יםברהס
יק ר
תי רושי
ל ש
ם קד האיתנ
הורטטראי
•
ת אורישק
ח טיהב ליךצר
next
רי יב אכל
ת ארוחזיר יטוטראי ל
יךדרהמ
,יךדרהמ
ש מומי
ת אילגבלה
לי ב
•
ת שנו ללא
ר טוטראיוה
ך רימד השל
ח קוהל משרולד
ך רי צכןל
וררטיטבא
ש מושי המןבז
ך רימד האת
•
דםהק
אי תנ ברק
ב צילה
תן ניוחלקמה
ת שוריד
•
דר ליםיכצר
ר טוטראי התירושי
ני ש
ל ש
ם קד האיתנ
כן ל
ש ו ר צו ייאז מנהשת הלא
ר טוטראי האת
ר חזישה
ך רימדשה
וררטיטהא
ף ד
יםברהס
יק ר
חהפשמ בתדוסו
•
איצמ עצם עינו אוררטיטהא
;ל ש
ק שמנמה
ק חל
ה שמע לואה
רקסו
א הוש
ם עצה
,יךדר מאןכ
•
וררטיטהא מיךדרהמ
ל ש
ש מומי האת
ר תיהס לשראפ
אי
• יךדרהממ
ר טוטראי השל
ש מומי האת
ר תיהס לשראפ
,ל זאב
ה חדמיו בילוע מלא
;די כיךדרהמ
ני בפ
ש מומי האת
נו שפ חאןכ
ת אפסלא
ל וכך ירימדשה
nextString
•
ני בפ
א לבל אוררטיטהא
ני בפ
ש מומי האת
ם פישחו
ד יצכ
ותחר אותלקמח
? •
בשנותמש האןכ
להביבח
ת אוירנ
) pa
ckag
e vi
sibi
lity
:(ת דוש
ת אוירג נ תלי ביםדרוגשמ
ע ופמ
)public
, private
, או
protected
(להביבח
ד קו
ל לכ
ם שיגינ
;ר טוטראיוה
ך רימדה
להבי חתהאו בותהי ליםיכצר
;יתנטלג אתר יורך דיגנצ
ך שהמב
ף ד
יםברהס
יק ר
השל
ם ייח הורחזמ
מרתשמ
•
וא המרשתהמ
קהחל משל
ם וניש היםותירש הבין
ם סכ ה
•
ם קיישמ
ב מצ בצםהע
ת אירשאלה
ם מיכימס
ם תירושי הכל
חום השרכא
ם מיסוי מיםנאת
יםזר
,ם תירושי הכל
ה ורתמוב
הם ליםראקו
ר שכא
ם מיקיימת
ם איתנשה
ת פולצ
ם אישר
•
ותירש
ע צובי
מן בז
ה, יבחי
א למרשתמ
יםקיהת ל
;ת רושי הבלא
האת
ר חזש ליבחי
מרשתמ
זרחו
א הוש
ני לפ
• מרלוכ
ה, מרשתמ
ל ש
ת רושי
ל פעמו
א של
מן בז
ת ימקימת
צםהע
ף ד
יםברהס
יק ר
ילרגת
:ה מ
המרתשמ
השל
טאי
ורטר
?
class VFIterator {
VersionedFolder vf;
int nextString;
public boolean hasNext() {
return nextString < vf.strings.length-1;
}
public NamedVersString next() {
return vf.strings[ nextString++ ];
}
}
ף ד
יםברהס
יק ר
המרתשמ
ורטטראי השל
vf
poi
nts
to a
VersionedFolder
obj
ect
0 <= nextString <= vf.strings.length
• צר נווררטיטהא
ר שכא
ל אב
,vf==null
,ם קיי מינו אוא הכןול
האת
מרשתמ
•
די ל י עיהבע האת
נו תרפ
מי די ל י עוררטיטהא
ת דוש
ל חואת
צםהע
ת אצרשי
,VersionedFolder.iterator()
,ך כ
טוטראישה
האת
ם קייר י
מרשתמ
•
לחוצ מרוןפת
א לזה
;ם עצ
ר וצשי
ח קו לעל
ל טילה
ר שאפ
אי האת
ם קיישת
ה ורבצ
תו או
ר צולי
ת ריואח האת
מרשתמ
,כי
הי מללבכ
ת דע ליךצר
א לוחלקה
ף ד
יםברהס
יק ר
התיריצ
מרתשמ
•
ת דוש
ל ש
טי ומוטהא
ל חואת האם
ם שיעו
ה מ
)פסלא
(ר תימו
מלאש
ב מצ בצר נותה עזהש
ם עצ
האת
ם קיי
מרשתמ
? •
וב טלא
ל אב
רי שאפ
ון תרפ
:ני יאול בפעמו
ה שד בשמושי
האת
ם קיי מבר כצםהעש
ין צישמ
מרשתמ
;שי
ל כ
ק וד בותר
אותירש לראקוה ושד האת
יךצר
ם אולתח
;יתמלורפ
,וא המרשתהמ
" או
ל תחאו
א ל
"...
boolean initialized; i
nit
iali
zed
to fa
lse
private void initialize() {
initialized=true; …
}
public someMethod() {
all m
etho
ds s
tart
like
this
if (!initialized) initialize;
…
}
ף ד
יםברהס
יק ר
םאיבנ
) co
nst
ruct
ors
(
• ובט
ר ותן ירופת
:ת רושי
ת איץהר לגתוא דמהעצ בפהשה
חר אותירש
הו שאיז
ץ שר
ני לפ
ל חואתה
•
'בגוהאו
,ם ש
האיבנ
ש כוא ה
צםהע
ם ,
ל קב לוליכ
א הוו
חר אותירש
מו כיםנטומרגא
class VFIterator {
VersionedFolder vf;
int nextString;
public VFIterator(VersionedFolder vf) {
this.vf = vf;
nextString = 0;
}
ף ד
יםברהס
יק ר
בשמושי
איבנ
class VersionedFolder {
NamedVersString strings[];
…
public VFIterator iterator() {
return new V
FIterator(this);
}
}
ף ד
יםברהס
יק ר
דלחמ
ת ירבר
אי בנ
•
יםנטומרג אבלמק
א של
אי בנ
ר גדמו
א לאם
'ג, ת פקמס
ה אוו
ל חד מרתרי באיבנ
)de
faul
t co
nstr
ucto
r (
ל קב מלאש
כלה שעו
א ול
ם טימנגואר
ום•
מו כיםטויביש
ה יבהס
זו v = new Version()
ם ליוע פ
ה לקמחשה
ת רולמ
Version
איבנ
ה ירגד הלא
ף ד
יםברהס
יק ר
םאיבנ
ת סמעה
•
'בגס מיהע לשראפ
ה אוו
)ov
erlo
adin
g (
יםנאב
,ת ציונקפו
ם וג
ותחרא
•
פי ל עיםצמ עותבנ ליםוצ רשרכא
ת שימושי
ם איבנ
ת מסהע
"יהבני
ת אוורה
"יםשונ
ם סיפוטימ
class String {
public String() {…
} public String(String s) {..}
copy
con
stru
ctor
public String(char[] c) {…
} public String(byte[] b) {…
} …
}
ף ד
יםברהס
יק ר
םאיבנ
ת סמעלה
ה יבס
ד עו
•
ם עיםנאוב
ת טוורמפ
ה ניי בותראהו
ם עיםנא בירגדלה
ת מנ
ל ע
בדבל
ת ליוכל
ת אוורה
,דלמח
ת רוריבב
שו תמששי
ק חל
ר בו ע
יהבני השל
ם רימטפרמה
class String {
…
public String(byte[] b,
String encoding) {…
} public String(byte[] b) {
t
his(b,"ASCII"); רתאח
ה יפט
ה ירבח הותיאמצ ב
}
…
ף ד
יםברהס
יק ר
עידמ
ת תרסוה
ם זיחו
ם כוסי
•
איתנ
תיוחוקוול
ק ספ הבין
ה חוז האת
ם רידימג
ר אחוה
ם קד ה
•
פקהס
ל ש
ם וניש היםותירש הבין
ם סכ הוא המרשתהמ
:ל כ ת איםקישמ
ב מצ בלםעו האת
ר אישלה
ח טימב
ם מה
ד אח
צא יווא השרכא
ר תמשהמ
,ר תמשהמש
ח מני
א הו
ה ורתמוב
תוולפע
ת אילתח מוא השרכא
ם קיימת
•
לאש
ם מיעצ
ל ש
ב מצ האת
ל בימג
ר תמשהמ
ם א
ם עצ לרק
הםלי אשהגי
ש ת ירושי הפקמס
,ם מיעצ לשהגי
לו ש שי
מי ל כ
מרשתהמ
ת איםקי ליםסכלה
ך רי צלהא
;ת כחהו
ל עשהמק
ה ז
ותכוננ
,יתכנתו הכוןתי
ל ע
,תהבנ העלו
•
ת אמוקיישי
ך כיםשחד
ם מיעצ
ר יצלי
ם אייחר איםנאהב
קהחלהמ
ל ש
ר תמשהמ
•
מומי
ת אוףשלח
לי בצם עשל
ם ביכימר
ק ור סוררטיטא
שו
ף ד
יםברהס
יק ר
ק חל
4 שיוח מצבומ
ט שופ מצבמ
ף ד
יםברהס
יק ר
עידמ
ת תרסה
זהחווה
• לאיכדש
ר ומ אדעמי הרתסת הרוןעק
ל ש
ש מומי האת
ר תיהס
להש
ת חוקוהל
ני מפ
ה לקמח
,ת אותשנ ליהיה
תן שני
די כותוחלק בועפג ללי בשמומיה
,זהחו העל
ק ריםמכסתשמ
•
כנןלת
ר שאפ מזה
,שממל
,ח כיהוול
ך תו
ה לקמח
ל ש
ת ונונכ
יתכנתו הארש לותחסתיי הסרחו
ך תוד ולב בזהחו לותחסתייה
•
יםילגב מחרהאם וקד האיתנ
,לל כרךבד
,צםהע
ב מצ
ת א
•
צםהע
ל ש
ש מומי האם
ל אב
,לוש
ת דוש הרטבפו
,ם ריסתמו
וחלקמה
,חרהאם וקד האיתנ
ת אטאלב
ר שאפ
ך אי
?
ף ד
יםברהס
יק ר
ד יצכ
יהעהב
ת א
נו תרפ
כהד ע
?
•
תבנ
ל ש
ה חוז ביףסע בונן
VersionedString
, add(String s):
R
equ
ires
: s
!= n
ull
E
nsu
res
: le
ngt
h()
== o
ld le
ngt
h()+
1
get
Ver
sion
(len
gth(
)) =
= s
• ה חוזב
זהה
יהבע האת
נו תרפ
יםיקטר
ני ש
ת זרבע
• תהילשא
ת זרבע
,length
,ם סוי מבטהי
ת שפחוש
ל ש
ב מצ
צםהע
•
התדי ל יע
ותודפק
ל ש
ם טימנגואר לותחסיי
,ה שב
ך דר למרלוכ
צםהע
ל עיעשפ הוחלקה
ף ד
יםברהס
יק ר
קפיסמ
ה ם זמיעפל
•
יםקר מבההרב
,קהפימס
זו השהגיה
,אי תנ
ת אירגדלה
ר שאפו
רועבהוש
ם טימנגוארוה
ת תוילשא הרתעז בחרהאם וקדה
•
ותובש חותעל מתיש
זו השהגיל
•
יתשרא
,על
ה שחד
ה שפ
א ציהמ לרךצו
ין א
ת אירגדלה
ת מנ
זהחו האיתנ
,ה ירחז מתהילשאש
ך ער לחסתיילה
ך ורלצ
ט פר
ותירש הועיצ בפניל
,ותירש הועיצ בריאח
ר חזמוש
ך ערול
•
יתשנ
,מהעצ
ת כנוהת
ת שפ בעטכמ
ם עיוב מיםנאהתש
ון כיומ
,צהרי
מן בז
ם ות אוקבד לשראפ
,א צולמ
ת מנ
ל עשללמ
ם פג
יתכנתוב
;יליע
א לליאו
,ילוע מיםעמלפ
ל אב
• ש
הזוה עלהמ
ש מומי
ני בפ
ם לישומכ
תי :
ש מומי בותעויט
ותלתאישה
,ת חומונ
ת פוש בותלקמח
ב חיהר ללתכוהיו
יםצמע
;שךהמ בברוסה יהז
ל שומכה
ף ד
יםברהס
יק ר
קפיסמ
א לזה
ם מיעפ לבלא
:טשפמו
ב מצ
•
יםעמלפ
ל אב
,ת זרבע
ם איתנ
ת תנולה
ח נולאש
או ר שאפ
אי בדבל
ם טימנגוארת ותוילשא
•
אל כיםקרבמ
, הט שופ מצב מיםירגדמ
)ab
stra
ct s
tate
( לםמג
ם עצשה
•
שי וח מצב מיםהוו מצםהע
ל ש
ת דושה
)co
ncre
te s
tate
(יםסו משטופ מצב מצגמייש
•
וחלק היניבע
,יםשטופ מיםצב מיםצגמיי
ם מיעצ
•
כך לאםהתוב
,וחלק העם
ה חוזה
,חרהאם וקד האיתנ
,ם ריגדמו
שטופהמ
ב מצ השל
ם חימונב
,וגיצהי
ל ש
א ל
,ואשה
ב מצ ה
שיוחהמ
•
ה שטהפ היתקצפונ
)ab
stra
ctio
n fu
ncti
on (
ת אפהממ
ט שופלמ
שי וחהמ
ב מצה
ף ד
יםברהס
יק ר
טהשפ התציקונפ למהוגד
class
SimFloat {
יםשיממ
ם ריספ מוגיצלי
ה לקמח
private boolean nonpositive;
private char exponent;
private char fraction;
…
}
תחה
פונל ש
ח טוווה
ם ו
'טהשהפה
A
: Sim
Floa
t F
⊂ R
A
(non
posi
tive
, exp
onen
t, f
ract
ion)
=
(
nonp
osit
ive
? -1
.0 :
1.0)
* 2
(32768-exponent)
*
(fr
acti
on /
6553
6)
ף ד
יםברהס
יק ר
טהשפהה
ת ציקונפ
ל ע
ד עו
•
ד חיא היהקצפונ היםקרהמ
ב רוב
חדא לבלא
-ד ח
ת כיער
•
ל ילכ
שטופהמ
ב רחבמ
ק דיו בחד ארך עיםתא מוגיצ
,ל אב
שטופ מרך עכל ליםוגיצר יספ מכנויתי
•
מהוגבד
0-ל, יםוגיצה ירב הש י
:ם א
fraction==0
ך ער האז
א הו
ג וצמיה
0 ,יםחרהא
ת דוש השני
ך ער
ה מובש חלא
A
(non
posi
tive
, exp
onen
t, f
ract
ion)
=
(
nonp
osit
ive
? -1
.0 :
1.0)
* 2
(32768-exponent)
*
(fr
acti
on /
6553
6)
• סףבנוו
,A
(np,
e,f)
==
A(n
p,e+
1,f/
2)
ף ד
יםברהס
יק ר
טהשפהה
ת ציקונפה ווזחה
public add(SimFloat alpha) {..}
מהוגלד
ת רושי
requ
ires
: not
hin
g
ensu
res:
A(t
his)
==
rou
nd(
A(o
ld th
is)
+ A
(alp
ha)
)
• דע יולא
ח קוהל
,בןמוכ
,הי מ
ה שטהפ היתצינקפו
A
• וחלק הורעב
,ט שופהמ
ב מצ בנוישי
ר דימג
ה ודפק השל
ה חוזה
)וליג עיתקצפונ בשמושי
ך תו
נהתו נ
ro
und
ת בלמקש
ר ספמ
שי ממ
ר ספ מרהחזיומ
וחטוב
Fטהשהפ היתקצפונ
ל ש
(
ף ד
יםברהס
יק ר
xad
d(y)
x=A(x)
A(x.
add(
y))
round(x+y
)
AAro
und(A
(x)+
A(x)
ס( התנוכונ
יהקצטסאב התציקונפק ופ
•
ה כחהו
די ל י עיםיחוכ מפקבס
ה ודפק
ל ש
ת ונונכ
ה ראשמ
שטופ מרך עתואו ליםילוב ממהגריאבד
ם לילומס השניש
ף ד
יםברהס
יק ר
ק חל
ים 5שקמנ
ף ד
יםברהס
יק ר
םיוארווקא
וי קני לתאוורה
H
ow t
o cl
ean
your
aqu
ariu
m s
afel
y, b
y Sa
rah
Dav
ies
…
Turn
off
and
rem
ove
all h
eate
rs a
nd f
ilter
s. T
hese
can
be
put
in t
he s
ink
and
left
unt
il th
ey a
re c
lean
ed. F
ill
one
of t
he n
ew, c
lean
buc
kets
hal
f fu
ll of
wat
er f
rom
th
e aq
uari
um. U
sing
the
fis
h ne
t, t
rans
fer
the
fish,
on
e by
one
, to
this
buc
ket
unti
l all
the
fish
are
out
of
the
aqua
rium
. Nex
t, r
emov
e al
l pla
nts
and
orna
men
ts. I
f th
e pl
ants
are
livi
ng p
ut t
hem
in t
he
buck
et w
ith
the
fish.
Put
all
the
orna
men
ts o
n th
e co
unte
r or
in t
he b
ucke
t w
here
the
roc
ks g
o.
…
ף ד
יםברהס
יק ר
םגי דזהאי
,םטישוקי
,קיובד
ם יידלו
?
• נהש מלא
ה שז
בן מוכ
;ם עוםריואקולא
ת פותק
ת אוורהה
תן או
ם ריוואקולאב וזה
גי ד
ם ע
יםשריוכ
ת דוקובר
,ל חו כפח
לי לד
וםאד
ק טילס פלילדו
•
ש מושי
ר שאפשמ
לי כל
פן או ביםצמלע
ת סויחתימ
ת אוורהה
יםשונ
ם בימצ
ה רבבה
ת אוורבה
•
השל
ה חוזה
ליד
:ם רישאו נוכלת
ם סיכנישמ
ם קיוצומ
ם לינוז
די מתר יותואו
ם אימל מלא
ם אשם
,א ציהו לשראפ
ס כנשנ
ה מ
ב מצ
תו או בוקדיב
)בון סרישיי
לי בד
יו יהש
ר סו ארטבפ
( •
יקסטפל מותהי לוליכ
ש מומיה
,פחמ
,מו כיםשמומי
לו פיוא
ותשריהד
ת איםלאממ
ה סטרו נייר סאו
ה סינחר
ל רטאג
ף ד
יםברהס
יק ר
נושל
ד קוה
,תהע
ד ע
,ליכל
ך ככל
ה הי
א ל
•
ה לקמחמה
ם עצ בשתמששה
ח קוהל
VersionedString
ס פוטי מוסיחך ידר
ת זא
ה שע
VersionedString
•
ח קוהלש
ה חוז האת
בן מו כיםקי מהזו
ה לקמחמה
ם עצ
ליו עמךסתמ
,ה רב הוד עשי יול אבלא
ת אותימקישמ
ת קוחלמ
זה הזהחוה
•
עולפ
ל וכא י לוחלק הודשק
ה למ
כזוה לקמח
ל כעל
ל ? ,
שללמ
, int Find(VersionedString vs, String s) {
for (int i=0; i<vs.length(); i++)
if (s.equals( vs.getVersion(i) ))
return i;
}
ף ד
יםברהס
יק ר
עלפו
ה ז
,בלא
•
הזוה גרש בשתמשלה
ר שאפ מלא
ה ז
,ל ש
ה הז
ש מומיה
שפוחי
ם יתורלגא
, איםצבבמ
יםחר
•
לילקב מזה
-"ר כיו לחתמתש
ם דוהא
ק טילסהפ
לי דאת
ח ק
)א ל
נגפוהס
לי דאת
'ולכח הה
,הבהז
ג דאתם ומי האת
יו אל
ר עבוה
" •
רוןפתה
: האת
ד ריהפל
פקס
,ת אשתממשמ
ה לקמחה
יםותירשה
,זהחומה
,שמומי בלוי תינושא
ף ד
יםברהס
יק ר
נמש
ם קי
)in
terf
aces
(
ק שמנה
השל
ם קישמנ האת
ר דימג
זהחו האתם ותירושי
interface
VersionedString {
public void add(String s) ;
re
quir
es …
; en
sure
s: …
public int length() ;
requ
ires
… ;
ensu
res:
…
public String getLastVersion() ;
requ
ires
… ;
ensu
res:
…
public String getVersion(int i) ;
requ
ires
… ;
ensu
res:
…
}
ף ד
יםברהס
יק ר
קשמנ
ש מממ
ק פס
לוש
ה חוז האת
ם קיי משקמנ
ש ממשמ
ק ספ
;לוש מזהחו
לו ין א
class LinkedVersionedString
implements VersionedString {
protected int n;
protected Version last;
public void add(String s) {…
} public int length() {…
} public String getLastVersion() {…
} public String getVersion(int i) {…
} }
ף ד
יםברהס
יק ר
זהחווה
ק פסה
•
שממ מואשה
ק שמנ השל
ה חוז האת
ם קיי ליבחי
ק ספה
•
ללככ
,לוש מזהחו
לו ין א
•
אותירש
ק ספ ליבחי
ק ספה
אי תנ
ת איםקי מיתכנתו הצב מם
ותירש השל
ם קדה
•
ותירש
ל ש
ם קד האיתנ
ת איםקי מיתכנתו הצב מאם
,זי א ראח האיתנ
ת איםקי ליבחי
ת רושי הוםסי
ר אח לבהמצ
•
אי תנ
ת איםימקי מלאש
ם רימק בגם
ל פעת ירושי הליאו
דםהק
,ב טו
ב מצ ביתכנתו האת
ר תימו
ד מי תותירש הליאוו
איתנ בשדרהנ
ה מז
ה רבבה
חרהא
• שדרו נאינ
ה חוז בטחובהמ
ה מז
ר ותב יטו
ת רושי
ל אב
,ם אגםו
לוש
ר ופשהמ
ה חוז העל
יז כר מפקהס
,ח קולל
לי או
ף דיע
ליו עמךסתלה מנעימלה
,פק סיףחללה
ל וכא י לרתאח
כי
ף ד
יםברהס
יק ר
'גורכי לתחתמ
ם יידל
ת שפחמ
א לוהאו
•
כןני א
,וי יקת נאוור הריאח
ב קולע
ה נס מתיהיי
ם ואקוהא
וםריו
,קיי נדל
ך רישצ
א ור קתיהייו
,צאמוש וחפ מתיהיי
•
גבלא
'לא
ה אוו
,כןול
,שליכ
א הב
ד קוה
יהלצפיומ קורעבא יול
, VersionedString vs = new VersionedString()'ג • ;
ם עצ
ג סו
ה איז
ד גיח יקוהלש
ה וצ רוהאו
)קהחל מיזומא
(א הו
ותבנ לצהרו
'ג; רובו עשנח תלא
ה אוו
, מרק
ש ם י אלופיא
ה לקח
נהשתהמ
ל ש
ק שמנ הוסיפט
ת אשתממשמ
ת אח
,ק ראו
יםתא מאיבנ
ה לש וישקמנ האת
ת שממשמ
ת אח
ה לקמח
•
בגך רישצ
ה מ
'וא הוהאו
VersionedString vs =
new LinkedVersionedString();
גתניוכת
ת שולר
ת דומעוש
ת קוחלמ החרמב
'והאו
יהטרמסיא
•
מו כרהשג
Find
סו מסהגר
ש פוחי לרנוגדשה
ת רוזמח
ל ש
ת ימ
שקמנ הוסיפבט
ק רשתמשלה
ה וליכ
,ל כעם
ד בולע
כן ול
נטומרגכא
ה לברועשי
ש מומי
•
ך דר
ק רהם בשתמשלה
ל כוא י ליםצמ עוריצ ליךצרש
ד קו
ל אב
יםימתאהמ
ק שמנ הסיפוטי
,ר טופראושל
ון כיומ
new
ם ביחיי
קהחל משל
ם ש
ר ביהעל
,שקמנ
ל ש
א ל
ף ד
יםברהס
יק ר
וןתרפה
:ת שרוח
תי ב
)fa
cto
ries
( יםסו משקמנ
ס פוטי מיםצמ ערתציק ישמנ
ש ממשמ
ם עצ
interface VersionedStringFactory {
public VersionedString construct();
} class
LinkedVersionedStringFactory
implements VersionedStringFactory {
public VersionedString construct() {
return new LinkedVersionString();
}
}
ף ד
יםברהס
יק ר
תשרוח
ת בי בשמושי
) 1(
class SomeClass {
private VersionedStringFactory f;
public SomeClass(VersionedStringFactory f,
…
) { this.f = f; …
}
…
public someMethod() {
VersionedString vs = f.construct();
vs.add("First version");
…
}
ף ד
יםברהס
יק ר
ת שרוח
ת בי בשמושי
)2(
• יו ותירשש
ם עצ הרתצין יזמב
יםיכצר
VersionedString
יםשחד
,שתרו חית בלוש
אי בנ ליםירעבמ
;לו
ר ביהע לשראפ
ר יצשי
ת שרו חיתב
LinkedVersionedString
ת בי
או
מיעצ
ר יצשי
ת שרוח
האת
ם מיקיישמ
ם ריאח
ם שקמנ
•
ם קיספ לורזכ אוםש
ין אחהקוהל
ה לקמח השל
ד קוב
יםפיציספ
,פק סכל
ם עודעב ללהכוא יהי
כן ול
,ק ספ
ל ולכ
ידעת בתביכשי
•
ת רושי לותירשת ישרוהח
ת בי
ת אירעבלה
ם גבןמו כתןני
יםשחד
ם מיעצ
ך רי צלוש
ד קושה
•
אי ביטחלשמ
ד קו המי
ה אלש בקרעי בלוי תצויהר
ה בנהמ
ה ז
שתמשלה
ק ספ
,שתמשלה
ת שרו חית בזהאי בכןול
;לל כרךבד
,שתמשהמ
ד קומה
די למ
ק חושר
ה ורתצ
ת קר בוד קהוז
ף ד
יםברהס
יק ר
םליכלשומ
ת שרוח
תי ב
ל כות ישרו חיתב
בשמושי
ך תו
ם מיעצ
ר יצלי
יםנטומרגא
interface VersionedStringFactory {
public VersionedString construct();
E
nsu
res:
ret
urn
s a
refe
ren
ce to
a n
ew V
ersi
oned
Stri
ng
public VersionedString construct(int m);
E
nsu
res:
ret
urn
s a
refe
ren
ce to
a n
ew V
ersi
oned
Stri
ng
th
at k
eeps
at l
east
the
m m
ost r
ecen
t ver
sion
s }
ף ד
יםברהס
יק ר
שהמר
ה וזח הםא
,טלתבלה
ר תמו
class
LinkedVersionedStringFactory
implements VersionedStringFactory {
public VersionedString construct() {
return new LinkedVersionString();
}
ke
eps
an u
nli
mit
ed n
um
ber,
so
sati
sfie
s th
e co
ntr
act
public VersionedString construct(int m) {
return new LinkedVersionString();
}
construct(int)
ה עצ
ת לת
ח קולל
ר שאפ מ
שתרוהח
ת ביל
;ה עצ האת
ל נצ ליבחי
א לשתרוהח
ת בי
ף ד
יםברהס
יק ר
0m-1
(n-1)%m
1
מץאתלה
ר שפא
ל אב
class
SmartVersionedStringFactory
implements VersionedStringFactory {
public VersionedString construct() {
return new LinkedVersionString();
}
public VersionedString construct(int m) {
return new CyclicArrayVersString(m);
}
ף ד
יםברהס
יק ר
Vers
ione
dStr
ing
Link
edVe
rsio
nedS
trin
gCy
clic
Arra
yVer
sStr
ing
וןרגא
ני יצנ
םסיפוטי
ר בוע
• יםחסש ים יסיפוטי השתלוש
ין ב
:ת שוממ מותלקמח התיש
שקמנ האת
•
ק שמנה
כתריו
ליל
תואו
ת שוממשמ
ת קוחלהמ מ
•
ר ותי ילל כוסיפמט
ה שד
או ה תנשמ
)שקמנ
אן כ
(ל כוי
פיציספ
ר ותס יפוטי מצםלע
ס יחתילה
•
פךהי ללא
ל אב
ף ד
יםברהס
יק ר
מהוג דודע
:רךעמ
ון מי
re
quir
es: a
!= n
ull
&&
a's
ele
men
ts !=
nu
ll en
sure
s: a
bec
omes
sor
ted
void insertionSort(Comparable a[]) {
int i,j;
for (j=1; j<a.length; j++) {
Comparable key = a[j];
for (i=j-1;
i>=0 && a[i].compareTo(a[j])>0;
i--) a[i+1] = a[i];
a[i+1] = key;
} }
ף ד
יםברהס
יק ר
תאווושלה
ק שמנ
interface Comparable {
re
quir
es: o
ther
!= n
ull
en
sure
s: r
etu
rn =
= 0
iff t
his
= ot
her
ret
urn
==
1 if
f thi
s >
othe
r
r
etu
rn =
=-1
iff t
his
< ot
her
int compareTo(Comparable other);
}
ק שמנ
ר גדמו
ה שפ השל
ת ריוספב
java.lang.Comparable
הובמו ווחבר
ה ומ דואה
אן כרנוגדשה
ק שמנ לתו
,לו
ה זה
א לבלא
ריגמל
;מה לביןך נשהמב
ף ד
יםברהס
יק ר
בקשמנ השמומי
-V
ersi
on
edSt
rin
g
class
LinkedVersionedString
implements VersionedString,
Comparable {
protected int n;
protected Version last;
int compareTo(Comparable other) {
if (this.n > other.n) return 1;
if (this.n < other.n) return -1;
return 0;
}
ף ד
יםברהס
יק ר
רההו
ם מיעפול
ה רצמ
ני א
ם מיעפל
•
לירמ נוזהו
•
רההו
ר תו ביםחרוא
ה רצ מורבת
ם ריאח
ם תירושי
ק ספ מאני
•
ני אארשד נמי תאני
ל אב
)שני
ש ממומ
יםשונ
ם קישמנ
(
• קס פיא היםעמלפש
ס פק
ת כונ משי
,וםיל צנתכו מיםעמלפ
,פוןטל
ם מיפעל
,בוןשי מיםעמלפו
•
ר ספ משתממ מיאשה
ר היהצ ללהכוה ילקמח
ל ש
ה דרהג
יםשקמנ
ף ד
יםברהס
יק ר
ל אב
וןנכ
א לשמומיה
!
int compareTo(Comparable other) {
if (this.n > o
ther.n) return 1;
if (this.n < o
ther.n) return -1;
return 0;
}
• ש
ח מני
ה שמע לותירשה
-other
ס פוטי מוא ה
LinkedVersionString
•
ל אב
other
ס פוטי מוא ה
Comparable
,ס פוטי מלא
LinkedVersionString
,ה שיר
א ללרפייומהק
כן ול
ה שד לחסתיילה
nכודר
ף ד
יםברהס
יק ר
יהעיהב
ון תרפ לוןסיני
בשרונד
נאת
ל ש
ם קד הי
insertionSort
ם מיעצ הכלש
קהחל מתהאו מהיוך יערבמ
, לחסתייונ
-other
אםהת ב
:
int compareTo(Comparable other) {
LinkedVersiondString other_lvs
= (LinkedVersiondString) other;
if (this.n > other_lvs.n) return 1;
if (this.n < other_lvs.n) return -1;
return 0;
}
ראנק
ם רייוגבסש
ר טופראוה
ה יקיצ
)ca
st( ,
ס חו ייצרמיי
א הוו
תוןם נעצ לתוןס נפוטימ
,וסיפלט
ם אימת
ם עצ האם
ף ד
יםברהס
יק ר
ת קוציי
)ca
sts
(
• ם אימת
ם עצ לחסתיי מיםצקשיו
ס חוהיי
ם אחהלימצ
ה יקיצ
כותו ליםצקשיו
ס פוטיל
•
ה מט לקהציי
)do
wnc
ast
:( לוסיחל יש
ה יקיצ
ת חו פוסיפט
ליכל
;ה לקמח לוסיחלי
ק שמנ לוסיחל יש
ה יקיצ לנהכוו הגעכר
שקמנ האת
ת שממשמ
;יםקר מוד עששי
ה ראך נשהמב
•
ה עללמ
ה יקיצ
)up
cast
:(ליכל
ר ותס יפוטי לוסיחל יש
ה יקיצ
, ה לקמחשה
ק שמנ לוסיחלי
ה לקמח לוסיחל יש
ה יקיצ
ל שלמ
שתמממ
;ובש
,יםקר מוד עאהנר
ך שהמב
•
ה עללמ
ה יקיצ
חהלימצ
ד מית
,שורמפ
ר טופראו
ה יכצר מלאו
;א הי
ט שופ
דעמי
ד אב ללרפייומלק
ת רמגו
•
שליכלה
ה ולעל
ה מט לקהציי
;אז
ה ור קמה
ה ראך נשהמב
•
יטימפר
ת דושם ותניש מגם
ת צק לשראפ
ייםבי
טהמול
ה עלמ לקהציי
םיייבטמיריפ
ם ניתשמ לקהציי יקחו
יהעהב
ת א
ה תרפ
א לקהציהי
ל אב
•
רחהכ בלא
ח קוהל
כי ין מי לצהרו
א הוש
ם מיעצ הכל
ם אדע יו
לאאו
ה לקמח
ה ותלא
ם כישיי
•
שללמ
,אם
SmartVersionedStringFactory
ת אצר יי
יםצמהע
,ותלקמח
ה כמ מיםצמ עבלקי
ח קוהלש
כן ית
•
ם שיממשמ
ם מיעצ
ין מי לשראפ
ח קוהל
ני עי באם
VersionedString
, ליךצר
ון מישה
מן סי
אז ת ונותכ
א בט
מוח קוהלש
ם מיעצ השל
הם לדע
,תרנס השמומי האת
א ל
•
כך לאי
,ירצהלה
ך ריצ
ש ממשמ
ם עצ
ל שכ
VersionedString
ם גשממ מ
Comparable
ף ד
יםברהס
יק ר
חרא
ק שמנ
ש ממ לחטימב
ק שמנ
interface VersionedString
extends Comparable {
public void add(String s) ;
public int length() ;
public String getLastVersion() ;
public String getVersion(int i) ;
} class
LinkedVersionedString
implements VersionedString { …
}
• ל עירצהלה
ך רי צלא
ק שמנה
compareTo
,ת רושי הוםקי ת איברח משקמנשה
ה בדעו הצםמע
ח בטמו
Comparable
ף ד
סבה
יםר
יק ר
וןנכ השמומיוה
...
int compareTo(Comparable other) {
VersiondString other_vs
= (VersiondString) other;
if (this.length() > other_vs.length())
return 1;
if (this.length() < other_vs.length())
return -1;
return 0;
}
ת קצ
: םופגמיה
ל כפש ליךצרה ולקמח לפיציספ
א לזה השמו
ל ש
ש מומי
ל בכ
תו או
VersionedString
;קןנת
ך שהמב
ף ד
יםברהס
יק ר
VersionedString
LinkedVersionedString
CyclicArrayVersString
Comparable
להגד
ם סיפוטי התכיררהי
ה הי
א לזה
ח צלמו
ה בנמ
זהה קרבמ
,א הו
ל אב
ה ראה
ארף גהם
ם סיפוטי
ין ביםחסהיש
-ווןמכ
לי יקצ
ה הז
ה בנהמ
ר ותה יהי
לחוצמ
,א הוו
ף גרש
ה ראמ
ם סייחה
וי שעוקעמ
ת היול
VersionedString
LinkedVersionedString
CyclicArrayVersString
Comparable
ף ד
יםברהס
יק ר
םקישמנ
ם כוסי
•
ס חושיי
ר היהצ לוחלק לשראפ משקמנ
ס פוטי בשמושי
)דהש
או ה תנשמ
(יםימסו מיםותירש
ק ספשמ
ם עצ לחסתיימ
,צםהע
ה לקמח
זו אי מייןלצ
לי ב
;וחלק בותליכל
ר שאפ מזה
•
רבא קרה נכז
ח קול
-תי ורצ
)po
lym
orph
ic(
• ת שרו חיתבב
ש מושי
)fa
ctor
y (
אפמ
ם מיעצ
ת בנו לוחלק לשר
הםה לקמח
זו אי ממועצ בייןלצ
לי ביםסו משקמנ
ם ע
•
יםשקמנ
ר ספ משממ ללהכוה ילקמח
•
יםחר איםשקמנ
ר ספ מאו
ר אח
ק שמנ
ב חיהר לוליכ
ק שמנ
ם פיוסם נרימק ביםקי
ד קו
ל ש
ל צו נירתשאפ מותתיור צרב
וד קשל
ל פושכ
ת נעמוו
,קהחזוות
ח תופי לקרא יהוש
ל פושכ
ף ד
יםברהס
ריק
ק חל
ם 6יגיחר
ף ד
יםברהס
יק ר
שם זיחוה
נודרהג
םייטרמסי
ם ינא
• האם
וחלק
יםקיית
ר אח האיתנש
ה וצ ר
,ח טיהב ליךצר
א הו
יםקימת
ם קד האיתנש
•
יםקימת
נו אי
ם קד האיתנ
ם א
ה, וחלק
ח הני לאיש רינו א
ותירש הלתעו פבילג
ה וממא
,יםתייסש
א ללופיא
•
תאת
ם קיי ליחצל מינו אוחלק האםש
אן מכ
דםהק
אי נ
,לו
ין א
ותירש לואקר לללבכ
ם טע
;ותירש העל
ר ותלו
ל כוא יהו
,או
ובש
ר ותר יוחמא
ת סולנ
,אי תנ
ם קיו
ת איגשלה
ת סולנ
או רתאח
ך דר בחרהא
,ותירש לואקר לעם טאין
ל אב
•
חרהא
אי תנ
ת איםקי ליחצל מינו אפקהס
ם אבלא
,לו
ין א
ותירש לאהריהק
ת אטללב
ת רושאפ
:עהבצהת
ר כב
א הי
ה •
פקס
קוחל
ת איםקי לוליכ
,
מטשתלה
או ,
ל כוו יאינ
ל אב
קהעס האת
ל בטל
ף ד
יםברהס
יק ר
שליכ
ק פסשה
ה מל
?
• אי תנ
ם קיו ליקספ מיהיה
ם קד האיתנש
ה יתהי
ה וונהכ
רי ה
פקהס
ת ונונכ
ח כיהו ליהיה
ר שאפשק וספ הדיל י עחרהא
•
נו איש
ר ותש יחל
ם קד
אי תנ
ר דיהג לאיכד
ם מיפע לבלא
יקספמ
,מועצשל
,לה
אי תנ
ת איםקי לפקהס
ת וליכ
ת טחב
חרהא
•
להכא
ם רימקב
,יא הותירש לאהריהק
ת עושממ
:ני א
)וחלקה
(לי עטלמו האת
תי צעבי
)דםהק
אי תנ
( ;ת כע
סהנ
ה את
)
פקהס
(ותירש האת
רי בו עצעלב
,שלתכ
ם אלי
ע ודוה
•
זה כשחל
ם קד
אי תנ
ר דיהג לותובט
ת בוסי
תי ש
ש י
•
יב סודוע
הבהטו
א לבל אצהפונ
, אגםש
ירסבה נות
ף ד
יםברהס
יק ר
ה ובט
ה יבס
נהשואר
:טהליש
ר סחו
import java.io.*;
…
File f
= new File("A:\config.dat");
f r
epre
sen
ts th
e fi
le's
nam
e; m
ay o
r m
ay n
ot e
xist
if ( f.exists() ) {
FileInputStream is
= new FileInputStream(f);
now
acc
ess
the
file
יםקי
ץ ובהקש
ח טיהב ליוןיסהנ
,ה לתאיש הרתעזב
exists
,גויש
יו אל
ם שייגונ
ם חיותשפ
ני לפ
:יםתיבינ
ק מחא נהו
לי או
ף ד
יםברהס
יק ר
טהליש
ר סחו
תיומנו ז בללבג
• ם טייוונרל היםצמהעש
ה בדעו האת
ת קפש מהזו
ה גמדוה
ותירש השל
ח צלמו
ע צוביל
,בץקו
אן כ
,ה יטשל בנםאי
מוותירש לראקוש
ח קוהל
ל ש
ת לטח
•
ותירש לאהריהק
ני לפ
ם קיי
ץ ובהקש
א ודמו
ח קוהל
ם אגם
,ותירש לאהריהק
ין וב
א דוהוי
ין בחקימ
א הוש
כן ית
ין דיע
,ל ע
רתאח
ת כניתו
די י
,חר אשתמש משל
לי או
•
ט חו
די ל י עחקימ
ץ ובהק
לי אוו
)th
read
,כוןליתה
(ה ות אשל
יתכנתו
,יםוט חמה כלה
ש ם יא
•
הבה עיהב
ם מיעצ בטתחלמו
ה יטשל
ר וס חיא היתיססטייוונרלה
; םלע
הםלי עטהליש
ש ו ישהמי
ד ו
,ה יטשל
ה יקספמ
ת מנ
ל ע
ולפע לפקלס
ר שאפ מינושא
ב מצ לתםאו
ר ביהעל
•
יחצללה
ל וגמס
ק ספשה
ח טיהב לוליכ
נו אי
ח קוהל
כן ול
ף ד
יםברהס
יק ר
תסולנ
ק פסמה
ש קלב
ך אי
import java.io.*;
…
File f
= new File("A:\config.dat");
try
{ FileInputStream is
= new FileInputStream(f);
acce
ss th
e fi
le (
but o
nly
if th
e co
nst
ruct
or s
ucc
eeds
) } catch (FileNotFoundException fnfe) {
how
to a
ct if
f do
es n
ot e
xist
}
שלנכ
ק ספ האם
,מי
ת ברעו
ת כניתוה
השגו ליד
-catch
ף ד
יםברהס
יק ר
םליקוטורופ
ל גל בטהליש
ר סחו
•
ת ניווכ תתיש
)יםשונ
ם בישמח
ל עליאו
(דו
ת לונהמ
-ח שי
נהוב מולוקוטפרב
,ת שרן ודפדפ
ל שלמ
http
•
צם ערתעז בצגמיו
ר שהק
הן מחת אכלב
; גפןפדבד
'והאו
,שללמ
,ה לקמחמה
ם עצ
די ל י עוחלק בצגמיו
ר שהק
java.net.HttpURLConnection
•
ת אלאימ
ה הז
ם עצ השל
ח קוהל
ם אגם
ותדנקפ בזהחו בקוחל
,ר שבק
ני ש הצדשה
כן ית
ין דיע
)רתשה
(פי לוקדי בהגתנא יל
ולוקוטפרה
•
ת בוטו
כי הותפחשבמ
ה ורק
)פי להגתנ מלא
הו שמיש
ולוקוטפרה
( •
ון יצהח
ם ולהע מפעשמו
ם עצה
)רתשמה
(ל ש
ח קולל
כן ול
ליו עאהמל
ה יטשל
ין אצםהע
ף ד
סבה
יםר
יק ר
יהניש
ה ובט
ה יבס
:וק
ישת א
ק דולב
ה
אי תנ
Matrix a = …
; Vector b = …
; Vector x;
Mat
rix.
solv
e re
quir
es n
onsi
ngu
lari
ty
if ( a.nonsingular() )
x = a.solve(b);
solv
es A
x=b
• ידחרלה
ל עיא י לבל אטיגנאל
ה חוז
:ה יצטר מאם הקהדיהב
A מע
ון תר פמו כרךבע
ה קרה ייכהפ
ת אושווהמ
ת רכ
Ax=
b
•
כתערהמ
ת אורפת לותנס לצםהע משבק ליףעד
,נו ליעודשיו
כהפי הלא
ה יצטרהמש
ל גל בשלנכ
א הו
ם א
ף ד
יםברהס
יק ר
ל שנכש
ק פס
ל ש
יו תיובוויחמ
•
חיה לחהצ ביםתימסש
ת רושי
ת וא
ר אח האיתנ
ת איםקי ליב
מרשתהמ
קהחלהמ
ל ש
• וחלק לשרו דחרהא
אי תנ
•
מרשתהמ
ם קיו
ר שאפ מ
ירשל
ק ספם יעצשה
ם ריאח
ם תיו
ולפע לידעתב
•
שלנכש
ת רושי משדרה נמ
? •
לוןשכי העל
ח קולל
ע דיהו ליבחי
א הוש
ר כב
נו איר
,די כ
יםקימת
ר אח האיתנש
ח יני
א לוחלקשה
;לל כרךבד
, השגו
-try
ח קובל
השגול ועולפ
ק סימפ
-catch
עלופ מ
•
חרהא
אי תנ
ת איםקי ליבחי
א לשלנכש
ת רושישה
ר רוב
•
שנת רושי האםה
מרשתהמ
ת אזרשח ליךצר
ל שכ
?
ף ד
יםברהס
יק ר
מרתשמ התא
ר חזש ליךצר
ת רושישה
בן מוכ
•
יםקיהת ליךשממ
ם עצשה
ון כיומ
,ם ריאח
ם תירושיש
כן יתו
ידעת באוקרו ישל
•
ר שאפשמ
ב מצ בצםהע
ת אואמצ ליםיכצר
ם ריאח
ם תירושי
ולפע להםל
•
ם ריאח
ם תירושי
בו ש
ב מצ לצםהע
ת אירחזלה
ף דישע
ר רוב
ללווכי
ולפע לרק
א ,
ח ליהצ לגם
א אל
•
ל אב
ד תיבע
ל פעשיו
ת רושי
ל שכ
ך ככל
ע רו גצבבמ
ם עצ הליאו
וא הגם
ל שיכ
, ליםיכצר
ם דייתיהע
ם תירושי הבלא
ותפח
ל עולפ
ח דווול
ם להש
ת חוקולל
כעלי
לוש ן
ף ד
יםברהס
יק ר
קפס
ל ש
ת נוכות נחוכה
•
דם קאיתנ
ם קיי ליךצר
ח קוהל
,יקספ מלא
לי או
ל אב
ל עימו
•
רושיה
וגדא ליםיכצר
ם עצ השל
ם וניש היםת
מרשתהמ
ם קיו ל
,לא
ם אביןו ויחצל ההם
ם אבין
•
מרשתהמם וקד האיתנ
ם מיקיימת
ם א
,יםתיהס ליבחי
ת רושי
•
יםסו מצד
אי תנ
ם קיימת
ף וסבנ
ם א
,יחצל מותירשה
•
יםקימת
א לצד האיתנ
ם א
,ל עיעודומ
ל שנכ
ת רושיה
יגחר
)
thro
ws
an e
xcep
tion
( pr
econ
diti
on &
inva
rian
t &
sid
e-co
ndi
tion
in
vari
ant &
pos
tcon
diti
on
prec
ondi
tion
& in
vari
ant
& n
ot s
ide-
con
diti
on
inva
rian
t & e
xcep
tion
is th
row
n
ף ד
יםברהס
יק ר
צד האיתנ
•
יגחר
ע מונש
ד הצ
אי תנ
ת אוקדי בירגדלה
ב חיי
א לזהחוה
•
ה ובעלה
ה ש קותהי לוליכ
ה הז
ד הצ
אי תנ
/לח
או ובשי
•
צד האיתנ
ם קיו לאיחר אינו אלאמי מוחלקה
•
צד האיתנ
ל ש
ה דרהג
ל אב
,ק פימס
אי תנ
ל ש
ה דרהג
ת חולפ
או יגחר
ת יעמנל
,תןכניתו ליעסי ללהכוי
/יתנ
או ג רימח
ע מנהי ל
רהקו
א הו
ה למ
ין הב לותפחל
•
שללמ
,ה יצטרשמ
ש רא מעתלד
ר שאפ
ם בהש
ם רימק
ש י היכהפ
,סוןלכהא
ל עיםפס אלי ביתשולש ממוכ
ף ד
יםברהס
יק ר
יגחר
ל קבמש
ח קו לשהעו
ה מ
?
int compareTo(Comparable other) {
VersiondString other_vs;
other_vs = (VersiondString) other;
if (this.length() > other_vs.length())
…
ם עצ האם
ג רי חעל
ע דיהו ללהלו עטהלמ
ה יקיצ
)other
(נו אי
לנם אימתש
ס פוטימ
ה יקיצ היוןיס
)אן כ
VersionedString
(
יגחר בפלמט
א לוחלק האם
,אן כמוכ
)ל כל
נו חסתיי הלא
יגחר
ל ש
ת רושאפל
( ,מי ליעודומ
ץ רו ליקפס מוחלק הודקיגחר העל
לו א קרש
וניגי הזה
:יםסו מותירש
ל קבשי
ח הני
ח קוהל
,שלנכ
ת רושיה
,מועצ
לו ש
ר אח האיתנ
ת איםקי לוליכ
א לוחלקה
ף ד
ברהס
יםיק ר
טןק
ר פושי
int compareTo(Comparable other) {
VersiondString other_vs;
try {
other_vs = (VersiondString) other;
catch (java.lang.ClassCastException ce) {
throw
new IncomparableException();
}
if (this.length() > other_vs.length())
…
לוש
ח קולל
ת בנמו
ה הישת
ך כעהודהה
ת אגםתר לוליכ
ח קוהל
: לראשק
מי -
compareTo
ותשולה
א אל
ת צק לשיק בלא
ף ד
יםברהס
יק ר
ה צרמ
ת צוחלהי
Matrix a = …
; Vector b = …
; Vector x;
try {
x = a.solve(b);
solv
es A
x=b,
fast
alg
orit
hm
catch (CloseToSingularException ctse) {
x = a.accurateSolve(b);
try
hard
er
}
יגחר
ך מס לוליכ
ח קוהל
ם מיפעל
,ך דר בשמושי
די ל י עשללמ
רתאח
,תר יורהיק
לי או
,ותירש הועיצלב
שלנכ
ני ש היוןיסהנת וריולנגסי
ק דיו בצהרימט האם
ה ור קמה
?
ף ד
יםברהס
יק ר
רהמצ
ת צוחלהי למהוג דודע
FileInputStream is;
try {
is = new FileInputStream("A:\config.dat");
} catch (FileNotFoundException fnfe) {
is = new FileInputStream("A:\config");
} acce
ss th
e fi
le (
but o
nly
if th
e in
put s
trea
m w
as c
reat
ed)
חר אבץקו
ם ש
ת סולנ
ר שאפ
לי או
,ס כנילה
ש תמשהמ משבקל
ר טוליתק האו
ט סקדי האת
יםימתאהמ
,מהדווכ
.
ף ד
יםברהס
יק ר
םגיריח
ם סיפוטי
•
'בגוהאו
,ל גי רצם עותצעאמ בעתבצמת
ג רי חעל
ה דעהוה
יגחר האת
ג יצמיש
,הושכל
ת רושי
ל ש
ון שלכי האת
•
ילרג
ם עצ
א הו
ג ריהחש
ון כיומ
,ת זרבע
תו או
ם וניב
new
•
בגג וההנ
'ס פוטי
די ל י עלוןשכי לבהסי האת
ין צי לוא הוהאו יםתא מיגחר
,מו כ
java.io.FileNotFoundException
•
דםקו הלקבח
נו אישר
מו כ
,בג
ר דיהג לשראפ
'ה כיררהי
ה אוו
יםוסיפט
ל ש
ה למש
;יםשקמנ
בי לג
נו איר
,בי לג
ם גכוןה נל זאב
ותלקמח
•
בגת ששמ מכזו
ה כיררהי
'ר ות ויותליכל
ת בוסי
ר אותי לוהאו
יםיגחר
ל ש
ת פיוציספ
ף ד
יםברהס
יק ר
Erro
r
Runt
imeE
xcep
tion
Exce
ptio
n
Throwable
Null
Poin
terE
xcep
tion
Inde
xOut
OfBo
unds
Exce
ptio
nCl
assC
astE
xcep
tion
Nega
tive
Arra
ySiz
eExc
epti
on..
.
Virt
ualM
achi
neEr
ror
Link
ageE
rror
...
OutO
fMem
oryE
rror
Stac
kOve
rflo
wErr
or..
.
NoCl
assD
efFo
undE
rror
Clas
sFor
matE
rror
...
ה ילחב בםגיריח
java
.lan
g
• Er
ror
:צהרי הבתביבס
ה עי ביםצגמייש
ם גיריח
,ה ורש קנהאיש
צהשר
ת כניתו לרחהכב
:רוןיכבז
ר סומח
,צי קב
clas
sאו
ם ריחס
יםקינ תלא
,מהדווכ
;ק סיהפ ליא הלל כרךבד
ה כונהנ
ה ובתגה
בהביהס
ת אקןלתת וכניתו הצתרי
ת א
•
Exce
ptio
n :
יתכנתו ביהבע
ל גל ביגחר
;Ru
ntim
eExc
epti
on
א הו
יתכנתו בגם פללבג
ג ריח
ף ד
יםברהס
יק ר
RuntimeException
Exception
IOException
FileNotFoundException
InterruptedIOException
UnsupportedEncodingException
...
MalformedURLException
ProtocolException
SocketException
...
BindException
ConnectException
NoRouteToHostException
...
PriviledgedActionException
GeneralSecurityException
KeyException
SignatureException
DigestException
...
SecurityException
java.io.*
java.net.*
java.security.*
תרוחא
ת לוביח בםגיריח
•
ל ש
ם גיסו
ם היםחרהא
ם גיריהח
ב רו
Exce
ptio
n
ם גטםעומיו
שלRuntimeException
•
ל ש
ם גיסו
Erro
rה יצהר
מן ת זיבסבש
ם גירילח
ם ליגבמו
-ה(
virt
ual m
achi
ne (
מהעצ בההמז
ף ד
יםברהס
יק ר
םגיריח
ל ע
ה הרהצ
int compareTo(Comparable other)
throws I
ncomparableException {…
} •
ל ש
ג סו
נו איש
ג רי חעל
ע דיהו לשוישע
ת רושי
Error
ל ש
או
RuntimeException
ותשראפ העל
ר היהצ ליבחי
הזו
• ב חיי
זו כרהצה הלתול כתודרהגש
ת רושי לראקוש
ח קול
יגחר
ל עיעוד וישליכ
ת רושישה
ת רושאפ לחסתיילה
•
רישאפ
ל פוטי
1 :ל עיעודלה
וי ש עוחלק הגםש
ה הרהצ
ק ריגחר
ג סו
תו או
•
רי שאפ
ל פוטי
2 :ק לו בוךבת
ת רושי לאהריק
try
ק סו פעם
catch
יםתא מ
) ליכל
או פי ציספ
( •
ה ציילמפקו
ר בויע
א לוחלק הזה כוליפט
ר עדהיב
ף ד
יםברהס
יק ר
ה מל
)אל
(יגחר
ל ע
ר היהצל
•
לוור ילפיומלק
ר שאפ מיגחר
ל עירצהלה
ה שריהד
מי ש
א ד
לוןשכי
ל ש
ת רושאפ לדעמו
ת רושי לראקוש
•
רטבפ
,ג רישח
ת רושאפ
ע מונ
ה ז
"רך דורעבי
"א של
ת רושי
מרשתהמ
ת אזרשח מלא
כן ול
זו הותשראפ לחסתיימ
•
ילוע מכך
ל כזה
ם א
,ך ור צאיןש
ם גירי חגיסו
ש ה ילמ
אז הםלי עריזהכל
? •
ג סו מיםיגחרש
ון כיומ
Runt
imeE
xcep
tion
או
Erro
rם רזיוכ מ
בגאו
ב שמח ביהפו צלא
ה עי בללבג
או ת כניתו בגם פלל
יתכנתו האת
ה יצמרש
ה כנתו הבתביבס
•
ותירש
ל בכ
ת רולק
ם ליכו וייםפוי צנםאי
ה אל כיםיגחר
•
צבהמ
ה ר זשכאת וכניתו הרתצילע
ם מיור גהם
ל כל
ך דרב
,ין א
מרשתהמ
ר חזוש לותיבשח
ף ד
יםברהס
יק ר
אוצם יגיריח
םי
ללהכמ
• ם הזה
ל כל מיםצאיו
Cla
ssC
astE
xcep
tion
,O
utO
fMem
oryE
rror
,יםיגחר
ה כמ
ד עו
לי אוו
•
ג סו מיגחרב
Cla
ssC
astE
xcep
tion
איכד
ם אלא אפללט
א לקהצישי
ם חיטוב
לרהמוא
לו ם רוג
)אם
ר ומכל
ג רי חכןית
יתכנתו בגם פללבג
א של
( •
פללט
ם מיפע לתן נירוןיכבז
ר סומחב
:ת רושי ליםראקו
ם א
להדו גרוןיכת זמולכ
ק קושז
כ, ם איגחר האת
ס פולת
אי ד
ליו עיעוד מותירשה
•
רתאח
ך דר בלהעוהפ
ת אצעלב
ת סולנ
או ר שאפ
ה כז
ה קרבמ
,ון כרבזי
ת וניסכ חתריו
)ת שתמששמ
ת טיאי
ר ותך ידר
ל שלמ
יםבצבק
( ,ה אינ
ש יקשב
ה ולפעשה
ש תמשלמ
ע דיהו לאו
רוןיכבז
ר סומח
ל גל ביתשראפ
טול
ד קו
ע קט
ל כבלסר לעם טאין
ם רימק השני בבלא
לוהל
ם גיריבח
ל פ
.ם א
יםסו מוסיפמט
ה הי יוסיחשי
ח טימב
ה לקמח
ל ש
ן כותי השללמ
,ך ור צאין
ג ריבח
ל טפל
Cla
ssC
astE
xcep
tion
יתכנתו בגם פשל
ה קרלמ
.
ם אבלא וסיחל יש
ס פוטי היהיה
ה מיםדע יוננואי
ת כניתו השל
רי קוהמ
ן כותיב
,נו וא
תואו
ת צק ליםשבקמ
,יגחר בפללט
ך רי צאז
.
ומ דפןאוב
ה ,
וי יכ סש יבוש
ם קובמ
א אל
ן רויכבז
ר סומח בפללט
ם טע
ן אי רסומח לההבוג
,ורחסבמ
ל טפ להישכל
ך דר
ש יבושו
.קףש בוראמכ
,ל פוטי
חר אתםריגואל בשמושי
ת היו לוליכ
,רוןיכבז
י כונחס
ר ותי
,ע צובי
י אאו
ע צובי האי
ל עעהוד התןומ
ש יק בשיאנו השתמשהמש
ה ולפע
ל ש
ט חלמו
כרבזי
ר וס חללבג
ון .
להכא
ם רימקב
,ת איםרדשוש
ם מיעצ הכלש
ב שוח
הםשל
ם ריתמשהמ
ת ארוחזש ייגחר בוליפהט
,ל ש
ה יסתפ
ש רולד
ל כו יזהו
ודהק
ל ש
ת מו רמהבכ
ג ריהח
.
םעצ
א הו
ג ריח
class
IncomparableException
extends Exception {…
}
• איבנ
ך רי צואה
) ם(ע ופ מותשד
לו ף סיהו לשראפו
ויםותירש
•
למל אב
הצם ע
? •
ורבר
א למתבא
,גויוולס
ק פימס
ג ריהח
ל ש
ס פוטי הריה
•
ת רישאפ
ה יבס
1 :או
ת כניתו בגם פללבג
ג רי חשל
ה קרבמשבמח הכתערבמ
,גםהפ
ת אקןלת
ר שאפשי
ע יד מרתחזה
•
ת רישאפ
ה יבס
2 :יו על
ע דיהו ליךצרש
ג רי חשל
ה קרבמ
ש תמשלמ
")ל גל בלהשנכ
ה ולפעה
("...
,שתמשלמ
ה דעהוה
•
ת רישאפ
ה יבס
3 :ש שאוהת לשראפשי
ע ידמ
)ירנד
( •
בהטו
א לבהסי
:'בג
צם עוא הבר דכל
ה אוו
ף ד
יםברהס
יק ר
םעצ כיגחר
•
'בגל לכ
ה אוו
יק ראיבנ
ת חולפ
ש ם יגיריהח
,ל קבשמ
אי בנ
זתרומח
,ת רושיו
getMessage
זתרומח האת
ר חזישמ
• ברהס
ת רוזמח
ם עיגחר
מי עצ
ר צולי
ל ובמק
,ר כולז
ך רי צבלא
לאה אל כותרוזמחש
ותימתא מ
,לל כרךבד
,ש תמשלמ
ה צגלה
)תןכניתו השל
ה שפ
ה ות אברדו
ח כרבה
א לשתמשהמ
,ר שכוו
וטרה
ק פימס
ד מי תלא
תן כניתו
ל ש
וי יטהב
( •
יםכבורמ
ם גירי חירגדלה
וי רצ
א ל
,ר דיהג לצוי רלא
ד חובייו
יגחר לוםגרול
ל שיכלה
ל לו עהםשל
אי בנשה
ם גיריח
;ך מסה יז
ריקוהמ
ג ריהח
ת א
ף ד
יםברהס
רי
ק
םגיריח לחרא
ש מושי
•
ותולג זרי חסתפיות
ג רי חעל
ה דעהו
הן שב
ת פושב
,תן ני
ל כושי
ת רושי
ש ממ לנת מעל
ם גיריהח
ון גנמנ בשתמשלה
יםוסיפט
ר ספ מוךמת
ד אח מרך עירחזלה
public void polyMethod(…
) throws
resultType1, resultType2 {
do something
if (…
) throw new resultType1(…
);
else throw new resultType2(…
);
}
• בג
וי רצ
א ל
'ודמא
ר יק
ם גיריהח
ון גנמנש
ל גל בוהאו
ף ד
יםברהס
יק ר
ה וזח
גי ריח
ל ע
ת רועה
)בג
ין א
'והאו
(
• גי ריח
RuntimeException
יתכנתו בגם פעל
ם עידימו
• שללמ
,NullPointerException
ל עברמע
ל עיעוד מ
שס חוביי
ש תמשלה
ר סואיה
כו ער
null
•
זהחו
ל ש
ת רוהפ
ה אל
:ותכנהת
ת שפ
ל ש
ה חוזה
•
ם קיסו פרתעז בדרוגומ
ש ורמפ
ה לקמח
ל ש
ה חוז האם
בגם קייחו
ם ניייאולב
'והאו
,זהחו בדהמי עוקבד לליאו
ר שאפ
•
ותירש מאהציבי
או ה יסכנ בזהחו בדהמי עאי
ה גלמת
ר שכא
,ל עיםיעודמ
ג ריח
דם קאיתנ בדהמי עאי
ג סומ
,חר אאיתנ
,או
אי מרשתהמ
ם קיו
•
'בגזהחו
גי ריבח
ת בנימו
ה יכתמ
ין אוהאו
;שת ירואח
ת פושב
ף ד
יםברהס
יק ר
'גזהחו
גי ריחה וווא
טהשו פשהגי
:
public String getVersion(int i) {
if (i > length() || i <= 0)
throw new PreconditionException();
•
ותעי בשלוש
:יתשרא
,יםבבערמת
ד קווה
ה חוזה
;ד חוביי
תי עייב
ה זר חותודנק
ה כמ
ש ם יא
)קי סופ
retu
rnאו
th
row
( •
יתשנ
,ד עוש
ם מיעצ
ה נחמו
ת כנובת
ב שו חנוןנגלמ
ם וא תלאבו
נו געא נל
,שהרוי
•
יתשליש
,ה יקבד האם
ה חוז האת
ק דולב
א של
ה וטש פרך דאין
רהיק
;ת וכניתו המתבר
זו כרך דיךצר
/קהחלהמ
ת רמ באו
•
פקמסש
ם נייצוחי
ם פיוס תנםשי
יםחוז בכהמי תים
םזיחו
ת זרע בוןיכת בכהמית לםייוניצח
ם ליכ
לנו יםועידש
יםכלה
,
יםריסח מקםחל ונםחי
קםחל
,
הם
JMSA
sser
t ,
iCon
trac
t ,
jCon
trac
tor
,H
ands
hake
,JM
L ,
Jass
,JP
P.
ם גיריח
םעירוג
•
ותטר מודלע
ם גיריבח
ם שיתמש מיםתחמפ
,ותדקוצ מותפח
•
מנל עוא התרביו
ע רוהג
ש מושיה
לה זותהילשא
ך סולח
ת
• מהוגד
:לטהק
ת רייספ
/ גשל
ט פל
'ר ספבמ
ת מכתו
ה אוו
ם דידוקי
)en
codi
ngs
( סטטק
צי קב
ר בוע
,ת אורסלג
ל אב
נהשו
ם דידוקי
ר בחבמ
ך מולת
ר ות מיהריספ השל
ת ונוש
•
לאאו
ך תמד נדוקי
ם הא
ל אוש לרך דאין
•
מךנת
א לודידבק
ש תמשלה
ם סימנ
ם אבלא
,ע דימו
ת רושיה
יגחר
ל ע
java.io.UnsupportedEncodingException
•
יףעד
תהילשא
ת זרבע
ך תמד נדוקי
ם הא
ר בר ליה ה
בהשחמ לילרגת
:ם אה
EOFE
xcep
tio
nקצדמו
?
בץ קו לובכת לאו
א רולק
ר ותר ישאפ
אי ש
ע דימו
ג ריהח
,פוסו לענוהגש
ון כיומ
.זה כיגחר
ר דיהג ליה הדקוצ מאםה
,תהילשא בשתמשלה
ה הי
ך רישצ
או ?
אש
או ג ריח
תהיל
?
class TaggedVersionedString {
…
//
som
e im
plem
enta
tion
of V
ersi
oned
Stri
ng
public void tag(int i, String t) {…
}
requ
ires
: t is
not
an
exi
stin
g ta
g in
this
obj
ect
&
1<=
i<=l
engt
h()
ensu
res:
get
Ver
sion
(t)=
=get
Ver
sion
(i)
public String getVersion(String t) {…
}
requ
ires
: t is
an
exi
stin
g ta
g in
this
obj
ect
en
sure
s: r
etu
rn_v
alu
e !=
nu
ll }
ף ד
יםברהס
יק ר
םקד האיתנ לתשוגי
ני ש
•
ל ש
ם קד האיתנ
ע רגכ
tag
וחא נ ל
,ם הא
ק דולב
ך דר
ין אכי הרסלג
ת יכשו מבר כנהתות נרוזמח
•
איש
ף סיהו ליא החת אותשראפ
להשא העל
ה ענשת
ה לת
,אז ו
כךה ראי יוסיפט
ח קול
: if ( !vs.exists(t) ) vs.tag(i,t);
else …
tel
l the
use
r th
at s
he c
an't
use
the
tag
t
• ת רושי בזה
ת אוקבד לשראפש
או ta
gם איגחר
ל עיעודלה ו
סהגר לכתשוי מבר כזתרומחה
,כך
ה ראי יוסיפט
ח קו לאזו
: try { vs.tag(i,t); }
catch (DuplicateTagException e)
{ …
tel
l the
use
r th
at s
he c
an't
use
the
tag
t }
ף ד
יםברהס
יק ר
ולגד
ל בד היןא
ה וראלכ
•
ר ותה יראג נריבח
ש מושיוה
"סיןח
" ,ת חו פשור דואשה
ון כיומ
ר ותח יטימב
ק ספוה
ח קוהלמ
)ותקינ תוקבד ליחבט מרטבפ
( •
קהחלבמ
ם ריאח
ם שימושי בבלא
, מתריו
יםכבור
,ל בד השי
תהילשא בשמושי הבתטול
ף ד
יםברהס
יק ר
דלהב
ש ם ימיעפ לבלא
:בדעו
ה ז
static void tagAll(VersionedString[] a,
String t) {
boolean duplicate = false;
int i;
for (i=0; i<a.length; i++)
if ( a[i].exists(t) ) duplicate = true;
if (!duplicate)
for (i=0; i<a.length; i++)
a[i].tag(a[i].length(),t);
else …
tel
l the
use
r th
at s
he c
an't
use
the
tag
t }
ף ד
יםברהס
יק ר
א לזה
ל אב
...
static void tagAll(VersionedString[] a,
String t) {
boolean duplicate = false;
int i;
try {
for (i=0; i<a.length; i++)
a[i].tag(a[i].length(),t);
} catch (DuplicateTagException e) {
now
wha
t? s
ome
elem
ents
hav
e al
read
y be
en ta
gged
,
and
we
don
't ha
ve a
met
hod
to r
emov
e ta
gs!
}
ף ד
ריסבה
םיק ר
יגחר
ם וג
ה תילאש
ם גליאו
?
• רישאפ
,יקמעל ועיא י לבלא
•
ת אצעלב
ל כוק יספשה
ת אוודבו
ע ודח יקוהל
ר שכא
ם ג
ת רושיה
)שללמ
,סהגר
ף לא
ת יכשו מלא
ת רוזמחה
( ,ב חיי
א הו
ק סובפ
ק ספ לאהריהק
ת אוףעטל
try-
catc
h
• ולרבלס
ף וסבנ
,ותקינ תדקבו
ד מי תפקהס
,ת אוודבו
ר שכא
ם ג
ור צכך באין
ך•
יגחר
מו כרךבע
ל רבסו מלהאיש בשמושי
מ, ע מנהי לשראפ
תהאו
ך רי צלאש כקהדיהבמ
ו, רךצו האת
ע מונ
ע בצ לותנס ל
יחצל תאם
ת דע לנת מעל
ה ולפע האת
ף ד
יםברהס
יק ר
ס טואטס
ם עצ
יגחר
ם קומב
•
ר שאפ
ל עוחדוק יספ הכודרש
ס טוטא סצםבע
ג רי חיףחללהלוןשכי
,למ
שלMatrix a = …
; Vector b = …
; Vector x;
SolveStatus s = new SolveStatus();
x = a.solve(b, s);
if (s.succeeded()) {…
} else if (s.failedSingular()) {…
}
• חהצל השל
ה קרבמ
ל עית יחופ
;ן לוש כרהמק ביליע
ר ותי
ף ד
יםברהס
יק ר
םגיריח
ם כוסי
•
נא תאת
ם קיי לפק סשל
ון של כעל
ם עידימו
ם גיריח
חרהא
י ,
דםהק
אי תנ
ת איםקי
ח קוהלש
ת רולמ
•
אי תנ
ם קיי לוחלקמה
ש רולד
ר שאפ
אי ר שכא
ק צדמו
א הו
ג ריח
ותירש החתצל האת
ח טייבש
ם קד
,ק פימס
ין אוחלק לכי
או טהליש
,די מרהיק
ח קוהל
די ל י עקהדי בכי
או ,
ה ש קכי
או תיציתמ
ם קד
אי תנ
ר דיהגל
•
ע מנו לוליכ
ה הי
ח קוהל
ם אדקוצ מינו איגחר
ת זרבע
תו או
טהשו פתהילשא
•
תו ת ותואי כבו
ש תמשלה
ף די עבל אבר דכל לצם עוא היגחר לא
• וחלק ביגחר בוליפט
:ל עלוש
ח קולל
ה דעהור ותמשהמ
ר חזוש
ג ריח
)חר אליאו
(ה ימשהמ
ע צובי
או לו ש
רתאח
ך דרב
ף ד
יםברהס
יק ר
ק חל
7 ותלקמח
ת חבהר
ף ד
יםברהס
יק ר
תורזכת
:ת רושיה
com
par
eTo
int compareTo(Comparable other)
throws IncomparableException {
VersiondString other_vs;
try {
other_vs = (VersiondString) other;
catch (java.lang.ClassCastException ce) {
throw new IncomparableException();
if (this.length() > other_vs.length())
return 1;
…
}
ף ד
יםברהס
יק ר
ולפיכש
• ורזככ
,ה לקמח הורעב
ת רושי האת
נו תחפי
LinkedVersionedString
,ק שמנ האת
ש ממשמ
VersionedString
•
שקמנ האת
ת שממשמ
ה לקמח
ל לכ
ף תק
ק דיו בותירש
תו או
•
יךצר
,כן
ם א
,כזו
ה לקמח
ל בכ
ת רושי האת
ל כפשל
•
צוי רלא
ל פושכה
:להנג
ם א
,שלמ
, לותירש השמומי בגםפ
,תק לרךצטנ
תואו
ת לוולשכ
ת קוחלהמ
ל בכ
תו או
ן
ף ד
יםברהס
יק ר
וןתרפה
:תטשפמו
ה קחלמ
•
שקמנ לתףשוהמ
ת רושי הרתגד האת
ף סיהו ליה הצויר
•
בגל אב
'חר אריביתח
ה בנבמ
ש תמשלה
ך רי צוהאו
,ה לקמח
ת שטופמ
)ab
stra
ct c
lass
( abstract c
lass V
ersionedString
implements Comparable {
public int compareTo(Comparable other)
throws IncomparableException {…
} abstract public int length()
; abstract public String getLastVersion();
abstract public String getVersion(int i);
}
ף ד
יםברהס
יק ר
תטשפמו
ה קחלמ
•
ממוכ
שקנ
,לםש
א לוסיפט
ה ירגדמ
:ר דיהג לשראפ
להכא
ם מיעצ
ר יצלי
ר שאפ
אי ל אב
ה לי אותסוייחתיה
•
ל אב
ת רושי
ל ערהצה הבה
ש ם י ארקם ו אטתשופ מקהחלמ
רהגד הלאל
;ח פתהמ
ת יל מאת
ת ול כותירש הרתצההabstract
•
ין צי ליםיבחי
ם ג
טתשופ מיאשה
ה לקמח הרתגדבה
•
חבור מותהי לדתועמי
ת שטופ מקהחלמ
ת קוחל מדיל י עת
שי האת
ת רודימגש
ת שיווחמ
יםותר
•
יםשטופ מיהותירש
ל שכ
ה לקמח
ה שמע לוא השקמנ
•
יםשקמנ
ל עיוןבד
מו כ
,ה לקמח העל
ל כל
ך דר בדרוג מזהחוה
טתשופהמ
,יםותירש הכל
ת אותשממשמ
ת קוחלהמ
ל עלא
ף ד
יםברהס
יק ר
תטשפמו
ה קחלמ
ת חבהר
class LinkedVersionedString
extends VersionedString {
protected int n;
protected Version last;
public void add(String s) {…
} public int length() {…
} public String getLastVersion() {…
} public String getVersion(int i) {…
} }
• שוהמ
ת רושי ללל כרהגד האין
ף ת
compareTo
ף ד
יםברהס
יק ר
םתירושי
ת עלפה
•
ה לקמח
ה יברחשמ
ה לקמח מצם עעל
ת רושי
ם ליעימפ
ר שכא
טתשופמ
) נהממ
ת שורי
( ,ה לקמח בדרוג מותירש האם
יתשוחהמ
,עלופ מואה
,ת רושי העלופ מרתאח
ל קבנתש
ה שרובי
טתשופהמ
ה לקמחמה
VersionedString vs1 =
new LinkedVersionedString();
VersionedString vs2 =
new CyclicArrayVersString();
vs1.add("Mr. X");
Lin
kedV
ersi
oned
Stri
ng.
add
int c =
vs1.compareTo(vs2);
Ver
sion
edSt
rin
g.co
mpa
reT
o
ף ד
יםברהס
יק ר
תשיחמו
ה קחלמ
ת חבהר
•
יוןרעה
:ם ש בסהגר
ון ימ סשראפל
)זתרומח
(ר ספבמ
ק רלאו
דרסו
•
שמומיה
:ספהו
פעמו
ה שד
ת ,
איבנ
,יםותירשו
class TaggedLinkedVersionedString
extends LinkedVersionedString {
protected java.util.Map tags;
public TaggedLinkedVersionedString() {..}
public void tag(int i, String t) {…
} public String getVersion(String t) {…
} }
ף ד
יםברהס
יק ר
חבורמ
ם עצ
ה בנמ
(Lin
kedV
ersi
oned
Stri
ng)
n:
..
.la
st:
...
Tagg
edLi
nked
Vers
ione
dStr
ing
tags
: ..
.
ף ד
יםברהס
יק ר
תחבורמ הקהחלמ לאיבנ
public TaggedLinkedVersionedString() {
super();
tags = new java.util.TreeMap();
}
• ס סיהב
ת לקמח
ל ש
אי בנ האת
ל עיהפ לשל י כדםקו
)ה לקמחה
יםיברח מתהאוש
(ח פתהמ
ת יל מרתעזב
super
•
ת לקמח לאם
יםנא בפרמס
ש ס יסיהב
,ד אח
ל כילפעלה
ר שאפ יםימתא מיםנטומרג ארתעב הדיל י עהםמ
,שללמ
,super("a d
emo");
•
יסבס הקתחל משל
אי בנ לשורמפ
פן או ביםראקו
א לאם
,'ג
ה יאקר האת
ת טיומוט אסהכני מוהאו
super()
ת ילתח ל
איבנה
ף ד
יםברהס
יק ר
םשיחד
ם תירושי
public void tag (int i, String t) {
tags.put(t,new Integer(i));
} public String getVersion(String t) {
int i;
i = ((Integer) tags.get(t)).intValue();
return getVersion(i);
}
ף ד
יםברהס
יק ר
םסיפוטי התיירכירה
Vers
ione
dStr
ing
Link
edVe
rsio
nedS
trin
g
Comparable
Tagg
edLi
nked
Vers
ione
dStr
ing
interface
abst
ract
ף ד
יםברהס
יק ר
וןנכ
א לדרסה
•
ביםותירש השמומי
-TaggedLinkedVersionedString
בצםבע
וי תל
א ל
-LinkedVereionedString
•
לגם
ם איית
ק דיו בשמומי
תו או
- CyclicArrayVersString
•
שראפ
,שללמ
,לו הל
ם תירושי האת
ף סיהול
)ע ופהמ
ה שדו
tags
(ת שטופהמ
ה לקמחל
VersionedString
•
לוהל
ת לוכוהי
ת איךצר
ד מי תלא
לי או
ל אב
,ך רי צלא
ר שכאו
תןאו
,ת איךצר
א לגם
ה שדה
tags
•
דרהס
ת אוךהפ לליאו
אי כד
ף ד
יםברהס
יק ר
Vers
ione
dStr
ing
Tagg
edVe
rsio
nedS
trin
g
Comparable
Tagg
edLi
nked
Vers
ione
dStr
ing
Link
edVe
rsio
nedS
trin
g
דרס התא
ך פונה
•
עתכ
,ת אבהחימר
ת שיוחהמ
ה לקמח האם
VersionedString
ם תירושי האת
ת בלמק
א ליא ה
ביםורשהק
-tags
,ת אבהחימר
א הי
ם אבלא
TaggedVersionedString
,כן
א הי
ף ד
יםברהס
יק ר
תיועהב
ת א
ר תפ
א לזה
•
יתשרא
, ת היו לוליכ
ת שיווחהמ
ת קוחלהמ
תי ש
ל ש
ש מומיהטיןלולח
ה זה
;ש ת יאחב
tags
לאה שניוב
,
ל כמי
ת אלוית
בהחימר
ת אח
;הןתיש
ת איםוצ ראנו
ם א
,ת אפלשכ ליךצר
יםותירש השמומי
•
יתשנ
, ביםורשהק
ם תירושי האת
ם צירו
ם אמה
-tags
,ל אב
ת רושי האת
א ל
compareTo
?צבהמ
ה ם זא
, אוךהפ ליךצר
ת ותשטופהמ
ת קוחלהמ
תי ש
ל ש
ר סדה
Ta
gged
Vers
ione
dStr
ing
Comp
arab
leVe
rsio
nedS
trin
g
Comparable
Comp
arab
leLi
nked
Vers
ione
dStr
ing
Link
edVe
rsio
nedS
trin
g
ף ד
יםברהס
יק ר
בהרומ
ה שרוי
•
נהמבב
ם תירושי האת
ר חולב
ה וליכ
ת שיוח מקהחל מכל
ה הז
ת שיווחומ
ת טושופ מותלקמח משהרוי ייד
ל עפקתס
א היש
ותימתאמ
,וד קולכפש
א לל
•
ערהצ
ה רבלמ
'ג, בהרו משהרוה יירמת
א לוהאו
) m
ulti
ple
inhe
rita
nce
,שהרו י
ץ בע
ד חיה יורמה
ר ותמי
ם תירושי
ל ש
שהרוהי
(
TaggedVS
ComparableVS
Comparable
CTLinkedVS
LinkedVS
VersionedString
CLinkedVS
TLinkedVS
ף ד
יםברהס
יק ר
בהרומ
ה שרון יאי
ה מל
בג
'והאו
• ת דרהג בבה רותשמי גרתשאפ מבהרו משהרושי
ת רולמ
וד קולכפש
א לל
ת קוחלמ
,ותעי בצר יוזה הנוןנגהמ
•
בגםש
ח נני
-TaggedVS
בגם ו
-ComparableVS
ר גדמו
ת רושי
m •
ת איםילפע משרכא
CTLinkedVS
,ל פעמו
ם הא
ComparableVS.m
או
TaggedVS.m
?רהחי בנוןנג מיךצר
•
ם ריגדמוש
ם תירושי
ל עגם
ע פישלה
וי ש ערהחיהב
ון גנמנ
תר יוההבוג
, בשללמ
- VersionedString
, ת שטופ מקהחל מ זואם
א ור קלהש
ת רושיש
ת רושיל
m Ta
gged
VSCo
mpar
able
VS
Comparable
CTLi
nked
VS
Link
edVS
Vers
ione
dStr
ing
CLin
kedV
STL
inke
dVS
ף ד
יםברהס
יק ר
בהרומ
ה שרוי יבל
ל פושכמ
ת עומנהי
class
VSComparator() {
static a
pro
cedu
re, d
oes
not
ref
er to
a “
this
” o
bjec
t
public int compare(VersionedString x,
VersionedString y)
{…
} } class
CLinkedVS
extends
LinkedVS
implements Comparable {
public int compareTo(VersionedString y) {
return VSComparator.compare(this,other);
}
ף ד
יםברהס
יק ר
תליכל
ר תיו
ה מוגד
class
Tagger() {
protected java.util.Map tags;
public Tagger() {...}
public void tag(int i, String t) {…
} public String getVersion(String t) {…
} } Class TLinkedVS extends LinkedVS
implementes Taggable {
protected Tagger tagger = new Tagger();
public void tag(int i, String t)
{ tagger.tag(i,t); }
ף ד
יםברהס
יק ר
ס חי
has
-aס חם יקומ ב
is-a
•
ל ש
ע ופהמ
ת דוש
ת אלהלימכ
ה שרוי
ם עצ ביסבס הקתחלמ
בהחימר הקהחלהמ
ל ש
,יםותירש האת
ה ילכלמ
,ת שראפומיסבס
ם עצ
ה הי
לו אי כיברח מצםבע
ש תמשלה
•
ס יח
ת ראנק
פי לו חשמושי לותשראפה
is-a
,ל שלמ
TLinkedVS
is a
LinkedVS
•
יגשלה
תן שני
ה אתהר
ת דמקו המהוגהד
ק דיו בותוליכ
תן או
ת א
עצ ביסבס הקתחלממ
ם של
ם עצ
ת כל הדיל יע
ה לקמחמה
ם ה יברחהמ
)יסבס השל
ע ופהמ
ת דוש
ת אבללק
ת מנ
ל ע
( ,ל ע
יידס סיהב
תי רושי לשתורמפ
ה יאקר
)
forw
ardi
ng( ,
די ל יוע
שה הרהצ
ס סיהב
תי רושי
ת אקתספ מקהחלהמ
)implements Taggable
( •
וטש פתריו
,שמי גתריו
,בלורמס
ר ותט ימע
ל אב
ף ד
יםברהס
יק ר
ת רושי
ת סריד
)m
eth
od
ove
rrid
ing
(
• להש
ם ונידמהק
ם ריהו החדמא
ת רושי
ת שורה ילקמח
ם אגם
,שחד מתואו
ר דיהג ללהכוא יהי
class LinkedVersionedString
extends VersionedString {
…
int compareTo(Comparable other) …
{
VersiondString other_vs;
…
if (this.n > other_vs.length())
return 1;
• יליע
ר ותי
,ע ופ מדהש לותחסתייה
nותירש לאהרי קוםמק ב
ף ד
יםברהס
יק ר
סהרילד
ת בוסי
תי ש
•
ה לקמח בותיליע בתר יוותירש האת
ש ממ ליםעמלפ
ר שאפ
ה לקמח בשרמא
ם עצ השל
ש מומי הטיפר
ת ארהכישמ
טתשופמ
•
שללמ
,קהחלשמ
ח נני
Cויןממ
א לרךמע ביםלמש
ת מרשו
;
שחד
ה לקמח
ה CS
ך ערהמש
ג אולד
ל אב
ה מנ משתלר
ה וליכ
יםבראי
ף סימוש
ת רושי הסתרי דדיל י עויןממ
ה היי
,ש חפול םרייב אשחפשמ
ת רושי הסתרי דדיל י עותיליע בתריו
•
יהשני
ה יבס
:זהחו האת
ק חז ללהכות ישורהי
ם מיפעל
•
שללמ
,ש
ר טוטראי השל
ה חוזה
-CS
ח טימב
ה ירחז מ
להעו
ר סד ברוחז יויםבראישה
,יוומכ
ם ות אילמכש
ך ערהמש
ן ויןממ
ף ד
יםברהס
יק ר
מיינ דםעצי וטאטס
ס פוטי
C static_C_dynamic_C = new C();
C static_C_dynamic_CS = new CS();
CS s
tatic_CS_dynamic_CS
= new
CS();
…
CIter i1 = static_C_dynamic_C.iterator();
// טוונו מקהרי סעל
ך תמהס לשראפ
אי ש
ר רוב
יתנ
CIter i2 = static_CS_dynamic_CS.iterator();
//ת וניוטמונ
ה יקסר
ל עמךסתלה
ר שאפ
כן ש
ר רו ב
CIter
i3 =
static_C_dynamic_CS.iterator();
// יתטונונו מקהרי סעל
ך תמהס לשראפ
ם הא
?
ף ד
יםברהס
יק ר
זהחו הקזוחי
•
זהחו הוקחיז לשמושי
ם אירו
ה גמדוב
:ם עצ
ך רי צוחלק
ם א
מר ופש מזהחו
ם עקהחלמ
)CS( ,
ש תמשלה
ך רי צואה
טי טא סוסיפמט
ה תנשבמ
CSס פוטי
ם עצםלע
ס יחתישמ
מי נאדי
CS •
רהחי בותשראפ
ח קולל
תן נוזה
:ך דר
ל גי רזהחו
C ,ה חוז
ך דר
ר ופשמ
CS
•
תר יושחל
ה חוז בחריב
ח קוהלש
ה למ
?ל ש
ש מומי הליאו
יליע
ר ותש יחל הזהחוה
,לק ליםובששח
ם טייבההמ
ת חולפ
; וחשללמ
,רההי מתר יוויןממ
א לרךמע ליםבראי
ת ספהו
,ת רולמ
טיאי
ר ותש יפוחיש
;ל עותלקמח
ט מע בשתמשלה
ב שו חליאו
רוןיכהז
ל וד גאו
ת כואי הותיקבד
ר חי מאת
ר זעלמ
ת מנ
ף ד
יםברהס
יק ר
קזוחי
או ה שחלה
?
• ק שמנה
VersionedString
ה לקמחוה
LinkedVersionedString
ר ספ מאת
ם ליבימג
א ל
צגליי
תן שני
ת אורסהג
,ל ש
ם קד האיתנ
כן ול
getVersion
ין ביהיה
ט מנגוארשה
א הו
1ין וב
length()
,ת אורסהג
ר ספמ
כהד עפנווסשה
•
ם צירו
נו שא
ח נני
לקהחלהמ
ת איברחלה
ה שחד
ה לקמח
BoundedVersionedString
סף נוותירש
ם ע
,chop(int i
) ,
ת אורסהג
ת אחקמוש
i-1
טהומ
;
רי אח
כזוה ודפק
,ל ש
ר ותהמ
ם חוהת
getVersion
ק רוא ה
iד ע
length()
•
סו מנהחימב
מתי
,זהחו האת
נו זקחי
,א של
ת רושי
נו ספהו
כי דםקו
ה הי
,רתאח
ה חינמב
ל אב
,ה חוז האת
נו שחלה
)ת א
פקהס
( ,ילגב מתר יודם קאיתנ
ם עותירש
ש ש יחד הפקלס
כי
ף ד
יםברהס
יק ר
ה פחלהה
ון קרע
)su
bst
itu
tio
n(
•
בעש תמששמ
ח קול
ס פוטי מוסיחך ידר
ם צ
LinkedVersionedString
ת איםקי מצםהעש
ח מני
ל ש
ה חוזה
LinkedVersionedString
•
ת שא
ם עצ הקהחל מזהאי מעתלד
ל כוד ימי תלא
ח קוהל
ילפע מוא התיורושי
;ה לקמחמה
א הו
לי או
LinkedVersionedString
ה יברחשמ
ה לקמח מוא הליאו ו
תהאו
•
ת אבהחימרש
ה לקמח מצם עכןל
LinkedVersionedString
א הו
לו אי כשממ
ג נההת ליבחי
ה לקמחמה
LinkedVersionedString
•
ה לקמחמה
ם עצ בתואו
ף ליהח ליהיה
ר שאפש
ך רי צמרלוכ
LinkedVersionedString
וחלק העל
ע פישה ישז
לי ב
ף ד
יםברהס
יק ר
זהחו התא
ש ליחלה
ה חבהר לורסא
כן ול
•
ם קד
אי תנ
ש רולד
ר סוא
ק חז
ר ותי
) לשה קתריו
וםקי
( •
שחל
ר ותר יאח
אי תנ
ח טיהב לוראס
•
ורמק בהרוצ הלאש
ס פוטי מיגחר
ל עיעודלה
ר סוא
) ע מנה נז
בגת ריביתח
'והאו
(
ותחר איםילבמ
,ס ור דותירש
ל ש
ה חוזה
)ש ממשמ
ת רושי
ל ש
או זקחו מזהחו
ם עבל אשקמנ
(רהצומה
ד מי תואה
א הו
ם קד האיתנ
"חר אדם קאיתנ
או ש ורם נקד
אי תנ
"
החרהא
אי תנ
א ו
"סףנו
ר אח
אי תנ
ם וג
ש ורר נאח
אי תנ
"
ם קד האיתנ
ת ארק
ק חז לתרמוש
בן מוכ
)ף וסהנ
ר אח האיתנ
א הו
true
(ר אח האיתנ
ת ארק
או )
א הו
ר אח
ם קד
אי תנ
false
(
ף ד
יםברהס
יק ר
ם תעכנתש הא לודע
ם א
...
public void doIt(VersionedString vs) {
for (int i=1; i<=vs.length(); i++) {
String s = vs.getVersion(i);
do s
omet
hin
g w
ith
s }
} VersionedString bvs =
new BoundedVersionedString();
add
vers
ion
s to
bvs
doIt(bvs);ה לפהח הרוןעק
ת אפר מבל איתירחב תקיןת
ף ד
יםברהס
יק ר
םגיריחה וסריד
class
BoundedVersionedString
extends LinkedVersionedString {
…
public void getVersion(i)
throws DeletedVersionException {…
}
• ל ש
ם קד האיתנ
ת ארש הדיל י עיהבע האת
ר תולפ
נו סיני
getVersion
כנול ע
,ה קרבמ
ל טפ לדי כיגחר
נו ספהו
ל אב
די ל י עבר כקהמחשנ
ה רס גשבק מוחלקש
chop
•
בדעו
א לזה
!ריהח
ת ספהו
ת ארתאח
ה ורבצ
ה שליהח
ג ותירשה
,יגחר בפללט
ח קוהל משתור דיא הכי
; גזה
ת א
'ה אוו
יתירחב תרתוסא
ף ד
יםברהס
יק ר
זהחו
גי ריחה ושרוי
•
יםותירש הוףבג
ה חוז הקתדי בעל
ה שמק
ה לפהח הרוןעק
, public void someMethod(…
) {
if (!( p
reco
ndi
tion )) throw Precond...;
• צרש
א הי
ה עיהב
ת רושי השל
ם קד האיתנ
ת אגם
ק דולב
ך י
שקמנ השל
או ס דרהנ
,הו מעתלד
ה וטש פרך דאיןו
•
מהדוב
,אי תנ
ת איםקי לותשהר ליךצר
ר אח
אי תנ
ת יקבדב
שקמנ האו
ס דרהנ
ת רושי השל
ר אחה
•
סףבנו
,ם איבנשה
ני לפ
ק דולב
ך רי ציםנא בשל
ם קד האיתנ
ת א
הוש מיםשעו
,ש
ון שרא הברהדש
ל גל ברישאפ
תי בל
ה וז
ם ה
יסבס הקתחל משל
אי בנ לואקר לוא היםשעו
ף ד
יםברהס
יק ר
םשיורא י לאיבנ
ל ש
ה וזח התא
•
איבנ האת
ם שיורא י לכי
,אי בנ
ך תו מותשורמפ
לו ם איור קלאא
בהחימר הקהחלבמ
•
סףבנו
,ך תו
ת ימסו מקהחל משל
אי בנ לראקו
ד מי תוחלק
קהחלהמ
ם ש בשמושי
,שללמ
VersionedString bvs =
new BoundedVersionedString();
• יסבס הקתחל משל
אי בנ
ל ש
ה חוז העל
ך תממס
א לוחלקה
•
לל כיםנא באין
ם קישמנול
ף ד
יםברהס
יק ר
חהפשמ הוןכנת
•
ה לקמח
Sub
ה לקמח
ה יברחשמ
Super
) ק שמנ
ת שממ מאו
Super
(ל ש
ה חוז בשתמשלה
ה וליכ
Super
נוישי
א לל
,
• תואו
ק חז ללהכוא יהיש
או ,
ותפח
ש רולד
ר ומכל
ח וקוהל מ
/או
תר יולו
ח טיהבל
•
לוראס
ל אב
-Sub
ל ש משחל
א הוש
ה חוז בשתמשלה
Super
•
כןל
,יהרכיר היםננתכ מאם
,ם ליבימג היםחוז העם
ת קוחלהמלהמע לותהי לותיכצר
ר ותי
,ה מט לותרניתיהמ
ת קוחלהמו
)ותילגבהמ
ת איברחלה
,פךהי ללאו
(
• רטבפ
,כנןלת
ך רי צותלקמח
ל ש
ה כיררהי
,גםו
•
ר שאפ
אי ת קוחללמ
ס סיכב
ת מוקיי
ת קוחלבמ
ש תמשלה
שהרוי ייד
ל עותשחד האת
ם ריוצם י אותתירוריש
ת שוחד
ף ד
יםברהס
יק ר
שהרווי
ה סמעה
•
ירסב
ה ראה נז
) ך תו מותורצדרוהפ
java.lang.String
(: static String valueOf(double d) {…
} static String valueOf(boolean b)
{…
}
• זה
ם עמה
ל אב
? overloaded(VersionedString
x) {…
} overloaded(LinkedVersionedString x
) {…
}
• ראנו
א ל
,יטחללה
ל כור יילפיומהק
, VersionedString vs = new LinkedVS();
LinkedVersionedString lvs = new LinkedVS();
overloaded(vs);
We
mu
st u
se th
e m
ore
gen
eral
met
hod
overloaded(lvs);
The
mor
e sp
ecif
ic m
etho
d ap
plie
s
ף ד
יםברהס
יק ר
םגזמו
ר כב
ה ל זאב
overTheTop(VS x, LinkedVS y) {…
} overTheTop(LinkedVS x, VS y) {…
} LinkedVS a = new LinkedVS();
LinkedVS b = new LinkedVS();
overTheTop(a, b);
• להמע לחת אקהציך ירישצ
ר רוב
,בלא
הן מיזו א
,ל ע
aאו
b?
• יטחללה
ך דר
ין א
;ת עלהפ
הרהשג
קיחו
א ל
תבג
'
והאו
ף ד
יםברהס
יק ר
תיוירברש
overTheTop(VS x, LinkedVS y) {…
} overTheTop(LinkedVS x, VS y) {…
} LinkedVS a = new LinkedVS();
LinkedVS b = new LinkedVS();
overTheTop(a, b);
• רירישב
ק חו
ה ז
:קובמ
ם א
קהרוהי
ה רסהג
ק רתההיי
ר ,
ה יאקרה
יתוק חתההיי
ה גרשל
•
מהתוהכ
ה רסהג
ת איםיפוס משרכא
,א לל
ת פכנה
ה יאקרה
יתוקח
;פייומהק
ל אב
חר אבץקו בזה
ם אזה
ת אלהיג
א ללר
,ודעב ליךשתמ
ת כניתווה
,קהרוהי
ה רסלג
א רולקו
•
לאיהלצפיומשק
ב טו
רק
נהשת הלאש
ץ וב קשל
ת אנהש ת
יתכנתו הותהגתנה
ז; רירישב
ב מצ
ה
ף ד
יםברהס
יק ר
ערו גתריו
לי או
class B {
overloaded(VS x) {…
} } class S extends B {
overloaded(VS x) {…
} ov
erri
de
overloaded(LinkedVS x) {…
} ov
erlo
ad b
ut
n
o ov
erri
de!
} S o = new S();
o.overloaded( lvs );
((B) o).overloaded( lvs );
Wha
t to
invo
ke?
ף ד
יםברהס
יק ר
םתעכנתש הא לודע
ם א
•
כןסו מיוןרע
א הי
ה מסהעש
, •
מןהז
ה ו זשיעכ
אז
• ה ם זביחימרש
ם סיפוטי לחסבי
א הי
ה מסהע השרכא
ד חוביי
זהת א
,טיןלולח
ם ריא זל
•
ותרירישב
ר וצי
,ת ביטיאיטואינ
א לרהצו בהגתנשמ
ד קו
)הה
ס פוטי בלוי תילפע מצםשע
ת רושיה
א ול
ם עצ לותחסתיי
צםהע
ל ש
ה לקמח ברק
( ,ק דיו בותירש
ה איז
ת דע לשיקוו
עלופמ
•
ה ידיח הרהמוהתש
ון כיוומ
)ללבכ
ם א
(יתתטאס
א הי
,איכד
א ל
ף ד
יםברהס
יק ר
שרובי
ת
class B {
overloaded(VS x) {…
} } class S extends B {
overloaded(VS x) {…
} ov
erri
de
overloaded(LinkedVS x) {…
} ov
erlo
ad b
ut
n
o ov
erri
de!
} S o = new S();
o.overloaded( lvs );
((B) o).overloaded( lvs );
Wha
t to
invo
ke?
ף ד
יםברהס
יק ר
חתופ הוןקרע
-ורסג
של
ם ביכימרה
נהוכ תכתער מ
יםורסג
ת היו ליםיכצר
,
ר ומכל
שמושי ליםכנמו
,יםוחפת
ת היו לעהש בבה ו
,כנימו
ה חבהר לם
יםקי הנוישי
א לל
•
יהצו רותפח
ם קיי הנוישי
די ל י עבהרחה
•
רוןיקהע
ל ש
ד אח
ש מומי
א הו
ה שרוהי
ון גנמנ
;ש מומי הלא
ה ז
ידיחה
—שמומי
ד עו
ה ראס נורהק
ך שהמב
,pl
ugin
s
• 'בג
והאו
,לםש
נו אי
ה שרוי ייד
ל ערוןיקהע
ש מומי
•
חד ארההו מתרמיו
ת שלר
ר שאפ
אי
• ה חבהר האם
ב חיהר לשראפ
אי יסבסמה
ה ילגב מתריו
;ם האהזו
ה עיהב
ת אוףעקשת
ה שפ לבהרח היאמצלה
ם ליכום יאת
?
ף ד
יםברהס
יק ר
תחבורמ
ה חפשמ בםייחה
•
ותוחלק
ין וב
ה יברחמ
ה לקמח
ין שב
ס יח בדנו
ה כעד
;ת חוקול
להש
,שקמנ האו
ס סיהב
ת לקמח
ל ש
ת חוקול
,ם אינש
ת חוקוול
ם שיתמש מהם
ה לקמח
זו אי בוקדי ביםדעיו
)ובהר
( •
ת בורח השל
ש מומי הביןה ולקמח
ש מומי
ין שב
ס יח בדוןת נכעלהש
•
ין מע
הן ם סיפוטי היתכיררהי בולסל מרךאו לותלקמחה
הםלי עורשמ לששי
ם ליכל
ה לששי
ת חבור מחהשפמ
•
אתת זומלע
,ה כז
ל לומס
ל עינןשא
ת קוחל משל
ם שימומי העל ותבלהג
ם שו
ין א
,שקמנ
תו או
ת אותשממ מלןכו
ם אגם
ף ד
ריסבה
םיק ר
םביורעמ
ם תירושי
class TaggedLinkedVersionedString
extends LinkedVersionedString {…
} VersionedString vs =
new TaggedLinkedVersionedString();
vs.add("Mr.
X");
Lin
kedV
ersi
oned
Stri
ng.
add
vs.add("Ms.
Y");
Lin
kedV
ersi
oned
Stri
ng.
add
vs.tag(2,"F");
Tag
gedL
inke
dVer
sion
edSt
rin
g.ad
d
• יםותירש הכל
ת אסנודר
ם אלאא
,ס סיהב
ת לקמח מיםותירש
רבעו מפןאו ביםעלופ מבהחימר הקהחלהמומ
ף ד
יםברהס
יק ר
כןול
,
• ליםיבחי
ה יברחהמ
ה לקמח התירושי
ל ש
ר תמשהמ
ת אבדכ
בתרחמו הקהחלהמ
,ת חבורהמ
ה לקמח השל
ת רושיש
ון כיומאח
א קרהי לולעל
בהחימר הקהחלהממ
ת רושי
רי
• פךהיול
,ל פעמו
ת היו לשוי עבהחימר הקהחלהמ
ל ש
ת רושי
בתרחמו הקהחלהמ
ל ש
ת רושי
רי אח
,ל ש
ש תמשהמ
ם גכןול
ל ש
ת רושי
ת ולפע
ם סיו
רי אח
ם קייהת ליבחי
ת חבורהמ
יסבס הקתחלמ
ף ד
יםברהס
יק ר
יהטרמסי
ר סחו
אן כשל יאב
•
ת אבדתכש
ש רולד
ר שאפ
ה יברחהמ
ה לקמחמה
ל ש
ר תמשהמ
יסבס הקתחלמ
;ת שוורמפ
ת חסתייומ
ר ותר יוחמא
ת תבנכ
א הייסבס הקתחללמ
•
להש
ת בורחלה
ת דעמו
א ליסבס הקתחל מבלא
,נו תכויי
ותרב
ת בורחה
,שהחד
ה חבהר
ף וסתו תתי מעתלד
ר שאפ
אי ו
•
ם ריתמשהמ
ת אבדלכ
ס סי בקתחלממ
ש רולד
ר שאפ
אי כן ל
תהאו
ת בוחימרש
ת קוחלהמ
ל ש
•
זהם קובמ
,שרונד
ר גד יובהחימר הקהחלהמ
ל ש
ר תמשהמש
תואו
רו יפ
א ליסבס הקתחל משל
ם סירו דלא
ם תירושיש
ך כ
•
זהל לכ
ם גיוא דיךא
?
ף ד
יםברהס
יק ר
םרימתשמ
ד כב לצדכי
•
תרביו
ט שוהפ
ה קרהמ
:ם שני מלא
ה יברחהמ
ה לקמח התירושי
יסבס הקתחל משל
ע ופהמ
ת דוש
ת א
,ל ש
ר תמשהמולל כחסתיי מלא
ה יברחהמ
ה לקמחה
ל ש
ע ופהמ
ת דוש ל
יסבס הקתחלמ
•
ת רושיש
ה יחבט מיסבס השל
ע ופהמ
ת דוש
וי שינ מותנעימהה
מרשתהמ
ת אפרא י לבהחימר השל
•
ל ש
ר תמשבמ
לו הל
ע ופהמ
ת דוש לותחסתיימה
ת עומנהיוה ה
חהטימב
ה יברחהמ
ה לקמח
,לל כרךבד
,ל ש
ה פרמה
יסבס הקתחל משל
ת רושי
די ל י עזה המרשתהמ
•
חר אוטש פרהמק
,ת נחופ
וץפ
:יםרסנד
ם תירושי הכל
,גיןרוסי ליםעלופ מלא
ת קוחלהמ
תי ש
ל ש
ם תירושי
ף ד
יםברהס
יק ר
םסירו דםתירושי בשמושי
•
ת רושי הוךמת
ס רו דותירש בשתמשלה
וי רצ
או ך רי ציםעמלפ
רסדוה
,שללמ
, class AudibleButton extends Button {
public void Clicked() {
getDisplay().play(clickSound);
super.Clicked();
} }
• ת ספהו
די ל י ערסנד השל
ה חוז האת
ק חז מרסדו הותירשה
רסנד לאילוו
א וצת
;חרהא
אי תנ
ת אותזקמח
ת רואח
ת אוגמדו
•
ם קיוול
ס דרהנ
ל ש
ם קד האיתנ
ם קיו לאיחר ארסדו הותירשה
ראנק
ס דרהנ
ה שב
ה ודנק ביסבס הקתחל משל
ר תמשהמ
ף ד
יםברהס
יק ר
ת דוש
ם סידרא נ לעפמו
•
ם ריסתמו
ם ה
)sh
adow
ed( ;
ללככ
,צוי רלאל ולבמב
ה ז
•
ס סיהב
ת לקמח לאם
Bע ופ מדהש
ש י
f ,ה לקמח הגםו
ה יברחהמ
Sע ופ מדהש
ל ערההימצ
f ,
ה לקמחמה
ם מיעצב
S ם ש ביםשונ
ע ופ מותשד
ני ש
יו יה
f ,ל ש
ד אח
Bל ש
ד אח ו
S •
יתאטסט
א הי
ע ופ מותשד לותחסתייהה
:יםדרוגשמ
ם תירושי
B-ב
ל ש
ע ופהמ
ה שד ליםחסתיי מ
B) א הו
ם עצשה
ת רולמ
ה לקמחמה
ל ועבפ
S ( ביםדרוגשמ
ם תירושיו
-Sע ופהמ
ה שד ל
ל ש
S •
יםותירש לותחסתיימה
רי גמ לנהשו
ה ז
:ס פוטי הפי לידתמ
מידינה
•
די ל י עפעמו הדהש
ת אורבח לתןני
super.f
ל ש
ם תירושי ב
Sה יקיצ
די ל י עאו
((S) this).f
ף ד
יםברהס
יק ר
עפמו
ת דוש לתטיאטס
ת סוחייתה
SubClass s:
BaseClass b =
(BaseClass) s;
s.method()
b.method()
s.field
b.field
(BaseClass)
field: ...
method: ...
SubClass
field: ...
method: ...
ף ד
יםברהס
יק ר
Sub
Sub
Root
Left
Righ
t (Rig
ht)
(Roo
t)
fiel
d:
...
(Lef
t)
(Roo
t)
fiel
d:
...
Sub
(Rig
ht)
(Lef
t)
(Roo
t)
fiel
d:
...
בהרומ
ה שרובי
ה גיסו
ד עו
ר ורעמ
ה ז
•
לאאו
ון דמ קאב
ף שת לאםה
?
ף ד
יםברהס
יק ר
התא
ף תשל
ב א
הוןמקד
?
• ם א
Left
- וRight
ה שד בחת אכל
ת שותמש מ
field
ל ש
Ro
otתירוריש
פן או ב
,טי פר
ק ות עכהרי צהן מחת אכל
ר רוב
לוש
•
אםה ומ
הן תיש
ל ש
ר תמשהמ
ת אותבדמכ
Root
? •
יקספ מידתמ
א לזה
:ל ש
ר תמשהמש
ח נני
Root
א הו
i>0
,-ש
Left
אי תנ האת
ר תמשלמ
ה יפוס מ
i>5
,ל אב
Right
ה יפוסמ
i<4
,שו
-Root
לוהל
ם ריתמשהמ
ת ארהפי מלא
• שליכ
ף תושיש
ר רוב
•
בזה
ת אורפת לשראפ
אי -
Left
- וRight
ם שו
הן בני
ין אכי
חסי
•
ל ש
ש מומיה
Sub
יךצר
ורבח ל
תףש לאם ה
;בךסת מסקהע
ף ד
יםברהס
יק ר
תיולרדומו בעוגפ
ה חבהר הוןגנמנ
•
ה הי
ם וזי חריחומאם ומיעצ
רי חומא
ד עמש
זי רכהמ
ון עיהר
ותריולודמ
:ה לקמח
ל ש
ם טייבהה
ת אידפרלה
ת וליכה םטייוונרלש
טיפר הנהניי עהםש
ם טייבההמ
ת חוקולל
•
שלה
לי בקהחל משל
ש מומי האת
ת שנו לשראפ מזה
ל עיעפ
ותוחלק
,תהוקחזות
ה וחית פאת
ד ריהפ לרטבפו
•
ת קוחללמ
ש מומי האת
ם פישחוה וחבהר
ם רישאפ מאם
ת בוחימר
)ת רמ בפעמו הותשד
ל ענההג
protected
( , ותיברחמ
ת קוחל מעל
ע פישלה
ם וייש עשמומי ביםנוישי
•
ראנו
א לזה
ם מיפעל
,ת שוומממ
ת בוחימר הותלקמח האם
ת צוו
תו או
די ל י עותזקוחמתו
וחיתפ
,ון טחבי
ש ם י אאו
ך בכ דתיבע
ה תנשא יול
ח צלמו
ס סיהב
ת לקמח
ל ש
ש מומישה
•
רא נוותהי לולעל
ה וזותריולוד מותברשו
ת בורח הבלא
ף ד
יםברהס
יק ר
תיולרדומו הורמשי לתשוגי
•
בשמושי
-ha
s-a
בוםמק ב
-is
-a ,
ע ופ מדהש בשמושי
ר ומכל
שהרובי
ם קובמ
•
ה גנ המתבר
ש מושי
private
ותשד
ר בו ע
ת לקמח
ל ש
ע ופהמ
להש
ם רייבוצי
א הל
ם תירושיוה
ס סיהב
;ה גנ המת רפקמס
ה ז
בשמושי למהדו
-ha
s-a
•
קהחלהמ
ת איברחלה
ט חלמו
ר סואי
ת ילבמ
ש מושי
די ל יע
ח פתהמ
fina
lקהחלהמ
ת דרהג ב
• )
ח פתהמ
ת ילמ
final
תואו
ס רולד
ת סראו
ת רושי
ת דרהג ב
,ותהי ליםשוי עבהחימר
ה לקמח
ל ש
ם ריאח
ם תירושי
ל אב
יסבס הקתחל משמומי ביםלוית
;ר שמ מלא
ה ר זומכל
ותריולודמ
(
ף ד
יםברהס
יק ר
רךהד
ף סו
•
החסשי
ף גר בהישכל
ה לקמח מיםפסמט
ם א
-ex
tend
sירגד מ
,ה לקמח לידתמ
ם עיגימ
java.lang.Object
•
שורש
ם עווןמכ
ץ עוא הרףהג
ר ומכל
•
בהחימר
א הי
מי ת אנתציי מלא
ה לקמח
ל ש
ה דרהג
ם א
,ה שפה
פהסימו
ה חבהר הוקפס
ת איתמטטואו
extends java.lang.Object
•
בגם עצ
ל שכ
ח טימב
ה ז
'ם סייסי ביםותירש
ק ספ מוהאו
יםימסומ
, משהרוי ייד
ל עאם
-Object
סהרי דדיל י עאו
• ם הלוהל
ם תירושיה
equals
,clone
,toString
,clon
e ,
יםובש חותפח
ה כמ
ד עוו
ף ד
יםברהס
יק ר
שהרווי
ה חבהר
ם כוסי
•
שאפמ
ס רולד
או ם תירושיע וופ מותשד
ה לקמח ליףוסלה
ת ר
שחד מתםאו
ר דיהגול
ם תירושי
•
ולכפש
א לל
ד קו בסףנו
ש מושי
ת שראפמ
,ל ש
ון יקות
ה חבהרה
הןשל
ר קוהמ
ד קו
ת אאיןש
ת קוחלמ
•
ה שנ מבל אשקמנ
ת שממשמ
ה לקמח
או ה יברחמ
ה לקמחל
זהחו האת
ש ליהח לוראס
לו ש
ה חוז האת
,ת כנוהת
ת שפ
ל אב
אתה ופ כלא
זה הוץילהא
• ה ולכפ
ה שרוי
)בג
ין א
'והאו
(ת יריצ בותשמי גתר יורתשאפמ
ותשחד
ת קוחלמ
,בה
ש תמשלה
ה ש קבלא
•
ל נצ לשראפ מתואו
ת שלר
ם קובמ
ע ופ מדהש כצם עשמושי
ת קוחל מפרמס מיםותירש
)להפו כשהרום יקובמ
(ד ריהפול
הרף גאת
ין וטחלל
-is
-aיםשמומי
ין בותלויהת
ף גר מ
ף ד
יםברהס
יק ר
חק ל
8 ת קוחלמ
ם תירושיו
יםללוכמ
גלרייפמקו
ל כאל
'ה ללהכ במךתו
ה ווא
)g
ener
ics
(
לגו ספ נויםללוכ מיםותירש וותלקמח
'ה רסבג
ק רוהאו
1.5
ר או לאהיצש
יו סתב
2004
.זה הנוןנגבמ
ת כוומ תלא
ת מווד קותסאגר
.ם אכםלב
ת ומשלת
נהשח יתופי
ת יבסב ביםשתמש מתםא
.
ת א
ל ליהכ לסהננ
Ver
sio
ned
Stri
ng
•
ה ירגד הקהחלהמש
ם תירושיה
)ת קוחלהמק ושמנ האו
ותשונה
(ותרוזמח ליםפיציספ
יו הלא
ל כל
•
יםלמש
ר בו עמהדו
ה לקמח
נו לשהרושד
ח נני
, class VersionedInteger {
public int length() {…
} public void add(Integer s) {…
} public I
nteger getVersion(int i) {…
} public I
ngeter getLastVersion() {…
} }
• מיםותירש השימומי
-VersionedString
אן כגם
ם פיתק
• ם פלשכ ללאש
ף די עבלא
ף ד
יםברהס
יק ר
ילכללה
ת לוק בשרפא
,בלא
class VersionedObject {
public int length() {…
} public void add(Object
s) {…
} public O
bject
getVersion(int i) {…
} public O
bject
getLastVersion() {…
} }
• בר דכל
ל ש
ת אורס גורשמ לשראפ
ת כע
•
ל אב
ותעי בתיש
נו לשי
;יתשרא
,ה הי תסהגר
ל שכ
כן ית
חר אוסיפמט
,ונוכוהתש
ה מלא
ה וז
, vo.add("The letter A");
vo.add(new Integer(3));
ף ד
ריסבה
םיק ר
םסיפוטי
בי לג
ע ידמ
דן ובא
•
ותרוזמח
ל ש
ת אורס גרק
נו מרש
ם אגםש
א הי
ה נייש
ה עיב
, מזרוחהמ
ך ערה
-getVersion
ס פוטי מוא ה
Object
;ס פוטי מיה הרנושמש
ם עצשה
ה בדעוה
String
דהאב
VersionedObject vo = new VersionedObject();
vo.add("The letter A");
vo.add("The letter B");
String v1 = vo.getVersion(1);
com
pila
tion
err
or
String v2 = (String) vo.getVersion(2); o
k
• ה לא מיםוסיפט
ת יקבד
א לל
ה ציילמפקו
ין בורבח ליםלצנא
נו א )
צהרי
מן בז
ק רעתבצמת
ה יקבדה
,קהציבי
( ,ד קו
ל פושכ
ין וב
)ה לקמח
VereionedString
ת רדנפ
ה לקמח ו
VersionedInteger
(
ף ד
יםברהס
יק ר
ם ליכלמו
ם תירושיה וקחלמ
)g
ener
ic(
class
Versioned<T> {
public void add(
T s) {…
} public int length() {…
} public T
getLastVersion() {…
} public T
getVersion(int i) {…
} }
• ם שה
T ס פוטי
ג יצמי
)שקמנ
או ה לקמח
(
ף ד
יםברהס
יק ר
תללוכמ
ה קחלמ בשמושי
Versioned<String> vs =
new Versioned<String> ();
Versioned<Integer> vi =
new Versioned<Integer> ();
vs = vi;
com
pila
tion
err
or
vs.add("The letter A");
vs.add("The letter B");
vs.add(new Integer(3));
com
pila
tion
err
or
String v1 = vs.getVersion(1);
ok, n
o n
eed
to c
ast •
ת רושיה
vs.add
ס פוטי מותחסתיי הבללק
ה צפ מ
Tר שכא
T
א הו
String
ו, בי לג
ה ומ דפןאוב
vs.getVersion
ף ד
יםברהס
יק ר
ני פל
םטיפרה
,קרעיה
•
ד אב ללי בודבק
ר חוז
ש מושי
ר שאפ לעדמיו
ה ללהכ הנוןנגמ
הסס פוטי הבילג
ע ידמ
צם עשל
טי טא
•
להכל הליב
,ת שמ הדיל י עצעתב מודבק
ר חוז
ש מושי
חר אוסיפלט
ד אח
ס פוטי מותחסתייה
,ליכל
ר ותי
;ע רג
תו אומ
קהציי יבל
רי קוהמ
טי טאהס
ס פוטי האת
ר חזש לרך דאין
•
ותיקיצ ברךצו
ע מנו לוא הלהכלהה
ד קיתפ
,חראו מותדקנבש
•
'בגוהאו
,ל כלמו
ס פוטי
)מו כ
T (קהחללמ
ר שנק
ד מית
מ/שקנ
;ביטימירי פוסיפלט
א ול
ך ערלמ
א ל
•
יםבכסתמ
ם טיפרה
ה ללהכ הנוןנג מבין
ה ציאקטראינ הללבג
ה שרוהי
ס יח
ין וב
) החסי
-is
-a(
• ת רואח
ת פושב
)C
++
(יםועיצ בוריפש לגם
ת עדמיו
ה ללהכ
ף ד
יםברהס
יק ר
בדעו
ה ך זאי
•
ת לוכלמו הותלקמח הכל
ת אפהממ מלרפייומהק
Versioned<Something>
לקמח ל
ת אח
ה ה ילרג
)א ל
לתכלמו
(א היש
ם עצב
Versioned<Object>
•
לתכלמו
ה לקמח בשתמששמ
ד קוב
,ד קו ליףוס מלרפייומהק
מותשמ הצעלב
ת מנ
ל עותיקיצ
-Object
פיציפיהס
ס פוטי ל
,ל שלמ
Stri
ng
• ע דיתו
א ללםעוול
ח ליתצ
ד מי תקהציהיש
א ודמו
ר ילפיומהק ל ע
ClassCastError
, String v1 =
(String) v
s.getVersion(1);
• מרלוכ
,ל כלמו הוסיפהט
)T (ר ילפיומהקש
ד קומה
ק מחנ
צרמיי
;מן בז
ם סיפוטי
ת ינותק
ת קודילב
ק רשימושי
א הויהציילמפקו
;ה יקמח
א קרך נליתהה
)er
asur
e(
ף ד
יםברהס
יק ר
ס חוי
ה ללהכ
is-a
Versioned<String> vs =
new Versioned<String> ();
Versioned<Object> vo =
new Versioned<Object> ();
vo = vs;
shou
ld th
is w
ork?
vs.add("The letter A");
clea
rly
allo
wed
vs.add(new Integer(3));
clea
rly
not
allo
wed
vo.add(new Integer(3));
oops
, the
com
pile
r w
ill
in
corr
ectl
y al
low
this
• נהסקמ
:Versioned<String>
וג סלא
א הו
ל ש
Versioned<Object>
;כוןל נאב
בי טיאיטואינ
א לזה
ף ד
יםברהס
יק ר
פהצומ כודעבא י לזה
מו כתרושי
כן ול
•
ל כלמו
ת רושי
ר דיהג לסהננ
)לתכלמו
א לקהחלבמ
(ק דויבש תלופו כותקבעו
ת אורס גשת יאורס געם
ם עצ באםה
, class
VersionedUtils {
static
boolean consecutiveDuplicates(
Versioned<Object> v) {
for (int i=2; i<=v.length(); v++)
if (v.getVersion(i).equals(
v.getVersion(i-1))) return true;
}
}
• ם עלו
א רולק
ר שאפ
אי כי
Versioned<String>
ף ד
יםברהס
יק ר
'גםריקו
static
boolean consecutiveDuplicates(
Versioned<?> v) {
for (int i=2; i<=v.length(); v++)
if (v.getVersion(i).equals(
v.getVersion(i-1))) return true;
}
• בג
ש מושיה
'ר וק
'? 'ת רושי
ר דימג
)רהדווצפר
אן כ
(ט מנגוארשה
א הו
לו ש
"הוש משל
ת אורס גרתסד
" •
יתמלורפ
,Versioned<String>
ל ש
ג סו
א לוא ה
Versioned<Object>
ל ש
ג סו
ם יהשנ
ל אב
Versioned<?>
ף ד
יםברהס
יק ר
תאוסגר
ת דרס
ם לישלה
ה סננ
static void complete(Versioned<?> a,
Versioned<?> b) {
for (int i = a.length()+1;
i <= b.length(); i++)
a.add( b.getVersion(i) );
}
• את
ם מילישמ
ה צרהק
ת אורסהג
ת דר ס
aה של
א יפהסש
ך כ
ל ש
א יפהס
ה הית
b •
בדעו
א לזה
!הוש משל
ת אורס גהן
ת רוסד התיש
,
א לליאו
ל אב
הו ש מתואו
ל ש
)'הג
ד אח
ל בכ
ה שונ
ה ורבצ
ר שיקלה
ל כור יוק
יםנטומרגהאמ
( ;ר חזישמ
ה מאת
getVersion
ל ש
b
אי לי או
שראפ
ליףוסלה
-a
ף ד
יםברהס
יק ר
וןתרפה
:ללוכמ
ת רושי
<T> static void complete(Versioned<T> a,
Versioned<T> b) {
for (int i = a.length()+1;
i <= b.length(); i++)
a.add( b.getVersion(i) );
}
• השני
ת אלץמא
ל כלמו הותירשה
הושמ
-תו או
ת היו ליםא
הושמ
, מזרוחהמ
ך ער הכןול
-b.getVersion
ס פוטי מוא ה
ל ש
ט מנגואר ליםתאשמ
a.add
•
ללוכ מותירש
,לתכלמו
ה לקמח
ל ש
ת רושי
מו כ
,ם גוליכ
ס פוטי מרך עירחזלה
Tס פוטי מיםמיקו מיםתנש מירגדלה ו
T
ף ד
יםברהס
יק ר
תיוללהכ
ת בלהג
•
ת דקבוש
ה ורצדרו פירגדלה
ה נסת נכע
ת אורסהג
ם הא הול עוניוטמונ
ר סד בהן
ם עצ בותורשמש
,ת חינמב
א ל
כנןתו
ת חינמב
א אל
הן של
ס דקאינה
•
שללמ
,ת רוסדה
(1,3,4,898)
- ו("A", "BCDE", "X")
להעו
ר סד בהן
,ל אב
(1,2,1,2,1)
לאא הי
static boolean monotonic(Versioned<?> v) {
for (int i=1; i < v.length(); i++)
if (v.getVersion(i).compareTo(
v.getVersion(i+1)) < 1)
erro
r!
return false;
return true; }
ף ד
יםברהס
יק ר
תיולל כםליבימג
ך אי
static boolean monotonic
( Versioned<
? extends Comparable> v ) {
for (int i=1; i < v.length(); i++)
if (v.getVersion(i).compareTo(
v.getVersion(i+1)) < 1)
now
it's
ok
return false;
return true; }
• הג
ת אלנוגבה
'קרו
:וסיפ טכל
ף ליהח לוליכ
א לואה
,ק רלאא
ל ש
ג סו
א הוש
ס פוטי
Com
para
ble
) ל ולכ
Com
para
ble
מועצ
(
ף ד
יםברהס
יק ר
דימ
נו בכתס האל
?
• כןש
ר רוב
•
ריה
ון גנמנ
ת אגנוהצש
ני לפ
נו להיוש
ם ליהכ
ת זרבע
ם ג
ת אירגדלה
נו וליכ
ה ללהכה
mon
oton
ic
• ק שמנ
ם רידימג
נו היי
Versionable
ת אצגליי
ת מנ
ל ע
ותסאגר
ת דר סשל
ם רייבהא
,ק שמנ כתואו
ם רידימג
נו הייו
ת איברחשמ
Comparable
,יםשקמנ
ד עו
לי אוו
•
בדעו
ה הי
ה ז
,שתמשלה
ם כירי צינוהי
אז ל אב
ל עותיקיצ ב
שם רייבהא
-getVersion
ק רלהכישמ
ה דרמס
ר חזי מ
חר איםסו מוסיפמט
ם מיעצ
ק ראו
ת וזוחרמ
•
ר ומכל
היה ללהכ בשמושי הרתמט
ותיקיצ
ע מנו לא
,ע רג בבלא
בהש תמשלה
ם ליחימתש
בהש תמשלה
ך רי צ
ם תירושי בגם
ה עי בוםש
ה יתהי
א לורמק בהןשב
ת קוחלומ
ף ד
יםברהס
יק ר
ל ע
ד עו
קשמנ
להכל הלי בםי
•
ד עו
ש ה יללהכ בשמושי
א לל
ם קישמנ
ל עסתוסמבש
ה שגיב
יהבע
•
Stri
ngל ש
ג סו
א הו
Comparable
,ל ש
ג סו
א לבלא
Versionable
•
ק שמנה
Versionable
ת ארודיהג
ר שכא
ם קיי
ה הי
א ללל כ
ה לקמחה
Stri
ng
• ק שמנ הרתגד האם
ם ג
Versionable
ה וממא
ת שור דלא
ה חבהר לברמע
)קהרי
(ל ש
Com
para
ble
,ייןעד
ר ילפיומהק
ש
ב שחו
-String
ל ש
ג סו
א לוא ה
Versionable
: interface Versionable extends Comparable {}
ף ד
יםברהס
יק ר
תינניעמ
ה מוג דודע
interface Comparator<T>() {
static public int compare(T x, T y);
} class Sorter<E> {
static public
int sort(E[] a, Comparator<...>
c) {...}
}
• ל ש
ס פוטי הטררמ פאת
ר דיהג ליךצר
ך אי
Comparator
)
וםאד ברהחס הרהגדהה
(?
ף ד
יםברהס
יק ר
בלהג
תיולל כת
וןתחת
ם סח
ם ע
• יחננ
,שללמ
,ס פוטי הטררמשפ
Eס פוטי לורש ק
Double
•
ה שווהמ
ם שא
ר רוב
cס פוטי מיםצמ עותשולה
ל כו י
Double
,יוןהמ
ת גרש
ולפע לכלתו
• יםקינ תיםקר מוד עשל יאב
•
ס פוטי מיםצמ עותשולה
ל כוה ישווהמ
ם א
Number
,ר רו באז
ס פוטי מיםצמ עותשולה
ל כוא יהוש
Double
,כי
Double
ל ש
ג סו
א הו
Number
•
כךפיל
,ם מיעצ
ת שוולה
ל וגמס
ת היו ליךצר
ה שווהמש
ר רוב
ס פוטי
הו שאיזמ
Tש
-
Double
לוש
ג סו
א הו
,
int sort(E[] a, Comparator<? super E>) {
..}
ף ד
יםברהס
יק ר
ם אים נסיפוטי
)ra
w t
ypes
(
• לג
ף וסה נללהכ הנוןנגמ
'חראו מוהאו
,ר שאפ לרךצו
ה הי
כן ול
ותללהכ
בו ין שא
שן ד יקו מגם
ת ריומטפר
ת קוחלבמ
ש מושי
class Versioned<T> {…
} Versioned<String> vs =
new Versioned<String>();
Versioned raw =
sam
e as
Ver
sion
ed<?
>
new Versioned();
sam
e as
Ver
sion
ed<O
bjec
t>
raw = vs;
ok
vs = raw;
"un
ckec
ked"
com
pile
r w
arn
ing •
נאס פוטי בשמושיב
,ון ליהע
ל בובג
ף חלמו
ס פוטי הטררמפ
)ל כל
ך דרב
Object
(
ף ד
יםברהס
יק ר
תיורווזמ
•
בגש
ל גלב
'ת עומצבא
ת שומממ
ה ללהכ
ה אוו
קהחיהמ
ון גנמנ
,כרן זאי
ה יצ רמןבז
וסיפהט
ר מטפר ל
•
מרלוכ
,ס פוטי מצם עבין
ין בחלה
ר שאפ
אי ה יצ רמןבז
Versioned<String>
ס פוטי מצם עביןVe ו
rsioned<Integer>
,רטבפו
,ם יהשנש
ה ראה ניצ רמןבז
קהחל מתהאומ
•
ה לקמח לותיכשי
ת יקבד
ל עיעשפ מזה
)instanceof
( ,ל ע
מום מיעצ
ל ש
ת קוציי
יםללכ
,ם מניסוהמ
ת דוש
ל וע
static
)
ת שוכי
ה לקמח בדוןר נשכא
ר הינב
לו הל
ם גישמו האת
יתמאעצ
( •
וסיפט
ר מטפר
פי ל עאיבנ לואקר לותשראפ
ע מונ
ה וז
,מרלוכ
<T> void m(T x) { T y =
new T(); .
..}
ille
gal
ף ד
יםברהס
יק ר
ם כוסי
gen
eric
s
• ללי בותיקיצ מנעימלה
ר שאפ מלהכלהה
ון גנמנ
וד קפלשכ
•
ד קו
ת קוציו י באיןש
ת שוורמפ
ם אים נסיפוטי
בו ין שאו
)ר יתל
וקדי
,יםנא
ם סיפוטי בשמושי הבילג
ר היהז
א ללרפייומהק
ם א
(ם סיפוטי
ת חינמב
ח טו בואה
)ty
pe s
afe
( •
צהרי
מן בז
ה יקיצ
ע צובי בשליכ
א לזה כודק
:ת קודיהב
יהלצפיומהק
מן לז
ת רועבמו
•
ל עותהרהצ
ך סב מלהכלבה
ש מושיה
ל גל ביםוסיפט
ין וב
ם ליכלמו
ם סיפוטי
ין ביתיביטואנטאי
א הל
ה ציאקטראינה
החסי
-is
-a
• בג
ת לוכל השל
ש מומיה
'ותרוימוז
ר ספ מללכו
ה אוו
ף ד
יםברהס
יק ר