0% found this document useful (0 votes)
57 views10 pages

Basics of Programming 125 134

Uploaded by

Deem Zesoul
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
57 views10 pages

Basics of Programming 125 134

Uploaded by

Deem Zesoul
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 10

‫الوحدة الحادي عشر‬

‫الكيانات والكالسات ‪Classes and Objects‬‬

‫نظري‬
‫الكيانات والكالسات ‪ - Classes and Objects‬نظري‬

‫تعريف الكالس ‪: Classes‬‬

‫‪ : Class‬نكتبها كالس في العربية ‪ .‬و الكالس عبارة عن حاوية كبيرة تستطيع أن تحتوي على‬

‫كل الكود من متغيرات و دوال و كائنات إلخ‪..‬‬

‫‪ ‬مفهوم الخصائص ‪:‬‬

‫أي متغيرات يتم تعريفها بداخل كالس و خارج أي دالة تسمى خصائص (‪ , )Attributes‬و هذا‬

‫يعني أن أي كائن من هذا الكالس سيكون عنده هذه الخصائص ‪.‬‬

‫تستطيع التعامل مع هذه الخصائص من الكائن مباشرة ‪ ,‬بينما المتغيرات العادية ال يمكنك‬

‫التعامل معها من الكائن ‪.‬‬

‫‪ ‬مفهوم الـ ‪: Object‬‬

‫‪ : Object‬تعني كائن في اللغة العربية‪ .‬و الكائن عبارة عن نسخة مطابقة لكالس معين ‪.‬‬

‫بما أن الكائن عبارة عن نسخة من الكالس‪ ,‬يمكننا القول أنه ال يمكن إنشاء كائن إذا لم يكن‬

‫هناك كالس ‪.‬‬

‫إذا في مفهوم برمجة الكائنات نقوم بإنشاء كالس معين يسمونه ‪blue print‬‬

‫أي (النسخة الخام أو النسخة األصلية) ‪ ,‬و بعدها ننشئ نسخة أو أكثر من هذا الكالس و نفعل‬

‫بها ما نريد بدون أن نغير محتويات الكالس األساسي و هكذا نكون حافظنا على كودات‬

‫الكالس األساسي ألننا نعدل على النسخ و ليس عليه مباشرة ‪.‬‬

‫‪ ‬طريقة التعامل مع الكائنات ‪:‬‬

‫‪ -‬نقوم بإنشاء كائن من الكالس ‪.‬‬

‫‪ -‬بعدها نقوم بإدخال قيم لخصائصه ‪ ,‬إستدعاء دواله إلخ‪..‬‬

‫‪126‬‬
‫‪www.tvtc.gov.sa‬‬ ‫م‪ .‬عبدالمجيد العتيبي‬
‫الكيانات والكالسات ‪ - Classes and Objects‬نظري‬

‫‪ ‬الستدعاء أي شيء موجود في الكائن الذي خلقناه ‪:‬‬

‫‪ -‬نضع إسم الكائن‪.‬‬

‫‪ -‬ثم نقطة‪.‬‬

‫‪ -‬ثم الشيء الذي نريد الوصول إليه ( سواء إسم متغير أو دالة )‪.‬‬

‫‪ ‬نصائح عليك إتباعها ‪:‬‬

‫‪ -‬يفضل إنشاء كل كالس في ملف جافا خاص‪.‬‬

‫‪ -‬إبدأ إسم الكالس دائما بحرف كبير‪.‬‬

‫‪ -‬إبدأ إسم الكائن دائما بحرف صغير‪.‬‬

‫‪ ‬الكلمة ‪: this‬‬

‫الكلمة ‪ this‬هي كلمة محجوزة في لغة جافا ‪ ,‬و هي تستخدم لإلشارة إلى الـ ‪Global‬‬

‫‪ ,Variables‬و تستخدم أيضا لإلشارة إلى الكائن الحالي ‪ ,‬و يمكن استخدامها في أماكن عديدة ‪.‬‬

‫‪ ‬مفهوم الـ ‪: Constructor‬‬

‫‪ : Constructor‬تكتب كونستركتور بالعربية ‪.‬‬

‫من أهم األشياء التي عليك التفكير بها بعد إنشاء كالس جديد‪ ,‬هي تسهيل طريقة خلق‬

‫كائنات من هذا الكالس ‪ ,‬من هنا أتت فكرة الكونستركتور وهو عبارة عن دالة لها نوع خاص ‪,‬‬

‫يتم إستدعائها أثناء إنشاء كائن لتوليد قيم أولية للخصائص الموجودة فيه ‪.‬‬

‫بما أنه ال يمكن إنشاء كائن من كالس إال من خالل كونستركتور ‪ ,‬سيقوم مترجم جافا بتوليد‬

‫كونستركتور إفتراضي فارغ عنك إذا وجد أن الكالس الذي قمت بتعريفه ال يحتوي على أي‬

‫كونستركتور‪.‬‬

‫‪127‬‬
‫‪www.tvtc.gov.sa‬‬ ‫م‪ .‬عبدالمجيد العتيبي‬
‫الكيانات والكالسات ‪ - Classes and Objects‬نظري‬

‫‪ ‬المتغيرات التي يتم وضعها في الكالس تقسم إلى ثالث فئات أساسية ذكرناها في‬

‫الجدول التالي ‪:‬‬

‫هي المتغيرات التي يتم تعريفها بداخل أي دالة ‪,‬‬ ‫‪Local Variables‬‬
‫أو ‪ ,constructor‬أو بداخل ‪ ( block‬مثل الحلقات‪ ,‬الجملة‬
‫‪ switch‬إلخ‪.) ..‬‬
‫هي المتغيرات التي يتم تعريفها بداخل الكالس و خارج‬ ‫‪Instance Variables‬‬
‫حدود أي دالة أو ‪ , constructor‬أو ‪ . block‬تسمى أيضا‬
‫‪. Global Variables‬‬
‫هي المتغيرات التي يتم تعريفها كـ ‪ static‬بداخل الكالس‬ ‫‪Class Variables‬‬
‫و خارج حدود أي دالة أو ‪ ,constructor‬أو ‪. block‬‬

‫‪ ‬نقاط مهمة حول الكونستركتور ‪:‬‬

‫‪ ‬كل كالس يتم إنشاءه‪ ,‬يحتوي على كونستركتور واحد على األقل ‪ .‬و حتى إن لم تقم‬

‫بتعريف أي كونستركتور ‪ ,‬سيقوم المترجم بإنشاء واحد إفتراضي عنك ‪.‬‬

‫‪ ‬في كل مرة يتم إنشاء كائن جديد‪ ,‬يجب استدعاء الكونستركتور ‪.‬‬

‫‪ ‬القاعدة األساسية عند تعريف كونستركتور هي أنه يجب أن يحمل نفس إسم الكالس و‬

‫يكون نوعه ‪.public‬‬

‫‪ ‬في حال قمت بتعريف كونستركتور ‪ ,‬لن يقوم المترجم بإنشاء واحد إفتراضي‪ ,‬أي لن‬

‫يعود هناك كونستركتور إفتراضي ‪.‬‬

‫‪ ‬يمكنك تعريف أكثر من كونستركتور‪ .‬و يمكنك دائما إنشاء كونستركتور فارغ‪ ,‬حتى‬

‫تستخدمه إن كنت ال تريد إعطاء قيم أولية محددة للخصائص عند إنشاء كائن ‪.‬‬

‫‪128‬‬
‫‪www.tvtc.gov.sa‬‬ ‫م‪ .‬عبدالمجيد العتيبي‬
‫الكيانات والكالسات ‪ - Classes and Objects‬نظري‬

‫عالقة الـ ‪ Object‬بالـ ‪: Class‬‬ ‫‪‬‬

‫الكائنات تساعد المبرمج كثيرا‪ ,‬فمثال إذا كنت تنوي إنشاء برنامج بسيط لحفظ معلومات‬

‫أشخاص‪ ,‬هل ستنشئ كالس لكل شخص ؟!‬

‫طبعا ال ‪ ,‬بل تنشئ كالس واحد فقط يمثل شخص ‪ ,‬و تضع فيه األشياء األساسية التي تريدها‬

‫أن تكون موجودة عند كل شخص‪ .‬ثم تنشئ منه كائنات قدر ما شئت‪ ,‬و عندها يصبح كل كائن‬

‫من هذا الكالس عبارة عن شخص له معلوماته الخاصة ‪.‬‬

‫أنا كالس اسمي ‪ Person‬عبارة عن إنسان وأمتلك الخصائص التالية‬


‫العمر‬ ‫الوظيفة‬ ‫الجنس‬ ‫اإلسم‬

‫نحن كائنات من الكالس ‪Person‬‬


‫اإلسم ‪ :‬روز‬ ‫اإلسم ‪ :‬محمد‬
‫الجنس ‪ :‬أنثى‬ ‫الجنس ‪ :‬ذكر‬
‫الوظيفة ‪ :‬معلمة‬ ‫الوظيفة ‪ :‬مهندس‬
‫العمر ‪24 :‬‬ ‫العمر ‪26 :‬‬

‫‪129‬‬
‫‪www.tvtc.gov.sa‬‬ ‫م‪ .‬عبدالمجيد العتيبي‬
‫الوحدة الحادي عشر‬

‫الكيانات والكالسات ‪Classes and Objects‬‬

‫عملي‬
‫الكيانات والكالسات ‪ - Classes and Objects‬عملي‬

‫‪ ‬لتعريف كالس جديد يكفي فقط كتابة الكلمة ‪ ,class‬ثم وضع إسم له‪ ,‬ثم فتح أقواس‬

‫تحدد بدايته و نهايته‪ .‬مثال ‪:‬‬

‫‪‬‬ ‫{ ‪class ClassName‬‬


‫‪‬‬
‫‪‬‬ ‫}‬

‫‪ ‬بما أن الكائن عبارة عن نسخة من الكالس‪ .‬لتعريف كائن من كالس معين يجب وضع إسم‬

‫الكالس ثم وضع إسم للكائن ‪.‬‬

‫;)(‪Person ahmad = new Person‬‬

‫‪ ‬هنا قمنا بتعريف كائن من الكالس ‪ Person‬إسمه ‪. ahmad‬‬

‫‪ ‬إذا الكائن ‪ ahmad‬سيكون عنده نسخة خاصة فيه من خصائص الكالس ‪. Person‬‬

‫مالحظة ‪ :‬الكود ()‪ new Person‬هو الذي يقوم فعليا بتوليد كائن من الكالس‪ .‬و هو يعطي‬

‫قيم أولية للخصائص الموجودة فيه ‪.‬‬

‫‪131‬‬
‫‪www.tvtc.gov.sa‬‬ ‫م‪ .‬عبدالمجيد العتيبي‬
‫الكيانات والكالسات ‪ - Classes and Objects‬عملي‬

‫بما أنه ال يمكن إنشاء كائن من كالس إال من خالل كونستركتور‪ ,‬سيقوم مترجم جافا بتوليد‬

‫كونستركتور إفتراضي فارغ عنك إذا وجد أن الكالس الذي قمت بتعريفه ال يحتوي على أي‬

‫كونستركتور ‪.‬‬

‫إذا قمنا بتعريف كالس إسمه ‪ Person‬و لم نقم بتعريف كونستركتور له كما في‬
‫الكالس التالي‬

‫‪‬‬ ‫{ ‪class Person‬‬


‫‪‬‬
‫‪‬‬ ‫}‬

‫سيقوم المترجم بإنشاء كونستركتور فارغ بشكل تلقائي عننا كالتالي‬

‫‪‬‬ ‫{ ‪class Person‬‬


‫‪‬‬
‫‪‬‬ ‫{ )(‪public Person‬‬
‫‪‬‬
‫‪‬‬ ‫}‬
‫‪‬‬
‫‪‬‬ ‫}‬

‫اآلن سنقوم بإنشاء الكالس ‪ Person‬و إنشاء كائنات منه في الكالس الذي يحتوي على الدالة‬

‫()‪. main‬‬

‫مالحظة ‪ :‬يجب إنشاء الكالس ‪ Person‬و الكالس ‪ Main‬في نفس الـ ‪ package‬حتى يعمل‬

‫الكود بشكل صحيح ‪.‬‬

‫‪132‬‬
‫‪www.tvtc.gov.sa‬‬ ‫م‪ .‬عبدالمجيد العتيبي‬
‫ عملي‬- Classes and Objects ‫الكيانات والكالسات‬

Person.java

public class Person {

// ‫ خصائص‬4 ‫هنا قمنا بتعريف‬


String name;
String sex;
String job;
int age;

// ‫هنا قمنا بتعريف دالة تطبع محتوى كل خاصية عندما يتم‬


‫استدعاءها‬
void printInfo() {
System.out.println("Name: " +name);
System.out.println("Sex: " +sex);
System.out.println("Job: " +job);
System.out.println("Age: " +age);
System.out.println();
}
}

Main.java

public class Main {

public static void main(String[] args) {

// Person ‫هنا قمنا بإنشاء كائنات من الكالس‬


Person p1 = new Person(); // ‫ سيمثل محمد‬p1 ‫الكائن‬
Person p2 = new Person(); // ‫ سيمثل روز‬p2 ‫الكائن‬
Person p3 = new Person(); // ‫ سيمثل أحمد‬p3 ‫الكائن‬
Person p4 = new Person(); // ‫ سيمثل ربيع‬p4 ‫الكائن‬

// p1 ‫هنا قمنا بتحديد خصائص الكائن‬


p1.name = "Mhamad";
p1.sex = "Male";
p1.job = "Programmer";
p1.age = 21;

// p2 ‫هنا قمنا بتحديد خصائص الكائن‬


p2.name = "Rose";
p2.sex = "Female";
p2.job = "Secretary";
p2.age = 22;

133
www.tvtc.gov.sa ‫ عبدالمجيد العتيبي‬.‫م‬
‫ عملي‬- Classes and Objects ‫الكيانات والكالسات‬

// p3 ‫هنا قمنا بتحديد خصائص الكائن‬


p3.name = "Ahmad";
p3.sex = "Male";
p3.job = "Doctor";
p3.age = 34;

// p4 ‫هنا قمنا بتحديد خصائص الكائن‬


p4.name = "Rabih";
p4.sex = "Male";
p4.job = "Engineer";
p4.age = 27;

// ‫هنا قمنا بعرض خصائص كل كائن‬


p1.printInfo();
p2.printInfo();
p3.printInfo();
p4.printInfo();

}
}

‫سنحصل على النتيجة التالية عند التشغيل‬

 Name: Mhamad
 Sex: Male
 Job: Programmer
 Age: 21

 Name: Rose
 Sex: Female
 Job: Secretary
 Age: 22

 Name: Ahmad
 Sex: Male
 Job: Doctor
 Age: 34

 Name: Rabih
 Sex: Male
 Job: Engineer
 Age: 27

134
www.tvtc.gov.sa ‫ عبدالمجيد العتيبي‬.‫م‬

You might also like