logo

الكائنات والفئات في جافا

  1. كائن في جافا
  2. فئة في جافا
  3. متغير المثيل في جافا
  4. الطريقة في جافا
  5. مثال على الكائن والفئة التي تحتفظ بسجلات الطالب
  6. كائن مجهول

في هذه الصفحة، سوف نتعرف على كائنات وفئات Java. في تقنية البرمجة كائنية التوجه، نقوم بتصميم برنامج باستخدام الكائنات والفئات.

الكائن في Java هو كيان مادي ومنطقي، في حين أن الفصل في Java هو كيان منطقي فقط.

ما هو الكائن في جافا

كائن في جافا

يُعرف الكيان الذي له حالة وسلوك بأنه شيء، على سبيل المثال، كرسي، دراجة، قلم تحديد، قلم، طاولة، سيارة، وما إلى ذلك. ويمكن أن يكون ماديًا أو منطقيًا (ملموسًا وغير ملموس). مثال على كائن غير ملموس هو النظام المصرفي.

الكائن له ثلاث خصائص:

    ولاية:يمثل البيانات (القيمة) للكائن.سلوك:يمثل سلوك (وظيفة) كائن مثل الإيداع والسحب وما إلى ذلك.هوية:عادةً ما يتم تنفيذ هوية الكائن عبر معرف فريد. قيمة المعرف غير مرئية للمستخدم الخارجي. ومع ذلك، يتم استخدامه داخليًا بواسطة JVM لتحديد كل كائن بشكل فريد.
خصائص الكائن في جافا

على سبيل المثال، القلم هو كائن. اسمها رينولدز. لونه أبيض، ويعرف بحالته. يستخدم للكتابة، فالكتابة هي سلوكه.

الكائن هو مثيل لفئة. الفصل عبارة عن قالب أو مخطط يتم إنشاء الكائنات منه. لذا، الكائن هو مثيل (نتيجة) للفئة.

تعريفات الكائن:

  • كائن هو كيان في العالم الحقيقي .
  • كائن هو كيان وقت التشغيل .
  • الكائن هو كيان له حالة وسلوك .
  • الكائن هو مثال لفئة .

ما هو الفصل في جافا

الفئة هي مجموعة من الكائنات التي لها خصائص مشتركة. إنه قالب أو مخطط يتم إنشاء الكائنات منه. إنه كيان منطقي. لا يمكن أن يكون جسديا.

يمكن أن تحتوي فئة في Java على:

    مجالات طُرق البنائين كتل فئة وواجهة متداخلة
فئة في جافا

بناء الجملة للإعلان عن فئة:

 class { field; method; } 

متغير المثيل في Java

يُعرف المتغير الذي يتم إنشاؤه داخل الفصل ولكن خارج الطريقة بمتغير المثيل. متغير المثيل لا يحصل على الذاكرة في وقت الترجمة. يحصل على الذاكرة في وقت التشغيل عند إنشاء كائن أو مثيل. ولهذا السبب يُعرف باسم متغير المثيل.


الطريقة في جافا

في Java، الطريقة تشبه الوظيفة التي يتم استخدامها لكشف سلوك الكائن.

ميزة الطريقة

  • إمكانية إعادة استخدام الكود
  • تحسين الكود

كلمة رئيسية جديدة في جافا

يتم استخدام الكلمة الأساسية الجديدة لتخصيص الذاكرة في وقت التشغيل. تحصل جميع الكائنات على ذاكرة في منطقة ذاكرة الكومة.


مثال الكائن والفئة: الرئيسي داخل الفصل

في هذا المثال، قمنا بإنشاء فصل الطالب الذي يحتوي على معرف واسم عضوين من البيانات. نقوم بإنشاء كائن فئة الطالب باستخدام كلمة رئيسية جديدة وطباعة قيمة الكائن.

هنا، نقوم بإنشاء طريقة 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 طرق لتهيئة الكائن

هناك ثلاث طرق لتهيئة الكائن في 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) مثال الكائن والفئة: التهيئة من خلال الطريقة

في هذا المثال، نقوم بإنشاء كائنين من فئة الطالب وتهيئة القيمة لهذين الكائنين عن طريق استدعاء الأسلوب 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 
كائن في جافا مع القيم

كما ترون في الشكل أعلاه، يحصل الكائن على الذاكرة في منطقة ذاكرة الكومة. يشير المتغير المرجعي إلى الكائن المخصص في منطقة ذاكرة الكومة. هنا، s1 وs2 كلاهما متغيرات مرجعية تشير إلى الكائنات المخصصة في الذاكرة.


3) مثال الكائن والفئة: التهيئة من خلال المنشئ

سنتعرف على المُنشئين في Java لاحقًا.


مثال الكائن والفئة: الموظف

دعونا نرى مثالاً حيث نحتفظ بسجلات للموظفين.

الملف: 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 

ما هي الطرق المختلفة لإنشاء كائن في جافا؟

هناك طرق عديدة لإنشاء كائن في جافا. هم:

  • بواسطة الكلمة الرئيسية الجديدة
  • بواسطة طريقة newInstance()
  • بواسطة طريقة استنساخ ().
  • عن طريق إلغاء التسلسل
  • بطريقة المصنع الخ.

سوف نتعلم هذه الطرق لإنشاء الكائن لاحقًا.

طرق مختلفة لإنشاء كائن في جافا

كائن مجهول

'مجهول' يعني ببساطة 'بلا اسم'. يُعرف الكائن الذي ليس له مرجع بأنه كائن مجهول. ويمكن استخدامه في وقت إنشاء الكائن فقط.

إذا كان عليك استخدام كائن مرة واحدة فقط، فإن الكائن المجهول يعد أسلوبًا جيدًا. على سبيل المثال:

 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 

دعونا نرى المثال:

 //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){>