By using this site, you agree to the Privacy Policy and Terms of Use.
موافق
عرب فلاترعرب فلاتر
  • Dart
  • Widgets
  • Packages
  • Tutorials
  • Flutter Roadmap
  • تثبيت Dart
  • تثبيت Flutter
قراءة: الدرس 45: شرح الـ Abstract Class في لغة دارت (Abstract Class in Dart)
شارك
تسجيل الدخول
إشعار أظهر المزيد
Aa
عرب فلاترعرب فلاتر
Aa
  • Dart
  • Widgets
  • Packages
  • Tutorials
  • Flutter Roadmap
  • تثبيت Dart
  • تثبيت Flutter
Search

أقسام الموقع

استكشف جميع أقسام الموقع
قسم Dart في موقع عرب فلاتر

Dart

59 مقالات
قسم Widgets في موقع عرب فلاتر

Widgets

104 مقالات
قسم Packages في موقع عرب فلاتر

Packages

19 مقالات
قسم Tutorials في موقع عرب فلاتر

Tutorials

22 مقالات

أخر المواضيع

استكشف أخر المواضيع المنشورة
شرح الـ Event Loop في Flutter وجعل التطبيق لا يتوقف أبدًا
Tutorials

شرح الـ Event Loop في Flutter وجعل التطبيق لا يتوقف أبدًا

5
حل مشكلة التوافق بين Java و Kotlin و Gradle في فلاتر
Tutorials

حل مشكلة التوافق بين Java و Kotlin و Gradle في فلاتر

10
أفضل الـ Packages في Flutter لتسريع تطوير التطبيقات
Tutorials

أفضل الـ Packages في Flutter لتسريع تطوير التطبيقات

18
لديك حساب موجود؟ تسجيل الدخول
  • Dart
  • Widgets
  • Packages
  • Tutorials
  • Flutter Roadmap
  • تثبيت Dart
  • تثبيت Flutter
© جميع الحقوق محفوظة موقع عرب فلاتر 2023
عرب فلاتر > Dart > الدرس 45: شرح الـ Abstract Class في لغة دارت (Abstract Class in Dart)
Dart

الدرس 45: شرح الـ Abstract Class في لغة دارت (Abstract Class in Dart)

عبدالله يوسف
أخر تحديث 2024/11/15
بواسطة عبدالله يوسف اضف تعليق 6 دقيقة للقراءة 4242 مشاهدات 3
شارك
شرح الـ Abstract Class في لغة دارت (Abstract Class in Dart)
شرح الـ Abstract Class في لغة دارت (Abstract Class in Dart)
شارك

خدماتنا البرمجية – عرب فلاتر🚀

خدماتنا البرمجية – عرب فلاتر

في عالم لغة برمجة دارت (Dart)، يأتي الـ Abstract Class كأداة قوية لتعريف كلاس لا يمكن إنشاء كائنات منه مباشرة. يُستخدم الـ Abstract Class لتحديد سلوك يمكن توريثه واستخدامه وتوريثه من قبل كلاسات أخرى في التطبيق. يعتمد هذا الأسلوب على الكلمة المفتاحية “abstract” التي تُستخدم لتحديد الكلاس بأنه مجرد.

المحتويات
طريقة كتابة الـ Abstract Class في دارت:الوظيفة المجردة (Abstract Method):لماذا نحتاج للـ Abstract Class؟الـ Constructor في الـ Abstract Class:أمثلة على الـ Abstract Class في دارت:مثال 1: الـ Abstract Class في Dartمثال 2: الـ Abstract Class في Dartمثال 3: الـ Constructor في الـ Abstract Classالنقاط الرئيسية لتذكرها:

طريقة كتابة الـ Abstract Class في دارت:

يتم تعريف الـ Abstract Class باستخدام الجملة التالية:

abstract class ClassName {
  // جسم الـ Abstract Class
  method1();
  method2();
}

الوظيفة المجردة (Abstract Method):

الوظيفة المجردة هي دالة يتم تعريفها بدون تنفيذ. يتم تعريفها باستخدام فاصلة منقوطة (;) بدلاً من جسم الدالة.

abstract class ClassName {
  // جسم الـ Abstract Class
  method1();
  method2();
}

لماذا نحتاج للـ Abstract Class؟

يجب على الكلاسات المشتقة من الـ Abstract Class تنفيذ جميع الوظائف المجردة الموجودة في الـ Abstract Class. ويُستخدم الـ Abstract Class لتحقيق مفهوم التجريد في لغة Dart.


الـ Constructor في الـ Abstract Class:

لا يمكنك إنشاء كائن من الـ Abstract Class. ومع ذلك، يمكنك تعريف الـ Constructor في الـ Abstract Class. يتم استدعاء الـ Constructor الخاص بالـ Abstract Class عند إنشاء كائن من كلاس مشتق.


أمثلة على الـ Abstract Class في دارت:

مثال 1: الـ Abstract Class في Dart

في هذا المثال، لدينا Abstract Class يسمى “Vehicle” يحتوي على دالتين مجردتين وهما “start” و “stop”، ولدينا كلاسين مشتقين هما “Car” و “Bike” يتم تنفيذ الدوال المجردة فيهما وتعريفهما لطباعة رسالة.

abstract class Vehicle {
  // دالة مجردة
  void start();

  // دالة مجردة
  void stop();
}

class Car extends Vehicle {
  // تنفيذ دالة start()
  @override
  void start() {
    print('تم تشغيل السيارة');
  }

  // تنفيذ دالة stop()
  @override
  void stop() {
    print('تم إيقاف السيارة');
  }
}

class Bike extends Vehicle {
  // تنفيذ دالة start()
  @override
  void start() {
    print('تم تشغيل الدراجة');
  }

  // تنفيذ دالة stop()
  @override
  void stop() {
    print('تم إيقاف الدراجة');
  }
}

void main() {
  Car car = Car();
  car.start();
  car.stop();

  Bike bike = Bike();
  bike.start();
  bike.stop();
}

نتيجة الكود:

تم تشغيل السيارة
تم إيقاف السيارة
تم تشغيل الدراجة
تم إيقاف الدراجة

مثال 2: الـ Abstract Class في Dart

في هذا المثال، لدينا Abstract Class يسمى “Shape” تحتوي على دالة مجردة تسمى “area”، ولدينا كلاسين مشتقين هما “Rectangle” و “Triangle” يتم تنفيذ دالة “area” في كل منهما لحساب مساحة المستطيل والمثلث على التوالي.

abstract class Shape {
  int dim1, dim2;

  // الـ Constructor
  Shape(this.dim1, this.dim2);

  // دالة مجردة
  void area();
}

class Rectangle extends Shape {
  // الـ Constructor
  Rectangle(int dim1, int dim2) : super(dim1, dim2);

  // تنفيذ دالة area()
  @override
  void area() {
    print('مساحة المستطيل هي ${dim1 * dim2}');
  }
}

class Triangle extends Shape {
  // الـ Constructor
  Triangle(int dim1, int dim2) : super(dim1, dim2);

  // تنفيذ دالة area()
  @override
  void area() {
    print('مساحة المثلث هي ${0.5 * dim1 * dim2}');
  }
}

void main() {
  Rectangle rectangle = Rectangle(10, 20);
  rectangle.area();

  Triangle triangle = Triangle(10, 20);
  triangle.area();
}

نتيجة الكود:

مساحة المستطيل هي 200
مساحة المثلث هي 100.0

مثال 3: الـ Constructor في الـ Abstract Class

في هذا المثال أدناه، هناك Abstract Class يُسمى “Bank” يحتوي على Constructor يأخذ معه مُعاملين وهما الاسم والسعر. يوجد في هذا الكلاس أيضًا دالة مجردة تُسمى “interest()”، وتُمثل هذه الدالة كميزة مجردة. الكلاسات الفرعية هي NBE و CIB ينفذان الدالة المجردة ويعيدان تعريفها لطباعة معدل الفائدة.

abstract class Bank {
  String name;
  double rate;

  // Constructor
  Bank(this.name, this.rate);

  // Abstract method
  void interest();

  //Non-Abstract method: It have an implementation
  void display() {
    print('اسم البنك: $name');
  }
}

class NBE extends Bank {
  // Constructor
  NBE(String name, double rate) : super(name, rate);

  // Implementation of interest()
  @override
  void interest() {
    print('معدل الفائدة لبنك NBE هو $rate');
  }
}

class CIB extends Bank {
  // Constructor
  CIB (String name, double rate) : super(name, rate);

  // Implementation of interest()
  @override
  void interest() {
    print('معدل الفائدة لبنك CIB هو $rate');
  }
}

void main() {
  NBE nbe = NBE('NBE', 8.4);
  CIB cib = CIB ('CIB ', 7.3);

  nbe.interest();
  cib.interest();
  cib.display();
}

نتيجة الكود:

معدل الفائدة لبنك NBE هو 8.4
معدل الفائدة لبنك CIB هو 7.3
اسم البنك: CIB


النقاط الرئيسية لتذكرها:

  • يمكن تعريف الـ Constructor في الـ Abstract Class.
  • يتم استدعاء الـ Constructor الخاص بالـ Abstract Class عند إنشاء كائن من الكلاس المشتق.
  • يمكن تنفيذ الوظائف المجردة الأخرى في الكلاس المشتق عند الحاجة.
  • يمكن للكلاس المشتق تعريف واستخدام وظائف إضافية خاصة به.


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

Arab Flutter Community 🚀

انضم إلى مجتمع Arab Flutter
شارك هذا المقال
فيسبوك تويتر Whatsapp Whatsapp لينكد ان تلغرام نسخ الرابط
المقال السابق شرح مفهوم الـ Enum في لغة دارت (Enum in Dart) الدرس 44: شرح مفهوم الـ Enum في لغة دارت (Enum in Dart)
المقال التالي شرح الـ Interface في لغة دارت (Interface in Dart) الدرس 46: شرح الـ Interface في لغة دارت (Interface in Dart)
Avatar of عبدالله يوسف
بواسطة عبدالله يوسف Founder and CEO at ArabFlutter
تابع:
أنا عبدالله يوسف، مهندس مصري ومؤسس موقع عرب فلاتر، ملهم بشغف التكنولوجيا والإبداع. كمصمم مواقع ومبرمج تطبيقات موبايل باستخدام Flutter، أستمتع بخلق عوالم رقمية فريدة ومبتكرة. تتجلى مواهبي في تصميم وتطوير واجهات مستخدم تفاعلية، حيث يمزج الجانب الجمالي بالدقة الهندسية. ما يميزني هو إلمامي الواسع بتقنيات البرمجة والتصميم، ومقدرتي على تطوير تطبيقات متنوعة عبر منصات مختلفة. أعتبر نفسي مبدعًا وملتزمًا، حيث أسعى دائمًا لتحقيق تحسين مستمر في مهاراتي وتقنياتي. أستمتع بتحديات العمل الجماعي وأؤمن بأهمية الابتكار والتطور. بفضل إبداعي والتزامي، أسعى لتقديم حلول فعّالة تلبي توقعات العملاء وتفوق عن المألوف.
اترك تعليقا اترك تعليقا

اترك تعليقاً إلغاء الرد

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

شرح الـ Event Loop في Flutter وجعل التطبيق لا يتوقف أبدًا
شرح الـ Event Loop في Flutter وجعل التطبيق لا يتوقف أبدًا
Tutorials
حل مشكلة التوافق بين Java و Kotlin و Gradle في فلاتر
حل مشكلة التوافق بين Java و Kotlin و Gradle في فلاتر
Tutorials
أفضل الـ Packages في Flutter لتسريع تطوير التطبيقات
أفضل الـ Packages في Flutter لتسريع تطوير التطبيقات
Tutorials
طريقة انشاء المجلدات باستخدام Dart
طريقة انشاء المجلدات باستخدام كود Dart تلقائيًا
Tutorials

مقالات ذات الصلة

اطلع على المزيد من المقالات المتعلقة بهذا الموضوع!
شرح العوازل في لغة دارت (Isolates in Dart)
Dart

شرح العوازل في لغة دارت (Isolates in Dart)

8
شرح الـ Stream في لغة دارت (Stream in Dart)
Dart

الدرس 57: شرح الـ Stream في لغة دارت (Stream in Dart)

8
شرح عبارات async & await في لغة دارت (Dart)
Dart

الدرس 56: شرح عبارات async & await في لغة دارت (Dart)

6
شرح مفهوم الـ Future في لغة دارت (Future In Dart)
Dart

الدرس 55: شرح مفهوم الـ Future في لغة دارت (Future In Dart)

6
شرح مفهوم الـ Asynchronous في لغة دارت (Dart)
Dart

الدرس 54: شرح مفهوم الـ Asynchronous في لغة دارت (Dart)

6
10 تمارين محلولة على Null Safety في لغة دارت Dart
Dart

الدرس 53: 10 تمارين محلولة على Null Safety في لغة دارت Dart

5
أظهر المزيد
شعار موقع عرب فلاتر شعار موقع عرب فلاتر

About US

Quick Links

  • خدماتنا
  • من نحن
  • اتصل بنا
  • اتفاقية استخدام
  • سياسة الخصوصية
© جميع الحقوق محفوظة موقع عرب فلاتر 2023
  • Dart
  • Widgets
  • Packages
  • Tutorials
  • Flutter Roadmap
  • تثبيت Dart
  • تثبيت Flutter
adbanner
تم اكتشاف مانع إعلانات
مرحبًا، يرجى إيقاف مانع الإعلانات. الإعلانات تُساهم في دعم موقعنا وتغطية جزء من تكاليف الاستضافة وتطوير المحتوى. شكرًا لتفهمك ودعمك.
Okay, I'll Whitelist
Welcome Back!

Sign in to your account

هل نسيت كلمة المرور؟