الاثنين، 18 نوفمبر 2019

الكائنات والفئات في جافا Java Object and Classes#

الكائنات والفئات في جافا Java  Object and Classes#

الكائنات والفئات في جافا Java  Object and Classes#

جافا هي لغة ذات كائنية التوجه .  كلغة لها ميزة Object-Oriented ، تدعم Java المفاهيم الأساسية التالية -

1  تعدد الأشكال morphorism 
2 الوراثة inheritance 
3 التغليف encapsulation 
4 المجردة abstract 
5 الفئات classes
6 كائنات object 
7 المثيلات ( مثلا المتغيرات او نسخة من الكائن ) instances 
8 الدوال methods
9  تمرير رسالة message passing
 في هذا الفصل ، سننظر في المفاهيم - الفئات والكائنات.

 كائن  object - الكائنات لها حالات وسلوكيات.  مثال: الكلب لديه حالات - اللون ، الاسم ، التكاثر وكذلك السلوك - يهز الذيل ، ينبح ، الأكل.  الكائن هو مثيل لفئة.

 فئة class - يمكن تعريف فئة كقالب / مخطط يصف السلوك / الحالة التي كائن نوع الدعم الخاص به.

 كائنات في جافا object in java 
الفئة عبارة عن نسخة كربونية الناتحة من الورقة الزرقاء عن الكائن المراد إنشاءه .

 فيما يلي عينة من الفئة .

 مثال

public class Dog {
   String breed;
   int age;
   String color;

   void barking() {
   }

   void hungry() {
   }

   void sleeping() {
   }
}

يمكن أن تحتوي الفئة  على أي من أنواع المتغيرات التالية.

 المتغيرات المحلية local variable - المتغيرات المحددة داخل الدوال ، تسمى المنشئات  أو الكتل المتغيرات المحلية.  سيتم الإعلان عن المتغير وتهيئته ضمن الطريقة وسيتم إتلاف المتغير عند اكتمال الطريقة.

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

 متغيرات الفئة - متغيرات الفئة هي متغيرات يتم الإعلان عنها داخل الفئة  ، خارج أي طريقة ، باستخدام الكلمة الأساسية الثابتة static keyword.

 يمكن أن يكون للفئة  أي عدد من الدوال للوصول إلى قيمة أنواع مختلفة من الأساليب.  في المثال أعلاه ، يعد barking () و hungry () و sleeping () من الدوال او المشيد.

 فيما يلي بعض الموضوعات المهمة التي يجب مناقشتها عند النظر في فصول لغة Java.

 المشيدات.


عند مناقشة الفئات  classes ، يكون أحد أهم الموضوعات الفرعية هو المنشئات أو المشيدات .  كل فئة لديها منشئ او مشيد.  إذا لم نكتب صراحة مُنشئًا لفئة ما ، فسوف يقوم برنامج الترجمة البرمجي لـ Java بإنشاء مُنشئ افتراضي لتلك الفئة.

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

 فيما يلي مثال على المنشئ -

 مثال
public class Puppy {
   public Puppy() {
   }

   public Puppy(String name) {
      // This constructor has one parameter, name.
   }
}


كما تدعم Java فئات Singleton حيث ستتمكن من إنشاء مثيل واحد فقط للفئة.

ملاحظه − لدينا نوعين مختلفين من المنشئات. نحن ذاهبون لمناقشه المنشئات بالتفصيل في الفصول اللاحقة.

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

هناك ثلاث خطوات عند إنشاء كائن من فئة −

إعلان Declaration − تعريف متغير باسم متغير مع نوع كائن.

إنشاء مثيل Instance -يتم استخدام الكلمة الاساسيه ' الجديدة ' لتكوين الكائن.

التهيئة Initialization − الكلمة الاساسيه ' الجديدة ' متبوعه باستدعاء للمنشئ. تهيئه هذه المكالمة الكائن الجديد.

وفيما يلي مثال لإنشاء كائن −

المثال

public class Puppy {
   public Puppy(String name) {
      // This constructor has one parameter, name.
      System.out.println("Passed Name is :" + name );
   }

   public static void main(String []args) {
      // Following statement would create an object myPuppy
      Puppy myPuppy = new Puppy( "tommy" );
   }
}

مخرجات الكود السابق.

Passed Name is :tommy
الوصول إلى متغيرات والدوال المثيل
متغيرات المثيل والدوال يتم الوصول اليها عبر الكائنات التي تم إنشاؤها. للوصول إلى متغير مثيل ، التالي هو المسار المؤهل بالمثال −
/* First create an object */
ObjectReference = new Constructor();

/* Now call a variable as follows */
ObjectReference.variableName;

/* Now you can call a class method as follows */
ObjectReference.MethodName();

مثال.

public class Puppy {
   int puppyAge;

   public Puppy(String name) {
      // This constructor has one parameter, name.
      System.out.println("Name chosen is :" + name );
   }

   public void setAge( int age ) {
      puppyAge = age;
   }

   public int getAge( ) {
      System.out.println("Puppy's age is :" + puppyAge );
      return puppyAge;
   }

   public static void main(String []args) {
      /* Object creation */
      Puppy myPuppy = new Puppy( "tommy" );

      /* Call class method to set puppy's age */
      myPuppy.setAge( 2 );

      /* Call another class method to get puppy's age */
      myPuppy.getAge( );

      /* You can access instance variable as follows as well */
      System.out.println("Variable Value :" + myPuppy.puppyAge );
   }
}

المخرجات
Name chosen is :tommy
Puppy's age is :2
Variable Value :2

قواعد تعريف ملف المصدر
كالجزء الأخير من هذا القسم ، دعوانا ننظر الآن في قواعد تعريف ملف المصدر. هذه القواعد ضرورية عند التصريح بالفئات و عبارات الاستيراد و عبارات الحزمة في ملف مصدر.

يمكن ان يكون هناك فئة عامه واحده فقط لكل ملف مصدر.

يمكن ان يكون للملف المصدر العديد من الفئات غير العامة.

يجب ان يكون اسم الفئة العمومية اسم الملف المصدر أيضا الذي يجب ان يتم إلحاق بواسطة java في النهاية. علي سبيل المثال: اسم الفئة هو موظف الفئة العامة {} ثم يجب ان يكون الملف المصدر كموظف. جافا.

إذا تم تعريف الفئة داخل حزمه ، ثم يجب ان تكون عبارة الحزمة العبارة الاولي في الملف المصدر.

إذا كانت عبارات الاستيراد موجودة ، فيجب كتابتها بين عبارة الحزمة وتعريف الفئة. إذا لم يكن هناك عبارات الحزمة ، ثم يجب ان تكون عبارة الاستيراد السطر الأول في الملف المصدر.

ستعني عبارات الاستيراد والحزم كافة الفئات الموجودة في الملف المصدر. انها ليست نقاط البيع...


حزمه جافا
في كلمات بسيطه ، بل هو وسيله لتصنيف الفئات والواجات. عند تطوير التطبيقات في جافا ، سيتم كتابه مئات من الطبقات والواجات ، التالي تصنيف هذه الفئات أمر لا بد منه ، وكذلك يجعل الحياة أسهل بكثير.

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

علي سبيل المثال ، سيطلب السطر التالي المحول البرمجي تحميل كافة الفئات المتوفرة في الدليل java_installation/java/io −

import java.io.*;

دراسة حاله بسيطه
لدراسة الحالة ، سنقوم بإنشاء فئتين. انهم موظفون وعاملون في المؤسسة.

أولا فتح المفكرة وأضافه التعليمه البرمجية التالية. تذكر ان هذه هي فئة الموظفين والفئة هي فئة عامه. الآن ، احفظ هذا الملف المصدر باسم الموظف. جافا.

تحتوي فئة الموظف علي أربعه متغيرات المثيل-الاسم والعمر والتسمية والراتب. الفئة لديها واحد الدالة الانشائيه المعرفة بوضوح ، الذي ياخذ معلمه.

المثال

import java.io.*;
public class Employee {

   String name;
   int age;
   String designation;
   double salary;

   // This is the constructor of the class Employee
   public Employee(String name) {
      this.name = name;
   }

   // Assign the age of the Employee  to the variable age.
   public void empAge(int empAge) {
      age = empAge;
   }

   /* Assign the designation to the variable designation.*/
   public void empDesignation(String empDesig) {
      designation = empDesig;
   }

   /* Assign the salary to the variable salary.*/
   public void empSalary(double empSalary) {
      salary = empSalary;
   }

   /* Print the Employee details */
   public void printEmployee() {
      System.out.println("Name:"+ name );
      System.out.println("Age:" + age );
      System.out.println("Designation:" + designation );
      System.out.println("Salary:" + salary);
   }
}


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

التالي هو فئة الموظفين ، الذي يقوم بإنشاء مثيلين من فئة العامل واستدعاء الأساليب لكل كائن لتعيين قيم لكل متغير.

حفظ التعليمات البرمجية التالية في ملف java.
import java.io.*;
public class EmployeeTest {

   public static void main(String args[]) {
      /* Create two objects using constructor */
      Employee empOne = new Employee("James Smith");
      Employee empTwo = new Employee("Mary Anne");

      // Invoking methods for each object created
      empOne.empAge(26);
      empOne.empDesignation("Senior Software Engineer");
      empOne.empSalary(1000);
      empOne.printEmployee();

      empTwo.empAge(21);
      empTwo.empDesignation("Software Engineer");
      empTwo.empSalary(500);
      empTwo.printEmployee();
   }
}

مخرجات السابق

C:\> javac Employee.java
C:\> javac EmployeeTest.java
C:\> java EmployeeTest
Name:James Smith
Age:26
Designation:Senior Software Engineer
Salary:1000.0
Name:Mary Anne
Age:21
Designation:Software Engineer
Salary:500.0

ما هو التالي ؟
في الدورة القادمة ، سوف نناقش أنواع البيانات الاساسيه في جافا وكيف يمكن استخدامها عند تطوير تطبيقات جافا.


















التسميات: