הורד דפי עבודה

‫אובייקטים ומחלקות חלק ‪1‬‬
‫הגדרת מחלקה ותכונות‬
‫• הגדרת מחלקה חדשה‪.‬‬
‫• יצירת אובייקטים מהמחלקה‪.‬‬
‫• הגדרת תכונות למחלקה‪.‬‬
‫• גישה לתכונות המחלקה‪.‬‬
‫הגדרת מחלקה‬
‫שם המחלקה מתחיל‬
‫‪public class MyClass‬‬
‫באות גדולה‪.‬‬
‫{‬
‫}‬
‫• הקוד נשמר בקובץ ‪MyClass.java‬‬
public class Tester
{
public static void main(String[] args)
{
MyClass m = new MyClass();
}
}
MyClass ‫יצירת אובייקט מהמחלקה‬
‫ערימה‬
‫מחסנית‬
‫‪1012‬‬
‫‪m‬‬
‫‪MyClass‬‬
‫;)(‪MyClass m = new MyClass‬‬
‫‪1012‬‬
‫ערימה‬
‫‪m2‬‬
‫‪null‬‬
‫מחסנית‬
‫;‪MyClass m2‬‬
‫‪2000‬‬
‫‪MyClass‬‬
‫;)(‪new MyClass‬‬
‫הפקודה ‪ new‬היא הפקודה היחידה שיוצרת אובייקטים‬
‫בג'אווה‪ .‬כלומר‪ ,‬אם לא הופיעה הפקודה הזאת‪ ,‬לא נוצר‬
‫אובייקט‪.‬‬
‫מושגי יסוד ביצירת אובייקטים‬
‫•‬
‫•‬
‫•‬
‫•‬
‫כדי ליצור אובייקט יש להשתמש בפקודה ‪new‬‬
‫שיוצרת אובייקט בערימה‪.‬‬
‫כתובת האובייקט מוצבת למשתנה במחסנית‪.‬‬
‫אם נוצר רק משתנה בלי אובייקט‪ ,‬המשתנה מכיל‬
‫את הערך ‪ null‬שאומר שכרגע המשתנה לא מצביע‬
‫על אף אובייקט‪.‬‬
‫אובייקט שאף אחד לא מצביע עליו נמחק מהזיכרון‬
‫ע"י תהליך שנקרא ‪.Garbage Collector‬‬
‫תכונות של מחלקה‬
‫• מחלקה מתארת ישות כלשהי בעולם‪ ,‬ולכן היא‬
‫יכולה להכיל תכונות – שדות שמתארים את‬
‫האובייקטים‪.‬‬
‫• נניח שנרצה לכתוב מחלקה בשם ‪ Person‬שמייצגת‬
‫בן אדם‪.‬‬
‫• לכל בן אדם יהיו תכונות של שם‪ ,‬ושל גיל‪.‬‬
‫תכונה של המחלקה‬
‫‪public class Person‬‬
‫{‬
‫;‪public String name‬‬
‫;‪public int age‬‬
‫}‬
‫תכונה היא בעצם הגדרה של משתנה רגיל‪ ,‬כאשר‬
‫מקדימים לו את מאפיין הגישה – ‪– Access Modifier‬‬
‫שקובע מי רשאי לגשת לתכונה‪ .‬כרגע‪ ,‬מאפיין הגישה‬
‫מסומן כ‪ ,public-‬כלומר‪ ,‬כל מי שרוצה רשאי לגשת‬
‫לתכונות‪.‬‬
public class Person
{
public String name;
public int age;
}
‫ערימה‬
Person
name
age
Yossi
17
public class Tester
{
public static void main(String[] args) {
Person p1 = new Person();
p1.name = “Yossi”;
p1.age = 17;
}
}
‫מחסנית‬
1012
1012
p1
public class Person
{
public String name;
public int age;
}
‫ערימה‬
Person
name
age
Yossi
17
‫מחסנית‬
1012
1012
public class Tester
{
public static void main(String[] args) {
Person p1 = new Person();
‫ לא‬age ‫שגיאת קומפילציה – המשתנה‬
age = 1;
‫מוכר בלי הקשר של אובייקט – "הגיל‬
}
."?‫של מי‬
}
p1
public class Person
{
public String name;
public int age;
}
‫ערימה‬
Person
name
age
}
}
1012
1012
17
Person
public class Tester
name
age
{
public static void main(String[] args) {
Person p1 = new Person();
Person p2 = new Person();
p1.age = 17;
p2.age = 34;
‫מחסנית‬
34
p1
1030
1030 p2
‫תרגיל‬
‫• כתבו מחלקה בשם ‪ Book‬שמייצגת ספר‪.‬‬
‫• למחלקה יהיו התכונות הבאות‪:‬‬
‫– שם הספר – מסוג ‪.String‬‬
‫– מספר העמודים – מסוג ‪.int‬‬
‫– מחיר הספר – מסוג ‪.double‬‬
‫• כתבו תוכנית ‪ main‬במחלקה אחרת‪ ,‬צרו‬
‫אובייקטים מסוג ‪ Book‬והציבו בתכונות שלהם‬
‫נתונים‪.‬‬