برمجة تطبيقات فلاتر (dart & flutter) والتوعية التقنية
1.37K subscribers
45 photos
4 videos
4 files
53 links
مجتمع المبرمج العربي والتوعية التقنية
نقاش :https://t.me/AbduFlutterDevlopers
برمجة وتطوير تطبيقات باستخدام (dart & flutter)
@Eng_Abdualkarim
اذا عندك مشكلة أو استفسار تفضل
يوتيوب :https://youtube.com/@engabdualkarim
Download Telegram
8# الدرس الثامن كل انواع البانيات
#3 Types of Constructors in Dart

يوجد لدينا أنواع متعددة منها
1-Default Constructor
2-Parameterized Constructor
3- Named Constructor
4-Factory constructors

1-الافتراضي
2-مع متغيرات مدخلة له
3-نوع اخر يجعلك تعطي اسما اخرا للconstructors
4-نوع الرابع مهم يستخدم لإرجاع من نوع كائن وهو مستخدم بكثره في دارت وفلاتر فعندما ترى مكاتب تستخدمه ولا تعرف من اين هو وكيف هنا سوف نشرح امثله لكل نوع
#النوع الاول
#Default Constructor
وهو الافتراضي يأتي بدون مدخلات
#Ex:
#مثال
class Car {
Car(){
print("BMW Car");
}//نهاية الباني
}
#النوع الثاني
#Parameterized Constructor
وهو يأتي مع مدخلات
#Ex:
#مثال كلاس سيارة له ثلاثة خواص
class Car {
String make;
String model;
String yearMade;
//كونستراكتور
Car(this.make, this.model, this.yearMade); }
#النوع الثاني
#Named Constructor
وهو يأتي باسم آخر ليس بنفس الاسم الكلاس
#Ex:
#مثال كلاس سيارة له ثلاثة خواص واثنان بانيات الاول
class Car {
String make;
String model;
String yearMade;
bool hasABS;
//كونستراكتور Parameterized
Car(this.make, this.model, this.yearMade, this.hasABS);

//هنا كونستراكتور Named
//طريقة نكتب نفس اسم الكلاس ثم
//نكتب اسمه من اختيارنا
//ثم متغيرات له زي اي دالة
//هنا اسمه withoutABS
Car.withoutABS(this.make, this.model, this.yearMade): hasABS = false; }




//عند استدعاءه نستدعيه هكذا
Car.withoutABS(ألقيم المدخلات )
#النوع الرابع والمهم
#Factory constructors
يستخدم عندما لا تريد عمل كاىنnew instance من الكلاس وهذا يرجع لنا من كائن من نوع كلاس اخر
#Example
#مثال
class Car {
String make;
String model;
String yearMade;
bool hasABS;
//هذا هو اسمه نكتب اسم الكلاس ثم
//اسمه ونلاحظ قبلهم نكتب كلمة
//كلمة factory في البداية
//سوف يرجع لنا من نوع كلاس

factory Car.ford(String model, String yearMade, bool hasABS) {
return FordCar(model, yearMade, hasABS);
}
}
//كلاس الابن
class FordCar extends Car {
FordCar(String model, String yearMade, bool hasABS): super("Ford", model, yearMade, hasABS); }
#كيفية استدعاىه
بهذا الشكل نكتب الكلاس الابن لو أردنا أن نعمل منه كاىن ونساوية بالاب هكذا .
FordCar car=Car.ford(قيم المدخلات);

لما هكذا لانه سوف يرجع لنا من نوع كلاس FordCar
#ايضا يمكننا عمل نوع آخر يسمى
#Copy constructor
بهذا الشكل فهو يأخذ متغير من نوع الكلاس نفسه
#Example
#مثال
class Car{
String model;
int price;
//هذا هو مع تمرير من نفس نوع الكلاس
//كمتغير وعمل ابتدأ لقيم الخواص
Car(Car c){
model=c.model;
price=c.model;
}
}

//في الدالة ماين لازم إرساله وقد تم عمل
// واعطاء قيم الخواص مثل

int main(){
//نعمل كمتغير instance من الكلاس
//وليس ككائن هنا car1له صلاحية فقط للوصول
//المتغيرات الخاصة بالكلاسCar
//لانه ليس كائن وانما كمتغير
Car car1;
car1.model="xyz";
car1.price=20000;
//لقد اعطيناه السعر والموديل بعدها
//يمكنني عمل كائن جديد وإرسال الcar1
Car car2=Car(car1);
//هنا تم ارسال الcar1 مع قيم السعر والموديل
//التي سوف تعمل أيضا لcar2
}
نوع هذا الكونستراكتور التابع للكلاس Person
Person.fromJson(Map<String,dynamic> json){ this.name = json['name'];
this.age = json['age'] as int; }
Anonymous Quiz
36%
Named
34%
Parameterized
30%
Factory
عندما نريد ارجاع كائنات من الكونستراكتور نستخدم
النوع
Anonymous Quiz
29%
Named Constructor
21%
Default Constructor
50%
Factory Constructor
#اصنع دوارة وعوض في قيم وترسم الشكل الرياضي التي تمثله هذه الدالة
X²+1
#لاحظوا في هذا المثال طريقة البحث الخطية عبررخوارزم البحث الخطي البسيط عن الرقم 33 كيف تتم حتى وصل إليه وتوقف البحث
#اي شخص بظهر عنده خطاء وبحاجة إلى حله وما يعرف وخاصة الأخطاء الحمراء اللي في اي برنامج وبأي لغه يوجد حل هنا مقدم من الآلاف المطورين من مختلف أنحاء العالم وهذه المواقع منها الافضل وهو لاي لغه واي خطا
Stackoverflow.com
أو كورا فيه حلول واجابات في مختلف المجالات
https://ar.quora.com/
#9شرح مفهوم الجنريك
Generics in Dart :

هو موضوع مهم ولا تكاد اي اكواد في فلاتر أو دارت أن تذكره وتهتم فيه وهو عمل كلاسات ودوال ومتغيرات تستقبل اي نوع بنفس الكلاس
#مثال
//نوعه T
class Property<T> {

T first, second; Property(this.first, this.second);
String getDescription() {
return "First property : ${first}, Second property : ${second}";
}
}
//نهاية الكلاس
main(List<String> args) {
//لأن نوع الكلاس والمتغيرات T
//يمكنك إرسال اي قيمه عند استدعاء
var firstProperty=Property("Hello", 2);
var secondProperty = Property(2.30, 3.44);
var thirdProperty =Property(true, false); print("firstProperty description ${
firstProperty.getDescription()}"); print("secondPropertydescription ${
secondProperty.getDescription()}"); print("thirdProperty description ${
thirdProperty.getDescription()}"); }
#Output
#الخرج

firstProperty description First property : Hello, Second property : 2 secondProperty description First property : 2.3, Second property : 3.44 thirdProperty description First property : true, Second property : false
#مثال على دالة تعيد متوسط رقمين من نوع generic
تستقبل من اي نوع
حرف Tيرث الكلاس num وهو ممكن فقط يكون عدد int أو float أما لو جعلته T فقط
فيمكن من اي نوع

double getAverage<T extends num>(T first, T second) { return (first + second) / 2; }
#طرق استدعاء هذه الدالة وإرسال المتغيرات لها
double avgInt =getAverage<int>(5, 6); double avgDouble =getAverage<double>(5.9, 16.5);