תונכת החנומ םימצע - cs.tau.ac.ilstoledo/courses/oopj/presentation.pdf · גב...

457
בג עצמים מונחה תכנות' אווה סיון טולדו יהודאי ועמירם המחשב למדעי הספר בית, אביב תל אוניברסיטת© ל שמורות הזכויות כל יהודאי ועמירם טולדו סיון, 2004

Upload: others

Post on 10-Sep-2019

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

בגם מיעצ

ה חונמ

ת נותכ

'והאו

יוןס

דוולט

איודיה

ם ירעמו

שבמח העימד לפרהס

ת בי

,יבאב

ל תטתסיברוניא

©

לותורשמ

ת ויוזכ הכל

איודיה

ם ירעמו ולדטו

ון סי

,20

04

Page 2: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

סורק התרוטמ

ה יד מנהבק

ה כנתו

ח תופי בותיעסישמ

ת גיולודותומ

ת בנהולגד

:יםצמ עחהמונ

ת כנות

,יםחוז

ת זרבע

ון יכת

,ע צובי

יהלצפיומ קמןבז

ת קודי בוםימקסמ

,טיומוט ארוןיכל זהוני

גפתש

ם עותכרהי

'והאו

ותכנ תותנויוממי

ר פושי

יםדמתק מוחית פלי כעם

ת רויכה

יםארשת נונוקרע

,יםלפתחומ

ם תניש מוחית פליוכ

ת פוש

Page 3: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

זו התצגמ בשמושי

ט רמפו בכם ליםלקמח

ו אנ

ת צגהמ

ת א

pdf

ה. יםודעמ

ם הבץקו ביםגיהזו

וריעש ביםרינמק

נו שא

ם פישקה

,וה

דימוע

זהמו כברהס

פי דהם

ם גיי זואי הם

.סךהמ

ל עגתמצ האת

א רולק

ן ובכמ

ם ליכו יתםא

;ת איםראקו

ם את

ם א

סךהמ

ל עגתמצה

,ת אירעבלה

ף דיע

Acr

obat

א מל

ך מס ל

)co

ntro

l-L( ,

די כ

בסטטקשה

דימוע

די מטן קדלגו בצג יולא

ר סבהה

.

אתא רולק

ם פידימע

ם את

ם א

יר ניעל

ת צגהמ

,

יםודעמ הכל

ת איסדפלה

וי רצ

,ירהני

ב וחלר

,ירהני

פי דשל

ם דיצד השני

ל ע

,ון ליהע

ל שו ביםדפ האת

ך שדול

הםשל

.תהאו

ם חיותופ

זו כרהצו בגתמצ האת

ם סיפימד

ר שכא

,ד מובע

ע פייו

קףש היוןעלה

,תיותחומ

,קבעו הודעמב

,יםברהסה

.

יםברהס

ש ף ישק

ל לכ

א ל

.אין

ר שכא

,דףה

ק רי

ר שא נקףש לקבעו ה

)ת מנ

ל ע

סתדפמו הרתובהח

ל ש

ה בנהמ

ל עורשמל

.(

Page 4: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ת יופצי

ם אותי

)הןליאמ

ת נוובמ לברעמ

(

תנואי מתםא

:

• שהמעה וריאותי לנתאוז מותחסתייה

יםבנמום וליעיד ימולי

רי ומח

ותטלהמ

ע צובי בכהמית

כם מחנואנ

:

• לקחושי

ר ומהח

ל כאתריק

,ם ריעושי הותדמתקלה

ם תאבה

)סו בלאו

טרמסהס

ף (

• מןבז

לו וטשי

ת לומט הכל

ע צובי

,קובדא ישל

ת לומט

ל ולכ

יםרט פשל

מי עצ

ד מולי

להעי פותתפשתה

Page 5: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םצימלמו

ם ריפסר ועז

רי מחו

זר עריומ חשל

ם גיסו

י שנ

ם לכ

ק חל נאנו

:ד מולי לדהבו עפיוד

ו הז

ת צגהמ

וחיתהפ

ת יבסב

.

פיציספ

ד מולי

ר ספ

ל עססבומ

נו אי

ס ורהק

,ם ריספ

ר ספ משל יאב

ם וייששע

ת כנובת וללבכ

ם מיעצ

ה נחמו

ת כנובת

ם יכותיעיד

ת איברחלה

ם לכ

ע סייל 'בג

טפר בוהאו

.

• 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

,פהש האת

ה תחפיש

,ל כימ

א הו

ם ג

ל ש

ן קווהמ

ד עותי האת

ותריספה

,יםספנו

ד מולי

רי ומ חכןו

.

Page 6: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םמיעצ

ה חונמ

ת נותכ

ה מל

?

• ותופטרטס קיםיתלע

ת רוקו

ה דסהנב

: קיםיינבנ

יםרסו

,יםפל נויםוסמט

,יםצצפומת

ם ריכו

יםמדלו

ת פורוסטקטמ

יםשבמח הלםעוב

,ח פת ללוןשכי באובטהת

ת פורוסטקט הובר

נהוכת

ה ולגד

חהותשפ

ה כנתו

ש מישלה

ון שלכי באו

;ב רו

ל ש

ל ודהג מעונב

ת פורוסטקטה

הנהוכת

ת כנו תשל

ת גיולודותוהמ

ח תופי

ת אלהכל

ם חילק הקתהפ

יםצמ עחהמונ

,עז בכוןתי

ם וזי חרת

)de

sign

by

cont

ract

( ,יהלצפיומ קמןבז

ת ינותק

ת קודי בוםימקס מועיצב

,ל הוני

טיומוט ארוןיכז

Page 7: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יםברהס

Page 8: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ק חל

1 ותלקמחם ומיעצ

Page 9: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םייברע

ם חיונמ

ש תמשלה

ו לנתדש הלוהל

ם פישקב

יםריעב

ם חימונב

.ל כי מזה הדףה

ם חימונ

של

יםומרגהת

מתשיר

יםצמ עחהמונ

ת כנובת

ם בישוח

.

תריעב

-נגא

תלי

ולתחא

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

Page 10: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תקוחלמם ומיעצ

ם עצ

)ob

ject

ה) ם תירושי

ת פקמסש

ה כנתו

ת ידיח

א ו

)m

etho

ds (

ם ומיסוימ

שעי רג

ב מצ

מן ת זודנק

ל בכ

ה לשי

ם סוימ

)st

ate

( •

ה לקמח

)cl

ass

(וג סתואו מיםצמ עשל

ה וצקב

א הי

,ר ומכל

רהצו

ה ותבא

ם תירושי

ם ות אאת

ם קיספשמ

ם עיופ מהם

ם מיעצה

)in

stan

ces

(קהחלהמ

ל ש

ריםצבבמ

ם אימצה נלקמח

ה ותמא

ם וניש

ם מיעצ

יםשונ

ם עייג

ורמק הודבק

ת טיסט הותשהי

א הי

ה לקמחה

;א הו

ם עצה

צהרי המןבז

ת מידינ הותשהי

Page 11: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יםברהס

Page 12: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תרודווצפר

ת מעו לםתירושי

ותירש

ק ספשמ

ם עצ

א הי

ע לנוקו

ת ופק

:יםיסרט כרתכימ

צםהע

ל ש

עי רג הצבבמ

וי תל

ל קב מוחלקש

ת רושיה

:ה כמ

זהאיו וכרנמ

ר כב

ם סיטיכר

רהדווצפר

א הי

ה פרמס

:קוהל

ר ש קלי בפרסו מצאויו

ס כנח נ

פרמס השל

ב מצל

יםדמקו

ת חוקו ללויבשק

ת רושי לאו

ה

Page 13: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

רהספבמ

או ע לנוקו הפתקו בורמת

ת מועלמת

לו הל

ת אוגמדוה

,ה הוושמ

ר תו

חיוכ נצבמ

ל ש

ג סו

.יעמג

נו של

ח קוהל

ר שכאש

ת חומני

ת אוגמדוה

,ור תאין

.וחלק הורעב

ת פיסו האהוצהת

ל עיעשפ מלא

ם גורהת

, העל

ק ר

ש רושד

מן ז

ותירש האת

ל קב לנת מעל

.

Page 14: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םסיפוטי

ם מיעצ

ת חומונ

ת פושב

)שללמ

Java

, C#

, C+

+, P

ytho

n,

Smal

ltal

k (

יםוסיפט

ם גהן

ת קוחלמ

) ty

pes

( •

וסיפט

ש ה ייצהר

מן בז

ם עצ

ל לכ

:יךשי

א הו

ה לישא

ה לקמחה

ת טיסט

ה ורבצ

ם סיפוטי

ת קוודשב

ת פושב

)יהלצפיומ קמןבז

( ,יםתנשמ

,יתכנתו בותשמ

,מו

וסיפט

ם עיםרזכ

:ה תנש מאם

ללבכ

הו שלמ

ס יחתימ

,ה לקמחמה

ם עצ

א הו

ה הז

הו שהמ

זתכרמוה

שק חול

רנויאת

שהמ במדנלש

ל כל המן

ם איוצש י י

ך'ג •

יתטט סרהצו ביםוסיפט

ת דקבו

ה אוו

,ם גוהכמו

C#

,C

++

;Py

thon

,Sm

allt

alk

ותדקבו

א ל

Page 15: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יםברהס

Page 16: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םסיפוטית וקוחלמ

:מהוגד

קהחל מירגדנ

class VersionedString {…

} יתכנתו בחר אוםמקב

,יםתא מוסיפט

ם ענהשת מירגדנ

,ס פוטי מנהשתומ

String

) ירגדלה

ך ור צאיןש

ת ימקי

ה לקמח

(: VersionedString vs;

הנהשתמ

צםלע

ס יחתי מלא

ין די ע

String

s; ל"כנ

קהחלהמ משחד

ם עצ

ר צוני

, האת

ר שונקו

נהשתמ

vs

ליו א

,

vs = new VersionedString();

ס פוטי משם

ר שולק

ר שאפ

אי ל אב

String

ה לקמחמה

ם עצ ל

VersionedString

:

s

= vs; יהלצפיומ קאתגיש

!

Page 17: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יםברהס

Page 18: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

נהשוא רקהחלמ

:יהורטסהי

ם ע

ת וזחרמ

קהחל מירגדת נכע

.יתשרא

,ם מיעצ

ה מיםילבמ

ר דינג

קוספם י היםותירש

ה איזו וצג ייקהחלהממ

.

• גשל

ה דר סצגמיי

ם עצ

זתרומח

ל ש

ת אורס

זתרומח ליתכנעד

ה רס גפתוס ההם

ק ספם יעצשה

ם תירושיה

,ת כניעד הסהגר הפתליש

)נהרואח

( ,ה שנה ירס גפתליש

מתסוימ

,זתרומח

ל ש

ת אורסהג

ר ספ מרתפיוס

כךל כשימושי

ם עצ

א ל

,ת דר סיםצגמייש

ם מידו

ם מיעצ

ל אב

יםשימושי

כן ם הבץקו

ל ש

ת אורסג

בשמושי

ת וזוחרמ

וםמקב

ציקב

ם

שטמפ

מהדגהה

ת א

Page 19: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יםברהס

Page 20: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

נהשואהר

ה קחלמה

:ת דרהג

םתירושיה

class VersionedString {

public void add(String s) {…

} public int length() {…

} public String getLastVersion() {…

} public String getVersion(int i) {…

} }

• public

:ריבוצי

ת רושי

,שהגי

ת בלהג

ין א

void

:מהאומ

;רך עירחז מינו אותירששה

מן מסש

ה זר חרךע

int

:לםש

ר ספמ

String

:ותרוזמח

ג צוליי

ה לקמח

, גפתש ביתבנמו

'והאו

Page 21: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יםברהס

Page 22: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םשיעו

ם תירושי המה

?זהחוה

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

Page 23: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יםברהס

Page 24: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םשיעו

ם תירושי המה

?ה וזחה

)שךמה

(

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(

))

Page 25: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יםברהס

Page 26: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

זהחוה

אי תנ

דא

אי תנם ו

רח

• תיחלהת

ב מצ

ש ם ימיעצל

שנים דיצממו

ת רושי

ל לכ

יםנא ת

ם קד האיתנ

)pr

econ

diti

on (

פהמצ

ת רושי המה

ר דימג

ר אח האיתנ

)po

stco

ndit

ion

(פקמס

ת רושי המה

ר דימג

יםקימת

ם קד האיתנ

ם א

,יםקי ליבחי

ת רושיה

,א הוש

ר אחל

יםסימ

,חרהא

אי תנ

ת א

יםקימת

א לדםהק

אי תנ

ם א

,וםכל ליבחו מלא

ת רושיה

;א ל

ורעצל

,יתכנתו האת

ף עילה מנעימלה

א ל

,ה יעפג מנעימלה

א ל

יםתוני נבנבמ

,וםכל

Page 27: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יםברהס

Page 28: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תחוקוול

ם קיפס

יםדד צשני

ה חוזל

:וחלקק וספ

יםירגדשמ

ה לקמח הוא הפקהס

;ת אשממ לכהרי ציאה

גודבק

ם תירושיה

'יםתא מוהאו

קהחלהמ מיםצמבע

ש תמששמ

ד קו

א הו

ח קוהל

ותירש לראקו

א הוש

ני לפ

ם קד האיתנ

ת איםקי ליבחו מוחלקה

יבחו מפקהס

,ם קד האיתנו ולק חאת

ם קיי

ח קוהל

ם א

יםקימת

,חרהא

אי תנ

ת איםקיל

Page 29: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יםברהס

Page 30: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

חקו לשל

ת נוכונ

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));

Page 31: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תנוכונ

,עד צריחא

ד עצ

יא הוחלק השל

ה שונרא הרהשוה

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להש

ט מנגואר האת

ה יסדפ מ

,ך רישצ

זתרומח

ת היול

,טידרטנהס

ט פלל

,אההב

ה ורש לרתובוע

.ס ורהק

ך שהמב

ממדנל

רהשג השם

ת עושמ מה

.

Page 32: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םזיחו

ה מל

?

• שהמומי בותתל

א לל

ה לקמח

ל ש

ת עושמהמ

ת אירגד מזהחוה

לשראפ מזהחוה

ל ש

ה וקחזהתח ותופי האת

ד ריהפ

ק ספה

ותוחלק השל

לו מא

;ה כנתו

ח תופי בתחמפ

ה הוו מהזו

ה רדהפה

קףהי

ת חבר

ותוחלק

ל ש

ת ונונכ

ח כיהו לשראפ מלירמפו

ה חוז

ך שהמב

ס ורהק

הוה חוזשה

ה ראנ

ב כימר

א )

דילע בלא

(ת כחהוב

פק סשל

ת ונונכ

אהנר

ס ורהק

ך שהמב

גם

ש

ל עקהחל משל

ת עושמהמ

ת דרהג

ה חוז

די י

יםצמ עחהמונ

ת כנובת

ד וחמי בבהשוח

ובט

ת חו פזהחוב וטו

ה חוז

ש שי

בן מוכ

;ע ציס נורהק

ך שהמב

יםובט

ם וזי חרתגדלה

ת טושי

Page 33: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םביטו

ת חופ

ם זיחו

ת מעו לםביטו

ם זיחו

מום וזי חרתגדה

נהוכ תכוןתי בבתרכמוה וובש חדהקו ניא היםלחצ

,ך שהמוב

וטטררובפ

ה בדון נרסקוה

.ה מעל

ב שולח

ל חיהת לשיועכ

ר כב

י דא כבלאועגר לאו

ב טו לזהחו

ך ופה

.ם ולבע

ם וזי חשל

ר שהק בכך

ל עובשלח

ר שאפ

שיממה

,ותלקמח

ין ביםחוז

ל ש

ר שהק בקאדוו

א ל

.

תואו

ן בילה

ל שק

ה חוז

א הו

ב טו

ה חוז

,אפש

לו וכ ייםדדהצ

י שנש

ת פולצ

ר ש

בוד מולע

,שראפ הדתמישבו

,וי ילבמ

ני ש הצד הדתמי עאת

א ודלו

ל כוד י צכל

תיוויויבחיהת

.

Page 34: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תתוילאשת ודוקופ

ת רושיה

add

דהקו פוא הרנוגדשה

ה לקמח ב

) co

mm

and

( :יםתונהנ

ה בנ מצב מאת

ה שנ מואה

ם תירושיה

length

,getVersion

,getLastVersion

ם ה

ותלתאיש

) qu

erie

s( :

ה בנ מצב מותוד אדעמי

ם ריחזי מהם

יםתונהנ

,תואו

ם שני מלא

ל אב

ותלתאישת ודוקו פבין

נו רדהפ

ין א

יה ודפק

ם גהםש

ם תירו

תהילשא

ם וג

דהפרהה

ת בושיח

:קהחל משל

ק שממ הנתהב

ל עלהקימ

,זהחו הרתגד העל

ה ילמק

ם תיעיל

)ותוקרח

(ד ריהפ ללא

ת בוטו

ת בוסי

ש י

)יםועיצב

,(..

.

ב •בהטו

ה יב סדריעה

,דוריהפ

!

Page 35: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יםברהס

Page 36: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

VersionedString

n: 26

last:

Version

value: "The letter Z"

previous:

Version

value: "The letter Y"

previous:

Version

value: "The letter A"

previous: null

השמומי

קהחלמ

:וןעיהר

Page 37: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יםברהס

Page 38: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

קהחלמ השמומי

:תדושה

ותשד במרשם נעצ

ל ש

עי רג הצבהמ

,צםלע

ם כישייש

ם תנישמ

: class Version {

String value; זוסהגר

ל ש

ך ער ה

Version previous;

מתודהק

ה רסלג

ת סויחתיה

,שם יא

} class VersionedString {

protected int n; ותסאגר הפרמס

protected Version last; נהרואח

ה רסלג

ת סויחתי ה

}

Page 39: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ת דוש

)fi

eld

s (

םעצ

ל ש

ותשדה

יםתנש משל

ה וצקב

ם הצם עשל

.

ב מצ האת

ם גייצמי

ם להש

ם כיערה

צםהע

ל ש

עי רגה

.לו

ם טייפר

ת דוש

ש ת יימסו מקהחלממ

ם עצ

ל לכ

.

המ מרלוכ

יםתנש משל

יתבנ תעין מיא הקהחל

.

ם עצ

יםצר יושרכא

קהחלהממ

,ל ש

י טפר

ק ות עלו

ש שי

ם עצ

ו הז

ת בניהת מצקנו

ד אח

ל כ

ותשדמה

.

צר נוצםהע

ר שכא

טי ומוט אפןאו ביםחלותמא

ם עצ

ל ש

ת דושה

.ם תניש מגם ךדר

ה ותבא

ת טיומוט איםחלותמא

ם תירושי וותגרש

ל ש

ם נייזמ

.קי חו

ת א

שךהמ במדנל

ל חואתה

.

Page 40: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

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;

}

Page 41: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יםברהס

Page 42: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

קהחלמ השמומי

:תתוילאשה

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; }

Page 43: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יםברהס

Page 44: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ק חל

2 'ג

יםילתחלמ

ה אוו

Page 45: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יםברהס

Page 46: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םביטימיריפ

ם כיער

ת מעו לתיוסוחייתה

'בגה יאוו

יםוסיפט

גי סו

ני ש

ש ,

יםתנש מגיסו

ני ש

ך לכ

ם תאבהו

יסבס

ם רייספ מיםוסיפמט

ם תנישמ

יםי

,יםלמש

,ם ריספמ

פה צדהקובנ

,יםתוו

,יםאניליבו

ם כיערו

,ם תניש מיםראנק

יםביטימיריפ

;קהחלממ

ם עצ

די ל י עיםצגמיו

ם אינ

ם ה

;יםסו מותרוישאפ

ם חומת

ך ער

ל כי מזה כנהשתמ

,ה תנשומ

של כוו יאינ

ה כז

רך עילהכ ללא

ת סויחתי הילהכ ליםוליכ

ם ריאח

ם סיפוטי מיםתנשמ )

refe

renc

e (

מהאימת

ה לקמח מצםלע

,ך ער האת

או null

צם עוםש לעת כחסתיי מינו אנהשתהמש

תו עושמשמ

יםצמבע

ת דוש

ליםחלותמא

-0

או

false

או

null

לותחלותמא

ת ויוחסתייה

-null

Page 47: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ניאליבו הספוטיה

ם ניייאול ביםתנשמ

)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) ליליש האו

בי חיו הווןכימה

.(

Page 48: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

מהשה

ו םטימנגואר

ת ברעה

םייטבמיריפ

ה שמה

חרלא

ד אח

ה תנשממ

בי טימירי פרך עקהתימע

,או

נהשתלמ

ה תנשממ

ת סויחתי הקהתימע

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; }

Page 49: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יםברהס

Page 50: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

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

" מהשהה

רי אח

,וקדי בצם עתואו ליםחסתיי מיםתנשהמ

ני ש

,ך דר

ם עצ הצב מנוישי

כן ול

ם עצ האת

ה שנ מ

-sס יחתי מ

ליוא

,מהגריאבד

מו כ

:

Page 51: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יםברהס

Page 52: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ון עיבק

)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;

}

ת רוזמח השל

כן תו האם

ותתנשלה

וי שע

,ם עצשה

ת אורסהג

זי א

תנושר יומש

נו של

;הת

ה לז

א ל

ונוכו

.

בגת וזוחר מבלא

'רןצו ייחרלא

ת תנוש מלאת ועוובמק

ה אוו

.

Page 53: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יםברהס

Page 54: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

מהשוה

ון עיבק

ס פוטי מיםתנששמ

א הו

ם עיובמק

ם מיעצ

ל ש

ת ונותרהי

ד אח

יםביטימירי פיםתנש ממו כרךבע

ם גינהמת

ע ובמק

,בן מוב

נהשתלמ

ך ער

ת בעקו

ם וכלת

ה שמשה

,ה תנשא ישל

ך ער שחד

ה שמלה

ט פר

ה ולפע

ם שו מאהוצכת

נהשת מתואו לה

.

public void add(String s) {

Version l = new Version();

l.previous = last;

l.value = s;

last = l;

n = n+1;

}

Page 55: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יםברהס

Page 56: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

וןוישו

ת קדיב

ר טופראוה

==

יוןשוו

ק וד ב

:

• יםבייטימפר

ם כיער

ין ביוןשוו

ותסוייחתי הבין

ון וויש

,לוכ

ת ויוחסתיי התיש

ם הא

ר מרוןיכבז

ם עצ

תו או לותחסתיימ

ם וניש

ם מיעצ

ני ש לאם הדקבו

א ל

)תםהובז

(ההך זער

ש י

:

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

Page 57: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םמישל

ם ביטמיריפ

ם כיער

ין בוןוישו

ותתעהפ

ן אי

:ר טופראוה

==

ר חזימ

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

Page 58: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

equ

als

ת רושיה

equals

יוןשוו

ק דולב

ר מו א

, עשניש

בן מוב

ם מיצ

ם ארקם ו איםשוו

יםזה

ם תירושי

ד תיבע

קו ספם יה

מרלוכ

,ם א

sו -tהםיני ביףחללה

ר שאפ

אז ם הי ז

,ם קובמו

s בידתמ

ש תמשלה

-tפךהיול

'ג •ת רושי

טי ומוט אפןאו בקתספ מוהאו

equals

קהחל מכל ל

ר חזי מפקסוהמ

ת רושיה

true

ם הים זמיעצ השני

ם ארק

)

צם עתואו

( ;כונה נדרהג

ל כל

ך דר בזו

וי שינ

רי ביםצמלע

ה )

mut

able

,יםבעקו מלא

( •

ת רושי האת

ר דיהג ליךצר

ם עיובמק

ם מיעצ

ל ש

ת קוחלבמ

שחדמ

;כוןת נעלפו

ה אינ

ל חדהמ

ת ירבר

יםבעקו מיםצמ עורעב

,ל שכ

ל כל

ך דר ביא הנהכוהנ

ה דרהגה

יתיברסקו ריםשוו

ם הותשד הותוגז

Page 59: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יםברהס

Page 60: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ה פשה

טהמ ללהעממל

ת עושמבמ

ה כעד

נו דזה

ק חלב

ותשדם ותניש משל

ה לקמח השל

ש מומי ביםרט פירבה הזה היוןהד

Ver

sion

edSt

ring

כהד עיםורבר

יו הלאש

• רסקו השל

ה הז

ק חל השךהמב

,ר ספ מארנת

יםבטהי

ם נייטכ

גפתש

ל ש

'ותכניתו

ין הבול

ב תולכ

ה ש קהםדילעשב

ה אוו

ם תירושי

ש מומי ליםורש קעת כהם בדוןשנ

ם טייבהה

ותורצדרוופ

ש השל

ם טייבה

נו דו יייםצמ עחהמונ

ת כנולת

ם רישושק

ה פ

ה ק זחל בלאס וורהק

ך שהמב

Page 61: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יםברהס

Page 62: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

גתיוכנתו

'והאו

גיתכנתו

'ותלקמח לקתולמח

ה אוו

;ט פר

ת כניתו בבר דוםש

ין א

ותלקמחל

ת לוביבח

ת דווגמא

ת קוחלמ

)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ותלקמח החתבא

Page 63: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יםברהס

Page 64: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תרועה

ב שמח הדיל י עראיקלה

ת עדמיו

ת כניתוה

)די ל י עשהמעל

לרפייומהק

( ,יםתנכניתו

די ל י עגם

ל אב

יםשיאנו

ם איורלק

ק רעדמיוש

ת כניתו בסטטק

הן ת רוהע

/** 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

}

Page 65: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 66: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תרוע הגיסו

'בג

ותער הגיסו

ה שלוש

ה אוו

/** doc comment;ד עותי לרתובשע

ה ער ה

*/

/*

להגי ררההע

,ותורש

ר ספ מעל

ס פרהת ללהכוי

*/

//ה ורש הוף סעד

ה ער ה

ד עותי לותערה

)do

c co

mm

ents

(ת דרהג

ני לפ

ת עופימוש

קהחלמ

,דהש

,ותברעו

ת רושי

או ,

א קרשנ

לי כרתעזב

java

doc

קהחלהמ

ל ש

ון קוהמ

ד עותיל

; ותבנמו

הן ד עותי לותערה

,ש וי

כניתו לשראפ לעדמיוש

ד וחמי

ט רמפו

הן ל

ת אעדלת

תן ותירש

ל ש

ם טימנגוארה

,רהחז הרך עותמעש מאת

,מהדווכ

.ערהצ

ה רבלמ

,זהחו הודיע תאת

ל ול כלא

ט רמפוה

ד וחמי

פן גו באו

ת ריעב בעופי יוותער היםקפשב

)co

mm

ents

(ר וחמי המוןסי הלאל

)/* *

/או

//(

Page 67: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 68: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תקוחלמ

ת דרהג

ח פתהמ

ת יל מדיל י ערתגדמו

ה לקמח

clas

s ,

לאם ש

ה ריח

קהחלהמ

,ותיטשוה

ת דוש הותדרהג

ה ריאחול

;ובש חלא

ר סדה

class VersionedString {

int n;

public void add(String s) {…

} public int length() {…

} public String getLastVersion() {…

} public String getVersion(int i) {…

} Version last;

}

Page 69: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 70: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תרודווצפרם ותירושי

ת דרהג

הותירש

יא

רהשג

קהחלהמ

ל ש

ע ופ משל

ת דוש לשהגי

ה לששי

ה ורצדרופ

)הלנו

(פעמו

ל ש

ת דוש לשהגי

ה לאיןש

ה גרש

א הי

,ח פתהמ

ת יל מרתעז ברתגדמו

א היו

static

ת רוצה השל

ה דר סדיל י עותדרוג מיםוגהס

ני ש מותגרש

ל ע

יםתנשמ

יםמני ז

) va

riab

le d

ecla

rati

ons

(ועיצ ברי ביםוקפסו

ותהרהצ

ל כילה

ת לוכו י

ועיצ בבר

ל חוית אוקפס

public String getVersion(int i) {

Version v

= last

; for (int j

= l

ength(); j

!=

i; j

--)

בו

ש מושי האת

ם דיהק לכהרי צמניה זתנש מרתגדה

Page 71: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 72: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םיימנם זניתשמ

ל חותא

ת שתמש מיאשה

ני לפ

ה תנש מעל

ר היהצ לרק

א לבתחיי

ה גרש , בו

ם שיתמששמ

ני לפ

ה שמ הדיל י ערך ערובו עירגדלה

ם גלאא

רתאח

ך דר בבו

;יהלצפיומ קרתוב עאההב

ה גרש האםה

? 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)

; }

Page 73: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םניתשמ

ל ש

ם תוסש וורפמ

ל חותא

בגה הז

ק חוה

'והאו

,בו

ם שיתמששמ

ני לפ

ני זמ

ה תנשלמ

ך ער

ע בולק

ם ביחייש

,יםגמ פעם

ת ניווכ תובכת ליםנתתכ מעל

ת שוהק לעדנו

,הם ליעסי לכךוב

.

ותיבנטטראל

י שת

ש יזה הוקלח

.חתהא

,נתתכהמ

ל עוךסמל

/רו זכשי

ת ל

בוש מושי הפני לנהשתלמ

ך ער

ע בוק

.רך עלו

ע קב נלא

ם א

,תירוריש

כו ער

. ם קו מתואו בורשמ

ה היש

ן רואח הרךהע

ל כל

ך דר בוא התירוריש הרךהע

רוןיכבז

,ה תנש מורעב

ה הי

ה הז

ון כרהזי

א בת

ם ודהק

ש מושישה

ר בישס

ת רולמ

יתכנתו בחרא

.ת פוש בוקהח

ה ז

C- ו

C+

+ :

ם ליתחאו מנםאי

ם תנישמ

יתמטטואו

נתתכהמש

ק וד בנואי

ר ילפיומהק ו

/חלית את

/תםאו

ה .

יםסוי מרךלע

י מטטואו

ן ופבא

ם תניש מתלאח ליא היהשני הבהטירנלטהא

,שג

י כפ

'ם מיעצ

ל ש

ע ופ מותשד

ת חלאת מוהאו

) לולתחא

-0 ,

fals

e ,

או nu

ll.(

ותימסוי מותשפ

,

מו כ

Eiff

el ,

אתת זשועו

.

יםקי הוקהח

ת ומלע

ת בוטירנלטהא

י שת

ל ש

ן רויסהח

בג

'אי ש

א הי

ה אוו

נתתכהמ

די ל י עולתחא

/יתכנתו בגם פלל כרךבד

א הו

ת :

נתתכהמ

/ט שו פת

כחש

/בו

ון שרא השמושי הפני לנהשתהמ

ת אחלאת לה

'ג. ק חו ברתוח בוהאו ולתח אאי

ת לולג

ר ילפיומהק

ל ש

ת וליכ העל

ך תממסש

ני מרש

,ע סיי לנתמ

ל ע

צהפוה ניאשג מנעימלה

ם תיכנמתל

.

מרף שק במהוגהדש

י כפ

אה ,

ל תחתא

ד מי תרהשג ההםשב

ם רימק

ש י

נהשתמ

,כך בוחבט

ת היו לוליכ

א ללרפייומהק

ל אב

.ה שגי בקט נולרפייומהק

להכא

ת רושג

ל מפלק

ב סרומ

ת רנישמ

.

גשל

ק חול

'נהשורא הבהטירנלטלא

ס יח ברוןיס חגם

ש ה יאוו

,ה טנ קעהגיפ

ותיליעב

.אהמר

ף שק במהוגהדש

י כפ

,ת אחלאת ליךצר

ם בהש

ם רימק

ש י

כךר אח

ס דר נידתמ

י לתתחהה

ך ערשה

ת רולמ

ה תנשהמ

.ר ובמדש

ן יוומכ

ת דדבו

ה כונמ

ת ודפק בידתמ

ט מעכ

)מהשה

( ,נהט קותיליע בעהגיהפ

.

גשל

ק חול

'ועקב

ך ער לטיומוט אולתח אמתעו לרוןיס חשהמע לאין

ה אוו

,נתתכהמש

ם שומ

/מועצ בזה הרךלע

ל תחלא

ל כו ית

.ט קסלט

ה טנ קפתוסת

חנהאי

ת כניתו השל

רוןיס

,ה מוםסת

א ול

ש ורמפ

פן או באהמר

א היש

ם גמה

נהשתהמ

ל ש

כו ער

.

שמושיוה

ה הרהצ הדרס

ם קו מבין

ס יח הוא היםמני זיםתנשמ

ן בי ופעמו

ת דוש

ן בי

י רנצו

ל בד הודע

הם בשוןרא השמושי הוםמק והםלי ערהצההה

.ה גרש ביםמני זיםתנש מעל

הם בשוןרא השמושי הפני לירצהלה

ם ביחיי

.אתת זומלע

,ת רושי

ל ש

ה דרהגה

ני לפ

ע פיהו ללהכו יקהחלבמ

ם ריאח

ת רושי לאו

ע ופ מנהשתלמ

ס יחתישמ

חרהא

ת רושי השל

ה דרהג האו

ה תנשהמ

ל ערהצההה

.

ותמעש משה יגרש ביםוקפס הדרלסש

א הי

ך לכ

ת רייקהע

ה יבהס

:ם קיסוהפ

דרהס

י לפ

ם עיוצמב

,ותלאלו ברק

ת שרחמת

ם וד קוקפס לרהחזו

.ת ומלע

אתז

,יבהא

ן בי

קהחלמ

ל ש

ם רי

,להש

ם תירושיול

ת דושל

,ר סד

ס יח

ן אי

תיעושממ

.

שגך לכ

ת שני מבהסי

'ת דוש ויםותירש לחסתיילה

ת רושי לרתשאפ מוהאו

וי ש עיםותירש

ן בי

ס יחש

א הי

ה לקמח הרתגד השךהמ בעהפימו

ם רתגדשה

ליעג מותהיל

.מרלוכ

,ת רושי

fת רושי לואקר לשוי ע

g לראקו

ו ידמצש

-f ,

שיא י ליהרסקובר

. רהזה כרהמקב

,ש מושי הפני לותירש

ל כירגדלה

ר שאפ

אי .בו

געדומ

'עפמו

ת דוש

ת טימטואו

ת חלתאמ

ה ווא

?

בהשו תלנו

אין

הזו

להשאל

.

ר ות ישהשק

הן

ותרישאפ

ותובש תתיש

מני זנהשת משל

ר שמא

ה שד

ל ש

ל חואת

י אוקבד ללרפייומלק

,אי ש

ו א

ת וניווכבת

ר ותר ידי נגם פוא הפעמו

ה שד

ל ש

ל חואת

ל עגןלה

ך ור צאין

כן ל

ניומפ

ם תיכנמת

.נהכוה ננייש הבהשוהתש

ה ראכנ

.

Page 74: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

רהק בנימב

םייקרעי

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;

Page 75: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

לאול

ת 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

אהולהל

ני לפש

ה ורש האת

ת סכחו

,

אהולהל

ף גו לההא זהיש

.

Page 76: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םקיסופ

שי גו

ל עוטשל לדי כרהבק

ה בנבמ

ש תמשלה

ך רי צותובקר

ם תיעיל

קיסו פשגו

ל ש

ע צובי

דדבו

ק סו פלאם ושל

ם

זה כשגו

פההק

די ל י עמןסו מ

יםסלולמס

ם רייוגבס

i = n;

while ( i > 0 ) {

v = v.previous;

i--;

}

Page 77: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 78: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

עלה הרהצ

שגו

ך תו בםניתשמ

שגו הוךבת

ק רשתלג

תן נישגו

ך תו בהרוצשמ

ה תנשלמ

ת לאלו

ל ש

ל חואת הוקפס ברהצה הלתול כשגו ברהצהה

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

Page 79: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 80: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

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

}

Page 81: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

וית

ת ו

)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ת אמ ביה ה

וץנח

.

Page 82: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

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");

}

Page 83: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 84: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םיינרבי

ם ריטופראו

- + % / *

פלכ

,וקילח

,יתארש

,וריבח

,וריסח

+

ת רוזמח לורששר

)פרמס

ר שושר

ל ולכ

,,תו

כו ו

'(

>>> >> <<

להמאש

ת ביוסי

ל ש

ה זזה

,גילוי ומטיתאר

ה מיני

<= >= < >

מולגד

, מטןק

,והשו

או ל דוג

,והשו

או טן ק

!= ==

שאי ן וויושו

יוןוו

| ^ &

גםו

,ביסילוסקאק

או , (או

ול ביםרכ עעל

יאו

ם נייא

ותביסי

ל ש

ם ריטווקכו

ם מישל

ל ע

(

|| &&

גםו

,, או

ם ריקצ

ם ניייאולב

)הא מלםתעמ

נדפרו

אהוצהת

ת אבעקו

ר כב

ון שרא האם

ני שה

(

הםשל

ת מודיהק

ר סד

פי לקףש ביםדרסו מיםוררטופהא

Page 85: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 86: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םיינראו

ם ריטופראו

איתנ הורטפראו ו

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" );

Page 87: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 88: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

להעופ

ם ע

ה משה

ה שמוה

ם רייבינ

ם ריטופראו

ר בו עצרקו ממוןסי בכתומ תוהאו

ה צאתו השל

הוךלת

ה זרח

נדפראו

שוןרא ה

x += y i

s eq

uiv

alen

t to

x = x + y כך

ש תמשלה

תן נייםריבינ היםוררטופהא

ל בכ

ט מעכ

*= /= %= += -= <<= >>= >>>= &= ^= |=

ותימקד הדרבס

ם וניחר איםיעופ מלוהל

ם בילושיה

,ם עחדי

ל גיהר

ה שמהה

ר טופראו

)=( ,וי יטהב

ל ש

ין ימ

ד צדםקוש

ך כ

)y (שבחומ

,ל מאש

ד צבין

ה ולפע העתבצמת

ך כחרא

)x (ין וב

צאתו

ובשחי הת

,מהשהה

ך כחרוא

Page 89: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 90: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םריטופראו

:תיויבטאציסואת ומודיק

ים וררטופלא

ת ביוטייאוצאסת ומודי קקיחו

ה ירגד מפהשה

פוי צפןאו בלל כרךבד

ם גינהמת

ם קיחוה

,שללמ

x + y * z ≡

x + ( y * z ) ת מודי ק

x + y + z ≡

(x + y ) + z ותביטייאוצאס

x = y = z ≡

x = ( y = z ) ת ביוטייאוצאס

הםלימא

ם בנימו

ם אינש

ם רימק בבלא

,ם רייוגבס

ש תמשלה

אי כד

)ותמוידיהק

ת בלבט

ר עזהי ליךצר

ם ארטבפ

/ותביטייאוצאס

;ם א

להטב ליםוקזק

ם את

,לה

ק קוה זהיד יקו האת

א ורשק

מי ם ג

:( x

+ y >> z

??? יךצר

א לליאום ורייוג סיךצר

לי או

,איכד

ה קר מכל בבלא

Page 91: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 92: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םכיערמ

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");

Page 93: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םכיערמ

ה מל

?

בגש תמשלה

ן ית נרךמע

ם קובמ

'יםצמבע

ה אוו

.שללמ

,ל ש

ך ער מוםמקב

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)

{

…}

...

//ע ופ מתניש מ

}

ועמד

,כך

ם א

,יםרכמע

ה שפ הלתולכ

?ותיליע

א הי

ה ובשהת

.ל ש

ש מומיה

בגם כיערמ

'ש מומי

ל מכ

ן רויכ זנתחימב וצהרי

ן זמ

ת חינמב

ר ות ייליע

ה אוו

רנוגדשה

זו מו כקהחללמ

רי שאפ

.

בגם כיערמ

'רהש פהם

ה אוו

. הפהשה

יהםדילע בתר יויתנטלג אתהי

,כימ

וון

היאשה

יית

תר יויתמליני מה

.דךאימ

,ם כיערבמ

ת שותמששמ

ת בו רותכניתו

תר יוותטיאי

ו הי

.די כיתטגנאל

ת חו פפהש

ל ערושתפ הפהש הנניתכמ

תר יויםובט

ם עיצובי

ת שראפשמ

ה שפ

ג שילה

.

Page 94: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םכיערמ לתיוסוחייתה

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);

Page 95: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

, לאלהכוא י ליאה

.ת איםירעב משרכא

prim

esרהשג ל

,ת סויחתי הרתעבמו

רךמעל

.ת איםירעבמ

ר שכא

ל אב

prim

es[4

] ,

לםש

ל ש

ק ות עברועמ

,ון כימ

וי יטהבש

prim

es[4

]לםש

ר חזי מ

,ביטימירי פוסיפט

א הוש

,ת סויחתי הלאו

רךמעל

.

Page 96: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יןא

בג

'םיימדמי

ב רםכיערמ

ה ווא

יםרכמע לותסוייחתי השל

ם כיער משל יאב

,

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] אלשמ לותביטייאוצאס

Page 97: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 98: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םיימנינוא

ם כיערמם וכיערמ

ת דרהג

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 } );

Page 99: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 100: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ק חל

3 יםחוז

דעמי

ת תרהסו

Page 101: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 102: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תורזכת

:זהחוה

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

Page 103: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ת רושי השל

ם איתנ האת

ן כא

ו טנשמה

getL

astV

ersi

on ,

ל קוש

א הוש

ה יאקר לריגמל

getV

ersi

on(l

engt

h())

.אי תנ

ת אטנושמ הכן

ו כמ

ת רושי השל

ק רי הדםהק

leng

th.

,

Page 104: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

איתנ

חראוה

ם קד ה

יםצמ עבההר

ם חיי

ת כניתו השל

ון כרבזי

יםתנשומ

,

ע רגשב

יםסו מצבבמ

וי מצ

ם מה

ד אח

ל כתוןנ

לאת רושי

ם בהש

ת כניתו

ל ש

ם עיירג

ם בימצ

ש י

ולפע לוליכ

• ם קד האיתנ

)pr

econ

diti

on (

שם בימצ האת

ר תאמ

ח בטמו

הם בולפע לוליכ

ת רושישה

שללמ

,ת רושיה

getVersion

אםל עולפ

ל כו י

ק ספשמ

ם עצ לחת אסהגר

ת חולפ

ר כב

ה ספתוו הותירש האת

ר אח האיתנ

)po

stco

ndit

ion

(ם מיעצ השל

ב מצ האת

ר תאמ צעתב מותירששה

ר אח ליתכנתוב

,ם קד האיתנש

ה נחבה

יםקיהת

ותירש לאנוקר

ר שכא

• ל ש

ר אח האיתנ

GetVersion

ר חזמו הרךהעש

ח טימב

הושכל

ם עצ לחסתיימ

Page 105: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 106: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ת יודדהצ

ד ח

םאיתנ השל

יםקימת

א לדםהק

אי תנ

ם א

,ת איםקי ללאש

ר ות מותירשליםסי מואשה כחרהא

אי תנ

;ם קד האיתנ

ר שכא

ת רושי לאהריק

יתכנתו בגם פעל

ה ידמעש

ה קל תוההו מיםקימת

א ללוש

יםקימת

א לדםהק

אי תנ

ם אגם

ל אב

,ל עולפ

ת רושי לתרמו

חרהא

אי תנ

ת איםקיול

שללמ

,ת אשממ לתרמו

getVersion

ת רוזמח

ר חזישי

ך כ

סהגר

ף אייןעד

נו ספהו

א לאם

ם ג

ר ותה ירב הצב מיםסי מוא השרכא

ר יצלי

ם גתרמו

ת רושיל

חרהא

אי תנ בארתוהמ

ה מז

פי ציספ

;ב חיי

א לחרהא

אי תנ

צריוושי

ב מצ האת

ק דיו בארלת

שללמ

,זתרומח לחסתיי מזרוחהמ

ך ערשה

ח טיהב ליה השראפ

Page 107: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יק ריםברהס

ף ד

.

Page 108: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םייחמה

ת אומוגד

די ל י עקהעס הקתפס הלתעו פותדרוג מקהעס הזהחוב

ק סימעה

)די ל י עקהעסהה

ת סקהפ

ל ש

ת חר אלהעו פגםובדעוה

( •

דם קאיתנ

ש ה יסקהע הקתפסלה

:שללמ

,ד ובלע

ה תנשני

דםקו

ם סוי ממןק זפר

תו סקהע

ת סקהפ

ל עעהודה

או

כן ל

ידעבבמ

ל מע

ד ובהעש

מתתיימס

ה סקהעשה

א הו

ר אח האיתנ

שיק בנ

ל מו

ה חוזב

ת אומח הודיבוכ

ם מנימזו

ת יכש משל

ם תירו

ם מויני מרתית ביםתנמו

)בהחו

ת תרי יולא

(בוןשבח

א •

וםיממינמה

ה טנ קרהית הם

,שא רנקהב

ת אצעלב

א של

י ותירשה

,תואו

ע בצ ללו

ר ות מבלא

Page 109: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 110: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תואיצ

איוו ל

ה גמדו הקתחל משל

ה חוזב

VersionedString

,ם איתנה

ומרגהא

ת ארקך ו אלוביהג

יםותירש השל

ם טינ

,ך ער האת

ותלתאיש מזרוחהמ

,ותירש האת

ק ספשמ

ם עצ האתו

יםחר איםצמ עשל

ב מצ

ל ביהג לגם

ם ליכוו ילל היםנאהת

ליו איעיג

ם עצש

ב מצ

ר תא מחרהא

אי תנ בוקפס

ר שכא

,ך ער האו

ת רושי האת

ק ספשמ

ם עצ הינו אזה הצםהעו

זרוחהמ

,ר תא מוקפסה

תוצא

אילוו

)

side

eff

ect

(שי השל

ותר

Page 111: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 112: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

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…

");

יםצמלע

ה קרה ימ

?

Page 113: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 114: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

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...

,ארש הכלו

,א יל

תנוש

.

Page 115: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 116: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

סקדופר

קבנ ב

בו ד קיהפן ובוש חולתמ אתח פנק בשל

ח קושל

ח נני

1000

קלש

. לבא

א הו

ם היו

ב סר מנקהב

ד קיופ

ף כס האת

ך שומ

פס איא הבוןשבח

ה תרהיש

ה ענבט

זהחו האת

ך בכ

ר מפ

ק בנה

:ל אב

ם קד האיתנ

ת איםקי

ח קוהל

יםמנמזו הכתשי מותירש

ת אילפעלה

ח לימצ

א ל

פקה

נהכוה נורבצ

ם מנימזו הכתשי מלתעו פאת

ע בצ מיד

: פס ארתית

ה רא משבמח האם

ה יכשהמ

ת אצעלב

לו ר סוא

יהבע הכןהי

?כוןש נומממ

ת רושיה

,אי תנ

ת איםקי

ח קוהלו

דםהק

Page 117: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 118: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

סקדופר הוןתרפ

בי לג

ה רא משבמחשה

ה מאת

ון נכ

ש פר מלא

ד קיהפש

או בוןשהח

,לג

ק בנ השל

ר אח

ת רושיש

או ע בצהת

א לבוןשהח

בי ון נכ

)דהפקהה

ל שלמ

( •

ם ולהע

בי לג

ם קד האיתנ ברק

א ללוי תלהעוהפ

ון נכ

ע צובי

שבמח בנקהב

ון שב חשל

ג צוביי

ם גלאא

ון שבהח

בי לג

ם תירושי הכל

ל ש

ר אח האיתנם וקד האיתנ

ב מצ

ל ש

מי פני הוגיצהיש

ם חיטימבש

ם קיסו פולכל ליםיכצר

ת אנהכוה נורבצ

ף שק מבוןשהח

ותולפעה

עווצשב

• ולפע לכל יוזה הותירששה

די כדםהק

אי תנ

,די כחרהא

אי תנ

ידעת בולפע ללווכם יריאח

ם תירושיש

וחלק העם

ה חוזמה

ק חל

ם אינ

לו הל

ם קיסוהפ

,א לוגיצהי

כי תואו

ין ענימ

;ם ה

כםהס

יםשונ הבוןשהח

תי רושי

ין ב

Page 119: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 120: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

מרתשמ

וגיצהי

• ל ש

ם תירושי היםמכסת ממה

ל ע

VersionedString

? •

וגיצהי

ל וע

ם להש

ם קד האיתנ

ל עיםמכסת מהם

: •

ה שד הרךע

n לאוקרש

ם מיפע הפרמס לוהשו

-

add

ה שדה

last

ליעצב מ

-V

ersi

onה שדשה

va

lue

ת אילמכ

לו ש

ה רסג

nזתרומח השל

• ה שדה

prev

ם עצ

ל ש

V

ersi

onס פוטי

תו או מצםלע

ע בימצ

זתרומח

ה ות אשל

ת דמקו הסהגר האת

ג יצמיש

,גר

ש ם יג

ה ס

מתודק

,כו ערש

או nu

llה שונרא הסהגר האת

ג יצמי

ם עצ האם

ת רוזמח

ל ש

ם איקרו נלל היםנאהת

מרשתמ

ג צוהיי

)

repr

esen

tati

on

inva

rian

t (

ה יאיצוב

ת רושי

ל לכ

ה יסכנ ביםקיהת ליםיכצר

ם והותירש

ל מכ

Page 121: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 122: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

קהחלמ

ל ש

ת נוכות נחוכה

אלבש

' :כי

ח כינו

שחד

ם עצ

ר וצר נשכא

,הו

ת איםקי מא

מרשתמ

וגיצהי

• בלבש

':יחוכה נלקמח בותירש

ל כורעב

:

ה יסכנ ביםקימת

ם א

ם וג

ם קד האיתנ

ת רושיל

ר תמשהמ

קיימת

, םה יאיצ באזי

ם וג

ר אח האיתנ

ם קיימת

ת רושימה

יםקימת

ר תמשהמ

גלבש

' :קהחלהמ

ל ש

ם תירושי לרט פכי

ח כינו

,ת כניתו באין

האת

ר הפ לשוישע

ד קו

מרשתמ

האם

ו

ר כב

א קיימת

ם)

נקהב

ון שב חשל

ה גילואנב

,ת אותשנ לגלסושמ

ל וכן נאי

נקהב

ל ש

ב שמח בבוןשהח

ל ש

ג צוהיי

(

Page 123: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 124: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ון קרע

ת תרסה

העידמ

השל

ם קיסוהפ

ם א

מרשתמ

צםהע

ל ש

ת דוש לרק

ם סייחתימ

,

הםלו הל

ת דוש האםו

" יםטיפר

"צםלע

,ד קו

ם שו לאין

ר ומכל

בםמצ

ת אותשנ ללתכור יאח

,ב של

אז ' ג

יתמטטואו

ון נכ

יםקימת

ון קרעי האם

,ני מפ

בו מצ

ל ש

ג צוהיי

ת אירסת מצםהע

ונייצהח

ם ולהע

ת חב רנהוכ תוחיתבפ

ר ותבי

ב שוהח

לי או

א הו

ה הז

ון קרעיה

קףהי

,ה לקמח

ל ש

ת ונונכ

ח כיהו לרק

א לשראפ מואשה

ם שומ

)ותגרש

או ם תירושי

ת וצקב

(ודהק

ר שא לותחסתיי הלאל

,א אל

קהחלהמ

ת אשממ לגם

ודהק

ר שא בותתל

א לל

ה ות אוקבדול

;

ותתל האי

יםטנ קיםלקלח

ל דו גקטרוי פרקלפ

ת שראפמ

Page 125: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 126: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

עידמ

ם ריתיסמ

ד יצכ

ם הצם עשל

ת דוששה

ח טיהב לקל

א ל

"יםטיפר

" •

יתשרא

,לו

ש שי

ח קושל

ח טיהב לשי

צםלע

ת סויחתיה

,ל כושיו

יםותירש

ל עיהפל

,ת איםיברכשמ

ת דוש האת

ת שנו לכל יולא

הוגיצי

,א רולק

ל כוח יקו לוד קאם

ם גמרלוכ

vs.add("x")

,ע בצ לכלשיו

ר סוא

vs.n=3

או

vs.last=null

'ג •

ם ריגדמו

ת דוש האם

ה ת ז אחהטימב

ה אוו

private

יתשנ

,יםבעקו מלא

ם מיעצ לותסוייחתי ההם

ת דוש האם

,ש י

ם מיעצ לותסוייחתי ההיוא י לקהחללמ

ץ חו מודלקש

ח טיהבל

לוהל

, ליםצמלע

א ול

לי כום ויהאל

ם סייחתי מהםש

ם עיובמק

א בי סיוררק

פן אוב

א(ר ספ מהיושי

ר סו

ם סיחויי

ותשדל

( •

תהאו

ש רולד

תן נילאי ומד

ה זק חהזו

ה שריהד

ם תיעיל

Page 127: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 128: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תיוטפר בעהגיפ

ם ע

ת דוודמתה

וטש פכיה

ם מיעצה

-"יםלפדו

" יםבעקו מ

וטש פגם

:ל ש

ב מצה

שם מיעצה

תףשת מלא

ם פיולד

ורינובא

טהאני

שללמ

,ותבעקו מהיו

א לותרוזמח

ם א

ר דיהג ללנוכוי

-getVersion

זתרומח לותחסתיי הירחז מ

,כן יתש

ת רולמ לסהכנהוש

אז מתהאו

ה שינ

ני צוחי

ד קוש

-VersionedString

רהרי באין

לי או

ל אב

ע רוג

:דםהק

אי תנ

ני צוחי

ד קוש

ם שיור ד

פודלש

ם מיעצ האת

ה שנא יל

,ליכל

ר ותן יופבא

או ,

תנה

ם אי

פודלש

ם מיעצ ביםתרמו היםנוישי האת

ם ליבימג

Page 129: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 130: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

אהמל

א לתיוטפר

:ורטטראי

םי

יםסוי מצם עשל

ם רייב אוקסר לשראפ מוררטיטא

class VFIterator {

VersionedFolder vf;

int nextString;

public boolean hasNext

() {

return nextString < vf.strings.length-1;

}

public NamedVersString next() {

return vf.strings[ nextString++ ];

}

}

Page 131: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 132: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תייבנ

ורטטראי ה

class VersionedFolder {

NamedVersString strings[];

public VFIterator iterator() {

VFIterator i = new VFIterator();

i.vf = this; // זה היךדרלמ

ס יחתי מוררטיטהא

i.nextString = 0; //ה שונרא הזתרומחול

return i;

}

}

Page 133: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 134: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תולעפ

ה ורטטראי

VersionedFolder vf = …

; …

VFIterator i = vf.iterator();

while (i.hasNext()) {

NamedVersString nvs = i.next();

//

יםשתמשמ

רהחזהוש

ת רוזמח ב

}

• יךדרבמ

ת וזוחרהמ

ל כאת

ר חזילה

ה יכצר

זו כאהולל

ר טוטראי לותיאקר הבין

ך רימד האת

ם שני מאם

)רי אח

או בו

ש מושי הפניול

רו צויי

( ,כוןא נ לולפע לולעל

א הו

שללמ

,רךמע הלתחיבת

ך רימד ליםספ נויםבראי

ם א

,דלשג

Page 135: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 136: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תי רושי

ל ש

ם קד האיתנ

הורטטראי

ת אורישק

ח טיהב ליךצר

next

רי יב אכל

ת ארוחזיר יטוטראי ל

יךדרהמ

,יךדרהמ

ש מומי

ת אילגבלה

לי ב

ת שנו ללא

ר טוטראיוה

ך רימד השל

ח קוהל משרולד

ך רי צכןל

וררטיטבא

ש מושי המןבז

ך רימד האת

דםהק

אי תנ ברק

ב צילה

תן ניוחלקמה

ת שוריד

דר ליםיכצר

ר טוטראי התירושי

ני ש

ל ש

ם קד האיתנ

כן ל

ש ו ר צו ייאז מנהשת הלא

ר טוטראי האת

ר חזישה

ך רימדשה

וררטיטהא

Page 137: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 138: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

חהפשמ בתדוסו

איצמ עצם עינו אוררטיטהא

;ל ש

ק שמנמה

ק חל

ה שמע לואה

רקסו

א הוש

ם עצה

,יךדר מאןכ

וררטיטהא מיךדרהמ

ל ש

ש מומי האת

ר תיהס לשראפ

אי

• יךדרהממ

ר טוטראי השל

ש מומי האת

ר תיהס לשראפ

,ל זאב

ה חדמיו בילוע מלא

;די כיךדרהמ

ני בפ

ש מומי האת

נו שפ חאןכ

ת אפסלא

ל וכך ירימדשה

nextString

ני בפ

א לבל אוררטיטהא

ני בפ

ש מומי האת

ם פישחו

ד יצכ

ותחר אותלקמח

? •

בשנותמש האןכ

להביבח

ת אוירנ

) pa

ckag

e vi

sibi

lity

:(ת דוש

ת אוירג נ תלי ביםדרוגשמ

ע ופמ

)public

, private

, או

protected

(להביבח

ד קו

ל לכ

ם שיגינ

;ר טוטראיוה

ך רימדה

להבי חתהאו בותהי ליםיכצר

;יתנטלג אתר יורך דיגנצ

ך שהמב

Page 139: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 140: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

השל

ם ייח הורחזמ

מרתשמ

וא המרשתהמ

קהחל משל

ם וניש היםותירש הבין

ם סכ ה

ם קיישמ

ב מצ בצםהע

ת אירשאלה

ם מיכימס

ם תירושי הכל

חום השרכא

ם מיסוי מיםנאת

יםזר

,ם תירושי הכל

ה ורתמוב

הם ליםראקו

ר שכא

ם מיקיימת

ם איתנשה

ת פולצ

ם אישר

ותירש

ע צובי

מן בז

ה, יבחי

א למרשתמ

יםקיהת ל

;ת רושי הבלא

האת

ר חזש ליבחי

מרשתמ

זרחו

א הוש

ני לפ

• מרלוכ

ה, מרשתמ

ל ש

ת רושי

ל פעמו

א של

מן בז

ת ימקימת

צםהע

Page 141: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 142: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ילרגת

:ה מ

המרתשמ

השל

טאי

ורטר

?

class VFIterator {

VersionedFolder vf;

int nextString;

public boolean hasNext() {

return nextString < vf.strings.length-1;

}

public NamedVersString next() {

return vf.strings[ nextString++ ];

}

}

Page 143: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 144: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

המרתשמ

ורטטראי השל

vf

poi

nts

to a

VersionedFolder

obj

ect

0 <= nextString <= vf.strings.length

• צר נווררטיטהא

ר שכא

ל אב

,vf==null

,ם קיי מינו אוא הכןול

האת

מרשתמ

די ל י עיהבע האת

נו תרפ

מי די ל י עוררטיטהא

ת דוש

ל חואת

צםהע

ת אצרשי

,VersionedFolder.iterator()

,ך כ

טוטראישה

האת

ם קייר י

מרשתמ

לחוצ מרוןפת

א לזה

;ם עצ

ר וצשי

ח קו לעל

ל טילה

ר שאפ

אי האת

ם קיישת

ה ורבצ

תו או

ר צולי

ת ריואח האת

מרשתמ

,כי

הי מללבכ

ת דע ליךצר

א לוחלקה

Page 145: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 146: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

התיריצ

מרתשמ

ת דוש

ל ש

טי ומוטהא

ל חואת האם

ם שיעו

ה מ

)פסלא

(ר תימו

מלאש

ב מצ בצר נותה עזהש

ם עצ

האת

ם קיי

מרשתמ

? •

וב טלא

ל אב

רי שאפ

ון תרפ

:ני יאול בפעמו

ה שד בשמושי

האת

ם קיי מבר כצםהעש

ין צישמ

מרשתמ

;שי

ל כ

ק וד בותר

אותירש לראקוה ושד האת

יךצר

ם אולתח

;יתמלורפ

,וא המרשתהמ

" או

ל תחאו

א ל

"...

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;

}

Page 147: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 148: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םאיבנ

) co

nst

ruct

ors

(

• ובט

ר ותן ירופת

:ת רושי

ת איץהר לגתוא דמהעצ בפהשה

חר אותירש

הו שאיז

ץ שר

ני לפ

ל חואתה

'בגוהאו

,ם ש

האיבנ

ש כוא ה

צםהע

ם ,

ל קב לוליכ

א הוו

חר אותירש

מו כיםנטומרגא

class VFIterator {

VersionedFolder vf;

int nextString;

public VFIterator(VersionedFolder vf) {

this.vf = vf;

nextString = 0;

}

Page 149: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 150: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

בשמושי

איבנ

class VersionedFolder {

NamedVersString strings[];

public VFIterator iterator() {

return new V

FIterator(this);

}

}

Page 151: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 152: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

דלחמ

ת ירבר

אי בנ

יםנטומרג אבלמק

א של

אי בנ

ר גדמו

א לאם

'ג, ת פקמס

ה אוו

ל חד מרתרי באיבנ

)de

faul

t co

nstr

ucto

r (

ל קב מלאש

כלה שעו

א ול

ם טימנגואר

ום•

מו כיםטויביש

ה יבהס

זו v = new Version()

ם ליוע פ

ה לקמחשה

ת רולמ

Version

איבנ

ה ירגד הלא

Page 153: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 154: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םאיבנ

ת סמעה

'בגס מיהע לשראפ

ה אוו

)ov

erlo

adin

g (

יםנאב

,ת ציונקפו

ם וג

ותחרא

פי ל עיםצמ עותבנ ליםוצ רשרכא

ת שימושי

ם איבנ

ת מסהע

"יהבני

ת אוורה

"יםשונ

ם סיפוטימ

class String {

public String() {…

} public String(String s) {..}

copy

con

stru

ctor

public String(char[] c) {…

} public String(byte[] b) {…

} …

}

Page 155: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 156: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םאיבנ

ת סמעלה

ה יבס

ד עו

ם עיםנאוב

ת טוורמפ

ה ניי בותראהו

ם עיםנא בירגדלה

ת מנ

ל ע

בדבל

ת ליוכל

ת אוורה

,דלמח

ת רוריבב

שו תמששי

ק חל

ר בו ע

יהבני השל

ם רימטפרמה

class String {

public String(byte[] b,

String encoding) {…

} public String(byte[] b) {

t

his(b,"ASCII"); רתאח

ה יפט

ה ירבח הותיאמצ ב

}

Page 157: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 158: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

עידמ

ת תרסוה

ם זיחו

ם כוסי

איתנ

תיוחוקוול

ק ספ הבין

ה חוז האת

ם רידימג

ר אחוה

ם קד ה

פקהס

ל ש

ם וניש היםותירש הבין

ם סכ הוא המרשתהמ

:ל כ ת איםקישמ

ב מצ בלםעו האת

ר אישלה

ח טימב

ם מה

ד אח

צא יווא השרכא

ר תמשהמ

,ר תמשהמש

ח מני

א הו

ה ורתמוב

תוולפע

ת אילתח מוא השרכא

ם קיימת

לאש

ם מיעצ

ל ש

ב מצ האת

ל בימג

ר תמשהמ

ם א

ם עצ לרק

הםלי אשהגי

ש ת ירושי הפקמס

,ם מיעצ לשהגי

לו ש שי

מי ל כ

מרשתהמ

ת איםקי ליםסכלה

ך רי צלהא

;ת כחהו

ל עשהמק

ה ז

ותכוננ

,יתכנתו הכוןתי

ל ע

,תהבנ העלו

ת אמוקיישי

ך כיםשחד

ם מיעצ

ר יצלי

ם אייחר איםנאהב

קהחלהמ

ל ש

ר תמשהמ

מומי

ת אוףשלח

לי בצם עשל

ם ביכימר

ק ור סוררטיטא

שו

Page 159: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 160: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ק חל

4 שיוח מצבומ

ט שופ מצבמ

Page 161: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 162: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

עידמ

ת תרסה

זהחווה

• לאיכדש

ר ומ אדעמי הרתסת הרוןעק

ל ש

ש מומי האת

ר תיהס

להש

ת חוקוהל

ני מפ

ה לקמח

,ת אותשנ ליהיה

תן שני

די כותוחלק בועפג ללי בשמומיה

,זהחו העל

ק ריםמכסתשמ

כנןלת

ר שאפ מזה

,שממל

,ח כיהוול

ך תו

ה לקמח

ל ש

ת ונונכ

יתכנתו הארש לותחסתיי הסרחו

ך תוד ולב בזהחו לותחסתייה

יםילגב מחרהאם וקד האיתנ

,לל כרךבד

,צםהע

ב מצ

ת א

צםהע

ל ש

ש מומי האם

ל אב

,לוש

ת דוש הרטבפו

,ם ריסתמו

וחלקמה

,חרהאם וקד האיתנ

ת אטאלב

ר שאפ

ך אי

?

Page 163: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 164: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ד יצכ

יהעהב

ת א

נו תרפ

כהד ע

?

תבנ

ל ש

ה חוז ביףסע בונן

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

,ם סוי מבטהי

ת שפחוש

ל ש

ב מצ

צםהע

התדי ל יע

ותודפק

ל ש

ם טימנגואר לותחסיי

,ה שב

ך דר למרלוכ

צםהע

ל עיעשפ הוחלקה

Page 165: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 166: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

קפיסמ

ה ם זמיעפל

יםקר מבההרב

,קהפימס

זו השהגיה

,אי תנ

ת אירגדלה

ר שאפו

רועבהוש

ם טימנגוארוה

ת תוילשא הרתעז בחרהאם וקדה

ותובש חותעל מתיש

זו השהגיל

יתשרא

,על

ה שחד

ה שפ

א ציהמ לרךצו

ין א

ת אירגדלה

ת מנ

זהחו האיתנ

,ה ירחז מתהילשאש

ך ער לחסתיילה

ך ורלצ

ט פר

ותירש הועיצ בפניל

,ותירש הועיצ בריאח

ר חזמוש

ך ערול

יתשנ

,מהעצ

ת כנוהת

ת שפ בעטכמ

ם עיוב מיםנאהתש

ון כיומ

,צהרי

מן בז

ם ות אוקבד לשראפ

,א צולמ

ת מנ

ל עשללמ

ם פג

יתכנתוב

;יליע

א לליאו

,ילוע מיםעמלפ

ל אב

• ש

הזוה עלהמ

ש מומי

ני בפ

ם לישומכ

תי :

ש מומי בותעויט

ותלתאישה

,ת חומונ

ת פוש בותלקמח

ב חיהר ללתכוהיו

יםצמע

;שךהמ בברוסה יהז

ל שומכה

Page 167: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 168: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

קפיסמ

א לזה

ם מיעפ לבלא

:טשפמו

ב מצ

יםעמלפ

ל אב

,ת זרבע

ם איתנ

ת תנולה

ח נולאש

או ר שאפ

אי בדבל

ם טימנגוארת ותוילשא

אל כיםקרבמ

, הט שופ מצב מיםירגדמ

)ab

stra

ct s

tate

( לםמג

ם עצשה

שי וח מצב מיםהוו מצםהע

ל ש

ת דושה

)co

ncre

te s

tate

(יםסו משטופ מצב מצגמייש

וחלק היניבע

,יםשטופ מיםצב מיםצגמיי

ם מיעצ

כך לאםהתוב

,וחלק העם

ה חוזה

,חרהאם וקד האיתנ

,ם ריגדמו

שטופהמ

ב מצ השל

ם חימונב

,וגיצהי

ל ש

א ל

,ואשה

ב מצ ה

שיוחהמ

ה שטהפ היתקצפונ

)ab

stra

ctio

n fu

ncti

on (

ת אפהממ

ט שופלמ

שי וחהמ

ב מצה

Page 169: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 170: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

טהשפ התציקונפ למהוגד

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)

Page 171: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 172: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

טהשפהה

ת ציקונפ

ל ע

ד עו

ד חיא היהקצפונ היםקרהמ

ב רוב

חדא לבלא

-ד ח

ת כיער

ל ילכ

שטופהמ

ב רחבמ

ק דיו בחד ארך עיםתא מוגיצ

,ל אב

שטופ מרך עכל ליםוגיצר יספ מכנויתי

מהוגבד

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)

Page 173: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 174: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

טהשפהה

ת ציקונפה ווזחה

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טהשהפ היתקצפונ

ל ש

(

Page 175: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 176: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

xad

d(y)

x=A(x)

A(x.

add(

y))

round(x+y

)

AAro

und(A

(x)+

A(x)

ס( התנוכונ

יהקצטסאב התציקונפק ופ

ה כחהו

די ל י עיםיחוכ מפקבס

ה ודפק

ל ש

ת ונונכ

ה ראשמ

שטופ מרך עתואו ליםילוב ממהגריאבד

ם לילומס השניש

Page 177: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 178: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ק חל

ים 5שקמנ

Page 179: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 180: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םיוארווקא

וי קני לתאוורה

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.

Page 181: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 182: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םגי דזהאי

,םטישוקי

,קיובד

ם יידלו

?

• נהש מלא

ה שז

בן מוכ

;ם עוםריואקולא

ת פותק

ת אוורהה

תן או

ם ריוואקולאב וזה

גי ד

ם ע

יםשריוכ

ת דוקובר

,ל חו כפח

לי לד

וםאד

ק טילס פלילדו

ש מושי

ר שאפשמ

לי כל

פן או ביםצמלע

ת סויחתימ

ת אוורהה

יםשונ

ם בימצ

ה רבבה

ת אוורבה

השל

ה חוזה

ליד

:ם רישאו נוכלת

ם סיכנישמ

ם קיוצומ

ם לינוז

די מתר יותואו

ם אימל מלא

ם אשם

,א ציהו לשראפ

ס כנשנ

ה מ

ב מצ

תו או בוקדיב

)בון סרישיי

לי בד

יו יהש

ר סו ארטבפ

( •

יקסטפל מותהי לוליכ

ש מומיה

,פחמ

,מו כיםשמומי

לו פיוא

ותשריהד

ת איםלאממ

ה סטרו נייר סאו

ה סינחר

ל רטאג

Page 183: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 184: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

נושל

ד קוה

,תהע

ד ע

,ליכל

ך ככל

ה הי

א ל

ה לקמחמה

ם עצ בשתמששה

ח קוהל

VersionedString

ס פוטי מוסיחך ידר

ת זא

ה שע

VersionedString

ח קוהלש

ה חוז האת

בן מו כיםקי מהזו

ה לקמחמה

ם עצ

ליו עמךסתמ

,ה רב הוד עשי יול אבלא

ת אותימקישמ

ת קוחלמ

זה הזהחוה

עולפ

ל וכא י לוחלק הודשק

ה למ

כזוה לקמח

ל כעל

ל ? ,

שללמ

, int Find(VersionedString vs, String s) {

for (int i=0; i<vs.length(); i++)

if (s.equals( vs.getVersion(i) ))

return i;

}

Page 185: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 186: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

עלפו

ה ז

,בלא

הזוה גרש בשתמשלה

ר שאפ מלא

ה ז

,ל ש

ה הז

ש מומיה

שפוחי

ם יתורלגא

, איםצבבמ

יםחר

לילקב מזה

-"ר כיו לחתמתש

ם דוהא

ק טילסהפ

לי דאת

ח ק

)א ל

נגפוהס

לי דאת

'ולכח הה

,הבהז

ג דאתם ומי האת

יו אל

ר עבוה

" •

רוןפתה

: האת

ד ריהפל

פקס

,ת אשתממשמ

ה לקמחה

יםותירשה

,זהחומה

,שמומי בלוי תינושא

Page 187: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 188: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

נמש

ם קי

)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:

}

Page 189: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 190: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

קשמנ

ש מממ

ק פס

לוש

ה חוז האת

ם קיי משקמנ

ש ממשמ

ק ספ

;לוש מזהחו

לו ין א

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) {…

} }

Page 191: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 192: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

זהחווה

ק פסה

שממ מואשה

ק שמנ השל

ה חוז האת

ם קיי ליבחי

ק ספה

ללככ

,לוש מזהחו

לו ין א

אותירש

ק ספ ליבחי

ק ספה

אי תנ

ת איםקי מיתכנתו הצב מם

ותירש השל

ם קדה

ותירש

ל ש

ם קד האיתנ

ת איםקי מיתכנתו הצב מאם

,זי א ראח האיתנ

ת איםקי ליבחי

ת רושי הוםסי

ר אח לבהמצ

אי תנ

ת איםימקי מלאש

ם רימק בגם

ל פעת ירושי הליאו

דםהק

,ב טו

ב מצ ביתכנתו האת

ר תימו

ד מי תותירש הליאוו

איתנ בשדרהנ

ה מז

ה רבבה

חרהא

• שדרו נאינ

ה חוז בטחובהמ

ה מז

ר ותב יטו

ת רושי

ל אב

,ם אגםו

לוש

ר ופשהמ

ה חוז העל

יז כר מפקהס

,ח קולל

לי או

ף דיע

ליו עמךסתלה מנעימלה

,פק סיףחללה

ל וכא י לרתאח

כי

Page 193: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 194: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

'גורכי לתחתמ

ם יידל

ת שפחמ

א לוהאו

כןני א

,וי יקת נאוור הריאח

ב קולע

ה נס מתיהיי

ם ואקוהא

וםריו

,קיי נדל

ך רישצ

א ור קתיהייו

,צאמוש וחפ מתיהיי

גבלא

'לא

ה אוו

,כןול

,שליכ

א הב

ד קוה

יהלצפיומ קורעבא יול

, VersionedString vs = new VersionedString()'ג • ;

ם עצ

ג סו

ה איז

ד גיח יקוהלש

ה וצ רוהאו

)קהחל מיזומא

(א הו

ותבנ לצהרו

'ג; רובו עשנח תלא

ה אוו

, מרק

ש ם י אלופיא

ה לקח

נהשתהמ

ל ש

ק שמנ הוסיפט

ת אשתממשמ

ת אח

,ק ראו

יםתא מאיבנ

ה לש וישקמנ האת

ת שממשמ

ת אח

ה לקמח

בגך רישצ

ה מ

'וא הוהאו

VersionedString vs =

new LinkedVersionedString();

Page 195: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

גתניוכת

ת שולר

ת דומעוש

ת קוחלמ החרמב

'והאו

Page 196: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יהטרמסיא

מו כרהשג

Find

סו מסהגר

ש פוחי לרנוגדשה

ת רוזמח

ל ש

ת ימ

שקמנ הוסיפבט

ק רשתמשלה

ה וליכ

,ל כעם

ד בולע

כן ול

נטומרגכא

ה לברועשי

ש מומי

ך דר

ק רהם בשתמשלה

ל כוא י ליםצמ עוריצ ליךצרש

ד קו

ל אב

יםימתאהמ

ק שמנ הסיפוטי

,ר טופראושל

ון כיומ

new

ם ביחיי

קהחל משל

ם ש

ר ביהעל

,שקמנ

ל ש

א ל

Page 197: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 198: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

וןתרפה

:ת שרוח

תי ב

)fa

cto

ries

( יםסו משקמנ

ס פוטי מיםצמ ערתציק ישמנ

ש ממשמ

ם עצ

interface VersionedStringFactory {

public VersionedString construct();

} class

LinkedVersionedStringFactory

implements VersionedStringFactory {

public VersionedString construct() {

return new LinkedVersionString();

}

}

Page 199: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 200: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תשרוח

ת בי בשמושי

) 1(

class SomeClass {

private VersionedStringFactory f;

public SomeClass(VersionedStringFactory f,

) { this.f = f; …

}

public someMethod() {

VersionedString vs = f.construct();

vs.add("First version");

}

Page 201: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 202: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ת שרוח

ת בי בשמושי

)2(

• יו ותירשש

ם עצ הרתצין יזמב

יםיכצר

VersionedString

יםשחד

,שתרו חית בלוש

אי בנ ליםירעבמ

;לו

ר ביהע לשראפ

ר יצשי

ת שרו חיתב

LinkedVersionedString

ת בי

או

מיעצ

ר יצשי

ת שרוח

האת

ם מיקיישמ

ם ריאח

ם שקמנ

ם קיספ לורזכ אוםש

ין אחהקוהל

ה לקמח השל

ד קוב

יםפיציספ

,פק סכל

ם עודעב ללהכוא יהי

כן ול

,ק ספ

ל ולכ

ידעת בתביכשי

ת רושי לותירשת ישרוהח

ת בי

ת אירעבלה

ם גבןמו כתןני

יםשחד

ם מיעצ

ך רי צלוש

ד קושה

אי ביטחלשמ

ד קו המי

ה אלש בקרעי בלוי תצויהר

ה בנהמ

ה ז

שתמשלה

ק ספ

,שתמשלה

ת שרו חית בזהאי בכןול

;לל כרךבד

,שתמשהמ

ד קומה

די למ

ק חושר

ה ורתצ

ת קר בוד קהוז

Page 203: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 204: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םליכלשומ

ת שרוח

תי ב

ל כות ישרו חיתב

בשמושי

ך תו

ם מיעצ

ר יצלי

יםנטומרגא

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 }

Page 205: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 206: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

שהמר

ה וזח הםא

,טלתבלה

ר תמו

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)

ה עצ

ת לת

ח קולל

ר שאפ מ

שתרוהח

ת ביל

;ה עצ האת

ל נצ ליבחי

א לשתרוהח

ת בי

Page 207: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 208: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

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);

}

Page 209: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 210: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

Vers

ione

dStr

ing

Link

edVe

rsio

nedS

trin

gCy

clic

Arra

yVer

sStr

ing

וןרגא

ני יצנ

םסיפוטי

ר בוע

• יםחסש ים יסיפוטי השתלוש

ין ב

:ת שוממ מותלקמח התיש

שקמנ האת

ק שמנה

כתריו

ליל

תואו

ת שוממשמ

ת קוחלהמ מ

ר ותי ילל כוסיפמט

ה שד

או ה תנשמ

)שקמנ

אן כ

(ל כוי

פיציספ

ר ותס יפוטי מצםלע

ס יחתילה

פךהי ללא

ל אב

Page 211: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 212: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

מהוג דודע

:רךעמ

ון מי

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;

} }

Page 213: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 214: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תאווושלה

ק שמנ

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

הובמו ווחבר

ה ומ דואה

אן כרנוגדשה

ק שמנ לתו

,לו

ה זה

א לבלא

ריגמל

;מה לביןך נשהמב

Page 215: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 216: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

בקשמנ השמומי

-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;

}

Page 217: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 218: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

רההו

ם מיעפול

ה רצמ

ני א

ם מיעפל

לירמ נוזהו

רההו

ר תו ביםחרוא

ה רצ מורבת

ם ריאח

ם תירושי

ק ספ מאני

ני אארשד נמי תאני

ל אב

)שני

ש ממומ

יםשונ

ם קישמנ

(

• קס פיא היםעמלפש

ס פק

ת כונ משי

,וםיל צנתכו מיםעמלפ

,פוןטל

ם מיפעל

,בוןשי מיםעמלפו

ר ספ משתממ מיאשה

ר היהצ ללהכוה ילקמח

ל ש

ה דרהג

יםשקמנ

Page 219: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 220: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ל אב

וןנכ

א לשמומיה

!

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כודר

Page 221: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 222: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יהעיהב

ון תרפ לוןסיני

בשרונד

נאת

ל ש

ם קד הי

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( ,

ס חו ייצרמיי

א הוו

תוןם נעצ לתוןס נפוטימ

,וסיפלט

ם אימת

ם עצ האם

Page 223: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 224: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ת קוציי

)ca

sts

(

• ם אימת

ם עצ לחסתיי מיםצקשיו

ס חוהיי

ם אחהלימצ

ה יקיצ

כותו ליםצקשיו

ס פוטיל

ה מט לקהציי

)do

wnc

ast

:( לוסיחל יש

ה יקיצ

ת חו פוסיפט

ליכל

;ה לקמח לוסיחלי

ק שמנ לוסיחל יש

ה יקיצ לנהכוו הגעכר

שקמנ האת

ת שממשמ

;יםקר מוד עששי

ה ראך נשהמב

ה עללמ

ה יקיצ

)up

cast

:(ליכל

ר ותס יפוטי לוסיחל יש

ה יקיצ

, ה לקמחשה

ק שמנ לוסיחלי

ה לקמח לוסיחל יש

ה יקיצ

ל שלמ

שתמממ

;ובש

,יםקר מוד עאהנר

ך שהמב

ה עללמ

ה יקיצ

חהלימצ

ד מית

,שורמפ

ר טופראו

ה יכצר מלאו

;א הי

ט שופ

דעמי

ד אב ללרפייומלק

ת רמגו

שליכלה

ה ולעל

ה מט לקהציי

;אז

ה ור קמה

ה ראך נשהמב

יטימפר

ת דושם ותניש מגם

ת צק לשראפ

ייםבי

Page 225: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

טהמול

ה עלמ לקהציי

םיייבטמיריפ

ם ניתשמ לקהציי יקחו

Page 226: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יהעהב

ת א

ה תרפ

א לקהציהי

ל אב

רחהכ בלא

ח קוהל

כי ין מי לצהרו

א הוש

ם מיעצ הכל

ם אדע יו

לאאו

ה לקמח

ה ותלא

ם כישיי

שללמ

,אם

SmartVersionedStringFactory

ת אצר יי

יםצמהע

,ותלקמח

ה כמ מיםצמ עבלקי

ח קוהלש

כן ית

ם שיממשמ

ם מיעצ

ין מי לשראפ

ח קוהל

ני עי באם

VersionedString

, ליךצר

ון מישה

מן סי

אז ת ונותכ

א בט

מוח קוהלש

ם מיעצ השל

הם לדע

,תרנס השמומי האת

א ל

כך לאי

,ירצהלה

ך ריצ

ש ממשמ

ם עצ

ל שכ

VersionedString

ם גשממ מ

Comparable

Page 227: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 228: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

חרא

ק שמנ

ש ממ לחטימב

ק שמנ

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

Page 229: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

סבה

יםר

יק ר

Page 230: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

וןנכ השמומיוה

...

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

;קןנת

ך שהמב

Page 231: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 232: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

VersionedString

LinkedVersionedString

CyclicArrayVersString

Comparable

להגד

ם סיפוטי התכיררהי

ה הי

א לזה

ח צלמו

ה בנמ

זהה קרבמ

,א הו

ל אב

ה ראה

ארף גהם

ם סיפוטי

ין ביםחסהיש

-ווןמכ

לי יקצ

ה הז

ה בנהמ

ר ותה יהי

לחוצמ

,א הוו

ף גרש

ה ראמ

ם סייחה

וי שעוקעמ

ת היול

VersionedString

LinkedVersionedString

CyclicArrayVersString

Comparable

Page 233: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 234: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םקישמנ

ם כוסי

ס חושיי

ר היהצ לוחלק לשראפ משקמנ

ס פוטי בשמושי

)דהש

או ה תנשמ

(יםימסו מיםותירש

ק ספשמ

ם עצ לחסתיימ

,צםהע

ה לקמח

זו אי מייןלצ

לי ב

;וחלק בותליכל

ר שאפ מזה

רבא קרה נכז

ח קול

-תי ורצ

)po

lym

orph

ic(

• ת שרו חיתבב

ש מושי

)fa

ctor

y (

אפמ

ם מיעצ

ת בנו לוחלק לשר

הםה לקמח

זו אי ממועצ בייןלצ

לי ביםסו משקמנ

ם ע

יםשקמנ

ר ספ משממ ללהכוה ילקמח

יםחר איםשקמנ

ר ספ מאו

ר אח

ק שמנ

ב חיהר לוליכ

ק שמנ

ם פיוסם נרימק ביםקי

ד קו

ל ש

ל צו נירתשאפ מותתיור צרב

וד קשל

ל פושכ

ת נעמוו

,קהחזוות

ח תופי לקרא יהוש

ל פושכ

Page 235: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

ריק

Page 236: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ק חל

ם 6יגיחר

Page 237: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 238: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

שם זיחוה

נודרהג

םייטרמסי

ם ינא

• האם

וחלק

יםקיית

ר אח האיתנש

ה וצ ר

,ח טיהב ליךצר

א הו

יםקימת

ם קד האיתנש

יםקימת

נו אי

ם קד האיתנ

ם א

ה, וחלק

ח הני לאיש רינו א

ותירש הלתעו פבילג

ה וממא

,יםתייסש

א ללופיא

תאת

ם קיי ליחצל מינו אוחלק האםש

אן מכ

דםהק

אי נ

,לו

ין א

ותירש לואקר לללבכ

ם טע

;ותירש העל

ר ותלו

ל כוא יהו

,או

ובש

ר ותר יוחמא

ת סולנ

,אי תנ

ם קיו

ת איגשלה

ת סולנ

או רתאח

ך דר בחרהא

,ותירש לואקר לעם טאין

ל אב

חרהא

אי תנ

ת איםקי ליחצל מינו אפקהס

ם אבלא

,לו

ין א

ותירש לאהריהק

ת אטללב

ת רושאפ

:עהבצהת

ר כב

א הי

ה •

פקס

קוחל

ת איםקי לוליכ

,

מטשתלה

או ,

ל כוו יאינ

ל אב

קהעס האת

ל בטל

Page 239: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 240: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

שליכ

ק פסשה

ה מל

?

• אי תנ

ם קיו ליקספ מיהיה

ם קד האיתנש

ה יתהי

ה וונהכ

רי ה

פקהס

ת ונונכ

ח כיהו ליהיה

ר שאפשק וספ הדיל י עחרהא

נו איש

ר ותש יחל

ם קד

אי תנ

ר דיהג לאיכד

ם מיפע לבלא

יקספמ

,מועצשל

,לה

אי תנ

ת איםקי לפקהס

ת וליכ

ת טחב

חרהא

להכא

ם רימקב

,יא הותירש לאהריהק

ת עושממ

:ני א

)וחלקה

(לי עטלמו האת

תי צעבי

)דםהק

אי תנ

( ;ת כע

סהנ

ה את

)

פקהס

(ותירש האת

רי בו עצעלב

,שלתכ

ם אלי

ע ודוה

זה כשחל

ם קד

אי תנ

ר דיהג לותובט

ת בוסי

תי ש

ש י

יב סודוע

הבהטו

א לבל אצהפונ

, אגםש

ירסבה נות

Page 241: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 242: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ה ובט

ה יבס

נהשואר

:טהליש

ר סחו

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

,גויש

יו אל

ם שייגונ

ם חיותשפ

ני לפ

:יםתיבינ

ק מחא נהו

לי או

Page 243: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 244: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

טהליש

ר סחו

תיומנו ז בללבג

• ם טייוונרל היםצמהעש

ה בדעו האת

ת קפש מהזו

ה גמדוה

ותירש השל

ח צלמו

ע צוביל

,בץקו

אן כ

,ה יטשל בנםאי

מוותירש לראקוש

ח קוהל

ל ש

ת לטח

ותירש לאהריהק

ני לפ

ם קיי

ץ ובהקש

א ודמו

ח קוהל

ם אגם

,ותירש לאהריהק

ין וב

א דוהוי

ין בחקימ

א הוש

כן ית

ין דיע

,ל ע

רתאח

ת כניתו

די י

,חר אשתמש משל

לי או

ט חו

די ל י עחקימ

ץ ובהק

לי אוו

)th

read

,כוןליתה

(ה ות אשל

יתכנתו

,יםוט חמה כלה

ש ם יא

הבה עיהב

ם מיעצ בטתחלמו

ה יטשל

ר וס חיא היתיססטייוונרלה

; םלע

הםלי עטהליש

ש ו ישהמי

ד ו

,ה יטשל

ה יקספמ

ת מנ

ל ע

ולפע לפקלס

ר שאפ מינושא

ב מצ לתםאו

ר ביהעל

יחצללה

ל וגמס

ק ספשה

ח טיהב לוליכ

נו אי

ח קוהל

כן ול

Page 245: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 246: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תסולנ

ק פסמה

ש קלב

ך אי

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

Page 247: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 248: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םליקוטורופ

ל גל בטהליש

ר סחו

ת ניווכ תתיש

)יםשונ

ם בישמח

ל עליאו

(דו

ת לונהמ

-ח שי

נהוב מולוקוטפרב

,ת שרן ודפדפ

ל שלמ

http

צם ערתעז בצגמיו

ר שהק

הן מחת אכלב

; גפןפדבד

'והאו

,שללמ

,ה לקמחמה

ם עצ

די ל י עוחלק בצגמיו

ר שהק

java.net.HttpURLConnection

ת אלאימ

ה הז

ם עצ השל

ח קוהל

ם אגם

ותדנקפ בזהחו בקוחל

,ר שבק

ני ש הצדשה

כן ית

ין דיע

)רתשה

(פי לוקדי בהגתנא יל

ולוקוטפרה

ת בוטו

כי הותפחשבמ

ה ורק

)פי להגתנ מלא

הו שמיש

ולוקוטפרה

( •

ון יצהח

ם ולהע מפעשמו

ם עצה

)רתשמה

(ל ש

ח קולל

כן ול

ליו עאהמל

ה יטשל

ין אצםהע

Page 249: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

סבה

יםר

יק ר

Page 250: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יהניש

ה ובט

ה יבס

:וק

ישת א

ק דולב

ה

אי תנ

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

כתערהמ

ת אורפת לותנס לצםהע משבק ליףעד

,נו ליעודשיו

כהפי הלא

ה יצטרהמש

ל גל בשלנכ

א הו

ם א

Page 251: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 252: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ל שנכש

ק פס

ל ש

יו תיובוויחמ

חיה לחהצ ביםתימסש

ת רושי

ת וא

ר אח האיתנ

ת איםקי ליב

מרשתהמ

קהחלהמ

ל ש

• וחלק לשרו דחרהא

אי תנ

מרשתהמ

ם קיו

ר שאפ מ

ירשל

ק ספם יעצשה

ם ריאח

ם תיו

ולפע לידעתב

שלנכש

ת רושי משדרה נמ

? •

לוןשכי העל

ח קולל

ע דיהו ליבחי

א הוש

ר כב

נו איר

,די כ

יםקימת

ר אח האיתנש

ח יני

א לוחלקשה

;לל כרךבד

, השגו

-try

ח קובל

השגול ועולפ

ק סימפ

-catch

עלופ מ

חרהא

אי תנ

ת איםקי ליבחי

א לשלנכש

ת רושישה

ר רוב

שנת רושי האםה

מרשתהמ

ת אזרשח ליךצר

ל שכ

?

Page 253: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 254: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

מרתשמ התא

ר חזש ליךצר

ת רושישה

בן מוכ

יםקיהת ליךשממ

ם עצשה

ון כיומ

,ם ריאח

ם תירושיש

כן יתו

ידעת באוקרו ישל

ר שאפשמ

ב מצ בצםהע

ת אואמצ ליםיכצר

ם ריאח

ם תירושי

ולפע להםל

ם ריאח

ם תירושי

בו ש

ב מצ לצםהע

ת אירחזלה

ף דישע

ר רוב

ללווכי

ולפע לרק

א ,

ח ליהצ לגם

א אל

ל אב

ד תיבע

ל פעשיו

ת רושי

ל שכ

ך ככל

ע רו גצבבמ

ם עצ הליאו

וא הגם

ל שיכ

, ליםיכצר

ם דייתיהע

ם תירושי הבלא

ותפח

ל עולפ

ח דווול

ם להש

ת חוקולל

כעלי

לוש ן

Page 255: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 256: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

קפס

ל ש

ת נוכות נחוכה

דם קאיתנ

ם קיי ליךצר

ח קוהל

,יקספ מלא

לי או

ל אב

ל עימו

רושיה

וגדא ליםיכצר

ם עצ השל

ם וניש היםת

מרשתהמ

ם קיו ל

,לא

ם אביןו ויחצל ההם

ם אבין

מרשתהמם וקד האיתנ

ם מיקיימת

ם א

,יםתיהס ליבחי

ת רושי

יםסו מצד

אי תנ

ם קיימת

ף וסבנ

ם א

,יחצל מותירשה

יםקימת

א לצד האיתנ

ם א

,ל עיעודומ

ל שנכ

ת רושיה

יגחר

)

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

Page 257: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 258: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

צד האיתנ

יגחר

ע מונש

ד הצ

אי תנ

ת אוקדי בירגדלה

ב חיי

א לזהחוה

ה ובעלה

ה ש קותהי לוליכ

ה הז

ד הצ

אי תנ

/לח

או ובשי

צד האיתנ

ם קיו לאיחר אינו אלאמי מוחלקה

צד האיתנ

ל ש

ה דרהג

ל אב

,ק פימס

אי תנ

ל ש

ה דרהג

ת חולפ

או יגחר

ת יעמנל

,תןכניתו ליעסי ללהכוי

/יתנ

או ג רימח

ע מנהי ל

רהקו

א הו

ה למ

ין הב לותפחל

שללמ

,ה יצטרשמ

ש רא מעתלד

ר שאפ

ם בהש

ם רימק

ש י היכהפ

,סוןלכהא

ל עיםפס אלי ביתשולש ממוכ

Page 259: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 260: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יגחר

ל קבמש

ח קו לשהעו

ה מ

?

int compareTo(Comparable other) {

VersiondString other_vs;

other_vs = (VersiondString) other;

if (this.length() > other_vs.length())

ם עצ האם

ג רי חעל

ע דיהו ללהלו עטהלמ

ה יקיצ

)other

(נו אי

לנם אימתש

ס פוטימ

ה יקיצ היוןיס

)אן כ

VersionedString

(

יגחר בפלמט

א לוחלק האם

,אן כמוכ

)ל כל

נו חסתיי הלא

יגחר

ל ש

ת רושאפל

( ,מי ליעודומ

ץ רו ליקפס מוחלק הודקיגחר העל

לו א קרש

וניגי הזה

:יםסו מותירש

ל קבשי

ח הני

ח קוהל

,שלנכ

ת רושיה

,מועצ

לו ש

ר אח האיתנ

ת איםקי לוליכ

א לוחלקה

Page 261: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

ברהס

יםיק ר

Page 262: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

טןק

ר פושי

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

ותשולה

א אל

ת צק לשיק בלא

Page 263: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 264: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ה צרמ

ת צוחלהי

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

}

יגחר

ך מס לוליכ

ח קוהל

ם מיפעל

,ך דר בשמושי

די ל י עשללמ

רתאח

,תר יורהיק

לי או

,ותירש הועיצלב

שלנכ

ני ש היוןיסהנת וריולנגסי

ק דיו בצהרימט האם

ה ור קמה

?

Page 265: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 266: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

רהמצ

ת צוחלהי למהוג דודע

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)

חר אבץקו

ם ש

ת סולנ

ר שאפ

לי או

,ס כנילה

ש תמשהמ משבקל

ר טוליתק האו

ט סקדי האת

יםימתאהמ

,מהדווכ

.

Page 267: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 268: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םגיריח

ם סיפוטי

'בגוהאו

,ל גי רצם עותצעאמ בעתבצמת

ג רי חעל

ה דעהוה

יגחר האת

ג יצמיש

,הושכל

ת רושי

ל ש

ון שלכי האת

ילרג

ם עצ

א הו

ג ריהחש

ון כיומ

,ת זרבע

תו או

ם וניב

new

בגג וההנ

'ס פוטי

די ל י עלוןשכי לבהסי האת

ין צי לוא הוהאו יםתא מיגחר

,מו כ

java.io.FileNotFoundException

דםקו הלקבח

נו אישר

מו כ

,בג

ר דיהג לשראפ

'ה כיררהי

ה אוו

יםוסיפט

ל ש

ה למש

;יםשקמנ

בי לג

נו איר

,בי לג

ם גכוןה נל זאב

ותלקמח

בגת ששמ מכזו

ה כיררהי

'ר ות ויותליכל

ת בוסי

ר אותי לוהאו

יםיגחר

ל ש

ת פיוציספ

Page 269: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 270: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

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

א הו

יתכנתו בגם פללבג

ג ריח

Page 271: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 272: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

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 (

מהעצ בההמז

Page 273: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 274: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םגיריח

ל ע

ה הרהצ

int compareTo(Comparable other)

throws I

ncomparableException {…

} •

ל ש

ג סו

נו איש

ג רי חעל

ע דיהו לשוישע

ת רושי

Error

ל ש

או

RuntimeException

ותשראפ העל

ר היהצ ליבחי

הזו

• ב חיי

זו כרהצה הלתול כתודרהגש

ת רושי לראקוש

ח קול

יגחר

ל עיעוד וישליכ

ת רושישה

ת רושאפ לחסתיילה

רישאפ

ל פוטי

1 :ל עיעודלה

וי ש עוחלק הגםש

ה הרהצ

ק ריגחר

ג סו

תו או

רי שאפ

ל פוטי

2 :ק לו בוךבת

ת רושי לאהריק

try

ק סו פעם

catch

יםתא מ

) ליכל

או פי ציספ

( •

ה ציילמפקו

ר בויע

א לוחלק הזה כוליפט

ר עדהיב

Page 275: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 276: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ה מל

)אל

(יגחר

ל ע

ר היהצל

לוור ילפיומלק

ר שאפ מיגחר

ל עירצהלה

ה שריהד

מי ש

א ד

לוןשכי

ל ש

ת רושאפ לדעמו

ת רושי לראקוש

רטבפ

,ג רישח

ת רושאפ

ע מונ

ה ז

"רך דורעבי

"א של

ת רושי

מרשתהמ

ת אזרשח מלא

כן ול

זו הותשראפ לחסתיימ

ילוע מכך

ל כזה

ם א

,ך ור צאיןש

ם גירי חגיסו

ש ה ילמ

אז הםלי עריזהכל

? •

ג סו מיםיגחרש

ון כיומ

Runt

imeE

xcep

tion

או

Erro

rם רזיוכ מ

בגאו

ב שמח ביהפו צלא

ה עי בללבג

או ת כניתו בגם פלל

יתכנתו האת

ה יצמרש

ה כנתו הבתביבס

ותירש

ל בכ

ת רולק

ם ליכו וייםפוי צנםאי

ה אל כיםיגחר

צבהמ

ה ר זשכאת וכניתו הרתצילע

ם מיור גהם

ל כל

ך דרב

,ין א

מרשתהמ

ר חזוש לותיבשח

Page 277: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 278: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

אוצם יגיריח

םי

ללהכמ

• ם הזה

ל כל מיםצאיו

Cla

ssC

astE

xcep

tion

,O

utO

fMem

oryE

rror

,יםיגחר

ה כמ

ד עו

לי אוו

ג סו מיגחרב

Cla

ssC

astE

xcep

tion

איכד

ם אלא אפללט

א לקהצישי

ם חיטוב

לרהמוא

לו ם רוג

)אם

ר ומכל

ג רי חכןית

יתכנתו בגם פללבג

א של

( •

פללט

ם מיפע לתן נירוןיכבז

ר סומחב

:ת רושי ליםראקו

ם א

להדו גרוןיכת זמולכ

ק קושז

כ, ם איגחר האת

ס פולת

אי ד

ליו עיעוד מותירשה

רתאח

ך דר בלהעוהפ

ת אצעלב

ת סולנ

או ר שאפ

ה כז

ה קרבמ

,ון כרבזי

ת וניסכ חתריו

)ת שתמששמ

ת טיאי

ר ותך ידר

ל שלמ

יםבצבק

( ,ה אינ

ש יקשב

ה ולפעשה

ש תמשלמ

ע דיהו לאו

רוןיכבז

ר סומח

ל גל ביתשראפ

Page 279: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

טול

ד קו

ע קט

ל כבלסר לעם טאין

ם רימק השני בבלא

לוהל

ם גיריבח

ל פ

.ם א

יםסו מוסיפמט

ה הי יוסיחשי

ח טימב

ה לקמח

ל ש

ן כותי השללמ

,ך ור צאין

ג ריבח

ל טפל

Cla

ssC

astE

xcep

tion

יתכנתו בגם פשל

ה קרלמ

.

ם אבלא וסיחל יש

ס פוטי היהיה

ה מיםדע יוננואי

ת כניתו השל

רי קוהמ

ן כותיב

,נו וא

תואו

ת צק ליםשבקמ

,יגחר בפללט

ך רי צאז

.

ומ דפןאוב

ה ,

וי יכ סש יבוש

ם קובמ

א אל

ן רויכבז

ר סומח בפללט

ם טע

ן אי רסומח לההבוג

,ורחסבמ

ל טפ להישכל

ך דר

ש יבושו

.קףש בוראמכ

,ל פוטי

חר אתםריגואל בשמושי

ת היו לוליכ

,רוןיכבז

י כונחס

ר ותי

,ע צובי

י אאו

ע צובי האי

ל עעהוד התןומ

ש יק בשיאנו השתמשהמש

ה ולפע

ל ש

ט חלמו

כרבזי

ר וס חללבג

ון .

להכא

ם רימקב

,ת איםרדשוש

ם מיעצ הכלש

ב שוח

הםשל

ם ריתמשהמ

ת ארוחזש ייגחר בוליפהט

,ל ש

ה יסתפ

ש רולד

ל כו יזהו

ודהק

ל ש

ת מו רמהבכ

ג ריהח

.

Page 280: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םעצ

א הו

ג ריח

class

IncomparableException

extends Exception {…

}

• איבנ

ך רי צואה

) ם(ע ופ מותשד

לו ף סיהו לשראפו

ויםותירש

למל אב

הצם ע

? •

ורבר

א למתבא

,גויוולס

ק פימס

ג ריהח

ל ש

ס פוטי הריה

ת רישאפ

ה יבס

1 :או

ת כניתו בגם פללבג

ג רי חשל

ה קרבמשבמח הכתערבמ

,גםהפ

ת אקןלת

ר שאפשי

ע יד מרתחזה

ת רישאפ

ה יבס

2 :יו על

ע דיהו ליךצרש

ג רי חשל

ה קרבמ

ש תמשלמ

")ל גל בלהשנכ

ה ולפעה

("...

,שתמשלמ

ה דעהוה

ת רישאפ

ה יבס

3 :ש שאוהת לשראפשי

ע ידמ

)ירנד

( •

בהטו

א לבהסי

:'בג

צם עוא הבר דכל

ה אוו

Page 281: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 282: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םעצ כיגחר

'בגל לכ

ה אוו

יק ראיבנ

ת חולפ

ש ם יגיריהח

,ל קבשמ

אי בנ

זתרומח

,ת רושיו

getMessage

זתרומח האת

ר חזישמ

• ברהס

ת רוזמח

ם עיגחר

מי עצ

ר צולי

ל ובמק

,ר כולז

ך רי צבלא

לאה אל כותרוזמחש

ותימתא מ

,לל כרךבד

,ש תמשלמ

ה צגלה

)תןכניתו השל

ה שפ

ה ות אברדו

ח כרבה

א לשתמשהמ

,ר שכוו

וטרה

ק פימס

ד מי תלא

תן כניתו

ל ש

וי יטהב

( •

יםכבורמ

ם גירי חירגדלה

וי רצ

א ל

,ר דיהג לצוי רלא

ד חובייו

יגחר לוםגרול

ל שיכלה

ל לו עהםשל

אי בנשה

ם גיריח

;ך מסה יז

ריקוהמ

ג ריהח

ת א

Page 283: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

רי

ק

Page 284: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םגיריח לחרא

ש מושי

ותולג זרי חסתפיות

ג רי חעל

ה דעהו

הן שב

ת פושב

,תן ני

ל כושי

ת רושי

ש ממ לנת מעל

ם גיריהח

ון גנמנ בשתמשלה

יםוסיפט

ר ספ מוךמת

ד אח מרך עירחזלה

public void polyMethod(…

) throws

resultType1, resultType2 {

do something

if (…

) throw new resultType1(…

);

else throw new resultType2(…

);

}

• בג

וי רצ

א ל

'ודמא

ר יק

ם גיריהח

ון גנמנש

ל גל בוהאו

Page 285: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 286: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ה וזח

גי ריח

ל ע

ת רועה

)בג

ין א

'והאו

(

• גי ריח

RuntimeException

יתכנתו בגם פעל

ם עידימו

• שללמ

,NullPointerException

ל עברמע

ל עיעוד מ

שס חוביי

ש תמשלה

ר סואיה

כו ער

null

זהחו

ל ש

ת רוהפ

ה אל

:ותכנהת

ת שפ

ל ש

ה חוזה

ם קיסו פרתעז בדרוגומ

ש ורמפ

ה לקמח

ל ש

ה חוז האם

בגם קייחו

ם ניייאולב

'והאו

,זהחו בדהמי עוקבד לליאו

ר שאפ

ותירש מאהציבי

או ה יסכנ בזהחו בדהמי עאי

ה גלמת

ר שכא

,ל עיםיעודמ

ג ריח

דם קאיתנ בדהמי עאי

ג סומ

,חר אאיתנ

,או

אי מרשתהמ

ם קיו

'בגזהחו

גי ריבח

ת בנימו

ה יכתמ

ין אוהאו

;שת ירואח

ת פושב

Page 287: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 288: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

'גזהחו

גי ריחה וווא

טהשו פשהגי

:

public String getVersion(int i) {

if (i > length() || i <= 0)

throw new PreconditionException();

ותעי בשלוש

:יתשרא

,יםבבערמת

ד קווה

ה חוזה

;ד חוביי

תי עייב

ה זר חותודנק

ה כמ

ש ם יא

)קי סופ

retu

rnאו

th

row

( •

יתשנ

,ד עוש

ם מיעצ

ה נחמו

ת כנובת

ב שו חנוןנגלמ

ם וא תלאבו

נו געא נל

,שהרוי

יתשליש

,ה יקבד האם

ה חוז האת

ק דולב

א של

ה וטש פרך דאין

רהיק

;ת וכניתו המתבר

זו כרך דיךצר

/קהחלהמ

ת רמ באו

פקמסש

ם נייצוחי

ם פיוס תנםשי

יםחוז בכהמי תים

Page 289: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םזיחו

ת זרע בוןיכת בכהמית לםייוניצח

ם ליכ

לנו יםועידש

יםכלה

,

יםריסח מקםחל ונםחי

קםחל

,

הם

JMSA

sser

t ,

iCon

trac

t ,

jCon

trac

tor

,H

ands

hake

,JM

L ,

Jass

,JP

P.

Page 290: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ם גיריח

םעירוג

ותטר מודלע

ם גיריבח

ם שיתמש מיםתחמפ

,ותדקוצ מותפח

מנל עוא התרביו

ע רוהג

ש מושיה

לה זותהילשא

ך סולח

ת

• מהוגד

:לטהק

ת רייספ

/ גשל

ט פל

'ר ספבמ

ת מכתו

ה אוו

ם דידוקי

)en

codi

ngs

( סטטק

צי קב

ר בוע

,ת אורסלג

ל אב

נהשו

ם דידוקי

ר בחבמ

ך מולת

ר ות מיהריספ השל

ת ונוש

לאאו

ך תמד נדוקי

ם הא

ל אוש לרך דאין

מךנת

א לודידבק

ש תמשלה

ם סימנ

ם אבלא

,ע דימו

ת רושיה

יגחר

ל ע

java.io.UnsupportedEncodingException

יףעד

תהילשא

ת זרבע

ך תמד נדוקי

ם הא

ר בר ליה ה

Page 291: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

בהשחמ לילרגת

:ם אה

EOFE

xcep

tio

nקצדמו

?

בץ קו לובכת לאו

א רולק

ר ותר ישאפ

אי ש

ע דימו

ג ריהח

,פוסו לענוהגש

ון כיומ

.זה כיגחר

ר דיהג ליה הדקוצ מאםה

,תהילשא בשתמשלה

ה הי

ך רישצ

או ?

Page 292: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

אש

או ג ריח

תהיל

?

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 }

Page 293: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 294: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םקד האיתנ לתשוגי

ני ש

ל ש

ם קד האיתנ

ע רגכ

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 }

Page 295: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 296: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ולגד

ל בד היןא

ה וראלכ

ר ותה יראג נריבח

ש מושיוה

"סיןח

" ,ת חו פשור דואשה

ון כיומ

ר ותח יטימב

ק ספוה

ח קוהלמ

)ותקינ תוקבד ליחבט מרטבפ

( •

קהחלבמ

ם ריאח

ם שימושי בבלא

, מתריו

יםכבור

,ל בד השי

תהילשא בשמושי הבתטול

Page 297: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 298: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

דלהב

ש ם ימיעפ לבלא

:בדעו

ה ז

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 }

Page 299: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 300: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

א לזה

ל אב

...

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!

}

Page 301: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

ריסבה

םיק ר

Page 302: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יגחר

ם וג

ה תילאש

ם גליאו

?

• רישאפ

,יקמעל ועיא י לבלא

ת אצעלב

ל כוק יספשה

ת אוודבו

ע ודח יקוהל

ר שכא

ם ג

ת רושיה

)שללמ

,סהגר

ף לא

ת יכשו מלא

ת רוזמחה

( ,ב חיי

א הו

ק סובפ

ק ספ לאהריהק

ת אוףעטל

try-

catc

h

• ולרבלס

ף וסבנ

,ותקינ תדקבו

ד מי תפקהס

,ת אוודבו

ר שכא

ם ג

ור צכך באין

ך•

יגחר

מו כרךבע

ל רבסו מלהאיש בשמושי

מ, ע מנהי לשראפ

תהאו

ך רי צלאש כקהדיהבמ

ו, רךצו האת

ע מונ

ע בצ לותנס ל

יחצל תאם

ת דע לנת מעל

ה ולפע האת

Page 303: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 304: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ס טואטס

ם עצ

יגחר

ם קומב

ר שאפ

ל עוחדוק יספ הכודרש

ס טוטא סצםבע

ג רי חיףחללהלוןשכי

,למ

שלMatrix a = …

; Vector b = …

; Vector x;

SolveStatus s = new SolveStatus();

x = a.solve(b, s);

if (s.succeeded()) {…

} else if (s.failedSingular()) {…

}

• חהצל השל

ה קרבמ

ל עית יחופ

;ן לוש כרהמק ביליע

ר ותי

Page 305: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 306: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םגיריח

ם כוסי

נא תאת

ם קיי לפק סשל

ון של כעל

ם עידימו

ם גיריח

חרהא

י ,

דםהק

אי תנ

ת איםקי

ח קוהלש

ת רולמ

אי תנ

ם קיי לוחלקמה

ש רולד

ר שאפ

אי ר שכא

ק צדמו

א הו

ג ריח

ותירש החתצל האת

ח טייבש

ם קד

,ק פימס

ין אוחלק לכי

או טהליש

,די מרהיק

ח קוהל

די ל י עקהדי בכי

או ,

ה ש קכי

או תיציתמ

ם קד

אי תנ

ר דיהגל

ע מנו לוליכ

ה הי

ח קוהל

ם אדקוצ מינו איגחר

ת זרבע

תו או

טהשו פתהילשא

תו ת ותואי כבו

ש תמשלה

ף די עבל אבר דכל לצם עוא היגחר לא

• וחלק ביגחר בוליפט

:ל עלוש

ח קולל

ה דעהור ותמשהמ

ר חזוש

ג ריח

)חר אליאו

(ה ימשהמ

ע צובי

או לו ש

רתאח

ך דרב

Page 307: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 308: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ק חל

7 ותלקמח

ת חבהר

Page 309: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 310: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תורזכת

:ת רושיה

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;

}

Page 311: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 312: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ולפיכש

• ורזככ

,ה לקמח הורעב

ת רושי האת

נו תחפי

LinkedVersionedString

,ק שמנ האת

ש ממשמ

VersionedString

שקמנ האת

ת שממשמ

ה לקמח

ל לכ

ף תק

ק דיו בותירש

תו או

יךצר

,כן

ם א

,כזו

ה לקמח

ל בכ

ת רושי האת

ל כפשל

צוי רלא

ל פושכה

:להנג

ם א

,שלמ

, לותירש השמומי בגםפ

,תק לרךצטנ

תואו

ת לוולשכ

ת קוחלהמ

ל בכ

תו או

ן

Page 313: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 314: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

וןתרפה

:תטשפמו

ה קחלמ

שקמנ לתףשוהמ

ת רושי הרתגד האת

ף סיהו ליה הצויר

בגל אב

'חר אריביתח

ה בנבמ

ש תמשלה

ך רי צוהאו

,ה לקמח

ת שטופמ

)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);

}

Page 315: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 316: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תטשפמו

ה קחלמ

ממוכ

שקנ

,לםש

א לוסיפט

ה ירגדמ

:ר דיהג לשראפ

להכא

ם מיעצ

ר יצלי

ר שאפ

אי ל אב

ה לי אותסוייחתיה

ל אב

ת רושי

ל ערהצה הבה

ש ם י ארקם ו אטתשופ מקהחלמ

רהגד הלאל

;ח פתהמ

ת יל מאת

ת ול כותירש הרתצההabstract

ין צי ליםיבחי

ם ג

טתשופ מיאשה

ה לקמח הרתגדבה

חבור מותהי לדתועמי

ת שטופ מקהחלמ

ת קוחל מדיל י עת

שי האת

ת רודימגש

ת שיווחמ

יםותר

יםשטופ מיהותירש

ל שכ

ה לקמח

ה שמע לוא השקמנ

יםשקמנ

ל עיוןבד

מו כ

,ה לקמח העל

ל כל

ך דר בדרוג מזהחוה

טתשופהמ

,יםותירש הכל

ת אותשממשמ

ת קוחלהמ

ל עלא

Page 317: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 318: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תטשפמו

ה קחלמ

ת חבהר

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

Page 319: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 320: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םתירושי

ת עלפה

ה לקמח

ה יברחשמ

ה לקמח מצם עעל

ת רושי

ם ליעימפ

ר שכא

טתשופמ

) נהממ

ת שורי

( ,ה לקמח בדרוג מותירש האם

יתשוחהמ

,עלופ מואה

,ת רושי העלופ מרתאח

ל קבנתש

ה שרובי

טתשופהמ

ה לקמחמה

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

Page 321: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 322: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תשיחמו

ה קחלמ

ת חבהר

יוןרעה

:ם ש בסהגר

ון ימ סשראפל

)זתרומח

(ר ספבמ

ק רלאו

דרסו

שמומיה

:ספהו

פעמו

ה שד

ת ,

איבנ

,יםותירשו

class TaggedLinkedVersionedString

extends LinkedVersionedString {

protected java.util.Map tags;

public TaggedLinkedVersionedString() {..}

public void tag(int i, String t) {…

} public String getVersion(String t) {…

} }

Page 323: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 324: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

חבורמ

ם עצ

ה בנמ

(Lin

kedV

ersi

oned

Stri

ng)

n:

..

.la

st:

...

Tagg

edLi

nked

Vers

ione

dStr

ing

tags

: ..

.

Page 325: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 326: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תחבורמ הקהחלמ לאיבנ

public TaggedLinkedVersionedString() {

super();

tags = new java.util.TreeMap();

}

• ס סיהב

ת לקמח

ל ש

אי בנ האת

ל עיהפ לשל י כדםקו

)ה לקמחה

יםיברח מתהאוש

(ח פתהמ

ת יל מרתעזב

super

ת לקמח לאם

יםנא בפרמס

ש ס יסיהב

,ד אח

ל כילפעלה

ר שאפ יםימתא מיםנטומרג ארתעב הדיל י עהםמ

,שללמ

,super("a d

emo");

יסבס הקתחל משל

אי בנ לשורמפ

פן או ביםראקו

א לאם

,'ג

ה יאקר האת

ת טיומוט אסהכני מוהאו

super()

ת ילתח ל

איבנה

Page 327: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 328: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םשיחד

ם תירושי

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);

}

Page 329: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 330: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םסיפוטי התיירכירה

Vers

ione

dStr

ing

Link

edVe

rsio

nedS

trin

g

Comparable

Tagg

edLi

nked

Vers

ione

dStr

ing

interface

abst

ract

Page 331: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 332: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

וןנכ

א לדרסה

ביםותירש השמומי

-TaggedLinkedVersionedString

בצםבע

וי תל

א ל

-LinkedVereionedString

לגם

ם איית

ק דיו בשמומי

תו או

- CyclicArrayVersString

שראפ

,שללמ

,לו הל

ם תירושי האת

ף סיהול

)ע ופהמ

ה שדו

tags

(ת שטופהמ

ה לקמחל

VersionedString

לוהל

ת לוכוהי

ת איךצר

ד מי תלא

לי או

ל אב

,ך רי צלא

ר שכאו

תןאו

,ת איךצר

א לגם

ה שדה

tags

דרהס

ת אוךהפ לליאו

אי כד

Page 333: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 334: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

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

,כן

א הי

Page 335: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 336: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תיועהב

ת א

ר תפ

א לזה

יתשרא

, ת היו לוליכ

ת שיווחהמ

ת קוחלהמ

תי ש

ל ש

ש מומיהטיןלולח

ה זה

;ש ת יאחב

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

Page 337: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 338: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

בהרומ

ה שרוי

נהמבב

ם תירושי האת

ר חולב

ה וליכ

ת שיוח מקהחל מכל

ה הז

ת שיווחומ

ת טושופ מותלקמח משהרוי ייד

ל עפקתס

א היש

ותימתאמ

,וד קולכפש

א לל

ערהצ

ה רבלמ

'ג, בהרו משהרוה יירמת

א לוהאו

) m

ulti

ple

inhe

rita

nce

,שהרו י

ץ בע

ד חיה יורמה

ר ותמי

ם תירושי

ל ש

שהרוהי

(

TaggedVS

ComparableVS

Comparable

CTLinkedVS

LinkedVS

VersionedString

CLinkedVS

TLinkedVS

Page 339: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 340: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

בהרומ

ה שרון יאי

ה מל

בג

'והאו

• ת דרהג בבה רותשמי גרתשאפ מבהרו משהרושי

ת רולמ

וד קולכפש

א לל

ת קוחלמ

,ותעי בצר יוזה הנוןנגהמ

בגםש

ח נני

-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

Page 341: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 342: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

בהרומ

ה שרוי יבל

ל פושכמ

ת עומנהי

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);

}

Page 343: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 344: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תליכל

ר תיו

ה מוגד

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); }

Page 345: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 346: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ס חי

has

-aס חם יקומ ב

is-a

ל ש

ע ופהמ

ת דוש

ת אלהלימכ

ה שרוי

ם עצ ביסבס הקתחלמ

בהחימר הקהחלהמ

ל ש

,יםותירש האת

ה ילכלמ

,ת שראפומיסבס

ם עצ

ה הי

לו אי כיברח מצםבע

ש תמשלה

ס יח

ת ראנק

פי לו חשמושי לותשראפה

is-a

,ל שלמ

TLinkedVS

is a

LinkedVS

יגשלה

תן שני

ה אתהר

ת דמקו המהוגהד

ק דיו בותוליכ

תן או

ת א

עצ ביסבס הקתחלממ

ם של

ם עצ

ת כל הדיל יע

ה לקמחמה

ם ה יברחהמ

)יסבס השל

ע ופהמ

ת דוש

ת אבללק

ת מנ

ל ע

( ,ל ע

יידס סיהב

תי רושי לשתורמפ

ה יאקר

)

forw

ardi

ng( ,

די ל יוע

שה הרהצ

ס סיהב

תי רושי

ת אקתספ מקהחלהמ

)implements Taggable

( •

וטש פתריו

,שמי גתריו

,בלורמס

ר ותט ימע

ל אב

Page 347: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 348: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ת רושי

ת סריד

)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ותירש לאהרי קוםמק ב

Page 349: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 350: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

סהרילד

ת בוסי

תי ש

ה לקמח בותיליע בתר יוותירש האת

ש ממ ליםעמלפ

ר שאפ

ה לקמח בשרמא

ם עצ השל

ש מומי הטיפר

ת ארהכישמ

טתשופמ

שללמ

,קהחלשמ

ח נני

Cויןממ

א לרךמע ביםלמש

ת מרשו

;

שחד

ה לקמח

ה CS

ך ערהמש

ג אולד

ל אב

ה מנ משתלר

ה וליכ

יםבראי

ף סימוש

ת רושי הסתרי דדיל י עויןממ

ה היי

,ש חפול םרייב אשחפשמ

ת רושי הסתרי דדיל י עותיליע בתריו

יהשני

ה יבס

:זהחו האת

ק חז ללהכות ישורהי

ם מיפעל

שללמ

ר טוטראי השל

ה חוזה

-CS

ח טימב

ה ירחז מ

להעו

ר סד ברוחז יויםבראישה

,יוומכ

ם ות אילמכש

ך ערהמש

ן ויןממ

Page 351: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 352: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

מיינ דםעצי וטאטס

ס פוטי

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();

// יתטונונו מקהרי סעל

ך תמהס לשראפ

ם הא

?

Page 353: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 354: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

זהחו הקזוחי

זהחו הוקחיז לשמושי

ם אירו

ה גמדוב

:ם עצ

ך רי צוחלק

ם א

מר ופש מזהחו

ם עקהחלמ

)CS( ,

ש תמשלה

ך רי צואה

טי טא סוסיפמט

ה תנשבמ

CSס פוטי

ם עצםלע

ס יחתישמ

מי נאדי

CS •

רהחי בותשראפ

ח קולל

תן נוזה

:ך דר

ל גי רזהחו

C ,ה חוז

ך דר

ר ופשמ

CS

תר יושחל

ה חוז בחריב

ח קוהלש

ה למ

?ל ש

ש מומי הליאו

יליע

ר ותש יחל הזהחוה

,לק ליםובששח

ם טייבההמ

ת חולפ

; וחשללמ

,רההי מתר יוויןממ

א לרךמע ליםבראי

ת ספהו

,ת רולמ

טיאי

ר ותש יפוחיש

;ל עותלקמח

ט מע בשתמשלה

ב שו חליאו

רוןיכהז

ל וד גאו

ת כואי הותיקבד

ר חי מאת

ר זעלמ

ת מנ

Page 355: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 356: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

קזוחי

או ה שחלה

?

• ק שמנה

VersionedString

ה לקמחוה

LinkedVersionedString

ר ספ מאת

ם ליבימג

א ל

צגליי

תן שני

ת אורסהג

,ל ש

ם קד האיתנ

כן ול

getVersion

ין ביהיה

ט מנגוארשה

א הו

1ין וב

length()

,ת אורסהג

ר ספמ

כהד עפנווסשה

ם צירו

נו שא

ח נני

לקהחלהמ

ת איברחלה

ה שחד

ה לקמח

BoundedVersionedString

סף נוותירש

ם ע

,chop(int i

) ,

ת אורסהג

ת אחקמוש

i-1

טהומ

;

רי אח

כזוה ודפק

,ל ש

ר ותהמ

ם חוהת

getVersion

ק רוא ה

iד ע

length()

סו מנהחימב

מתי

,זהחו האת

נו זקחי

,א של

ת רושי

נו ספהו

כי דםקו

ה הי

,רתאח

ה חינמב

ל אב

,ה חוז האת

נו שחלה

)ת א

פקהס

( ,ילגב מתר יודם קאיתנ

ם עותירש

ש ש יחד הפקלס

כי

Page 357: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 358: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ה פחלהה

ון קרע

)su

bst

itu

tio

n(

בעש תמששמ

ח קול

ס פוטי מוסיחך ידר

ם צ

LinkedVersionedString

ת איםקי מצםהעש

ח מני

ל ש

ה חוזה

LinkedVersionedString

ת שא

ם עצ הקהחל מזהאי מעתלד

ל כוד ימי תלא

ח קוהל

ילפע מוא התיורושי

;ה לקמחמה

א הו

לי או

LinkedVersionedString

ה יברחשמ

ה לקמח מוא הליאו ו

תהאו

ת אבהחימרש

ה לקמח מצם עכןל

LinkedVersionedString

א הו

לו אי כשממ

ג נההת ליבחי

ה לקמחמה

LinkedVersionedString

ה לקמחמה

ם עצ בתואו

ף ליהח ליהיה

ר שאפש

ך רי צמרלוכ

LinkedVersionedString

וחלק העל

ע פישה ישז

לי ב

Page 359: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 360: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

זהחו התא

ש ליחלה

ה חבהר לורסא

כן ול

ם קד

אי תנ

ש רולד

ר סוא

ק חז

ר ותי

) לשה קתריו

וםקי

( •

שחל

ר ותר יאח

אי תנ

ח טיהב לוראס

ורמק בהרוצ הלאש

ס פוטי מיגחר

ל עיעודלה

ר סוא

) ע מנה נז

בגת ריביתח

'והאו

(

ותחר איםילבמ

,ס ור דותירש

ל ש

ה חוזה

)ש ממשמ

ת רושי

ל ש

או זקחו מזהחו

ם עבל אשקמנ

(רהצומה

ד מי תואה

א הו

ם קד האיתנ

"חר אדם קאיתנ

או ש ורם נקד

אי תנ

"

החרהא

אי תנ

א ו

"סףנו

ר אח

אי תנ

ם וג

ש ורר נאח

אי תנ

"

ם קד האיתנ

ת ארק

ק חז לתרמוש

בן מוכ

)ף וסהנ

ר אח האיתנ

א הו

true

(ר אח האיתנ

ת ארק

או )

א הו

ר אח

ם קד

אי תנ

false

(

Page 361: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 362: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ם תעכנתש הא לודע

ם א

...

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);ה לפהח הרוןעק

ת אפר מבל איתירחב תקיןת

Page 363: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 364: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םגיריחה וסריד

class

BoundedVersionedString

extends LinkedVersionedString {

public void getVersion(i)

throws DeletedVersionException {…

}

• ל ש

ם קד האיתנ

ת ארש הדיל י עיהבע האת

ר תולפ

נו סיני

getVersion

כנול ע

,ה קרבמ

ל טפ לדי כיגחר

נו ספהו

ל אב

די ל י עבר כקהמחשנ

ה רס גשבק מוחלקש

chop

בדעו

א לזה

!ריהח

ת ספהו

ת ארתאח

ה ורבצ

ה שליהח

ג ותירשה

,יגחר בפללט

ח קוהל משתור דיא הכי

; גזה

ת א

'ה אוו

יתירחב תרתוסא

Page 365: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 366: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

זהחו

גי ריחה ושרוי

יםותירש הוףבג

ה חוז הקתדי בעל

ה שמק

ה לפהח הרוןעק

, public void someMethod(…

) {

if (!( p

reco

ndi

tion )) throw Precond...;

• צרש

א הי

ה עיהב

ת רושי השל

ם קד האיתנ

ת אגם

ק דולב

ך י

שקמנ השל

או ס דרהנ

,הו מעתלד

ה וטש פרך דאיןו

מהדוב

,אי תנ

ת איםקי לותשהר ליךצר

ר אח

אי תנ

ת יקבדב

שקמנ האו

ס דרהנ

ת רושי השל

ר אחה

סףבנו

,ם איבנשה

ני לפ

ק דולב

ך רי ציםנא בשל

ם קד האיתנ

ת א

הוש מיםשעו

ון שרא הברהדש

ל גל ברישאפ

תי בל

ה וז

ם ה

יסבס הקתחל משל

אי בנ לואקר לוא היםשעו

Page 367: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 368: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םשיורא י לאיבנ

ל ש

ה וזח התא

איבנ האת

ם שיורא י לכי

,אי בנ

ך תו מותשורמפ

לו ם איור קלאא

בהחימר הקהחלבמ

סףבנו

,ך תו

ת ימסו מקהחל משל

אי בנ לראקו

ד מי תוחלק

קהחלהמ

ם ש בשמושי

,שללמ

VersionedString bvs =

new BoundedVersionedString();

• יסבס הקתחל משל

אי בנ

ל ש

ה חוז העל

ך תממס

א לוחלקה

לל כיםנא באין

ם קישמנול

Page 369: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 370: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

חהפשמ הוןכנת

ה לקמח

Sub

ה לקמח

ה יברחשמ

Super

) ק שמנ

ת שממ מאו

Super

(ל ש

ה חוז בשתמשלה

ה וליכ

Super

נוישי

א לל

,

• תואו

ק חז ללהכוא יהיש

או ,

ותפח

ש רולד

ר ומכל

ח וקוהל מ

/או

תר יולו

ח טיהבל

לוראס

ל אב

-Sub

ל ש משחל

א הוש

ה חוז בשתמשלה

Super

כןל

,יהרכיר היםננתכ מאם

,ם ליבימג היםחוז העם

ת קוחלהמלהמע לותהי לותיכצר

ר ותי

,ה מט לותרניתיהמ

ת קוחלהמו

)ותילגבהמ

ת איברחלה

,פךהי ללאו

(

• רטבפ

,כנןלת

ך רי צותלקמח

ל ש

ה כיררהי

,גםו

ר שאפ

אי ת קוחללמ

ס סיכב

ת מוקיי

ת קוחלבמ

ש תמשלה

שהרוי ייד

ל עותשחד האת

ם ריוצם י אותתירוריש

ת שוחד

Page 371: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 372: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

שהרווי

ה סמעה

ירסב

ה ראה נז

) ך תו מותורצדרוהפ

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

Page 373: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 374: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םגזמו

ר כב

ה ל זאב

overTheTop(VS x, LinkedVS y) {…

} overTheTop(LinkedVS x, VS y) {…

} LinkedVS a = new LinkedVS();

LinkedVS b = new LinkedVS();

overTheTop(a, b);

• להמע לחת אקהציך ירישצ

ר רוב

,בלא

הן מיזו א

,ל ע

aאו

b?

• יטחללה

ך דר

ין א

;ת עלהפ

הרהשג

קיחו

א ל

תבג

'

והאו

Page 375: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 376: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תיוירברש

overTheTop(VS x, LinkedVS y) {…

} overTheTop(LinkedVS x, VS y) {…

} LinkedVS a = new LinkedVS();

LinkedVS b = new LinkedVS();

overTheTop(a, b);

• רירישב

ק חו

ה ז

:קובמ

ם א

קהרוהי

ה רסהג

ק רתההיי

ר ,

ה יאקרה

יתוק חתההיי

ה גרשל

מהתוהכ

ה רסהג

ת איםיפוס משרכא

,א לל

ת פכנה

ה יאקרה

יתוקח

;פייומהק

ל אב

חר אבץקו בזה

ם אזה

ת אלהיג

א ללר

,ודעב ליךשתמ

ת כניתווה

,קהרוהי

ה רסלג

א רולקו

לאיהלצפיומשק

ב טו

רק

נהשת הלאש

ץ וב קשל

ת אנהש ת

יתכנתו הותהגתנה

ז; רירישב

ב מצ

ה

Page 377: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 378: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ערו גתריו

לי או

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?

Page 379: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 380: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םתעכנתש הא לודע

ם א

כןסו מיוןרע

א הי

ה מסהעש

, •

מןהז

ה ו זשיעכ

אז

• ה ם זביחימרש

ם סיפוטי לחסבי

א הי

ה מסהע השרכא

ד חוביי

זהת א

,טיןלולח

ם ריא זל

ותרירישב

ר וצי

,ת ביטיאיטואינ

א לרהצו בהגתנשמ

ד קו

)הה

ס פוטי בלוי תילפע מצםשע

ת רושיה

א ול

ם עצ לותחסתיי

צםהע

ל ש

ה לקמח ברק

( ,ק דיו בותירש

ה איז

ת דע לשיקוו

עלופמ

ה ידיח הרהמוהתש

ון כיוומ

)ללבכ

ם א

(יתתטאס

א הי

,איכד

א ל

Page 381: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 382: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

שרובי

ת

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?

Page 383: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 384: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

חתופ הוןקרע

-ורסג

של

ם ביכימרה

נהוכ תכתער מ

יםורסג

ת היו ליםיכצר

,

ר ומכל

שמושי ליםכנמו

,יםוחפת

ת היו לעהש בבה ו

,כנימו

ה חבהר לם

יםקי הנוישי

א לל

יהצו רותפח

ם קיי הנוישי

די ל י עבהרחה

רוןיקהע

ל ש

ד אח

ש מומי

א הו

ה שרוהי

ון גנמנ

;ש מומי הלא

ה ז

ידיחה

—שמומי

ד עו

ה ראס נורהק

ך שהמב

,pl

ugin

s

• 'בג

והאו

,לםש

נו אי

ה שרוי ייד

ל ערוןיקהע

ש מומי

חד ארההו מתרמיו

ת שלר

ר שאפ

אי

• ה חבהר האם

ב חיהר לשראפ

אי יסבסמה

ה ילגב מתריו

;ם האהזו

ה עיהב

ת אוףעקשת

ה שפ לבהרח היאמצלה

ם ליכום יאת

?

Page 385: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 386: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תחבורמ

ה חפשמ בםייחה

ותוחלק

ין וב

ה יברחמ

ה לקמח

ין שב

ס יח בדנו

ה כעד

;ת חוקול

להש

,שקמנ האו

ס סיהב

ת לקמח

ל ש

ת חוקול

,ם אינש

ת חוקוול

ם שיתמש מהם

ה לקמח

זו אי בוקדי ביםדעיו

)ובהר

( •

ת בורח השל

ש מומי הביןה ולקמח

ש מומי

ין שב

ס יח בדוןת נכעלהש

ין מע

הן ם סיפוטי היתכיררהי בולסל מרךאו לותלקמחה

הםלי עורשמ לששי

ם ליכל

ה לששי

ת חבור מחהשפמ

אתת זומלע

,ה כז

ל לומס

ל עינןשא

ת קוחל משל

ם שימומי העל ותבלהג

ם שו

ין א

,שקמנ

תו או

ת אותשממ מלןכו

ם אגם

Page 387: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

ריסבה

םיק ר

Page 388: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םביורעמ

ם תירושי

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

• יםותירש הכל

ת אסנודר

ם אלאא

,ס סיהב

ת לקמח מיםותירש

רבעו מפןאו ביםעלופ מבהחימר הקהחלהמומ

Page 389: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 390: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

כןול

,

• ליםיבחי

ה יברחהמ

ה לקמח התירושי

ל ש

ר תמשהמ

ת אבדכ

בתרחמו הקהחלהמ

,ת חבורהמ

ה לקמח השל

ת רושיש

ון כיומאח

א קרהי לולעל

בהחימר הקהחלהממ

ת רושי

רי

• פךהיול

,ל פעמו

ת היו לשוי עבהחימר הקהחלהמ

ל ש

ת רושי

בתרחמו הקהחלהמ

ל ש

ת רושי

רי אח

,ל ש

ש תמשהמ

ם גכןול

ל ש

ת רושי

ת ולפע

ם סיו

רי אח

ם קייהת ליבחי

ת חבורהמ

יסבס הקתחלמ

Page 391: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 392: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

יהטרמסי

ר סחו

אן כשל יאב

ת אבדתכש

ש רולד

ר שאפ

ה יברחהמ

ה לקמחמה

ל ש

ר תמשהמ

יסבס הקתחלמ

;ת שוורמפ

ת חסתייומ

ר ותר יוחמא

ת תבנכ

א הייסבס הקתחללמ

להש

ת בורחלה

ת דעמו

א ליסבס הקתחל מבלא

,נו תכויי

ותרב

ת בורחה

,שהחד

ה חבהר

ף וסתו תתי מעתלד

ר שאפ

אי ו

ם ריתמשהמ

ת אבדלכ

ס סי בקתחלממ

ש רולד

ר שאפ

אי כן ל

תהאו

ת בוחימרש

ת קוחלהמ

ל ש

זהם קובמ

,שרונד

ר גד יובהחימר הקהחלהמ

ל ש

ר תמשהמש

תואו

רו יפ

א ליסבס הקתחל משל

ם סירו דלא

ם תירושיש

ך כ

זהל לכ

ם גיוא דיךא

?

Page 393: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 394: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םרימתשמ

ד כב לצדכי

תרביו

ט שוהפ

ה קרהמ

:ם שני מלא

ה יברחהמ

ה לקמח התירושי

יסבס הקתחל משל

ע ופהמ

ת דוש

ת א

,ל ש

ר תמשהמולל כחסתיי מלא

ה יברחהמ

ה לקמחה

ל ש

ע ופהמ

ת דוש ל

יסבס הקתחלמ

ת רושיש

ה יחבט מיסבס השל

ע ופהמ

ת דוש

וי שינ מותנעימהה

מרשתהמ

ת אפרא י לבהחימר השל

ל ש

ר תמשבמ

לו הל

ע ופהמ

ת דוש לותחסתיימה

ת עומנהיוה ה

חהטימב

ה יברחהמ

ה לקמח

,לל כרךבד

,ל ש

ה פרמה

יסבס הקתחל משל

ת רושי

די ל י עזה המרשתהמ

חר אוטש פרהמק

,ת נחופ

וץפ

:יםרסנד

ם תירושי הכל

,גיןרוסי ליםעלופ מלא

ת קוחלהמ

תי ש

ל ש

ם תירושי

Page 395: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 396: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םסירו דםתירושי בשמושי

ת רושי הוךמת

ס רו דותירש בשתמשלה

וי רצ

או ך רי ציםעמלפ

רסדוה

,שללמ

, class AudibleButton extends Button {

public void Clicked() {

getDisplay().play(clickSound);

super.Clicked();

} }

• ת ספהו

די ל י ערסנד השל

ה חוז האת

ק חז מרסדו הותירשה

רסנד לאילוו

א וצת

;חרהא

אי תנ

ת אותזקמח

ת רואח

ת אוגמדו

ם קיוול

ס דרהנ

ל ש

ם קד האיתנ

ם קיו לאיחר ארסדו הותירשה

ראנק

ס דרהנ

ה שב

ה ודנק ביסבס הקתחל משל

ר תמשהמ

Page 397: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 398: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ת דוש

ם סידרא נ לעפמו

ם ריסתמו

ם ה

)sh

adow

ed( ;

ללככ

,צוי רלאל ולבמב

ה ז

ס סיהב

ת לקמח לאם

Bע ופ מדהש

ש י

f ,ה לקמח הגםו

ה יברחהמ

Sע ופ מדהש

ל ערההימצ

f ,

ה לקמחמה

ם מיעצב

S ם ש ביםשונ

ע ופ מותשד

ני ש

יו יה

f ,ל ש

ד אח

Bל ש

ד אח ו

S •

יתאטסט

א הי

ע ופ מותשד לותחסתייהה

:יםדרוגשמ

ם תירושי

B-ב

ל ש

ע ופהמ

ה שד ליםחסתיי מ

B) א הו

ם עצשה

ת רולמ

ה לקמחמה

ל ועבפ

S ( ביםדרוגשמ

ם תירושיו

-Sע ופהמ

ה שד ל

ל ש

S •

יםותירש לותחסתיימה

רי גמ לנהשו

ה ז

:ס פוטי הפי לידתמ

מידינה

די ל י עפעמו הדהש

ת אורבח לתןני

super.f

ל ש

ם תירושי ב

Sה יקיצ

די ל י עאו

((S) this).f

Page 399: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 400: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

עפמו

ת דוש לתטיאטס

ת סוחייתה

SubClass s:

BaseClass b =

(BaseClass) s;

s.method()

b.method()

s.field

b.field

(BaseClass)

field: ...

method: ...

SubClass

field: ...

method: ...

Page 401: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 402: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

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:

...

בהרומ

ה שרובי

ה גיסו

ד עו

ר ורעמ

ה ז

לאאו

ון דמ קאב

ף שת לאםה

?

Page 403: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 404: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

התא

ף תשל

ב א

הוןמקד

?

• ם א

Left

- וRight

ה שד בחת אכל

ת שותמש מ

field

ל ש

Ro

otתירוריש

פן או ב

,טי פר

ק ות עכהרי צהן מחת אכל

ר רוב

לוש

אםה ומ

הן תיש

ל ש

ר תמשהמ

ת אותבדמכ

Root

? •

יקספ מידתמ

א לזה

:ל ש

ר תמשהמש

ח נני

Root

א הו

i>0

,-ש

Left

אי תנ האת

ר תמשלמ

ה יפוס מ

i>5

,ל אב

Right

ה יפוסמ

i<4

,שו

-Root

לוהל

ם ריתמשהמ

ת ארהפי מלא

• שליכ

ף תושיש

ר רוב

בזה

ת אורפת לשראפ

אי -

Left

- וRight

ם שו

הן בני

ין אכי

חסי

ל ש

ש מומיה

Sub

יךצר

ורבח ל

תףש לאם ה

;בךסת מסקהע

Page 405: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 406: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תיולרדומו בעוגפ

ה חבהר הוןגנמנ

ה הי

ם וזי חריחומאם ומיעצ

רי חומא

ד עמש

זי רכהמ

ון עיהר

ותריולודמ

:ה לקמח

ל ש

ם טייבהה

ת אידפרלה

ת וליכה םטייוונרלש

טיפר הנהניי עהםש

ם טייבההמ

ת חוקולל

שלה

לי בקהחל משל

ש מומי האת

ת שנו לשראפ מזה

ל עיעפ

ותוחלק

,תהוקחזות

ה וחית פאת

ד ריהפ לרטבפו

ת קוחללמ

ש מומי האת

ם פישחוה וחבהר

ם רישאפ מאם

ת בוחימר

)ת רמ בפעמו הותשד

ל ענההג

protected

( , ותיברחמ

ת קוחל מעל

ע פישלה

ם וייש עשמומי ביםנוישי

ראנו

א לזה

ם מיפעל

,ת שוומממ

ת בוחימר הותלקמח האם

ת צוו

תו או

די ל י עותזקוחמתו

וחיתפ

,ון טחבי

ש ם י אאו

ך בכ דתיבע

ה תנשא יול

ח צלמו

ס סיהב

ת לקמח

ל ש

ש מומישה

רא נוותהי לולעל

ה וזותריולוד מותברשו

ת בורח הבלא

Page 407: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 408: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תיולרדומו הורמשי לתשוגי

בשמושי

-ha

s-a

בוםמק ב

-is

-a ,

ע ופ מדהש בשמושי

ר ומכל

שהרובי

ם קובמ

ה גנ המתבר

ש מושי

private

ותשד

ר בו ע

ת לקמח

ל ש

ע ופהמ

להש

ם רייבוצי

א הל

ם תירושיוה

ס סיהב

;ה גנ המת רפקמס

ה ז

בשמושי למהדו

-ha

s-a

קהחלהמ

ת איברחלה

ט חלמו

ר סואי

ת ילבמ

ש מושי

די ל יע

ח פתהמ

fina

lקהחלהמ

ת דרהג ב

• )

ח פתהמ

ת ילמ

final

תואו

ס רולד

ת סראו

ת רושי

ת דרהג ב

,ותהי ליםשוי עבהחימר

ה לקמח

ל ש

ם ריאח

ם תירושי

ל אב

יסבס הקתחל משמומי ביםלוית

;ר שמ מלא

ה ר זומכל

ותריולודמ

(

Page 409: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 410: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

רךהד

ף סו

החסשי

ף גר בהישכל

ה לקמח מיםפסמט

ם א

-ex

tend

sירגד מ

,ה לקמח לידתמ

ם עיגימ

java.lang.Object

שורש

ם עווןמכ

ץ עוא הרףהג

ר ומכל

בהחימר

א הי

מי ת אנתציי מלא

ה לקמח

ל ש

ה דרהג

ם א

,ה שפה

פהסימו

ה חבהר הוקפס

ת איתמטטואו

extends java.lang.Object

בגם עצ

ל שכ

ח טימב

ה ז

'ם סייסי ביםותירש

ק ספ מוהאו

יםימסומ

, משהרוי ייד

ל עאם

-Object

סהרי דדיל י עאו

• ם הלוהל

ם תירושיה

equals

,clone

,toString

,clon

e ,

יםובש חותפח

ה כמ

ד עוו

Page 411: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 412: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

שהרווי

ה חבהר

ם כוסי

שאפמ

ס רולד

או ם תירושיע וופ מותשד

ה לקמח ליףוסלה

ת ר

שחד מתםאו

ר דיהגול

ם תירושי

ולכפש

א לל

ד קו בסףנו

ש מושי

ת שראפמ

,ל ש

ון יקות

ה חבהרה

הןשל

ר קוהמ

ד קו

ת אאיןש

ת קוחלמ

ה שנ מבל אשקמנ

ת שממשמ

ה לקמח

או ה יברחמ

ה לקמחל

זהחו האת

ש ליהח לוראס

לו ש

ה חוז האת

,ת כנוהת

ת שפ

ל אב

אתה ופ כלא

זה הוץילהא

• ה ולכפ

ה שרוי

)בג

ין א

'והאו

(ת יריצ בותשמי גתר יורתשאפמ

ותשחד

ת קוחלמ

,בה

ש תמשלה

ה ש קבלא

ל נצ לשראפ מתואו

ת שלר

ם קובמ

ע ופ מדהש כצם עשמושי

ת קוחל מפרמס מיםותירש

)להפו כשהרום יקובמ

(ד ריהפול

הרף גאת

ין וטחלל

-is

-aיםשמומי

ין בותלויהת

ף גר מ

Page 413: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 414: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

חק ל

8 ת קוחלמ

ם תירושיו

יםללוכמ

Page 415: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

גלרייפמקו

ל כאל

'ה ללהכ במךתו

ה ווא

)g

ener

ics

(

לגו ספ נויםללוכ מיםותירש וותלקמח

'ה רסבג

ק רוהאו

1.5

ר או לאהיצש

יו סתב

2004

.זה הנוןנגבמ

ת כוומ תלא

ת מווד קותסאגר

.ם אכםלב

ת ומשלת

נהשח יתופי

ת יבסב ביםשתמש מתםא

.

Page 416: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ת א

ל ליהכ לסהננ

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

אן כגם

ם פיתק

• ם פלשכ ללאש

ף די עבלא

Page 417: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 418: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ילכללה

ת לוק בשרפא

,בלא

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));

Page 419: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

ריסבה

םיק ר

Page 420: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

םסיפוטי

בי לג

ע ידמ

דן ובא

ותרוזמח

ל ש

ת אורס גרק

נו מרש

ם אגםש

א הי

ה נייש

ה עיב

, מזרוחהמ

ך ערה

-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

(

Page 421: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 422: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ם ליכלמו

ם תירושיה וקחלמ

)g

ener

ic(

class

Versioned<T> {

public void add(

T s) {…

} public int length() {…

} public T

getLastVersion() {…

} public T

getVersion(int i) {…

} }

• ם שה

T ס פוטי

ג יצמי

)שקמנ

או ה לקמח

(

Page 423: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 424: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תללוכמ

ה קחלמ בשמושי

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

Page 425: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 426: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ני פל

םטיפרה

,קרעיה

ד אב ללי בודבק

ר חוז

ש מושי

ר שאפ לעדמיו

ה ללהכ הנוןנגמ

הסס פוטי הבילג

ע ידמ

צם עשל

טי טא

להכל הליב

,ת שמ הדיל י עצעתב מודבק

ר חוז

ש מושי

חר אוסיפלט

ד אח

ס פוטי מותחסתייה

,ליכל

ר ותי

;ע רג

תו אומ

קהציי יבל

רי קוהמ

טי טאהס

ס פוטי האת

ר חזש לרך דאין

ותיקיצ ברךצו

ע מנו לוא הלהכלהה

ד קיתפ

,חראו מותדקנבש

'בגוהאו

,ל כלמו

ס פוטי

)מו כ

T (קהחללמ

ר שנק

ד מית

מ/שקנ

;ביטימירי פוסיפלט

א ול

ך ערלמ

א ל

יםבכסתמ

ם טיפרה

ה ללהכ הנוןנג מבין

ה ציאקטראינ הללבג

ה שרוהי

ס יח

ין וב

) החסי

-is

-a(

• ת רואח

ת פושב

)C

++

(יםועיצ בוריפש לגם

ת עדמיו

ה ללהכ

Page 427: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 428: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

בדעו

ה ך זאי

ת לוכלמו הותלקמח הכל

ת אפהממ מלרפייומהק

Versioned<Something>

לקמח ל

ת אח

ה ה ילרג

)א ל

לתכלמו

(א היש

ם עצב

Versioned<Object>

לתכלמו

ה לקמח בשתמששמ

ד קוב

,ד קו ליףוס מלרפייומהק

מותשמ הצעלב

ת מנ

ל עותיקיצ

-Object

פיציפיהס

ס פוטי ל

,ל שלמ

Stri

ng

• ע דיתו

א ללםעוול

ח ליתצ

ד מי תקהציהיש

א ודמו

ר ילפיומהק ל ע

ClassCastError

, String v1 =

(String) v

s.getVersion(1);

• מרלוכ

,ל כלמו הוסיפהט

)T (ר ילפיומהקש

ד קומה

ק מחנ

צרמיי

;מן בז

ם סיפוטי

ת ינותק

ת קודילב

ק רשימושי

א הויהציילמפקו

;ה יקמח

א קרך נליתהה

)er

asur

e(

Page 429: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 430: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ס חוי

ה ללהכ

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>

;כוןל נאב

בי טיאיטואינ

א לזה

Page 431: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 432: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

פהצומ כודעבא י לזה

מו כתרושי

כן ול

ל כלמו

ת רושי

ר דיהג לסהננ

)לתכלמו

א לקהחלבמ

(ק דויבש תלופו כותקבעו

ת אורס גשת יאורס געם

ם עצ באםה

, 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>

Page 433: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 434: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

'גםריקו

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<?>

Page 435: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 436: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תאוסגר

ת דרס

ם לישלה

ה סננ

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

Page 437: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 438: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

וןתרפה

:ללוכמ

ת רושי

<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

Page 439: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 440: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תיוללהכ

ת בלהג

ת דקבוש

ה ורצדרו פירגדלה

ה נסת נכע

ת אורסהג

ם הא הול עוניוטמונ

ר סד בהן

ם עצ בותורשמש

,ת חינמב

א ל

כנןתו

ת חינמב

א אל

הן של

ס דקאינה

שללמ

,ת רוסדה

(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; }

Page 441: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 442: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תיולל כםליבימג

ך אי

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

מועצ

(

Page 443: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 444: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

דימ

נו בכתס האל

?

• כןש

ר רוב

ריה

ון גנמנ

ת אגנוהצש

ני לפ

נו להיוש

ם ליהכ

ת זרבע

ם ג

ת אירגדלה

נו וליכ

ה ללהכה

mon

oton

ic

• ק שמנ

ם רידימג

נו היי

Versionable

ת אצגליי

ת מנ

ל ע

ותסאגר

ת דר סשל

ם רייבהא

,ק שמנ כתואו

ם רידימג

נו הייו

ת איברחשמ

Comparable

,יםשקמנ

ד עו

לי אוו

בדעו

ה הי

ה ז

,שתמשלה

ם כירי צינוהי

אז ל אב

ל עותיקיצ ב

שם רייבהא

-getVersion

ק רלהכישמ

ה דרמס

ר חזי מ

חר איםסו מוסיפמט

ם מיעצ

ק ראו

ת וזוחרמ

ר ומכל

היה ללהכ בשמושי הרתמט

ותיקיצ

ע מנו לא

,ע רג בבלא

בהש תמשלה

ם ליחימתש

בהש תמשלה

ך רי צ

ם תירושי בגם

ה עי בוםש

ה יתהי

א לורמק בהןשב

ת קוחלומ

Page 445: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 446: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ל ע

ד עו

קשמנ

להכל הלי בםי

ד עו

ש ה יללהכ בשמושי

א לל

ם קישמנ

ל עסתוסמבש

ה שגיב

יהבע

Stri

ngל ש

ג סו

א הו

Comparable

,ל ש

ג סו

א לבלא

Versionable

ק שמנה

Versionable

ת ארודיהג

ר שכא

ם קיי

ה הי

א ללל כ

ה לקמחה

Stri

ng

• ק שמנ הרתגד האם

ם ג

Versionable

ה וממא

ת שור דלא

ה חבהר לברמע

)קהרי

(ל ש

Com

para

ble

,ייןעד

ר ילפיומהק

ש

ב שחו

-String

ל ש

ג סו

א לוא ה

Versionable

: interface Versionable extends Comparable {}

Page 447: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 448: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תינניעמ

ה מוג דודע

interface Comparator<T>() {

static public int compare(T x, T y);

} class Sorter<E> {

static public

int sort(E[] a, Comparator<...>

c) {...}

}

• ל ש

ס פוטי הטררמ פאת

ר דיהג ליךצר

ך אי

Comparator

)

וםאד ברהחס הרהגדהה

(?

Page 449: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 450: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

בלהג

תיולל כת

וןתחת

ם סח

ם ע

• יחננ

,שללמ

,ס פוטי הטררמשפ

Eס פוטי לורש ק

Double

ה שווהמ

ם שא

ר רוב

cס פוטי מיםצמ עותשולה

ל כו י

Double

,יוןהמ

ת גרש

ולפע לכלתו

• יםקינ תיםקר מוד עשל יאב

ס פוטי מיםצמ עותשולה

ל כוה ישווהמ

ם א

Number

,ר רו באז

ס פוטי מיםצמ עותשולה

ל כוא יהוש

Double

,כי

Double

ל ש

ג סו

א הו

Number

כךפיל

,ם מיעצ

ת שוולה

ל וגמס

ת היו ליךצר

ה שווהמש

ר רוב

ס פוטי

הו שאיזמ

-

Double

לוש

ג סו

א הו

,

int sort(E[] a, Comparator<? super E>) {

..}

Page 451: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 452: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ם אים נסיפוטי

)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

(

Page 453: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 454: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

תיורווזמ

בגש

ל גלב

'ת עומצבא

ת שומממ

ה ללהכ

ה אוו

קהחיהמ

ון גנמנ

,כרן זאי

ה יצ רמןבז

וסיפהט

ר מטפר ל

מרלוכ

,ס פוטי מצם עבין

ין בחלה

ר שאפ

אי ה יצ רמןבז

Versioned<String>

ס פוטי מצם עביןVe ו

rsioned<Integer>

,רטבפו

,ם יהשנש

ה ראה ניצ רמןבז

קהחל מתהאומ

ה לקמח לותיכשי

ת יקבד

ל עיעשפ מזה

)instanceof

( ,ל ע

מום מיעצ

ל ש

ת קוציי

יםללכ

,ם מניסוהמ

ת דוש

ל וע

static

)

ת שוכי

ה לקמח בדוןר נשכא

ר הינב

לו הל

ם גישמו האת

יתמאעצ

( •

וסיפט

ר מטפר

פי ל עאיבנ לואקר לותשראפ

ע מונ

ה וז

,מרלוכ

<T> void m(T x) { T y =

new T(); .

..}

ille

gal

Page 455: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר

Page 456: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ם כוסי

gen

eric

s

• ללי בותיקיצ מנעימלה

ר שאפ מלהכלהה

ון גנמנ

וד קפלשכ

ד קו

ת קוציו י באיןש

ת שוורמפ

ם אים נסיפוטי

בו ין שאו

)ר יתל

וקדי

,יםנא

ם סיפוטי בשמושי הבילג

ר היהז

א ללרפייומהק

ם א

(ם סיפוטי

ת חינמב

ח טו בואה

)ty

pe s

afe

( •

צהרי

מן בז

ה יקיצ

ע צובי בשליכ

א לזה כודק

:ת קודיהב

יהלצפיומהק

מן לז

ת רועבמו

ל עותהרהצ

ך סב מלהכלבה

ש מושיה

ל גל ביםוסיפט

ין וב

ם ליכלמו

ם סיפוטי

ין ביתיביטואנטאי

א הל

ה ציאקטראינה

החסי

-is

-a

• בג

ת לוכל השל

ש מומיה

'ותרוימוז

ר ספ מללכו

ה אוו

Page 457: תונכת החנומ םימצע - cs.tau.ac.ilstoledo/Courses/oopj/Presentation.pdf · גב םימצע החנומ תונכת ' הווא ןויס ודלוט יאדוהי םרימעו

ף ד

יםברהס

יק ר