التغليف في Java - كيفية إتقان OOPs مع التغليف؟

ستساعدك هذه المقالة حول التغليف في Java على فهم المفاهيم الأساسية لإخفاء تفاصيل التنفيذ إلى جانب العديد من الأمثلة البسيطة.

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

فيما يلي المواضيع التي سأناقشها في هذه المقالة:





يمكنك أيضًا متابعة هذا التسجيل لـ حيث يمكنك فهم الموضوعات بطريقة مفصلة مع أمثلة.



مقدمة في التغليف

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

الآن ، لنأخذ مثالاً عن كبسولة طبية ، حيث يكون الدواء آمنًا دائمًا داخل الكبسولة. وبالمثل ، من خلال التغليف ، تكون أساليب ومتغيرات الفصل مخفية وآمنة بشكل جيد.



التغليف - التشفير في Java-Edurekaيمكن تحقيق التغليف في Java عن طريق:

  • إعلان متغيرات فئة على أنها خاصة.
  • توفير طرق الإعداد العامة والجمع لتعديل قيم المتغيرات وعرضها.

الآن ، دعونا نلقي نظرة على الكود للحصول على فهم أفضل للتغليف:

فئة عامة الطالب {private String name public String getName () {return name} public void setName (اسم السلسلة) {this.name = name}} class Test {public static void main (String [] args) {Student s = new Student () s.setName ('Harry Potter') System.out.println (s.getName ())}}

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

ما هي حبة جافا

الآن دعونا نرى مثالاً آخر ونفهم التغليف بعمق. في هذا المثال ، تحتوي فئة السيارة على حقلين - الاسم والسرعة القصوى. هنا ، يتم الإعلان عن كليهما على أنهما خاصان ، مما يعني أنه لا يمكن الوصول إليهما مباشرة خارج الفصل. لدينا بعض طرق getter و setter مثل getName و setName و setTopSpeed ​​وما إلى ذلك ، ويتم الإعلان عنها على أنها عامة. تتعرض هذه الأساليب إلى 'الغرباء' ويمكن استخدامها لتغيير البيانات واستردادها من كائن السيارة. لدينا طريقة واحدة لضبط السرعة القصوى للسيارة وطريقتان للحصول على أقصى قيمة للسرعة إما في MPH أو KMHt. إذن ، هذا ما يفعله التغليف - يخفي التطبيق ويعطينا القيم التي نريدها. الآن ، دعونا نلقي نظرة على الكود أدناه.

package Edureka public class Car {private String name private double topSpeed ​​public Car () {} public String getName () {return name} public void setName (String name) {this.name = name} public void setTopSpeed ​​(double speedMPH) {topSpeed = speedMPH} getTopSpeedMPH العام المزدوج () {return topSpeed} getTopSpeedKMH () {return topSpeed ​​* 1.609344}}

هنا ، يقوم البرنامج الرئيسي بإنشاء كائن Car باسم معين ويستخدم طريقة setter لتخزين السرعة القصوى لهذا المثال. من خلال القيام بذلك ، يمكننا بسهولة الحصول على السرعة في MPH أو KMH دون الاهتمام بكيفية تحويل السرعة في فئة السيارات.

package Edureka public class مثال {public static void main (String args []) Car car = new Car () car.setName ('Mustang GT 4.8-اللتر V8') car.setTopSpeed ​​(201) System.out.println (car. getName () + 'السرعة القصوى في MPH هي' + car.getTopSpeedMPH ()) System.out.println (car.getName () + 'السرعة القصوى في KMH هي' + car.getTopSpeedKMH ())

سس ، هذه هي الطريقة التي يمكن بها تحقيق التغليف في Java. الآن ، دعنا ننتقل إلى أبعد من ذلك ونرى لماذا نحتاج إلى التغليف.

لماذا نحتاج تغليف في جافا؟

التغليف ضروري في Java للأسباب التالية:

  • يتحكم في طريقة الوصول إلى البيانات
  • يعدل الكود بناءً على المتطلبات
  • يساعدنا على تحقيق زوجين فضفاضين
  • يحقق بساطة تطبيقنا
  • كما يسمح لك بتغيير جزء الكود دون تعطيل أي وظائف أو تعليمات برمجية أخرى موجودة في البرنامج

الآن ، دعنا نفكر في مثال صغير يوضح الحاجة إلى التغليف.

class Student {int id String name} فئة عامة عرض توضيحي {public static void main (String [] args) {Student s = new Student () s.id = 0 s.name = '' s.name = null}}

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

لذلك ، كانت هذه هي المؤشرات القليلة التي تصور الحاجة إلى التغليف. الآن ، دعنا نرى بعض فوائد التغليف.

فوائد التغليف

    • إخفاء البيانات: هنا ، لن يكون لدى المستخدم أي فكرة عن التنفيذ الداخلي للفصل. حتى المستخدم لن يكون على دراية بكيفية تخزين الفصل للقيم في المتغيرات. سوف يدرك / تدرك فقط أننا نقوم بتمرير القيم إلى طريقة محدد ويتم تهيئة المتغيرات بهذه القيمة.
    • زيادة المرونة: هنا ، يمكننا جعل متغيرات الفصل للقراءة فقط أو للكتابة فقط حسب متطلباتنا. إذا كنت ترغب في جعل المتغيرات للقراءة فقط ، فعلينا حذف طرق الضبط مثل setName () ،العمر() وما إلى ذلك أو إذا كنا نرغب في جعل المتغيرات للكتابة فقط ، فعلينا حذف طرق get مثل getName () و getAge () وما إلى ذلك من البرنامج أعلاه.
    • إعادة الاستخدام: كما أنه يحسن من قابلية إعادة الاستخدام ويسهل تغييره مع المتطلبات الجديدة.

الآن بعد أن فهمنا أساسيات التغليف ، دعنا نتعمق في الموضوع الأخير من هذه المقالة ونفهم 'التغليف' بالتفصيل بمساعدة مثال في الوقت الفعلي.

مثال في الوقت الحقيقي للتغليف

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

تلفزيون فئة عامة {خاص مزدوج العرض خاص مزدوج الارتفاع خاص مزدوج شاشة خاصة int maxVolume print int volume private boolean power public Television (double width، double height، double screenSize) {this.width this.height this.screenSize = ScreenSize} public double channelTuning (قناة int) {switch (channel) {case1: return 34.56 case2: return 54.89 case3: return 73.89 case1: return 94.98} return 0} public int reductionVolume () {if (0volume) volume ++ return volume}} class test {public static void main (String args []) {Television t = new Television (11.5،7،9) t.powerSwitch () t.channelTuning (2) t.decreaseVolume () t.increaseVolume () TV. // يلقي الخطأ لأن المتغير خاص ولا يمكن الوصول إليه خارج الفصل}}

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

يقودنا هذا إلى نهاية هذه المقالة حول 'التغليف في Java'. آمل ، لقد وجدتها مفيدة وساعدت في إضافة قيمة إلى معرفتك. إذا كنت ترغب في معرفة المزيد عن Java ، يمكنك الرجوع إلى

الآن بعد أن فهمت 'ما هو التغليف في Java' ، تحقق من ملف من Edureka ، وهي شركة تعليمية موثوقة عبر الإنترنت مع شبكة تضم أكثر من 250000 متعلم راضٍ منتشرين في جميع أنحاء العالم. تم تصميم دورة تدريب وشهادة Java J2EE و SOA من Edureka للطلاب والمهنيين الذين يرغبون في أن يصبحوا مطوري Java. تم تصميم الدورة التدريبية لمنحك السبق في برمجة Java وتدريبك على مفاهيم Java الأساسية والمتقدمة جنبًا إلى جنب مع العديد من أطر Java مثل Hibernate & Spring.

لديك سؤال لنا؟ يرجى ذكر ذلك في قسم التعليقات في مدونة 'التغليف في Java' وسنعاود الاتصال بك في أقرب وقت ممكن.