25
C# .Net Lecture 2 מרצה: דורון רייפמן מבוא לשפת#C ול- .Net Framework Objects 2

C# .net lecture 2 Objects 2

Embed Size (px)

Citation preview

Page 1: C# .net lecture 2 Objects 2

C# .Net Lecture 2

רייפמן דורון :מרצה

Net Framework. -ול C#לשפת מבוא

Objects 2

Page 2: C# .net lecture 2 Objects 2

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

.#C - ל C בין הבדלים•

.משתנים סוגי•

.מעשי תרגול כולל .Console -ב בסיסי שימוש•

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

.בהם ושימוש אובייקטים יצירת .אובייקט

.Visual Studio ב ושימוש פרוייקטים יצירת על קצת•

•propfull snippet.

.באובייקטים מעשי תרגול•

.בפונקציות שימוש•

.שלהם מובנות יכולות כולל .מערכים•

.לולאות•

.פולימורפיזם•

.Region ב שימוש•

.”///"עם הקוד של אוטומטי לתיעוד יכולת•

(-; הרבה די הספקנו•

חלק על חזור קצתנבשיעור הזה •

.יסודית יותר בצורה הנושאיםמ

.וכמובן גם נעמיק בחומר

C#.Net, רייפמן דורון

Page 3: C# .net lecture 2 Objects 2

זה אובייקט מה

:"דברים" של סוגים כמה מכיל אובייקט

(.Constructor)אתחול •

משתנים (Variables or Members).

תכונות (Properties).

פונקציות או מתודות(Methods) .שלו "מצב"ה עם "משהו" לעשות לאובייקט הוראה.

.(Interfaces) ממשקים•

.מתקדם יותר לשלב זה את נשאיר. (Inheritance)ירושות•

C#.Net, רייפמן דורון

Page 4: C# .net lecture 2 Objects 2

בואו נתרגל שוב אובייקטים

:הכולל. Studentניצור ביחד אובייקט מסוג

אתחול(Constructor.)

משתנים (Variables or Members).

תכונות (Properties).

פונקציות או מתודות(Methods) .שלו "מצב"ה עם "משהו" לעשות לאובייקט הוראה.

.(Interfaces) ממשקים

.מתקדם יותר לשלב זה את נשאיר. (Inheritance)ירושות

C#.Net, רייפמן דורון

Page 5: C# .net lecture 2 Objects 2

Student

C#.Net, רייפמן דורון

.regionזוכרים איך נראה אובייקט עם

.מסודר ונקי

.בואו נמלא אותו בתוכן

Page 6: C# .net lecture 2 Objects 2

מימוש משתנים ותכונות

C#.Net, רייפמן דורון

.propfull sniphetמזכיר לכם את

.Properties -ו Memberהגדרנו

.Constructorבואו נוסיף

שימו לב לשימוש באובייקט

DateTime של.Net

Page 7: C# .net lecture 2 Objects 2

Constructors

C#.Net, רייפמן דורון

Constructorsהוספנו שני

.לשימושים שונים

.דיפולטיבישימו לב למנגנון של ערך

.Constructor -בואו נשתמש ב

Page 8: C# .net lecture 2 Objects 2

C#.Net, רייפמן דורון

.ריק Constructor -שימוש ב

שימוש במנגנון של ערך

.דיפולטיבי

Constructor -שימוש ב

.המלא

()ToString -שימוש ב

.()String.Format -שימוש ב

Constructor-שימוש ב

Page 9: C# .net lecture 2 Objects 2

Override & ToString

C#.Net, רייפמן דורון

Override – מימושToString().

העברנו את הייצוג הטקסטואלי

.לאובייקט עצמו

.יותר אלגנטי

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

!זה לא עובד ToStringבלי ה

Page 10: C# .net lecture 2 Objects 2

override keyword

C#.Net, רייפמן דורון

האובייקט לא יודע overrideבלי

אלא אם כן , שדרסנו את התכונה

.מפורשות ToString -קוראים ל

String.Format קורא ל-

ToString כדי לקבל את ייצוגו

.הטקסטואלי

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

Page 11: C# .net lecture 2 Objects 2

C#.Net, רייפמן דורון

ונוריד את main -נתקן את ה

.ToString -הקריאות המפורשות ל

.עושה אותו דבר WriteLineגם

זו דרך מקובלת שאובייקט יודע

.להציג את עצמו ככה

תמיד תממשו באובייקטים שלכם

.את הייצוג הטקסטואלי

ToString ייצוג טקסטואלי

Page 12: C# .net lecture 2 Objects 2

Object & Type Info

C#.Net, רייפמן דורון

אמרנו כבר שכל המשתנים הם

.אובייקטים

. Objectכל אובייקט יורש את

Object לא יורש אף אחד.

.TypeInfoיש Object -ל

יורש את . הוא אובייקט intאפילו

ValueType.

Is מתשאל את סוג האובייקט.

Student יענה בחיוב לשאלה האם

כי הוא יורש אובייקט Objectהוא

.שיורש אותו

Page 13: C# .net lecture 2 Objects 2

תרגול מעשי של מה שלמדנו

C#.Net, רייפמן דורון

:דגשים למימוש. בדומה למה שכתבנו ביחד בכיתה, Subjectממשו אובייקט מסוג

.שם הכיתה, יום ושעה שבו מתקיים השיעור, שם המרצה, שם המקצוע: לאובייקט השדות הבאים•

.כפי שנלמד regionחלקי האובייקט מסודרים בתוך •

(.m_t, m_n, m_c. )שמות משתנים עם קידומת כפי שנלמד•

.Properties -ו Membersהגדירו •

.Constructorsהגדירו שני •

.ToStringעל פונקצית overrideהגדירו •

.כתבו תוכנית ראשית שמייצרת כמה אובייקטים ומדפיסה אותם•

.intבתוכנית הראשית כתבו לולאה שמתחקה אחרי השתלשלות הירושה של אובייקט מסוג •

בהצלחה

Page 14: C# .net lecture 2 Objects 2

Collection - ArrayList

C#.Net, רייפמן דורון

Collections הינם אובייקטים

שיכולים להחזיק בתוכם רשימה

.של אובייקטים בדומה למערך

האובייקטים האלה רבי יכולות והם

מקצרים במידה רבה את זמן

.הכתיבה

בואי ניקח דוגמה לכזה אובייקט

ונייצר בעזרתו ArrayListשנקרא

רשימה של סטודנטים מהדוגמא

.שעשינו ביחד בכיתה

Page 15: C# .net lecture 2 Objects 2

ArrayList (2)

C#.Net, רייפמן דורון

ArrayList יכול להחזיק אובייקטים מסוגים שונים

(.בניגוד למערך)

שימו לב לשימוש ביכולת ההצגה של אובייקט

אנחנו מדפיסים את . ToStringשנרכשת בזכות

תכולת הרשימה מבלי בכלל שאכפת לנו מאיזה סוג

.הם

בגלל שיכולים להיות כל מיני סוגים של אובייקטים יש

.לא ברור מה יחס הסדר. קושי למשל למיין אותם

Page 16: C# .net lecture 2 Objects 2

ArrayList (3)

C#.Net, רייפמן דורון

:והתוצאה

Page 17: C# .net lecture 2 Objects 2

Interfaces

C#.Net, רייפמן דורון

Interface הוא משהו שאובייקט יכול לאמץ ,

.בדרך כלל במאמץ תכנותי קטן

הוא בעצם , ברגע שאובייקט אימץ ממשק מסוים

.מכריז לעולם שיש לו את היכולת הזו

נפתחות , ברגע שיש לו את היכולת הזו

.אפשרויות רבות למי שמשתמש בו

כדי לקבל יכולת מיון Icomparableנממש את

Page 18: C# .net lecture 2 Objects 2

Interfaces (2)

C#.Net, רייפמן דורון

יודע להחזיק ArrayList -נזכור ש

.אובייקטים מסוגים שונים

איך ניתן להשוות אובייקטים מסוגים

?שונים

יודע אם הוא יכול למיין ArrayListאיך

הוא שואל את האובייקט אם יש לו ? בכלל

.IComparableאת היכולת

.הוא יזרוק שגיאה ולא ימיין, במידה ואין לו

כדאי להכניס קצת בדיקות שגיאה

.לפונקצית ההשוואה שלנו

Page 19: C# .net lecture 2 Objects 2

תרגול מעשי של מה שלמדנו

C#.Net, רייפמן דורון

:דגשים למימוש. באובייקט סטודנט IComparableממשו את

.כתבו את בניית האובייקטים ברשימה•

.תבדקו מה קורה. נסו להכניס גם אובייקטים מסוגים אחרים•

בהצלחה

Page 20: C# .net lecture 2 Objects 2

C#.Net, רייפמן דורון

.Newבביצוע Object Instanceנוצר #Cב •

במידה ונציב משתנה מסוג האובייקט שלנו לעוד •

.שניהם יצביעו לאותו אובייקט, אחד כזה

לכמה Use countמנהל #C, מאחורי הקלעים•

המשתנה . משתנים מצביעים על האובייקט

, בלוק)מתעדכן בהשמה או ביציאה מהסקופ

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

.Garbage collector -נמסר ל

נממש את . כדי לייצר עותק נוסף לאותו אובייקט•

Interface Clone . תחפשו אינפורמציה עליו

.ותממשו אותו

לכל Cloneבתרגיל הבית תיישמו את •

.כך תקפידו לעשות תמיד. האובייקטים שלכם

Instances and reference to instances

Page 21: C# .net lecture 2 Objects 2

מה למדנו על אובייקטים

אתחול(Constructor.)

משתנים (Variables or Members).

תכונות (Properties).

פונקציות או מתודות(Methods) .שלו "מצב"ה עם "משהו" לעשות לאובייקט הוראה.

ממשקים (Interfaces).

.מתקדם יותר לשלב זה את נשאיר. (Inheritance)ירושות

C#.Net, רייפמן דורון

Page 22: C# .net lecture 2 Objects 2

C#.Net, רייפמן דורון

כולל תרגול . עשינו חזרה בנושא אובייקטים והעמקנו ידע●

.אנחנו כבר מרגישים יותר בנוח עם אובייקטים. נוסף

●Constructor.

●ToString . לעשותoverride (טכניקה בירושה.)

.DateTimeשימוש באובייקט ●

●Type info.

.Collectionsקצת על ●

.בניית רשימה של אובייקטים●

●Interfaces.

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

בכיתה שנלמדו הנושאים

.הנלמד החומר את ולתרגל

?כה עד למדנו מה

Page 23: C# .net lecture 2 Objects 2

C#.Net, רייפמן דורון

(. כדי שאספיק לבדוק לפני השיעור(. )ש בלילה"מוצ)יומיים לפני השיעור הבא :מועד הגשה

אעלה לאתר את הפתרון , לפני השיעור הבא. אנחנו נמשיך מהנקודה אליה הגעתם עם הדוגמא

.שלי לתרגיל

:תיאור התרגיל

.בתרגיל נפתח אובייקטים לניהול חלקי של בית ספר

.ToStringוכמובן יממשו את IClonable, IComparableכל האובייקטים יהיו בעלי יכולות של

שמות משתנים כפי שנלמד . כפי שנלמד Regionאני מדגיש שכל האובייקטים יהיו מסודרים עם

m_t, m_n, m_c נקודות מהציון על חוסר סדר 20יורדו . וכדומה.

ולא יתקבלו הערות שלי על מה לא היה בסדר . נכשל בלבד/הציון יהיה עבר, בהערכת התרגיל

-10)אחוז מסוים , יהוו כולם ביחד, כל התרגילים שהם לא בגדר עבודות הגשה גדולות. בתרגיל

.מהציון הסופי( 20%

.Interface IClonableבמימוש של Shallow Clone -אני מדגיש שיש צורך רק ב

(:1)להגשה 1תרגיל מספר

Page 24: C# .net lecture 2 Objects 2

C#.Net, רייפמן דורון

:רשימת האובייקטים

.קחו אותו מהדוגמא שתורגלה בכיתה, שרק מכיל מידע Studentאובייקט

.Clone -אתם נדרשים להוסיף לו את יכולת ה

מסוג . Constructor -שתאותחל לרשימה ריקה ב, אתם נדרשים להוסיף לו גם את רשימת המקצועות

ArrayList.

שמקבל אובייקט AddSubject. 2. לפי שם מקצוע Method :1 .FindSubjectאתם תממשו כמה , כמו כן

.Subjectמסוג

.שיכיל שם המקצוע ושם המורה, Subjectאובייקט

.Constructor -ב ArrayListשתאותחל לרשימה ריקה מסוג , בנוסף תהייה לו רשימת תלמידים בכיתה

שמקבלת שם סטודנט ומוצאת אותו ברשימת , Method .1 .FindStudentלאובייקט הזה נייצר כמה

.שמקבלת אובייקט מסוג תלמיד ומוסיפה אותו למקצוע הזה AddStudent. 2. הסטודנטים בכיתה

שניהם מסוג , רשימה של הסטודנטים ורשימה של המקצועות, שיכיל שם בית הספר, Schoolאובייקט

ArrayList.

שמקבלת שם סטודנט ומוצאת אותו ברשימת , Method .1 .FindStudentלאובייקט הזה נייצר כמה

. 3. שמקבלת אובייקט מסוג תלמיד ומוסיפה אותו רשימת התלמידים AddStudent. 2. הסטודנטים הכללית

FindSubject 4. שמקבלת שם מקצוע ומוצאת אותו ברשימת המקצועות .AddSubject שמקבלת אובייקט

.מסוג מקצוע ומוסיפה אותו לרשימת המקצועות

(:2)להגשה 1תרגיל מספר

Page 25: C# .net lecture 2 Objects 2

C#.Net, רייפמן דורון

:התוכנית הראשית

.תלמידים עם שמות ייחודים 20נוסיף לרשימת התלמידים

.מקצועות עם שמות ייחודיים 20נוסיף לרשימת המקצועות

החמישה השניים לחמשת המקצועות השניים וכך , חמישה תלמידים הראשונים לחמשת המקצועות הראשונים

.הלאה

.נוסיף גם לתלמיד מקצוע לרשימת המקצועות שלו, כמובן שבכל פעם שנוסיף למקצוע תלמיד

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

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

.בהצלחה

:אני רוצה להדגיש .Bin, Obj :למחוק את מחיצות: כדי שהמייל לא יחסום את שליחת הזיפ שלכם של הפרויקט•

.Solution -יש לשלוח זיפ של כל הפרויקט עם ה•

(:3)להגשה 1תרגיל מספר