تعرف علي الفئة Class و الكائن Object؟ مع نظرة على الوراثة Inheritance

اذهب الى الأسفل

تعرف علي الفئة Class و الكائن Object؟ مع نظرة على الوراثة Inheritance Empty تعرف علي الفئة Class و الكائن Object؟ مع نظرة على الوراثة Inheritance

مُساهمة من طرف السنى في الثلاثاء أكتوبر 02, 2018 3:24 pm

بسبم الله الرحمن الرحيم

هذا المقال نقلا عن مصطفى الطيب 

في لغة جافا لا يوجد أهم من أن تتعرف على مفاهيم البرمجة كائنية المنحى Object Oriented Programming، وأهم مفهوم من مفاهيم البرمجة كائنية المنحى هو مفهوم الفئة Class أو ما تُدعى أيضاً بالصنف.

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

ما هو مقابل Class في اللغة العربية؟

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

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

هذا يعني أن هذا النوع من البرمجة يعتمد على الكائنات. والكائنات تعني بالمعنى البسيط كل شيءٍ لهُ كينونة (أنا وأنت، الحاسوب والجوال، الطاولة والموقع والشركة …إلخ).

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

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

والآن:

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

ولنأخذ مثالاً:


إذا أردت أن تُنشئ كائناً لصديقك في لغة الجافا فيجب أن تنشئ فئته أولاً، ما هي فئة صديقك؟ فئتُه إنسان. وإذا أردت أن تُنشئ فئةً لحاسبك ما هي فئتها؟ جهازٌ كهربائي. و هكذا تستمرُّ الحكاية.

شرح الفئة Class في لغة جافا منطقياً


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

تعرف علي الفئة Class و الكائن Object؟ مع نظرة على الوراثة Inheritance %D8%A7%D9%84%D9%81%D8%A6%D8%A7%D8%AA-%D8%A7%D9%84%D8%A3%D8%B5%D9%86%D8%A7%D9%81-%D9%88-%D8%A7%D9%84%D9%83%D8%A7%D8%A6%D9%86%D8%A7%D8%AA-%D9%81%D9%8A-%D8%A7%D9%84%D8%AC%D8%A7%D9%81%D8%A7-


ما هي الفئات (الأصناف) Classes:

كما ترى بالمثال بالأعلى، فإنه عملية تصنيف عادية لكل مجموعة من الكائنات بحيث تشترك في أحد شيئين على الأقل:

لها أفعال متشابهة (تسير، تأكل، تعيش مع الإنسان) هذه الأفعال تُحول في الفئة إلى دوال Methods.

لها صفات متشابهة (عمر، عدد أرجل، إسم، عدد أسنان)، هذه الصفات تُحول في الفئة إلى صفاتAttributes.


أعلم أنك تتسائل الآن عن الدوال و الصفات، سأشرحها لك لاحقاً.

وبما أنك الآن تستطيعُ تقسيم الكائنات إلى فئات فدعني أريك كيف تُنشئ الفئة في لغة جافا.

كيف تُنشئ فئة Class في جافا؟


إنشاء الفئة له هيكل عام. وهو ما تراهُ في الكود التالي:
الكود:
public class ClassName {

}


_public: هي كلمة (إختيارية) لتحديد صلاحية الوصول إلى هذه الفئة من قبل الفئات والحزم packages الأخرى.
_class: هي كلمة لتعريف الفئة، و ما بعدها يكون إسم الفئة.
_ClassName: إسم الفئة، ويوصى أن يبدأ دائماً بحرف كبير Capital.

لنأخذ مثالاً، فئة الصديق، ستكون شفرته المصدرية كما يلي :

الكود:
public class Friend {


  }




و فئة القريب كما يلي

الكود:
public class Relative {


  }



والآن، ماذا عن الأفعال Methods و الصفات Attributes؟

التعامل مع الأفعال و الصفات بسيط جداً، خصوصاً عندما يتعلق الأمر باللغة العربية.

الأفعال Methods
لنأخذ مثالاً، إذا أردت أن تُنشئ الأفعال الخاصة بالإنسان فما عليك إلا التفكير في الأفعال التي يستطيع كُل إنسان تأديتها:

يتنفس.
يأكل.
يمشي.
وهكذا…

لاحظ أن جميع هذه الأفعال هي في الإعراب أفعال مضارعة.

هذه الأفعال تمثل الجزء الأول من الملامح العامة للفئة التي تعمل على إنشائها. والآن لنرى كيف يمكنك إدخال هذه الأفعال في الفئة؟

ما عليك إلا كتابة دالة لكل فعل يستطيع الإنسان فعله، وهو كما يلي في هذا المثال للإنسان.

الكود:
public class Human {
    public void think(){
        
    }
    
    public void eat(){
        
    }
    
    public void walk(){
        
    }
}

الصفات Attributes
أما  الصفات فأمرها أبسط من الأفعال، وهي في اللغة العربية إما أسماء أو صفات للفئة التي ترغب بإنشائها.

أمثلة صفات لفئة الإنسان:

العمر.
لون العيون.
القدرة على قيادة السيارات.
وهكذا..

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

مثال لفئة الإنسان:


الكود:
public class Human {
    
    private int age;
    private String eyesColor;
    private boolean canDriverCar;
    
    public void think(){
        
    }
    
    public void eat(){
        
    }
    
    public void walk(){
        
    }
}

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

كيف تُنشئ الكائن Object بعد أن إنشاء الفئة Class؟


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

كُل كائن تُنشئه في لغة الجافا يضم تلقائياً جميع الأسطر البرمجية المكتوبة في فئته.

مثلاً لإنشاء كائن لصديقك أحمد ما عليك إلا كتابة الشفرة البرمجية التالية:

الكود:
Human Ahmed = new Human();

بهذه العبارة البسيطة تكون قد أنشأت كائناً يسمى أحمد يمتلك الخواص التالية:

يتنفس.
يأكل.
يمشي.
له عمر.
له لون عيون.
إما يستطيع أن يقود السيارة أو لا.


ماذا عن الوراثة Inheritance وعلاقتها بالفئات والكائنات؟

المعنى الشائع للوراثة هو انتقال الصفات الجينية من الآباء إلى الجيل الجديد، وهو معنى مشابه تماماً للمعنى المقصود في لغة جافا.

الوراثة في جافا تعني إنتقال الصفات و الأفعال الخاصة بفئات الآباء إلى فئات الأبناء.

عد معي إلى المثال السابق
تعرف علي الفئة Class و الكائن Object؟ مع نظرة على الوراثة Inheritance %D8%A7%D9%84%D9%81%D8%A6%D8%A7%D8%AA-%D8%A7%D9%84%D8%A3%D8%B5%D9%86%D8%A7%D9%81-%D9%88-%D8%A7%D9%84%D9%83%D8%A7%D8%A6%D9%86%D8%A7%D8%AA-%D9%81%D9%8A-%D8%A7%D9%84%D8%AC%D8%A7%D9%81%D8%A7-

كُنتَ قد أنشأت مسبقاً فئة للإنسان، و أصبحت مُعدّة للإستخدام. صحيح؟

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

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

هل ننتقل إلى التجربة بالمثال؟ هيا بنا.

كما تعلم لإنشاء فئة للأقارب ما عليك إلا كتابة الشفرة البرمجية التالية:

الكود:
public class Relative {
    
}

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

الكود:
public class Relative extends Human {
    
}

هل لاحظت عبارة extends Human بعد إسم الفئة Relatives؟ هذه العبارة تعني أن القريب يرث جميع الأفعال والصفات الخاصة بالإنسان.

أي أن هذه الجملة البسيطة تجعلك كأنك كتبت هذه الشفرة البرمجية

الكود:
public class Relative {
    
    private int age;
    private String eyesColor;
    private boolean canDriverCar;
    
    public void think(){
        
    }
    
    public void eat(){
        
    }
    
    public void walk(){
        
    }
}

هكذا تكون قد جمعت المفاهيم الضرورية للفئات و الكائنات والوراثة. أليست لغة جافا رائعة عندما تطبق مفاهيم البرمجة كائنية المنحى؟
السنى
السنى
........
........

تاريخ التسجيل : 18/02/2011
المساهمات : 233
النقاط : 441
التقيم : 26
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى