שעור אחרון עם הכלבים

29
םםםם םםםםם םם םםםםםם

Upload: lukas

Post on 19-Mar-2016

67 views

Category:

Documents


1 download

DESCRIPTION

שעור אחרון עם הכלבים. public class RobDog extends Dog. אוסף הכלבים. תפריט הרובוטים. אוסף הרובוטים. תפריט הכלבים. לכל ביטוי בשפה (טבעית או פורמאלית) ניתן להתייחס בשני אופנים: תחבירי ותוכני. היום יום שבת. הוא משפט נכון מבחינה תחבירית ולא נכון מבחינה תוכנית. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: שעור אחרון עם הכלבים

שעור אחרון עם הכלבים

Page 2: שעור אחרון עם הכלבים

אוסף הכלבים

אוסף הרובוטים

public class RobDog extends Dog

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

תפריט הכלבים

Page 3: שעור אחרון עם הכלבים

לכל ביטוי בשפה )טבעית או פורמאלית( ניתן להתייחס בשני אופנים: תחבירי ותוכני.

היום יום שבת.

הוא משפט נכון מבחינה תחבירית ולא נכון מבחינה תוכנית.

השעור הנוכחי הוא על המתח הזה שבין התוכן לתחביר.

Page 4: שעור אחרון עם הכלבים

בהינתן ביטוי בשפת תכנות

השאלה התחבירית היא:האם הביטוי חוקי כלומר האם הוא יהודר )יעבור קומפילציה(

השאלה התוכנית היא:מה הביטוי הזה יעשה כשהתוכנית תרוץ.

כמו במקרה של השפה הטבעית התשובות לשתי השאלות האלו עשויות שלא לעלות בדיוק בקנה אחד.

Page 5: שעור אחרון עם הכלבים

הביטוי

RobDog my_dog = new Dog();

לא יהודר. )…(xהוא מבטיח דבר שאי אפשר לקיימו - שלכל שיטה

ניתן לבצוע.)…(my_dog.x הביטוי RobDogבתפריט של

Page 6: שעור אחרון עם הכלבים

לעומת זאת הביטוי

Dog my_dog = new RobDog();

יהודר. )…(xהוא מבטיח דבר שאפשר לקיימו – שכן כל שיטה

RobDog מופיעה בתפריט של Dogבתפריט של

Page 7: שעור אחרון עם הכלבים

האם הביטוי

יהודר?

my_dog.voice)2,20(;

Page 8: שעור אחרון עם הכלבים

Dog ובתפריט של Dog הוא מטפוס my_dogהמשתנה )voice)int,intאין שיטה

Page 9: שעור אחרון עם הכלבים

האם הביטוי

יהודר?

my_dog.voice)2(;

Page 10: שעור אחרון עם הכלבים

Dog ובתפריט של Dog הוא מטפוס my_dogהמשתנה )voice)intיש שיטה

Page 11: שעור אחרון עם הכלבים

מה יהיה הפלט של הביטוי

my_dog.voice)2(

Page 12: שעור אחרון עם הכלבים

The robot dog called dog_number0: TOOTOO TOOTOO

Page 13: שעור אחרון עם הכלבים

כלל ההפניה:השיטה אליה אנו פונים היא היא תמיד השיטה היורשת ולא המורישה.

Page 14: שעור אחרון עם הכלבים

העצם "אינו יודע" איזה טפוס משתנה הפנה אותנו אליו

Page 15: שעור אחרון עם הכלבים

כלל התפריט:חוקיות הביטוי נקבעת על פי התפריט של השיטה המורישה

Page 16: שעור אחרון עם הכלבים

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

Page 17: שעור אחרון עם הכלבים

באמצעות מנגנון ההשלכה ניתן להתעקש, לומר למהדר שאיננו זקוקים להגנתו

Page 18: שעור אחרון עם הכלבים

((RobDog) my_dog).voice(2,20);

Page 19: שעור אחרון עם הכלבים

פלט

The robot dog called dog_number0: TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO TOOTOO

Page 20: שעור אחרון עם הכלבים

מה יקרה עכשיו?

Dog your_dog = new Dog)(;))RobDog( your_dog(.voice)3,5(;

Page 21: שעור אחרון עם הכלבים

ועכשיו?

Pack p = new Pack)“River”(;))RobDog( p(.voice)(;

Page 22: שעור אחרון עם הכלבים

את השיטה Packנוסיף למחלקה

public Dog member_at)int i( { return members[i];}

Page 23: שעור אחרון עם הכלבים

נקים להקת כלבים ונצרף אליה מספר כלבים ורובוטי כלביםpublic class Pack_driver { public static void main(String[] args) { Pack mixed_pack = new Pack(“mixed”); mixed_pack.add_member)new Dog)“Rex”((; mixed_pack.add_member)new RobDog)“RobRex”((; mixed_pack.add_member)new Dog)“Mitzi”((; mixed_pack.add_member)new RobDog)“RobMitzi”((; for )idog = 0; idog<mixed_pack.size)(; idog++{ mixed_pack.member_at)idog(.voice)(; } }}

Page 24: שעור אחרון עם הכלבים

public class Pack_driver { public static void main)String[] args( { Pack mixed_pack = new Pack)“mixed”(; mixed_pack.add_member(new Dog(“Rex”)); mixed_pack.add_member)new RobDog)“RobRex”((; mixed_pack.add_member)new Dog)“Mitzi”((; mixed_pack.add_member)new RobDog)“RobMitzi”((; for )idog = 0; idog<mixed_pack.size)(; idog++{ mixed_pack.member_at)idog(.voice)(; } }}

Page 25: שעור אחרון עם הכלבים

public class Pack_driver { public static void main)String[] args( { Pack mixed_pack = new Pack)“mixed”(; mixed_pack.add_member)new Dog)“Rex”((; mixed_pack.add_member(new RobDog(“RobRex”)); mixed_pack.add_member)new Dog)“Mitzi”((; mixed_pack.add_member)new RobDog)“RobMitzi”((; for )idog = 0; idog<mixed_pack.size)(; idog++{ mixed_pack.member_at)idog(.voice)(; } }}

Page 26: שעור אחרון עם הכלבים

public class Pack_driver { public static void main)String[] args( { Pack mixed_pack = new Pack)“mixed”(; mixed_pack.add_member)new Dog)“Rex”((; mixed_pack.add_member)new RobDog)“RobRex”((; mixed_pack.add_member(new Dog(“Mitzi”)); mixed_pack.add_member(new RobDog(“RobMitzi”)); for )idog = 0; idog<mixed_pack.size)(; idog++{ mixed_pack.member_at)idog(.voice)(; } }}

Page 27: שעור אחרון עם הכלבים

public class Pack_driver { public static void main)String[] args( { Pack mixed_pack = new Pack)“mixed”(; mixed_pack.add_member)new Dog)“Rex”((; mixed_pack.add_member)new RobDog)“RobRex”((; mixed_pack.add_member)new Dog)“Mitzi”((; mixed_pack.add_member)new RobDog)“RobMitzi”((; for (idog = 0; idog<mixed_pack.size(); idog++({ mixed_pack.member_at(idog).voice(); } }}

Page 28: שעור אחרון עם הכלבים

פלט

The dog called Rex: HAAUThe robot dog called RobRex: TOOTOOThe dog called Mitzi: HAAUThe robot dog called RobMitzi: TOOTOO

Page 29: שעור אחרון עם הכלבים

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