םימצעה החנומ תונכתה תשיג לע יללכ טבמ • השיגה לש...
TRANSCRIPT
תכנות מונחה עצמים
.מבט כללי על גישת התכנות מונחה העצמים •
.מושגים בסיסיים בתכנות מונחה עצמים •
.עקרונות מרכזיים של הגישה •
–תכנות מונחה עצמים
OOP - Object Oriented Programming
שהפכה להיות מאוד , גישה לכתיבת תוכניות
בעיקר בזכות שפות , פופולרית בשנים האחרונות .Java-ו ++Cכמו
בני , הגישה אמורה להתאים לדרך החשיבה שלנו
ולכן גם , ולדרך התפיסה שלנו את העולם, האדם
.אמורה להפוך את התכנות למשימה טבעית יותר
Object -אובייקט
כל דבר שאפשר –שם עצם , אובייקט הוא משהו• .לתאר אותו ושאפשר לדבר עליו
אובייקט הוא רכיב בתוכנה שמתאר חלק • .מהמציאות
:אובייקטים יכולים לתאר דברים מוחשיים בעולם
:אובייקטים יכולים לתאר גם דברים פחות מוחשיים
!זה אובייקט –כל עוד אפשר לתאר את זה
מאפייני האובייקט
(Attributes)תכונות •
(Methods)שיטות •
(Messages)הודעות •
תכונות
תכונות הן השדות שמתארים את האובייקט •
.ומאפיינים את המצב הפנימי שלו
בן אדם
שם-
גיל-
.ז.מספר ת-
חשבון בנק
מספר חשבון-
שם בעלי החשבון-
יתרה-
צבע , משקל, כמו גובה, לבן אדם יש תכונות נוספות•האם אנחנו חייבים לפרט את כל התכונות . 'שיער וכו
?של הישות הפיזית בתוך האובייקט
בן אדם
שם-
גיל-
.ז.מספר ת-
וככזה , האובייקט הוא יצוג של חלק מהמציאות! לא•
אנחנו בוחרים כתכונות רק את מה שרלבנטי
.לאפליקציה הספציפית
שיטות
הן . השיטות הן הפונקציונליות של האובייקט• .מתארות מה האובייקט יכול לעשות בעולם
בן אדם
ללכת לעבודה-
למשוך כסף-
חשבון בנק
למשוך כסף-
להפקיד כסף-
הודעותמה שמפעיל , ההודעות הן המניע של הפעולות•
.אותן
.הפעולות שבאובייקט יפעלו רק בתגובה להודעה•
אבל דרושה , פוטנציאלהשיטות הן בגדר –כלומר •
.הודעה כדי להפעיל שיטה בן אדם
ללכת לעבודה-
למשוך כסף-
חשבון בנק
למשוך כסף-
להפקיד כסף-
"למשוך כסף"הפעל את השיטה
Class -מחלקה
התבנית , מחלקה היא האבטיפוס של האובייקט•
.ממנה הוא בנוי
–המחלקה מכילה •
!(.אבל לא את הערכים)את התכונות של האובייקט –
.את השיטות של האובייקט–
.ממחלקה אחת אפשר ליצור אינסוף אובייקטים•
אפשר להסתכל על היחסים בין מחלקה לאובייקט • .כמו היחסים בין שרטוט של בית לבית
מה משותף לכל האובייקטים שנוצרו על סמך אותה
?מחלקה
בן אדם
ללכת לעבודה-
למשוך כסף-
שם-
.ז.מספר ת-
בן אדם
ללכת לעבודה-
למשוך כסף-
"יוסי= "שם -
111.=ז.מספר ת-
בן אדם
ללכת לעבודה-
למשוך כסף-
"דוד= "שם -
222.=ז.מספר ת-
לכולם יש אותן תכונות
כולם יכולים לבצע את אותן פעולות
שעון יד
להציג שעה-
לכוון שעה-
שעות-
דקות-
שניות-
מנגנון קידום זמן -
נכתוב מחלקה שמייצגת שעון יד פשוט
אילו תכונות יהיו
?לשעון יד
אילו שיטות יהיו
?לשעון יד
OOPמאפייני
:ישנם שלושה מאפיינים OOPלגישת •
Encapsulation –כימוס –
Inheritance –ירושה –
Polymorphism -רב צורתיות –
Encapsulation -כימוס
כימוס היא תכונה שאומרת שהמחלקה שומרת •
וחושפת , בתוכה את כל המנגנונים הפנימיים שלה
.למשתמש רק את הממשק החיצוני
התכונה מאוד –" השאירו את המומחיות למומחים"•
!כי אנחנו חיים ככה ביום יום, אינטואיטיבית
מחשב ובעצם כל , מיקרוגל, מכונית –למשל •
...מכשור טכני שאנחנו משתמשים בו
"השאירו את המומחיות למומחים"
אנחנו לא צריכים להיות מכונאי רכב כדי לנהוג •
ולא מהנדסי חשמל כדי להפעיל תנור , במכונית
.חשמלי
הרעיון בכימוס אומר שהמשתמש לא צריך לדעת •כל עוד הם עובדים ויש לו –איך הדברים עובדים
.ממשק שמאפשר לו לתפעל אותם
שעון יד
להציג שעה-
לכוון שעה-
שעות-
דקות-
שניות-
מנגנון קידום זמן -
ברור שמנגנון קידום הזמן הוא
חלק מהפעולות שהשעון יודע
אין לנו שום , מצד שני. לבצע
צורך שהמשתמש יתעסק עם
לכן . מנגנון קידום הזמן בעצמו
המחלקה של שעון היד
, עוטפת את הפעולה הזאת
וחושפת למשתמש רק את
.שתי הפעולות האחרות
עכשיו נניח שנרצה לכתוב מחלקה שמייצגת שעון •
.יד מתקדם יותר
גם יכולת , בנוסף לשעה, לשעון היד המתקדם יהיו•
.תאורה ועוד, שעון עצר, השכמה, להראות תאריך
?איך נייצג את מחלקת שעון היד המתקדם•
שעון יד
להציג שעה-
לכוון שעה-
שעות-
דקות-
שניות-
מנגנון קידום זמן -
שעון מתקדם
לכוון שעה , להציג שעה-
...להציג תאריך-
שניות, דקות, שעות-
תאריך-
שעת השכמה-
מנגנון קידום זמן -
דברים שנכתבו כבר פעם –כפילות קוד
נכתבים פעם נוספת, אחת
Inheritance -ירושה
ירושה היא תכונה שאומרת שניתן לבנות מחלקות •
.חדשות על בסיס מחלקות קיימות
את כל בירושה המחלקה החדשה מקבלת •
ויכולה , התכונות והשיטות של מחלקת הבסיס
.להוסיף עליהם דברים משלה
המחלקה היורשת היא סוג של מחלקת , כלומר•
.הבסיס עם תוספות
שעון
להציג שעה-
לכוון שעה-
שעות-
דקות-
שניות-
מנגנון קידום זמן -
שעוןיורש משעון מתקדם
לכוון שעה , להציג שעה-
...להציג תאריך-
שניות, דקות, שעות-
תאריך-
שעת השכמה-
מנגנון קידום זמן -
שעון מתקדם הוא סוג של שעון
Polymorphism -רב צורתיות
רב צורתיות היא תכונה פחות אינטואיטיבית •
אובייקט , בתנאים מסויים, שאומרת שלפעמים
.יתנהג כאובייקט מסוג אחר, שהוגדר מסוג אחד
קשה להבין תכונה זו ואת הצורך בה בלי לראות • .ולכן לא נרחיב עליה כאן, קוד טכני בשפת תכנות
תרגיל
.נסו לכתוב מחלקה שמייצגת מכשיר טלפון סלולרי•
(.?מה מאפיין טלפון נייד)? אילו תכונות יהיו למחלקה–
מה טלפון נייד יכול )? אילו שיטות יהיו למחלקה–
(.?לעשות
האם לדעתכם מכשיר הטלפון הנייד שאתם • ?מחזיקים בידכם הוא מחלקה או אובייקט
.אובייקט•
.שיטות והודעות, תכונות•
.מחלקה•
.כימוס•
.ירושה•
.רב צורתיות•
OOP-סיכום המושגים הבסיסיים ב