Upload
doron-raifman
View
52
Download
0
Embed Size (px)
Citation preview
C# .Net Lecture 2
רייפמן דורון :מרצה
Net Framework. -ול C#לשפת מבוא
Objects 2
בשיעור הקודם כה עדלמדנו מה
.#C - ל C בין הבדלים•
.משתנים סוגי•
.מעשי תרגול כולל .Console -ב בסיסי שימוש•
של ותכונות משתנים .אובייקטים עם ההכרות תחילת•
.בהם ושימוש אובייקטים יצירת .אובייקט
.Visual Studio ב ושימוש פרוייקטים יצירת על קצת•
•propfull snippet.
.באובייקטים מעשי תרגול•
.בפונקציות שימוש•
.שלהם מובנות יכולות כולל .מערכים•
.לולאות•
.פולימורפיזם•
.Region ב שימוש•
.”///"עם הקוד של אוטומטי לתיעוד יכולת•
(-; הרבה די הספקנו•
חלק על חזור קצתנבשיעור הזה •
.יסודית יותר בצורה הנושאיםמ
.וכמובן גם נעמיק בחומר
C#.Net, רייפמן דורון
זה אובייקט מה
:"דברים" של סוגים כמה מכיל אובייקט
(.Constructor)אתחול •
משתנים (Variables or Members).
תכונות (Properties).
פונקציות או מתודות(Methods) .שלו "מצב"ה עם "משהו" לעשות לאובייקט הוראה.
.(Interfaces) ממשקים•
.מתקדם יותר לשלב זה את נשאיר. (Inheritance)ירושות•
C#.Net, רייפמן דורון
בואו נתרגל שוב אובייקטים
:הכולל. Studentניצור ביחד אובייקט מסוג
אתחול(Constructor.)
משתנים (Variables or Members).
תכונות (Properties).
פונקציות או מתודות(Methods) .שלו "מצב"ה עם "משהו" לעשות לאובייקט הוראה.
.(Interfaces) ממשקים
.מתקדם יותר לשלב זה את נשאיר. (Inheritance)ירושות
C#.Net, רייפמן דורון
Student
C#.Net, רייפמן דורון
.regionזוכרים איך נראה אובייקט עם
.מסודר ונקי
.בואו נמלא אותו בתוכן
מימוש משתנים ותכונות
C#.Net, רייפמן דורון
.propfull sniphetמזכיר לכם את
.Properties -ו Memberהגדרנו
.Constructorבואו נוסיף
שימו לב לשימוש באובייקט
DateTime של.Net
Constructors
C#.Net, רייפמן דורון
Constructorsהוספנו שני
.לשימושים שונים
.דיפולטיבישימו לב למנגנון של ערך
.Constructor -בואו נשתמש ב
C#.Net, רייפמן דורון
.ריק Constructor -שימוש ב
שימוש במנגנון של ערך
.דיפולטיבי
Constructor -שימוש ב
.המלא
()ToString -שימוש ב
.()String.Format -שימוש ב
Constructor-שימוש ב
Override & ToString
C#.Net, רייפמן דורון
Override – מימושToString().
העברנו את הייצוג הטקסטואלי
.לאובייקט עצמו
.יותר אלגנטי
כשקוראים להדפסה של האובייקט
!זה לא עובד ToStringבלי ה
override keyword
C#.Net, רייפמן דורון
האובייקט לא יודע overrideבלי
אלא אם כן , שדרסנו את התכונה
.מפורשות ToString -קוראים ל
String.Format קורא ל-
ToString כדי לקבל את ייצוגו
.הטקסטואלי
.נעסוק בירושה ביסודיות בשלב יותר מאוחר בקורס
C#.Net, רייפמן דורון
ונוריד את main -נתקן את ה
.ToString -הקריאות המפורשות ל
.עושה אותו דבר WriteLineגם
זו דרך מקובלת שאובייקט יודע
.להציג את עצמו ככה
תמיד תממשו באובייקטים שלכם
.את הייצוג הטקסטואלי
ToString ייצוג טקסטואלי
Object & Type Info
C#.Net, רייפמן דורון
אמרנו כבר שכל המשתנים הם
.אובייקטים
. Objectכל אובייקט יורש את
Object לא יורש אף אחד.
.TypeInfoיש Object -ל
יורש את . הוא אובייקט intאפילו
ValueType.
Is מתשאל את סוג האובייקט.
Student יענה בחיוב לשאלה האם
כי הוא יורש אובייקט Objectהוא
.שיורש אותו
תרגול מעשי של מה שלמדנו
C#.Net, רייפמן דורון
:דגשים למימוש. בדומה למה שכתבנו ביחד בכיתה, Subjectממשו אובייקט מסוג
.שם הכיתה, יום ושעה שבו מתקיים השיעור, שם המרצה, שם המקצוע: לאובייקט השדות הבאים•
.כפי שנלמד regionחלקי האובייקט מסודרים בתוך •
(.m_t, m_n, m_c. )שמות משתנים עם קידומת כפי שנלמד•
.Properties -ו Membersהגדירו •
.Constructorsהגדירו שני •
.ToStringעל פונקצית overrideהגדירו •
.כתבו תוכנית ראשית שמייצרת כמה אובייקטים ומדפיסה אותם•
.intבתוכנית הראשית כתבו לולאה שמתחקה אחרי השתלשלות הירושה של אובייקט מסוג •
בהצלחה
Collection - ArrayList
C#.Net, רייפמן דורון
Collections הינם אובייקטים
שיכולים להחזיק בתוכם רשימה
.של אובייקטים בדומה למערך
האובייקטים האלה רבי יכולות והם
מקצרים במידה רבה את זמן
.הכתיבה
בואי ניקח דוגמה לכזה אובייקט
ונייצר בעזרתו ArrayListשנקרא
רשימה של סטודנטים מהדוגמא
.שעשינו ביחד בכיתה
ArrayList (2)
C#.Net, רייפמן דורון
ArrayList יכול להחזיק אובייקטים מסוגים שונים
(.בניגוד למערך)
שימו לב לשימוש ביכולת ההצגה של אובייקט
אנחנו מדפיסים את . ToStringשנרכשת בזכות
תכולת הרשימה מבלי בכלל שאכפת לנו מאיזה סוג
.הם
בגלל שיכולים להיות כל מיני סוגים של אובייקטים יש
.לא ברור מה יחס הסדר. קושי למשל למיין אותם
ArrayList (3)
C#.Net, רייפמן דורון
:והתוצאה
Interfaces
C#.Net, רייפמן דורון
Interface הוא משהו שאובייקט יכול לאמץ ,
.בדרך כלל במאמץ תכנותי קטן
הוא בעצם , ברגע שאובייקט אימץ ממשק מסוים
.מכריז לעולם שיש לו את היכולת הזו
נפתחות , ברגע שיש לו את היכולת הזו
.אפשרויות רבות למי שמשתמש בו
כדי לקבל יכולת מיון Icomparableנממש את
Interfaces (2)
C#.Net, רייפמן דורון
יודע להחזיק ArrayList -נזכור ש
.אובייקטים מסוגים שונים
איך ניתן להשוות אובייקטים מסוגים
?שונים
יודע אם הוא יכול למיין ArrayListאיך
הוא שואל את האובייקט אם יש לו ? בכלל
.IComparableאת היכולת
.הוא יזרוק שגיאה ולא ימיין, במידה ואין לו
כדאי להכניס קצת בדיקות שגיאה
.לפונקצית ההשוואה שלנו
תרגול מעשי של מה שלמדנו
C#.Net, רייפמן דורון
:דגשים למימוש. באובייקט סטודנט IComparableממשו את
.כתבו את בניית האובייקטים ברשימה•
.תבדקו מה קורה. נסו להכניס גם אובייקטים מסוגים אחרים•
בהצלחה
C#.Net, רייפמן דורון
.Newבביצוע Object Instanceנוצר #Cב •
במידה ונציב משתנה מסוג האובייקט שלנו לעוד •
.שניהם יצביעו לאותו אובייקט, אחד כזה
לכמה Use countמנהל #C, מאחורי הקלעים•
המשתנה . משתנים מצביעים על האובייקט
, בלוק)מתעדכן בהשמה או ביציאה מהסקופ
האובייקט , כאשר הערך מגיע לאפס(. פונקציה
.Garbage collector -נמסר ל
נממש את . כדי לייצר עותק נוסף לאותו אובייקט•
Interface Clone . תחפשו אינפורמציה עליו
.ותממשו אותו
לכל Cloneבתרגיל הבית תיישמו את •
.כך תקפידו לעשות תמיד. האובייקטים שלכם
Instances and reference to instances
מה למדנו על אובייקטים
אתחול(Constructor.)
משתנים (Variables or Members).
תכונות (Properties).
פונקציות או מתודות(Methods) .שלו "מצב"ה עם "משהו" לעשות לאובייקט הוראה.
ממשקים (Interfaces).
.מתקדם יותר לשלב זה את נשאיר. (Inheritance)ירושות
C#.Net, רייפמן דורון
C#.Net, רייפמן דורון
כולל תרגול . עשינו חזרה בנושא אובייקטים והעמקנו ידע●
.אנחנו כבר מרגישים יותר בנוח עם אובייקטים. נוסף
●Constructor.
●ToString . לעשותoverride (טכניקה בירושה.)
.DateTimeשימוש באובייקט ●
●Type info.
.Collectionsקצת על ●
.בניית רשימה של אובייקטים●
●Interfaces.
על בבית לעבור אבקש
בכיתה שנלמדו הנושאים
.הנלמד החומר את ולתרגל
?כה עד למדנו מה
C#.Net, רייפמן דורון
(. כדי שאספיק לבדוק לפני השיעור(. )ש בלילה"מוצ)יומיים לפני השיעור הבא :מועד הגשה
אעלה לאתר את הפתרון , לפני השיעור הבא. אנחנו נמשיך מהנקודה אליה הגעתם עם הדוגמא
.שלי לתרגיל
:תיאור התרגיל
.בתרגיל נפתח אובייקטים לניהול חלקי של בית ספר
.ToStringוכמובן יממשו את IClonable, IComparableכל האובייקטים יהיו בעלי יכולות של
שמות משתנים כפי שנלמד . כפי שנלמד Regionאני מדגיש שכל האובייקטים יהיו מסודרים עם
m_t, m_n, m_c נקודות מהציון על חוסר סדר 20יורדו . וכדומה.
ולא יתקבלו הערות שלי על מה לא היה בסדר . נכשל בלבד/הציון יהיה עבר, בהערכת התרגיל
-10)אחוז מסוים , יהוו כולם ביחד, כל התרגילים שהם לא בגדר עבודות הגשה גדולות. בתרגיל
.מהציון הסופי( 20%
.Interface IClonableבמימוש של Shallow Clone -אני מדגיש שיש צורך רק ב
(:1)להגשה 1תרגיל מספר
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תרגיל מספר
C#.Net, רייפמן דורון
:התוכנית הראשית
.תלמידים עם שמות ייחודים 20נוסיף לרשימת התלמידים
.מקצועות עם שמות ייחודיים 20נוסיף לרשימת המקצועות
החמישה השניים לחמשת המקצועות השניים וכך , חמישה תלמידים הראשונים לחמשת המקצועות הראשונים
.הלאה
.נוסיף גם לתלמיד מקצוע לרשימת המקצועות שלו, כמובן שבכל פעם שנוסיף למקצוע תלמיד
.בצעו לולאה שמדפיסה לקונסול את רשימת המקצועות ולכל מקצוע את רשימת התלמידים שמשתתפים בה
.בצעו לולאה שמדפיסה לקונסול את רשימת התלמידים ולכל תלמיד את רשימת המקצועות בהם הוא משתתף
.בהצלחה
:אני רוצה להדגיש .Bin, Obj :למחוק את מחיצות: כדי שהמייל לא יחסום את שליחת הזיפ שלכם של הפרויקט•
.Solution -יש לשלוח זיפ של כל הפרויקט עם ה•
(:3)להגשה 1תרגיל מספר