By using this site, you agree to the Privacy Policy and Terms of Use.
موافق
عرب فلاترعرب فلاتر
  • Dart
  • Widgets
  • Packages
  • Tutorials
  • Flutter Roadmap
  • تثبيت Dart
  • تثبيت Flutter
قراءة: 10 تمارين محلولة على لغة دارت Dart OOP الجزء الرابع 2024
شارك
تسجيل الدخول
إشعار أظهر المزيد
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 لتسريع تطوير التطبيقات

17
لديك حساب موجود؟ تسجيل الدخول
  • Dart
  • Widgets
  • Packages
  • Tutorials
  • Flutter Roadmap
  • تثبيت Dart
  • تثبيت Flutter
© جميع الحقوق محفوظة موقع عرب فلاتر 2023
عرب فلاتر > Tutorials > 10 تمارين محلولة على لغة دارت Dart OOP الجزء الرابع 2024
Tutorials

10 تمارين محلولة على لغة دارت Dart OOP الجزء الرابع 2024

عبدالله يوسف
أخر تحديث 2024/11/15
بواسطة عبدالله يوسف اضف تعليق 9 دقيقة للقراءة 2382 مشاهدات 5
شارك
10 تمارين محلولة على لغة دارت Dart OOP الجزء الرابع 2024
10 تمارين محلولة على لغة دارت Dart OOP الجزء الرابع 2024
شارك

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

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

في هذا المقال، سنقدم 10 تمارين محلولة باستخدام لغة دارت Dart OOP. تعتبر لغة دارت (Dart) واحدة من اللغات البرمجية القوية والمتنامية التي تستخدم في تطوير تطبيقات الويب والتطبيقات المحمولة، وتتميز بدعمها القوي لبرمجة الكائنات (OOP)، مما يجعلها خيارًا شائعًا بين المطورين. وفي هذا الجزء الرابع من سلسلة تمارين البرمجة بلغة دارت، سنقدم عشر تمارين محلولة تركز على المفاهيم الأساسية لبرمجة الكائنات Dart OOP، لمساعدتك في فهم وتعلم هذه اللغة بشكل أفضل.

المحتويات
تمرين 1: إنشاء كلاس بسيطتمرين 2: الوراثة (Inheritance)تمرين 3: الواجهات (Interfaces)تمرين 4: مفهوم الـ Enumتمرين 5: الاستثناءات (Exceptions)تمرين 6: الخصائص (Getters و Setters)تمرين 7: الدوال الثابتة (Static Methods)تمرين 8: الوراثة متعددة المستويات (Multilevel Inheritance)تمرين 9: الإستاتيك (Static)تمرين 10: الوراثة والاستدعاء الثابت (Inheritance and Static Invocation):

تمرين 1: إنشاء كلاس بسيط

قم بكتابة برنامج بلغة دارت لإنشاء كلاس بسيط يُمثِّل شخصًا يحتوي على خاصية لاسم الشخص ودالة لطباعة اسم الشخص.

الحل:

class Person {
  String name;

  Person(this.name);

  void printName() {
    print("اسم الشخص: $name");
  }
}

void main() {
  Person person = Person("أحمد");
  person.printName();
}

النتيجة:

اسم الشخص: أحمد

“اقرأ أيضاً: تمارين محلولة على لغة دارت الجزء الثالث“


تمرين 2: الوراثة (Inheritance)

قم بكتابة برنامج بلغة دارت لإنشاء كلاس رئيسي يسمى (Animal)، وكلاس مشتق يسمى (Dog) يرث الخصائص والدوال من الكلاس الرئيسي. الكلاس الرئيسي يحتوي على خاصية اسم الحيوان ودالة لطباعة اسم الحيوان، والكلاس الفرعي يستدعي البناء الأساسي للكلاس الرئيسي ويضيف خاصية إضافية لعرض عدد الأرجل للكلب.

الحل:

class Animal {
  String name;

  Animal(this.name);

  void printName() {
    print("اسم الحيوان: $name");
  }
}

class Dog extends Animal {
  int numberOfLegs;

  Dog(String name, this.numberOfLegs) : super(name);

  void printNumberOfLegs() {
    print("عدد أرجل الكلب: $numberOfLegs");
  }
}

void main() {
  Dog dog = Dog("بوبي", 4);
  dog.printName();
  dog.printNumberOfLegs();
}

النتيجة:

اسم الحيوان: بوبي
عدد أرجل الكلب: 4

“اقرأ أيضاً: شرح مفهوم الوراثة في لغة دارت“


تمرين 3: الواجهات (Interfaces)

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

الحل:

abstract class Shape {
  double calculateArea();
}

class Rectangle implements Shape {
  double width;
  double height;

  Rectangle(this.width, this.height);

  double calculateArea() {
    return width * height;
  }
}

void main() {
  Rectangle rectangle = Rectangle(4, 6);
  double area = rectangle.calculateArea();
  print("مساحة المستطيل: $area");
}

النتيجة:

مساحة المستطيل: 24

“اقرأ أيضاً: شرح الـ Interface في لغة دارت“


تمرين 4: مفهوم الـ Enum

قم بكتابة برنامج بلغة دارت لإنشاء الـ Enum ويكون باسم “Days” الذي يحتوي على أيام الأسبوع. ثم استخدم حلقة for للتكرار على جميع القيم الموجودة في الـ Enum وطباعتها.

الحل:

enum Days { sunday, monday, tuesday, wednesday, thursday, friday, saturday }

void main() {
  for (Days day in Days.values) {
    print(day);
  }
}

النتيجة:

Days.sunday
Days.monday
Days.tuesday
Days.wednesday
Days.thursday
Days.friday
Days.saturday

“اقرأ أيضاً: شرح مفهوم الـ Enum في لغة دارت“


تمرين 5: الاستثناءات (Exceptions)

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

تلميح: قم بالإجابة على هذا السؤال باستخدام عبارات try & catch في لغة دارت (Dart)

الحل:

double divideNumbers(double a, double b) {
  if (b == 0) {
    throw Exception("لا يمكن قسمة عدد على الصفر.");
  }
  return a / b;
}

void main() {
  try {
    double result = divideNumbers(10, 0);
    print("ناتج القسمة: $result");
  } catch (e) {
    print("حدث خطأ: $e");
  }
}

النتيجة:

حدث خطأ: Exception: لا يمكن قسمة عدد على الصفر.

تمرين 6: الخصائص (Getters و Setters)

قم بكتابة برنامج بلغة دارت لإنشاء كلاس يسمى Student يحتوي على ثلاث خصائص Private هي _firstName و _lastName و _age. يوجد اثنان من الـ Getters وهما fullName و age للحصول على قيمة الخصائص. يوجد أيضًا ثلاثة Setters وهما firstName و lastName و age لتحديث قيمة الخصائص. إذا كانت قيمة العمر أقل من 0، فسيتم ظهور خطأ.

الحل:

class Student {
  String? _firstName;
  String? _lastName;
  int? _age;
  
  String get fullName => "${_firstName!} ${_lastName!}";

  int get age => _age!;

  set firstName(String firstName) => _firstName = firstName;
  set lastName(String lastName) => _lastName = lastName;
  set age(int age) {
    if (age < 0) {
      throw Exception("لا يمكن أن يكون العمر أقل من 0");
    }
    _age = age;
  }
}

void main() {
  Student st = Student();
  st.firstName = "John";
  st.lastName = "Doe";
  st.age = 20;
  print("الاسم الكامل: ${st.fullName}");
  print("العمر: ${st.age}");
}

النتيجة:

الاسم الكامل: John Doe
العمر: 20

“اقرأ أيضاً: شرح مفهوم الـ Getter و Setter في لغة دارت“


تمرين 7: الدوال الثابتة (Static Methods)

قم بكتابة برنامج بلغة دارت لإنشاء كلاس يُمثِّل مثلثًا، وقم بتعريف دالة ثابتة (static) لحساب مساحة المثلث باستخدام طول قاعدته وارتفاعه. قم بتجربة الدالة الثابتة.

الحل:

class Triangle {
  double base;
  double height;

  Triangle(this.base, this.height);

  static double calculateArea(double base, double height) {
    return 0.5 * base * height;
  }
}

void main() {
  double area = Triangle.calculateArea(4, 6);
  print("مساحة المثلث: $area");
}

النتيجة:

مساحة المثلث: 12.0

“اقرأ أيضاً: شرح مفهوم الـ Static في لغة دارت“


تمرين 8: الوراثة متعددة المستويات (Multilevel Inheritance)

لدينا كلاس رئيسي يسمى (Animal)، وكلاس مشتق يسمى (Dog) يرث الخصائص والدوال من الكلاس الرئيسي، وكلاس مشتق آخر يسمى (Puppy) يرث الخصائص والسلوك من كلاس Dog. قم بإنشاء كلاس Animal بخاصية اسم الحيوان ودالة لطباعة اسم الحيوان، ثم قم بإنشاء كلاس Animal وكلاس Puppy واختبار الوراثة المتعددة.

الحل:

class Animal {
  String name;

  Animal(this.name);

  void printName() {
    print("اسم الحيوان: $name");
  }
}

class Dog extends Animal {
  Dog(String name) : super(name);
}

class Puppy extends Dog {
  Puppy(String name) : super(name);
}

void main() {
  Puppy puppy = Puppy("بوبي جراء");
  puppy.printName();
}

النتيجة:

اسم الحيوان: بوبي جراء

“اقرأ أيضاً: شرح الـ Constructor في لغة دارت“


تمرين 9: الإستاتيك (Static)

قم بكتابة برنامج بلغة دارت لإنشاء كلاس يحتوي على خاصية استاتيكية (static) ودالة استاتيكية (static)، ثم استخدم الخاصية والدالة في الكود الرئيسي.

الحل:

class MathUtils {
  static const double pi = 3.14;

  static double calculateCircleArea(double radius) {
    return pi * radius * radius;
  }
}

void main() {
  double radius = 5;
  double area = MathUtils.calculateCircleArea(radius);
  print("مساحة الدائرة: $area");
  print("قيمة ثابت الباي: ${MathUtils.pi}");
}

النتيجة:

مساحة الدائرة: 78.5
قيمة ثابت الباي: 3.14

“اقرأ أيضاً: شرح مفهوم الـ Default Constructor في لغة دارت“


تمرين 10: الوراثة والاستدعاء الثابت (Inheritance and Static Invocation):

قم بكتابة برنامج بلغة دارت لإنشاء كلاس رئيسي يسمى (Person) يحتوي على خاصية استاتيكية تُعدِّد أنواع الجنس، وكلاس مشتق يسمى (Employee) يرث الخصائص والدوال من الكلاس الرئيسي ويضيف خاصية استاتيكية تُعدِّد أقسام العمل. قم بإنشاء الكلاسين واستدعاء الخصائص الاستاتيكية.

الحل:

class Person {
  static const List<String> genders = ['ذكر', 'أنثى'];
}

class Employee extends Person {
  static const List<String> departments = ['مبيعات', 'تسويق', 'تطوير'];

  static void printGendersAndDepartments() {
    print("أنواع الجنس: ${Person.genders}");
    print("أقسام العمل: $departments");
  }
}

void main() {
  Employee.printGendersAndDepartments();
}

النتيجة:

أنواع الجنس: [ذكر, أنثى]
أقسام العمل: [مبيعات, تسويق, تطوير]

“اقرأ أيضاً: 10 تمارين محلولة على Null Safety في لغة دارت Dart“


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

Arab Flutter Community 🚀

انضم إلى مجتمع Arab Flutter
شارك هذا المقال
فيسبوك تويتر Whatsapp Whatsapp لينكد ان تلغرام نسخ الرابط
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

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

اطلع على المزيد من المقالات المتعلقة بهذا الموضوع!
شرح الـ Event Loop في Flutter وجعل التطبيق لا يتوقف أبدًا
Tutorials

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

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

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

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

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

17
طريقة انشاء المجلدات باستخدام Dart
Tutorials

طريقة انشاء المجلدات باستخدام كود Dart تلقائيًا

11
خطة لاحتراف تطوير التطبيقات باستخدام Flutter في 60 يوم
Tutorials

خطة لاحتراف تطوير التطبيقات باستخدام Flutter في 60 يوم

17
10 تمارين محلولة على لغة دارت Dart الجزء السادس 2024
Tutorials

10 تمارين محلولة على لغة دارت Dart الجزء السادس 2024

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

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

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