logo

אובייקטים ומחלקות ב-Java

  1. אובייקט ב-Java
  2. שיעור בג'אווה
  3. משתנה מופע ב-Java
  4. שיטה ב-Java
  5. דוגמה לאובייקט ולכיתה ששומרים על רישומי התלמיד
  6. חפץ אנונימי

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

אובייקט ב-Java הוא הישות הפיזית וגם הלוגית, ואילו מחלקה ב-Java היא ישות לוגית בלבד.

מהו אובייקט ב-Java

אובייקט ב-Java

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

לאובייקט יש שלושה מאפיינים:

    מדינה:מייצג את הנתונים (הערך) של אובייקט.התנהגות:מייצג את ההתנהגות (פונקציונליות) של אובייקט כגון הפקדה, משיכה וכו'.זהות:זהות אובייקט מיושמת בדרך כלל באמצעות מזהה ייחודי. הערך של המזהה אינו גלוי למשתמש החיצוני. עם זאת, הוא משמש באופן פנימי על ידי JVM כדי לזהות כל אובייקט באופן ייחודי.
מאפיינים של אובייקט ב-Java

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

אובייקט הוא מופע של מחלקה. מחלקה היא תבנית או שרטוט שממנה נוצרים אובייקטים. אז, אובייקט הוא המופע (תוצאה) של מחלקה.

הגדרות אובייקט:

  • חפץ הוא ישות בעולם האמיתי .
  • חפץ הוא ישות זמן ריצה .
  • החפץ הוא ישות שיש לה מדינה והתנהגות .
  • החפץ הוא מופע של מחלקה .

מה זה מחלקה בג'אווה

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

מחלקה ב-Java יכולה להכיל:

    שדות שיטות בונים בלוקים מחלקה וממשק מקוננים
שיעור בג'אווה

תחביר להכרזה על מחלקה:

 class { field; method; } 

משתנה מופע ב-Java

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


שיטה ב-Java

ב-Java, שיטה היא כמו פונקציה המשמשת לחשיפת התנהגות של אובייקט.

יתרון השיטה

  • שימוש חוזר בקוד
  • אופטימיזציה של קוד

מילת מפתח חדשה ב-Java

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


דוגמה לאובייקט ומחלקה: ראשי בתוך המחלקה

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

כאן, אנו יוצרים שיטה main() בתוך המחלקה.

קובץ: Student.java

 //Java Program to illustrate how to define a class and fields //Defining a Student class. class Student{ //defining fields int id;//field or data member or instance variable String name; //creating main method inside the Student class public static void main(String args[]){ //Creating an object or instance Student s1=new Student();//creating an object of Student //Printing values of the object System.out.println(s1.id);//accessing member through reference variable System.out.println(s1.name); } } 
בדוק את זה עכשיו

תְפוּקָה:

 0 null 

דוגמה לאובייקט ומחלקה: ראשי מחוץ למחלקה

בפיתוח בזמן אמת, אנו יוצרים שיעורים ומשתמשים בהם מכיתה אחרת. זו גישה טובה יותר מהקודמת. בוא נראה דוגמה פשוטה, שבה יש לנו מתודה main() במחלקה אחרת.

מונה ג'אווה

אנחנו יכולים לקבל מחלקות מרובות בקבצי Java שונים או בקובץ Java יחיד. אם אתה מגדיר מספר מחלקות בקובץ מקור יחיד של Java, מומלץ לשמור את שם הקובץ עם שם המחלקה שיש לה שיטת main() .

קובץ: TestStudent1.java

 //Java Program to demonstrate having the main method in //another class //Creating Student class. class Student{ int id; String name; } //Creating another class TestStudent1 which contains the main method class TestStudent1{ public static void main(String args[]){ Student s1=new Student(); System.out.println(s1.id); System.out.println(s1.name); } } 
בדוק את זה עכשיו

תְפוּקָה:

 0 null 

3 דרכים לאתחל אובייקט

ישנן 3 דרכים לאתחל אובייקט ב-Java.

  1. לפי משתנה התייחסות
  2. לפי השיטה
  3. על ידי קונסטרוקטור

1) דוגמה לאובייקט ומחלקה: אתחול באמצעות הפניה

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

קובץ: TestStudent2.java

 class Student{ int id; String name; } class TestStudent2{ public static void main(String args[]){ Student s1=new Student(); s1.id=101; s1.name='Sonoo'; System.out.println(s1.id+' '+s1.name);//printing members with a white space } } 
בדוק את זה עכשיו

תְפוּקָה:

 101 Sonoo 

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

קובץ: TestStudent3.java

 class Student{ int id; String name; } class TestStudent3{ public static void main(String args[]){ //Creating objects Student s1=new Student(); Student s2=new Student(); //Initializing objects s1.id=101; s1.name='Sonoo'; s2.id=102; s2.name='Amit'; //Printing data System.out.println(s1.id+' '+s1.name); System.out.println(s2.id+' '+s2.name); } } 
בדוק את זה עכשיו

תְפוּקָה:

 101 Sonoo 102 Amit 

2) דוגמה לאובייקט ומחלקה: אתחול באמצעות שיטה

בדוגמה זו, אנו יוצרים את שני האובייקטים של Student class ומאתחלים את הערך לאובייקטים אלה על ידי הפעלת שיטת insertRecord. כאן, אנו מציגים את המצב (הנתונים) של האובייקטים על ידי הפעלת שיטת displayInformation().

קובץ: TestStudent4.java

 class Student{ int rollno; String name; void insertRecord(int r, String n){ rollno=r; name=n; } void displayInformation(){System.out.println(rollno+' '+name);} } class TestStudent4{ public static void main(String args[]){ Student s1=new Student(); Student s2=new Student(); s1.insertRecord(111,'Karan'); s2.insertRecord(222,'Aryan'); s1.displayInformation(); s2.displayInformation(); } } 
בדוק את זה עכשיו

תְפוּקָה:

 111 Karan 222 Aryan 
אובייקט ב-Java עם ערכים

כפי שניתן לראות באיור לעיל, האובייקט מקבל את הזיכרון באזור הזיכרון הערימה. משתנה ההתייחסות מתייחס לאובייקט שהוקצה באזור זיכרון הערימה. כאן, s1 ו-s2 שניהם משתני ייחוס המתייחסים לאובייקטים שהוקצו בזיכרון.


3) דוגמה לאובייקט ומחלקה: אתחול באמצעות בנאי

נלמד על בנאים בג'אווה בהמשך.


דוגמה לאובייקט וכיתה: עובד

בואו נראה דוגמה שבה אנחנו מנהלים רישומים של עובדים.

קובץ: TestEmployee.java

 class Employee{ int id; String name; float salary; void insert(int i, String n, float s) { id=i; name=n; salary=s; } void display(){System.out.println(id+' '+name+' '+salary);} } public class TestEmployee { public static void main(String[] args) { Employee e1=new Employee(); Employee e2=new Employee(); Employee e3=new Employee(); e1.insert(101,'ajeet',45000); e2.insert(102,'irfan',25000); e3.insert(103,'nakul',55000); e1.display(); e2.display(); e3.display(); } } 
בדוק את זה עכשיו

תְפוּקָה:

 101 ajeet 45000.0 102 irfan 25000.0 103 nakul 55000.0 

דוגמה לאובייקט ומחלקה: מלבן

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

קובץ: TestRectangle1.java

 class Rectangle{ int length; int width; void insert(int l, int w){ length=l; width=w; } void calculateArea(){System.out.println(length*width);} } class TestRectangle1{ public static void main(String args[]){ Rectangle r1=new Rectangle(); Rectangle r2=new Rectangle(); r1.insert(11,5); r2.insert(3,15); r1.calculateArea(); r2.calculateArea(); } } 
בדוק את זה עכשיו

תְפוּקָה:

 55 45 

מהן הדרכים השונות ליצור אובייקט ב-Java?

ישנן דרכים רבות ליצור אובייקט ב-java. הם:

  • לפי מילת מפתח חדשה
  • לפי שיטת newInstance()
  • לפי שיטת clone()
  • על ידי דה-סריאליזציה
  • לפי שיטת המפעל וכו'.

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

דרכים שונות ליצור אובייקט ב-Java

חפץ אנונימי

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

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

 new Calculation();//anonymous object 

שיטת קריאה באמצעות הפניה:

 Calculation c=new Calculation(); c.fact(5); 

שיטת קריאה דרך אובייקט אנונימי

 new Calculation().fact(5); 

בואו נראה את הדוגמה המלאה של אובייקט אנונימי ב-Java.

 class Calculation{ void fact(int n){ int fact=1; for(int i=1;i<=n;i++){ fact="fact*i;" } system.out.println('factorial is '+fact); public static void main(string args[]){ new calculation().fact(5); calling method with anonymous object < pre> <p>Output:</p> <pre> Factorial is 120 </pre> <a id="objectbyonetype"></a> <h3>Creating multiple objects by one type only</h3> <p>We can create multiple objects by one type only as we do in case of primitives.</p> <p>Initialization of primitive variables:</p> <pre> int a=10, b=20; </pre> <p>Initialization of refernce variables:</p> <pre> Rectangle r1=new Rectangle(), r2=new Rectangle();//creating two objects </pre> <p>Let&apos;s see the example:</p> <pre> //Java Program to illustrate the use of Rectangle class which //has length and width data members class Rectangle{ int length; int width; void insert(int l,int w){ length=l; width=w; } void calculateArea(){System.out.println(length*width);} } class TestRectangle2{ public static void main(String args[]){ Rectangle r1=new Rectangle(),r2=new Rectangle();//creating two objects r1.insert(11,5); r2.insert(3,15); r1.calculateArea(); r2.calculateArea(); } } </pre> <span> Test it Now </span> <p>Output:</p> <pre> 55 45 </pre> <h3>Real World Example: Account</h3> <p>File: TestAccount.java</p> <pre> //Java Program to demonstrate the working of a banking-system //where we deposit and withdraw amount from our account. //Creating an Account class which has deposit() and withdraw() methods class Account{ int acc_no; String name; float amount; //Method to initialize object void insert(int a,String n,float amt){ acc_no=a; name=n; amount=amt; } //deposit method void deposit(float amt){ amount=amount+amt; System.out.println(amt+&apos; deposited&apos;); } //withdraw method void withdraw(float amt){ if(amount <amt){ system.out.println('insufficient balance'); }else{ amount="amount-amt;" system.out.println(amt+' withdrawn'); } method to check the balance of account void checkbalance(){system.out.println('balance is: '+amount);} display values an object display(){system.out.println(acc_no+' '+name+' creating a test class deposit and withdraw testaccount{ public static main(string[] args){ a1="new" account(); a1.insert(832345,'ankit',1000); a1.display(); a1.checkbalance(); a1.deposit(40000); a1.withdraw(15000); }} < pre> <span> Test it Now </span> <p>Output:</p> <pre> 832345 Ankit 1000.0 Balance is: 1000.0 40000.0 deposited Balance is: 41000.0 15000.0 withdrawn Balance is: 26000.0 </pre></amt){></pre></=n;i++){>

יצירת מספר אובייקטים לפי סוג אחד בלבד

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

אתחול של משתנים פרימיטיביים:

 int a=10, b=20; 

אתחול של משתני התייחסות:

 Rectangle r1=new Rectangle(), r2=new Rectangle();//creating two objects 

בואו נראה את הדוגמה:

cpp שווה
 //Java Program to illustrate the use of Rectangle class which //has length and width data members class Rectangle{ int length; int width; void insert(int l,int w){ length=l; width=w; } void calculateArea(){System.out.println(length*width);} } class TestRectangle2{ public static void main(String args[]){ Rectangle r1=new Rectangle(),r2=new Rectangle();//creating two objects r1.insert(11,5); r2.insert(3,15); r1.calculateArea(); r2.calculateArea(); } } 
בדוק את זה עכשיו

תְפוּקָה:

 55 45 

דוגמה בעולם האמיתי: חשבון

קובץ: TestAccount.java

 //Java Program to demonstrate the working of a banking-system //where we deposit and withdraw amount from our account. //Creating an Account class which has deposit() and withdraw() methods class Account{ int acc_no; String name; float amount; //Method to initialize object void insert(int a,String n,float amt){ acc_no=a; name=n; amount=amt; } //deposit method void deposit(float amt){ amount=amount+amt; System.out.println(amt+&apos; deposited&apos;); } //withdraw method void withdraw(float amt){ if(amount <amt){ system.out.println(\'insufficient balance\'); }else{ amount="amount-amt;" system.out.println(amt+\' withdrawn\'); } method to check the balance of account void checkbalance(){system.out.println(\'balance is: \'+amount);} display values an object display(){system.out.println(acc_no+\' \'+name+\' creating a test class deposit and withdraw testaccount{ public static main(string[] args){ a1="new" account(); a1.insert(832345,\'ankit\',1000); a1.display(); a1.checkbalance(); a1.deposit(40000); a1.withdraw(15000); }} < pre> <span> Test it Now </span> <p>Output:</p> <pre> 832345 Ankit 1000.0 Balance is: 1000.0 40000.0 deposited Balance is: 41000.0 15000.0 withdrawn Balance is: 26000.0 </pre></amt){>