PracticU

Object Serialization

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח אפליקציות - לאנדרואיד - Android - ב-JAVA › Object Serialization
מילון מושגים:
אובייקט - יחידה בתכנות מונחה עצמים שמאגדת נתונים (תכונות) ופעולות (מתודות). נוצר בדרך כלל ממחלקה המשמשת כתבנית.
בינארי - ייצוג מידע בבסיס 2 בעזרת הספרות 0 ו-1. גם קובץ הכולל קוד מכונה ולא טקסט קריא.
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
מחרוזת - סוג נתונים שמייצג רצף של תווים, כלומר טקסט, ומשמש לאחסון מילים, משפטים או כל רצף סימנים.
בנאי - מתודה מיוחדת שמופעלת אוטומטית בעת יצירת אובייקט ממחלקה, ומאתחלת את ערכיו ההתחלתיים.
משתנה - שם שמפנה למקום בזיכרון שבו נשמר ערך שיכול להשתנות במהלך ריצת התוכנית, כמו מספר, טקסט או אובייקט.
חבילה - אוסף ארוז של קוד, ספריות או קבצים המופץ כיחידה אחת ומותקן בעזרת מנהל חבילות.

Object Serialization
כתיבה ידנית של כל שדה לקובץ בינארי דורשת לדעת בדיוק מה נכתב ובאיזה סדר. Serialization מאפשרת לשפוך אובייקט שלם לקובץ ולטעון אותו בחזרה בקריאה אחת.
השלבים העיקריים
1. מחלקה משלנו: Person עם אותם שדות כמו קודם: byte age, float salary, String fullName, int zipCode. מוסיפים באמצעות Alt Insert בנאי, getters ו-setters, ו-toString.
2. implements Serializable: זה מה שמאפשר למערכת לשלוף את כל הבתים של האובייקט ולשפוך אותם ל-stream. גם מחלקות הבסיס של האובייקט וכל השדות שבתוכו צריכים להיות Serializable. טיפוסים פרימיטיביים כבר כאלה.
3. כתיבה: יוצרים Person (עם cast של 12 ל-byte), וקוראים ל-objectOutputStream.writeObject(person). את כל המשתנים הבודדים מהשיעור הקודם כבר לא צריך.
4. קריאה: מגדירים reference מסוג Person וקוראים ל-objectInputStream.readObject().
מה בקובץ
ב-DDMS רואים שהמערכת שמרה גם את שם החבילה, את טיפוס הנתונים ואת שמות המשתנים, לא רק את הערכים. הפורמט הוא פורמט מיוחד שלה, והיא יודעת איזה ערך שייך לאיזה משתנה בעת הטעינה.
מתי להשתמש
אם רוצים לשמור אובייקט אחד, Serialization חוסכת הרבה עבודה. אם רוצים שליטה במה נכנס לקובץ, או לשמור כמה דברים שונים, הכתיבה הידנית מהשיעור הקודם עדיין מתאימה.
כעת אפשר לשמור אובייקט שלם לקובץ בינארי ולטעון אותו בקריאה אחת.
השיעור הבא בקורס: Save Collection to Text File

פרקי ההרצאה: Object Serialization

  1. 00:00

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

  2. 00:39

    בניית המחלקה Person

  3. 01:20

    Getters, Setters, בנאי ו-toString

  4. 02:31

    מימוש הממשק Serializable

  5. 03:14

    כתיבת האובייקט עם writeObject

  6. 04:31

    קריאת האובייקט עם readObject

  7. 05:06

    תנאים לסריאליזציה של מחלקה

תמלול ההרצאה: Object Serialization

הטקסט המלא של הדקות הראשונות בהרצאה «Object Serialization» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    אחרי שכתבנו בעצמנו פריטי מידע טיפוסים שונים לקובץ בינארי וקראנו אותם וזה היה קצת קשה לביצוע כי היינו צריכים לדעת בדיוק מה כתבנו ובאיזה סדר ובאיזה טיפוס אז אחרי שעשינו את זה בואו נראה איך אנחנו יכולים לעשות משהו הרבה יותר קל ופשוט להגדיר אובייקט ולשפוך את כל האובייקט as

  2. 00:30

    is לקובץ בינארי וכמובן גם לטעון אותו. אז התהליך הזה נקרא סריאליזציה, סריאליזיישן. ומה שאנחנו צריכים לעשות זה קודם כל להגדיר מחלקה משלנו.

  3. 00:45

    אז בואו נגדיר מחלקה ונגיד שאנחנו בונים את פרסון כרגע, ולפרסון יש בדיוק את האלמנטים שכתבנו מקודם, יש לנו בית אייג', יש לנו איזשהו סלארי שזה פלוט סלארי יש לנו סטרינג שזה פול ניים ממש באותו הסדר אפילו אני עושה את זה ויש לנו איזשהו אינטג'ר שזה היה זיפ קוד אנחנו רוצים ללחוץ על אלט אינסרט בכדי לבנות גטרים וסטרים עבור ארבעת החברה

  4. 01:29

    האלה אנחנו רוצים אלט אינסרט עבור בניית קונסטרקטור שמקבל את ארבעת החבר'ה האלה. הקונסטרקטור צריך לשלוח מידע לסטרים, זה יהיה הרבה יותר נכון.

  5. 01:48

    סט סלרי, יש לנו את סט פול ניים ויש לנו את סט זיפ קוד. ואנחנו רוצים גם איזושהי פונקציית two-string, בואו נבנה אותה פה.

  6. 02:05

    ניגש ונעשה איזה טוסטרינג שפשוט תחזיר לנו פחות או יותר את מה שקיים כאן וזה יהיה אייג' בואו נגדיר אותו בצורה כזאת ואנחנו רוצים להחזיר גם סלרי אנחנו רוצים להחזיר את הפול ניים ואנחנו רוצים להחזיר ה-zip code ונסתפק בזה.

  7. 02:43

    בשביל שנוכל לקחת אובייקט פרסון ולזרוק אותו as is לתוך קובץ בינארי בעזרת מנגנון ה-serialization, אנחנו חייבים לממש את serializable ופשוט רק להגדיר פה implement serializable בכדי שהמערכת תדע שהיא יכולה לקחת עכשיו Object Person ופשוט לשלוף ממנו את כל הבתים ולזרוק אותם as is לתוך סטרים ואנחנו כמובן ניתן את ה-Output Object Output Stream בכדי

  8. 03:18

    לבצע את זה. אז כל מה שאנחנו צריכים לעשות זה א', להגדיר Object Person. בואו נגדיר Person שווה New Person וניתן לו את ה-Age שזה ה-12, ניתן לו את ה-Sellary שזה ה-10,650F, ניתן לו את ה-Full Name וניתן לו את ה-Zip Code ונראה שהוא צועק עלינו כי 12 מבחינתו זה אינטג'ר, אנחנו צריכים להגיד לו שהתייחס לזה כבית

  9. 03:54

    ואז אנחנו לא צריכים את כל המשתנים הבודדים האלה ואנחנו לא צריכים לשמור אותם בצורה בודדת, אנחנו פשוט פונים ל-object output stream.write object ונותנים לו את ה-person.

  10. 04:12

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

  11. 04:32

    אז איך אנחנו קוראים את זה? מה שאנחנו צריכים לעשות בשביל לקרוא את כל הסיפור הזה זה לבנות רפרנס פרסון ולבוא לאובג'קט אינפוט סטרים read object יחזיר לנו את האובייקט הזה ואז אנחנו לא צריכים את כל הבלאגן הזה שזה לא היה דבר רע שעשינו פשוט אם אנחנו רוצים לשלוט על המידע כשאנחנו מכניסים לקובץ או להכניס כל מיני דברים שונים ולאו דווקא

  12. 05:02

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

  13. 05:17

    אנחנו גם צריכים להגדיר סריאליזבל, ולכל המשתנים שיש בתוכו הם גם צריכים להיות סריאליזבל. כמובן שאלה טיפוסים פרימיטיביים והם אוטומטית סריאליזבל.

  14. 05:27

    אז בואו נבדוק איך כל

לקורס המלא: קורס פיתוח אפליקציות לאנדרואיד

ההרצאה הקודמת: Write and Read Binary File

ההרצאה הבאה: Save Collection to Text File

הרצאות קשורות מקורסים אחרים

  • Serialization - חלק 1
  • Session object - חלק 1
  • המחלקה Object
  • Powershell object

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס פיתוח אפליקציות - לאייפון iPhone iOS - ב-Swift-Xcode
  • קורס פלאטר - Flutter - שפת DART של גוגל למובייל - פיתוח אפליקציות לאנדרואיד ואייפון
  • קורס PhoneGap - פיתוח אפליקציות לאנדרואיד ואייפון