مفاهيم جافا الجزء الرابع – Objects الأغراض ١

علينا بالتحدث عن الاغراض, الاغراض هي كل شي في عالم الجافا!
لن نشمل في سلسلتنا هذه التحدث عن البرمجة الغرضية التوجه, لقد ذكرنا سابقا أن هذه السلسلة ليست مدخل للبرمجة وانما لفك شيفرة الجافا, ولكن من الممكن لاحقا ان نقوم بإنشاء سلسلة عن البرمجة الغرضية التوجه. في هذه المقالة سنتحدث بشكل بسيط عنها طبعا لكن يفضل ان تقرأ عنها بنفسك ايضا!

بالتأكيد في هذه السلسلة القليل من المبادئ قد لايضر
الجافا تعمل في عالم من الصفوف, الجافا في طبيعتها غرضية التوجه! كل شي تنشأه في الجافا سيكون من خلال الصفوف
يجب ان لانخلط بين الصف وبين الغرض او في الانكليزية بين ال class and object
الصف او الكلاس class هو ماتقوم في بناءه وهو القالب الذي ستصنع منه الأغراض
يمكن أن نقول الصف هو كقالب الكعك و لكن قالب على شكل مستطيل يمكنه صنع العديد من الكعكات بنفس الشكل المستطيل ولكن لايمكنه صنع كعك دائري! , والشيء مماثل جدا في البرمجة
اذا انشأنا كلاس   فإننا فعليا ننشأ قالب لصنع الكعك وكل غرض هو عبارة عن كعكة منفصلة يمكن اكلها ! 🙂 او برمجيا كل غرض منفصل  له كيانه. بالتأكيد لايمكنك ان تقول كعكة الشوكولا وكعكة الفانيلا نفس الغرض حتى لو استخدمت نفس القالب لصنعهم!
في الحديث عن الكيك والحلويات دعونا نقوم بصنع صف خاص بالكيك

[code language=”java”]
public class Cake {
private String name = "";
private String[] ingredients;
private int price;
private int layers;

public Cake(String name, String[] ingredients, int layers) {
this.name = name;
this.ingredients = ingredients;
this.layers = layers;
}

public void calculatePrice() {
this.price = 10 * layers;
}

public int getPrice() {
return this.price;
}
}
[/code]

لقد اتفقنا سابقا ان المبرمج الجيد قادر على تسميه المفاهيم بإسمها الاصلي, المتحولات في الاغراض تدعى instance variables دعونا لاننسى هذا , ولكن لاتقلقو سو نتطرق لهذا في الدرس القادم بشكل مفصل!

  في الصف السابق نحن نتوقع ان لكل قالب حلوى اسم  كمثال (تشيز كيك, كيكة الشوكولا , قدرة قادر!!) ولكل  قالب مكونات مختلفة ولدعم المثال تخيلنا ان هذه القالب هو للبيع بسعر ثابت ١٠ دولار طبعا يكون الأمر مختلف اذا كان القالب يحتاج عدة طبقات عندها لكل طبقة جديدة سيكلف سعر قالب جديد! .

في هذه المثال من الواضح ان هناك ثلاثة طرق او في الانكليزية ثلاثة من الميثودز methods الأولى هي لتهيئة الصف والثانية لحساب سعر الكيك الثالثة تعطينا نافذة للحصول على قيمة السعر.
هام!!!
قد يسأل البعض لماذا لم نقوم بجعل السعر من الأصل public بالرغم من انه يمكن ان نحصل على قيمة السعر من المتحول مباشرة؟!
الجواب : في البرمجة الغرضية التوجه هنالك مفهوم يدعى encapsulation وهو ان تحمي متحولات الصف من ان يقوم احد بالعبث بقيمتها. كي تحميها يجب ان تجعلها دائما private وان تعطي نوافذ لهذه المتحولات عن طريق get methods . لربما سنتطرق لهذا لاحقا. ولكن كقاعدة في حياتك البرمجية . اجعل دائما متحولات الصفوف private او ان كنت ستتعامل مع الوراثة يمكنك جعلها protected
يمكننا الان إنشاء عدة كعكات لذيذة
 في مثالنا هذا قد انشأنا غرضان وصحيح ان نفس الصف صنعهم ولكن هم منفصلان كليا, لتجريب الصف وصنع الكعك نحتاج صف ثاني وهو الصف الذي ننشأه عادة ليكون مدخل للبرنامج كما تحدثنا سابقا ! للتبسيط قمة بتسمية هذا الصف main , عادة المبرمجون يسمون هذا الصف باسم البرنامج.

[code language=”java”]
public class Main {
public static void main(String[] args) {
String[] cake1Ingredients = {"butter", "milk", "eggs", "coco", "vanilla", "dark chocolate"};
Cake cake1 = new Cake("Chocolate Lava", cake1Ingredients, 1);

String[] cake2Ingredients = {"butter", "milk", "eggs", "vanilla", "white cream"};
Cake cake2 = new Cake("Wedding Cake", cake2Ingredients, 3);

cake1.calculatePrice();
cake2.calculatePrice();
System.out.println("First cake price " + Integer.toString(cake1.getPrice()));
System.out.println("Second cake price " + Integer.toString(cake2.getPrice()));
}
}

[/code]

هذه المثال سيقوم بطباعة سعر كل كعكة على حدى وسيكون السعر مختلف لان عدد طبقا كيك العرس اكثر من طبقات كيك الشوكولا! في الدرس القادم سنتحدث بشكل اكثر علاقة المتحولات بالاغراض . شكرا لمتابعتكم

لميس

إسمي لميس, اعمل كمهندسة برمجيات في شركة إكسينغ في ألمانيا. بدأت في رحلة العمل في المجال البرمجي منذ أكثر من ١٠ سنوات في سنة ٢٠٠٣ كانت بداية رحلتي المهنية حيث كانت بدايتي مع ألعاب الفلاش.. حالياََ انا استخدم العديد من الأدوات البرمجية في العمل فنحن بحاجة ماسة للإطلاع على احدث التقنيات. هدفي هو نقل ما أتعلمه للمشاركة به وتبادل الخبرات مع الجميع

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *