
הטקסט המלא של הדקות הראשונות בהרצאה «Serialization - חלק 4» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אז לצורך השיטה הבאה בואו נבצע שכפול של כל האפליקציה הזאת בכדי לא לערבב בין שתי השיטות כי אין ביניהם ממש קשר. אז מה שנעשה זה נפתח את המיקום, נסגור את Visual Studio, נחזור בחזרה ל-Serialization, יש לנו פה את ה-Custom, נשכפל אותו, נקרא לו Custom Serialization 2 or Second
Way, נפתח את Visual Studio, נשנה את השם ונראה בדיוק איך אנחנו יכולים לבצע מניפולציה למידע אבל בדרך אחרת לגמרי. הדרך הזאת שאנחנו הולכים לראות זאת באמת דרך שהיא Custom Serialization.
נשים פה את השמות החדשים, ניכנס לפרוגרם, ניכנס למחלקה, Credit Card, נראה מה אנחנו לא צריכים.
קודם כל אנחנו לא צריכים את האינטרפייס הזה, אנחנו לא צריכים את כל הפונקציות האלה עם האטריביוט שלהם ויש לנו פה מחלקה רגילה לגמרי שמאפשרת לבצע סריאליזיישן בצורה כזאת ואנחנו רוצים לבצע את השינוי בשיטה אחרת איך השיטה הזאת עובדת מה שאנחנו צריכים לעשות זה לרשת את האינטרפייס i-serializable לממש אותו וזה אינטרפייס מאוד מיוחד מה שהאינטרפייס הזה אומר
זה שכביכול יש לנו פונקציה אחת ויחידה שאנחנו צריכים לכתוב. למעשה זה לא מדויק. כאן אנחנו רואים שיש לנו את הפונקציה שנקראת get object data.
האינטרפייס הזה בעצם זה האינטרפייס היחידי שנתקלתי בו, שחוץ מהפונקציה שהוא כותב בתוכה, דורש לממש עוד משהו. ומה שהוא דורש לממש זה עוד קונסטרקטור, אבל אי אפשר להגדיר קונסטרקטור בתוך אינטרפייס, ולכן זה לא הוגדר ביצירה של האינטרפייס.
אז האינטרפייס אומר לנו מבחינת הקומפיילר, אנחנו חייבים ללכת ולממש את הפונקציה הזו. הפונקציה הזאת מתבצעת אוטומטית בתהליך הסריאליזציה. ברגע שאנחנו מבצעים סריאליזיישן הפונקציה הזאת מתבצעת, והיא מאפשרת לנו לעשות איזה פעולות שאנחנו רוצים על המידע, בדומה לפונקציות שראינו מקודם.
אבל יש פה איזשהו הבדל אחד מרכזי בין השיטה הזאת לשיטה הקודמת. בואו קודם כל נגדיר כאן את המחלקה הזאתי סייד ביי סייד ונראה אילו שינויים אנחנו צריכים לעשות.
יש לנו פה את ה-soap, מירה של המידע, אפילו נציג אותו פה באדום, וטעינה. בואו נראה מה קורה כאשר אנחנו מבצעים. בואו נגיד רק שמירה בלבד, ולא כתבתי את התוכן של הפונקציה get object data.
בואו נריץ. תוכנית רצה. אנחנו רואים קודם כל שהמידע לא השתנה באובייקט, האמת שגם לא עשינו כלום בתוך הפונקציה, אבל מה שיותר מעניין זה בואו נסתכל על קובץ ה-XML.
ומה שאנחנו רואים זה משהו מאוד מעניין, בכלל לא נשמר מידע. מה בעצם קרה כאן? במידה ואנחנו יורשים את האינטרפייס i-serializable חובה עלינו לשמור את כל המידע בעצמנו, במידע שאנחנו לא שומרים בכלל לא יישמר בתהליך ה-serialization.
זאת אומרת, ברגע שהמערכת רואה שיש לנו את ה-interface i-serializable אז היא אומרת אני לא מבצעת את הפעולה של ה-automatic-serialization אלא האחריות שלכם לבצע.