مفاهيم البرمجة الكائنية في جافا – مثال على مفاهيم البرمجة الكائنية

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

ما هو نموذج البرمجة الموجهة نحو الكائنات؟

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

مفاهيم البرمجة الموجهة نحو الكائنات

المفاهيم الرئيسية لبرمجة الكائنات هي:

  1. التجريد
  2. التغليف
  3. التعددية
  4. التوريث
  5. الترابط
  6. التجميع
  7. التكوين

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

1. التجريد

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

قراءة إضافية: ما هو التجريد في OOPS؟

2. التجزئة

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

3. التعددية

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

public class Circle {

	public void draw(){
		System.out.println("Drwaing circle with default color Black and diameter 1 cm.");
	}
	
	public void draw(int diameter){
		System.out.println("Drwaing circle with default color Black and diameter"+diameter+" cm.");
	}
	
	public void draw(int diameter, String color){
		System.out.println("Drwaing circle with color"+color+" and diameter"+diameter+" cm.");
	}
}

هنا لدينا العديد من طرق draw ولكن لديها سلوك مختلف. هذه حالة من فرض الطرق لأن اسم جميع الطرق هو نفسه والوسائط مختلفة. في هذه الحالة، سيكون المترجم قادرًا على تحديد الطريقة التي يجب استدعاؤها أثناء وقت الترجمة، ولهذا يُسمى بوليمورفية الوقت الترجمة. يتم تنفيذ بوليمورفية الوقت التشغيل عندما يكون لدينا علاقة “IS-A” بين الكائنات. يُسمى هذا أيضًا بتجاوز الطريقة لأنه يجب على الفئة الفرعية تجاوز طريقة الفئة الأساسية لبوليمورفية الوقت التشغيل. إذا كنا نعمل في سياق الفئة الأساسية، يتم تحديد الفئة التنفيذية الفعلية في وقت التشغيل. المترجم غير قادر على تحديد أي فئة ستتم استدعاء طريقتها. يتم اتخاذ هذا القرار في وقت التشغيل، ولهذا يُسمى بوليمورفية الوقت التشغيل أو التوجيه الدينامي للطريقة.

package com.journaldev.test;

public interface Shape {

	public void draw();
}
package com.journaldev.test;

public class Circle implements Shape{

	@Override
	public void draw(){
		System.out.println("Drwaing circle");
	}

}
package com.journaldev.test;

public class Square implements Shape {

	@Override
	public void draw() {
		System.out.println("Drawing Square");
	}

}

Shape هي الفئة الأساسية وهناك فئتان فرعيتان هما Circle و Square. فيما يلي مثال على بوليمورفية الوقت التشغيل.

Shape sh = new Circle();
sh.draw();

Shape sh1 = getShape(); //some third party logic to determine shape
sh1.draw();

في الأمثلة أعلاه، لا يعرف مترجم جافا الفئة التنفيذية الفعلية لـ Shape التي ستستخدم في وقت التشغيل، ولهذا يكون هناك بوليمورفية الوقت التشغيل.

4. الوراثة

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

package com.journaldev.java.examples1;

class SuperClassA {

	public void foo(){
		System.out.println("SuperClassA");
	}
	
}

class SubClassB extends SuperClassA{
		
	public void bar(){
		System.out.println("SubClassB");
	}
	
}

public class Test {
	public static void main(String args[]){
		SubClassB a = new SubClassB();
		
		a.foo();
		a.bar();
	}
}

5. الارتباط

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

التجميع

التجميع هو نوع خاص من الارتباط. في التجميع، تكون الكائنات لها دورة حياة خاصة بها ولكن هناك ملكية. عندما يكون هناك علاقة “لديه” بين الكائنات ويوجد ملكية، فإنها حالة من التجميع.

6. التكوين

التكوين هو حالة خاصة من التجميع. التكوين هو شكل أكثر تقييدًا للتجميع. عندما لا يمكن للكائن المحتوى في علاقة “HAS-A” أن يكون موجودًا بمفرده ، فإنه في هذه الحالة يتعلق الأمر بالتكوين. على سبيل المثال ، المنزل لديه غرفة. هنا لا يمكن للغرفة أن تكون موجودة بدون المنزل. يُقال إن التكوين هو أفضل من التوريث ، اقرأ المزيد في التكوين مقابل التوريث.

قراءة إضافية: التكوين في جافا

هذا كل شيء لملخص سريع حول مفاهيم OOPS.

يمكنك الاطلاع على المزيد من أمثلة برامج جافا على موقعنا مستودع GitHub.

المراجع: https://docs.oracle.com/javase/tutorial/java/concepts/

Source:
https://www.digitalocean.com/community/tutorials/oops-concepts-java-example