التجريد هو واحد من ال مفاهيم البرمجة الشيئية الأساسية. يحدد التجريد نموذجًا لإنشاء مكون تطبيق. تعتمد تنفيذ التجريد على الميزات والعمليات الخاصة باللغة.
1. ما هو التجريد؟
التجريد هو عملية إخفاء التفاصيل الداخلية للتطبيق عن العالم الخارجي. يُستخدم التجريد لوصف الأشياء بشكل بسيط. يُستخدم لإنشاء حدود بين التطبيق وبرامج العميل.
2. التجريد في الحياة الواقعية
التجريد موجود في معظم آلات الحياة الواقعية.
- سيارتك هي مثال رائع على التجريد. يمكنك تشغيل السيارة عن طريق تحريك المفتاح أو الضغط على زر التشغيل. لا يلزمك معرفة كيف يتم تشغيل المحرك أو ما هي جميع المكونات التي تحتويها السيارة. يتم إخفاء تنفيذ السيارة والمنطق المعقد تمامًا عن المستخدم.
- يمكننا تسخين طعامنا في الميكروويف. نضغط على بعض الأزرار لتعيين المؤقت ونوع الطعام. في النهاية، نحصل على وجبة ساخنة ولذيذة. تم إخفاء تفاصيل الميكروويف عنا. تم منحنا الوصول إلى الوظيفة بطريقة بسيطة جدًا.
3. التجريد في OOPS
الكائنات هي كتل بناء البرمجة الموجهة للكائنات. يحتوي الكائن على بعض الخصائص والطرق. يمكننا إخفاءها من العالم الخارجي من خلال المعرفات التي تحدد الوصول. يمكننا توفير الوصول فقط للوظائف والخصائص المطلوبة للبرامج الأخرى. هذه هي الإجراءات العامة لتنفيذ التجريد في OOPS.
4. ما هي أنواع التجريد المختلفة؟
هناك نوعان من التجريد.
- التجريد البياناتي
- التجريد العملي
4.1) التجريد البياناتي
عندما لا تكون بيانات الكائن مرئية للعالم الخارجي، فإنه يخلق تجريد البيانات. إذا لزم الأمر، يتم توفير الوصول إلى بيانات الكائنات من خلال بعض الطرق.

4.2) التجريد العملي
لا نحتاج إلى تقديم تفاصيل حول جميع وظائف كائن. عند إخفاء التنفيذ الداخلي للوظائف المختلفة المشاركة في عملية المستخدم، فإنه يخلق تجريد العملية.

5. التجريد في جافا
يتم تنفيذ التجريد في جافا من خلال الواجهات والفئات المجردة. يتم استخدامها لإنشاء تنفيذ أساسي أو عقدة لفئات التنفيذ الفعلية. Car.java: واجهة أساسية أو فئة مجردة
package com.journaldev.oops.abstraction;
public interface Car {
void turnOnCar();
void turnOffCar();
String getCarType();
}
ManualCar.java, AutomaticCar.java: فئات التنفيذ لـ Car.
package com.journaldev.oops.abstraction;
public class ManualCar implements Car {
private String carType = "Manual";
@Override
public void turnOnCar() {
System.out.println("turn on the manual car");
}
@Override
public void turnOffCar() {
System.out.println("turn off the manual car");
}
@Override
public String getCarType() {
return this.carType;
}
}
package com.journaldev.oops.abstraction;
public class AutomaticCar implements Car {
private String carType = "Automatic";
@Override
public void turnOnCar() {
System.out.println("turn on the automatic car");
}
@Override
public void turnOffCar() {
System.out.println("turn off the automatic car");
}
@Override
public String getCarType() {
return this.carType;
}
}
برنامج المستخدم: دعنا نلقي نظرة على برنامج اختبار حيث ستستخدم وظائف السيارة.
package com.journaldev.oops.abstraction;
public class CarTest {
public static void main(String[] args) {
Car car1 = new ManualCar();
Car car2 = new AutomaticCar();
car1.turnOnCar();
car1.turnOffCar();
System.out.println(car1.getCarType());
car2.turnOnCar();
car2.turnOffCar();
System.out.println(car2.getCarType());
}
}
يعرف برنامج العميل فقط عن السيارة والوظائف التي توفرها السيارة. تفاصيل التنفيذ الداخلي مخفية عن برنامج العميل. المراجع: ويكيبيديا, مستندات أوراكل
Source:
https://www.digitalocean.com/community/tutorials/what-is-abstraction-in-oops