مرحبا بك صديقي في مقال اخر و درس اخر من سلسلة المقالات الخاصة بمجال البرمجة كائنية التوجه OOP، قدمنا في كل من الدرسين السابقين تمهيدا لمفهوم الـ OOP، و كيف يختلف عن البرمجة الوظيفية العادية، و كيف يمكنه ان يحسن العديد من الجوانب من مشروعنا البرمجي خصوصا هيكلة البيانات، ثم راجعنا معك في الدرس الثاني مفهوم الكلاس، الخطوة الأولة و اللبنة الأساسية في البدئ في كتابة كود برمجي مبني على البرمجة كائنية التوجه، قمنا بإستعراض كيف للكلاس ان تبدو، و اساسياتها الداخلية و اهم الأساسيات التي تكون كلاس برمجي .
ما هو الـ Object :
ذكرنا لك سابقا ان الـ Class تحدد ما هي الـ Object و هي التي تضع وصفه الخاص، في مثالنا الخاص بالحاسوب، قمنا بصناعة كلاس تتضمن أساسيات صناعة حاسوب، مثل اسمه ( او اسم الشركة المصنعة ) و كذا مساحة الـ RAM و Hard Drive و غيرها من الأساسيات، كما وضعنا مجموعة من الـ Actions التي تمثل الحاسوب او التي يستطيع الحاسوب فعلها، و بذلك نكون قد إنتهينا من وصف الحاسوب .
يأتي الـ Object ليُخضع وصف الحاسوب المدرج في الكلاس للإستخدام، إذ يتكون الـ Object من كل الوصف و الأكشن التي تم إدراجها في الكلاس، لكن لا بد للـ Object ان يتم تحديده بناءا على الكلاس، اي يكون الـ Object عبارة عن Instance من الكلاس الرئيسية .
في كل مرة - و إتباعا لمثالنا - نريد ان نصنع حاسوب لشركة معينة او نفس الشركة فقط حاسوب مختلف، عليك خلق Object جديد، و تمرير البيانات و المعلومات لذلك الـ Object من أجل إستحواذها و تخزينها .
لربما كان الأمر ملخبطا أليس كذلك ؟ دعونا نعود الى الكلاس الخاصة بنا سابقا و نبني Object تابع لها :
نبدأ أولا بإسم الكلاس الخاص بنا، و هو Compute، من أجل صناعة Object يجب علينا اولا تحديد إنتماء هذا الـ Object لفعل ذلك، نقوم بوضع إسم الكلاس في البداية، ثم بعدها إسم الـ Object الذي نريد بنائه، او الذي سيحمل خصائص الكلاس كاملة و الذي نريد ان نتعامل معه، في حالتنا و بما أننا نتعامل مع الحواسيب فقد إستخدمت حاسوبا من نوع Acer، ان ما اريد بنائه هو حاسوب من نوع Acer، ثم نقوم بتمرير new Computer إشادة منا ان هذا الـ Object هو عنصر جديد من الكلاس Computer .
تختلف تسمية او تحديد الـ Object من لغة لأخرى ( مثالنا الأعلى بإستخدام الجافا )، فمثلا في الـ Php نقوم بصناعة Object بطريقة مختلفة قليلا كما الشكل التالي :
بعد أن قمنا بصناعة Object و هو حاسوب Acer، يمكنني الآن إدراج مقومات و خصائص هذا الحاسوب، و كذا الأكشن و الأفعال التي يقوم بها و تجربتها كذلك، لاحظ انه فور تحديد العنصر و وضع ( . ) من أجل إستخدام خصائصه، يُظهر الـ IDE الأشياء التالية :
إن امعنت النظر و راجعت الكلاس الأصلي الذي صنعناه للحاسوب، فقد أعطيناه من الخصائص الـ id و الـ motherBoardModel و كذا الـ name و الـ Ram Model كخصائص او Fields، ثم أعطيناه turnOff و turnOn كأفعال او Actions يقوم بها الحاسوب، فور صناعتنا للـ Object الذي يحدد لنا حاسوب جديد من نوع Acer، يقوم ذلك العنصر بأخذ و حمل كل الخصائص و الأفعال التي تم تحديدها له في الكلاس، و بالتالي يمكننا إدراج أي بيانات للـ Object و إستعراضها، اي يمكنني ان انحدد لهذا الحاسوب الجديد الاسم الخاص به، و نوع الram و نوع motherboard، و يمكنني ايضا ان اقوم بتشغيله او إطفائه .
و يمكننا إعطاء القيمة التي نريد لكل عناصر الـ Object عن طريق تحديد العنصر ثم الخاصية التي نريد إدراجها له ثم القيمة بعدها على الشكل التالي :
تذكر ان الشفرة البرمجية هي شفرة بلغة الجافا، أساسيات الـ OOP تختلف من لغة لأخرى كما أشرنا، بالطريقة التالية، و بتحديد قيم الكلاس من خلال العنصر الأول Acer، فقد أصبح لدي حاسوب يحمل إسم Acer ذو id قيمته 1 و إسم Acer Aspir و غيرها من القيم، كما يمكنني التحكم في إيقافه او تشغيله، و بالتالي يمكنني تمرير كل أنواع البيانات مادامت محددة في الكلاس الخاص بالـ Computer للعنصر و التحكم به كما أريد .
ببساطة، قمنا في هذا الدرس بتحديد عنصر Object تابع للكلاس Computer و ذلك بصناعة حاسوب جديد و تمرير قيم خاصة بذلك الحاسوب قمنا بتحديدها مسبقا في الكلاس على شكل Properties و Actions في وقت سابق .
تختلف تسمية او تحديد الـ Object من لغة لأخرى ( مثالنا الأعلى بإستخدام الجافا )، فمثلا في الـ Php نقوم بصناعة Object بطريقة مختلفة قليلا كما الشكل التالي :
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$Acer -> new Computer(); |
بعد أن قمنا بصناعة Object و هو حاسوب Acer، يمكنني الآن إدراج مقومات و خصائص هذا الحاسوب، و كذا الأكشن و الأفعال التي يقوم بها و تجربتها كذلك، لاحظ انه فور تحديد العنصر و وضع ( . ) من أجل إستخدام خصائصه، يُظهر الـ IDE الأشياء التالية :
إن امعنت النظر و راجعت الكلاس الأصلي الذي صنعناه للحاسوب، فقد أعطيناه من الخصائص الـ id و الـ motherBoardModel و كذا الـ name و الـ Ram Model كخصائص او Fields، ثم أعطيناه turnOff و turnOn كأفعال او Actions يقوم بها الحاسوب، فور صناعتنا للـ Object الذي يحدد لنا حاسوب جديد من نوع Acer، يقوم ذلك العنصر بأخذ و حمل كل الخصائص و الأفعال التي تم تحديدها له في الكلاس، و بالتالي يمكننا إدراج أي بيانات للـ Object و إستعراضها، اي يمكنني ان انحدد لهذا الحاسوب الجديد الاسم الخاص به، و نوع الram و نوع motherboard، و يمكنني ايضا ان اقوم بتشغيله او إطفائه .
و يمكننا إعطاء القيمة التي نريد لكل عناصر الـ Object عن طريق تحديد العنصر ثم الخاصية التي نريد إدراجها له ثم القيمة بعدها على الشكل التالي :
تذكر ان الشفرة البرمجية هي شفرة بلغة الجافا، أساسيات الـ OOP تختلف من لغة لأخرى كما أشرنا، بالطريقة التالية، و بتحديد قيم الكلاس من خلال العنصر الأول Acer، فقد أصبح لدي حاسوب يحمل إسم Acer ذو id قيمته 1 و إسم Acer Aspir و غيرها من القيم، كما يمكنني التحكم في إيقافه او تشغيله، و بالتالي يمكنني تمرير كل أنواع البيانات مادامت محددة في الكلاس الخاص بالـ Computer للعنصر و التحكم به كما أريد .
خلاصة الدرس :
ببساطة، قمنا في هذا الدرس بتحديد عنصر Object تابع للكلاس Computer و ذلك بصناعة حاسوب جديد و تمرير قيم خاصة بذلك الحاسوب قمنا بتحديدها مسبقا في الكلاس على شكل Properties و Actions في وقت سابق .
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class main { | |
public static void main(String args[]) | |
{ | |
Computer Acer = new Computer(); | |
// Set Values : | |
Acer.id = 1; | |
Acer.name = "Acer Aspire"; | |
Acer.motherBoardModel = "Motherboard1"; | |
Acer.ramModel = "Ram1"; | |
// Call Actions : | |
Acer.turnOn(); | |
Acer.turnOff(); | |
} | |
} | |
جزبت خيرا