لتلخيص المحتوى السابق، يشير الكائن إلى شيء معين، ويشير الفصل إلى نوع الكائن. يمكن أن تحتوي الكائنات على حالات وإجراءات، أي أعضاء البيانات والأساليب.
حتى الآن، كان أعضاء البيانات والأساليب مفتوحة لكل من المستخدمين الداخليين والخارجيين. داخل الكائن، نستخدم هذا لاستدعاء أعضاء بيانات الكائن وأساليبه. خارج الكائن، على سبيل المثال، عندما نستدعي الكائن في فئة أخرى، يمكننا استخدام أعضاء object.data وobject.method() لاستدعاء أعضاء بيانات الكائن وأساليبه.
سنقوم بتغليف أعضاء الكائن (يشمل الأعضاء أعضاء البيانات والأساليب)، مما يسمح باستدعاء بعض الأعضاء فقط من الخارج. باستخدام التغليف، يمكننا تحسين سهولة الاستخدام وأمن الكائنات.
التغليف والواجهة
التغليف هو مصطلح شائع لأجهزة الكمبيوتر، وهو ما يعني الاحتفاظ بواجهة خارجية محدودة وإخفاء تفاصيل تنفيذ محددة. على سبيل المثال، في بنية Linux، يمكنك أن ترى أن نظام التشغيل Linux يقوم بتغليف التفاصيل المحددة للأجهزة الأساسية، مع الاحتفاظ فقط بواجهة استدعاء النظام. المستخدم خارج الحزمة ولا يمكنه إجراء العمليات المطلوبة إلا من خلال الواجهة.
التغليف شائع جدًا في الحياة. على سبيل المثال، هنا مصباح يدوي قابل لإعادة الشحن:
حتى بدون قراءة الدليل، يمكن للمستخدم تخمين تشغيل هذا المصباح اليدوي: التبديل والشحن. يستخدم هذا المصباح غلافًا بلاستيكيًا لإخفاء التفاصيل الداخلية التي لا يحتاج المستخدمون إلى لمسها، مما يترك واجهتين فقط، المفتاح والقابس الكهربائي. وباستخدام هاتين الواجهتين، يكون المستخدمون كافيين لاستخدام الوظائف التي تم تصميم المنتج لتحقيقها. إذا تم الكشف عن جميع التفاصيل للمستخدم في نفس الوقت، فسيشعر المستخدم بالإرهاق من المنتج (مثل جهاز التحكم عن بعد غير المقشور أدناه). ولذلك، التغليف يحسن سهولة استخدام المنتج.
إذا لم يتم تعبئة المنتج، فسيتم عرض العديد من تفاصيل المصباح اليدوي أو جهاز التحكم عن بعد للمستخدم: البطارية، الدائرة، المطاط المحكم، إلخ. على الرغم من أن هذا يسمح للمستخدمين بتشغيل المنتج بحرية أكبر، مثل تفريغ البطارية مباشرة، وإخراج ضوء LED، وما إلى ذلك. ومع ذلك، غالبًا ما يتحمل المستخدمون خطرًا أكبر يتمثل في إتلاف المنتج. ولذلك، التغليف يحسن سلامة المنتج.
منتج برنامج Java هو نفس المنتج اليومي. يمكن أن يحتوي الكائن على العديد من الأعضاء (أعضاء البيانات والأساليب) بداخله. يتم استخدام بعض أعضاء البيانات والأساليب داخليًا فقط. في هذا الوقت، نأمل أن يكون لدينا آلية "لتعبئة" الكائن لتغليف الكائن. وبهذه الطريقة، يمكن للمستخدمين تعلم واستخدام الواجهات الخارجية بسهولة أكبر دون الحاجة إلى الاتصال بالأعضاء الداخليين.
تغليف أعضاء الكائن
تستخدم Java ثلاث كلمات رئيسية للتحكم في الرؤية الخارجية لأعضاء الكائن: عام، خاص، محمي.
1.public: العضو مرئي خارجيًا، أي أن العضو جزء من الواجهة
2.خاص: هذا العضو غير مرئي للخارج ويمكن استخدامه داخليًا فقط ولا يمكن الوصول إليه من الخارج.
(المحمية تنطوي على مفهوم الميراث، والذي سيتم مناقشته لاحقا)
دعونا أولاً نلخص الطبقة البشرية المحددة مسبقًا:
انسخ رمز الكود كما يلي:
اختبار الطبقة العامة
{
الفراغ العام الثابت الرئيسي (String[] args)
{
الإنسان aPerson = الإنسان الجديد (160)؛
System.out.println(aPerson.getHeight());
aPerson.growHeight(170);
System.out.println(aPerson.getHeight());
aPerson.repeatBreath(100);
}
}
com.classHuman
{
/**
* منشئ
*/
الإنسان العام (كثافة العمليات ح)
{
this.height = h;
System.out.println("لقد ولدت");
}
/**
*الملحقات
*/
كثافة العمليات العامة getHeight()
{
إرجاع هذا الارتفاع؛
}
/**
* متحور
*/
نمو الفراغ العام (int h)
{
this.height = this.height + h;
}
/**
* مغلفة للاستخدام الداخلي
*/
التنفس الفراغي الخاص ()
{
System.out.println("هو...هو...");
}
/**
* استدعاء التنفس ()
*/
تكرار الفراغ العام (int مندوب)
{
كثافة العمليات أنا؛
ل(i = 0; i < مندوب; i++) {
this.breath();
}
}
ارتفاع int خاص؛ // مغلف للاستخدام الداخلي
}
لا تتأثر الطرق الداخلية بالتغليف. يمكن للطرق الداخلية للإنسان استدعاء أي عضو، حتى الطول والتنفس () مضبوطين على خاص
يمكن للطرق الخارجية استدعاء الأعضاء العموميين فقط. عندما نكون خارج نطاق البشر، كما هو الحال في الاختبار، يمكننا فقط الاتصال بالأعضاء المحددين على أنهم عامون في الإنسان، ولكن ليس الأعضاء المحددين على أنهم خاصون.
من خلال التغليف، تحتفظ الفئة البشرية فقط بالطرق التالية كواجهات:
1.getHeight()
2.growHeight()
3.repBreath()
يمكننا تمثيل الطبقة البشرية وواجهتها على النحو التالي:
""جهاز التحكم عن بعد مع الحافظة""
إذا فرضنا ارتفاع الاتصال من الرئيسي:
انسخ رمز الكود كما يلي:
System.out.println(aPerson.height);
ستكون هناك رسالة الخطأ التالية:
انسخ رمز الكود كما يلي:
Test.java:6: الارتفاع له وصول خاص في الإنسان
System.out.println(aPerson.height);
^
خطأ واحد
بيب، لقد تعرضت لصدمة كهربائية! لا يمكن استدعاء العضو الذي تم إعلانه كعضو خاص خارجيًا.
في مواصفات Java المعتادة، يتم تعيين أعضاء البيانات الذين يعبرون عن الحالة (مثل الارتفاع) على خاص. يجب إجراء التعديلات على أعضاء البيانات من خلال الطرق التي توفرها الواجهة (مثل getHeight() وgrowHeight()). تلعب هذه المواصفات دورًا في حماية البيانات. لا يمكن للمستخدمين تعديل البيانات مباشرة ويجب عليهم استخدام الأساليب المقابلة لقراءة البيانات وكتابتها. يمكن لمصممي الفصل إضافة مواصفات استخدام البيانات إلى أساليب الواجهة.
تغليف الطبقة
في ملف .java، يوجد ويمكن أن يكون هناك فئة واحدة فقط تحتوي على الكلمة الأساسية العامة، مثل فئة الاختبار أعلاه. لذلك، من أي فئة أخرى، يمكننا أن نسمي هذه الفئة مباشرة. الطبقة البشرية ليس لديها كلمة رئيسية. في وقت سابق، لم يكن لدى أعضاء كائناتنا كلمات رئيسية. يمثل هذا النقص في الكلمات الرئيسية أيضًا نوعًا من الرؤية، وهو ما سأتناوله بالتفصيل عند شرح الحزم.
تدرب على تغليف فئة Torch لتمثيل مصباح يدوي. الواجهة لديها التبديل والشحن. الأعضاء الداخلية لديهم السلطة.
تلخيص
التغليف، واجهة
خاص، عام