8# الدرس الثامن كل انواع البانيات
#3 Types of Constructors in Dart
يوجد لدينا أنواع متعددة منها
1-Default Constructor
2-Parameterized Constructor
3- Named Constructor
4-Factory constructors
1-الافتراضي
2-مع متغيرات مدخلة له
3-نوع اخر يجعلك تعطي اسما اخرا للconstructors
4-نوع الرابع مهم يستخدم لإرجاع من نوع كائن وهو مستخدم بكثره في دارت وفلاتر فعندما ترى مكاتب تستخدمه ولا تعرف من اين هو وكيف هنا سوف نشرح امثله لكل نوع
#3 Types of Constructors in Dart
يوجد لدينا أنواع متعددة منها
1-Default Constructor
2-Parameterized Constructor
3- Named Constructor
4-Factory constructors
1-الافتراضي
2-مع متغيرات مدخلة له
3-نوع اخر يجعلك تعطي اسما اخرا للconstructors
4-نوع الرابع مهم يستخدم لإرجاع من نوع كائن وهو مستخدم بكثره في دارت وفلاتر فعندما ترى مكاتب تستخدمه ولا تعرف من اين هو وكيف هنا سوف نشرح امثله لكل نوع
#النوع الثاني
#Parameterized Constructor
وهو يأتي مع مدخلات
#Ex:
#مثال كلاس سيارة له ثلاثة خواص
#Parameterized Constructor
وهو يأتي مع مدخلات
#Ex:
#مثال كلاس سيارة له ثلاثة خواص
class Car {
String make;
String model;
String yearMade;
//كونستراكتور
Car(this.make, this.model, this.yearMade); }
#النوع الثاني
#Named Constructor
وهو يأتي باسم آخر ليس بنفس الاسم الكلاس
#Ex:
#مثال كلاس سيارة له ثلاثة خواص واثنان بانيات الاول
//عند استدعاءه نستدعيه هكذا
Car.withoutABS(ألقيم المدخلات )
#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
#مثال
#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); }
#ايضا يمكننا عمل نوع آخر يسمى
#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
}
#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; }
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
يستخدم
What’s the use of Named Constructor?
لغرض
What’s the use of Named Constructor?
لغرض
Anonymous Quiz
19%
Improves Readablity جعل الكود قابل القراءة
49%
عمل اكثر من كونستراكتور can have as many constructors we need for our class.
32%
It always returns a new Instance of the exact type
#اصنع دوارة وعوض في قيم وترسم الشكل الرياضي التي تمثله هذه الدالة
X²+1
X²+1
#لاحظوا في هذا المثال طريقة البحث الخطية عبررخوارزم البحث الخطي البسيط عن الرقم 33 كيف تتم حتى وصل إليه وتوقف البحث
#اي شخص بظهر عنده خطاء وبحاجة إلى حله وما يعرف وخاصة الأخطاء الحمراء اللي في اي برنامج وبأي لغه يوجد حل هنا مقدم من الآلاف المطورين من مختلف أنحاء العالم وهذه المواقع منها الافضل وهو لاي لغه واي خطا
Stackoverflow.com
أو كورا فيه حلول واجابات في مختلف المجالات
https://ar.quora.com/
Stackoverflow.com
أو كورا فيه حلول واجابات في مختلف المجالات
https://ar.quora.com/
Quora
Quora هو مكان لاكتساب ومشاركة المعرفة. إنها منصة لطرح الأسئلة والتواصل مع الأشخاص الذين يساهمون برؤى فريدة وإجابات عالية الجودة. هذا يمكّن الأشخاص من التعلم من بعضهم البعض وفهم العالم بشكل أفضل.
#9شرح مفهوم الجنريك
Generics in Dart :
هو موضوع مهم ولا تكاد اي اكواد في فلاتر أو دارت أن تذكره وتهتم فيه وهو عمل كلاسات ودوال ومتغيرات تستقبل اي نوع بنفس الكلاس
Generics in Dart :
هو موضوع مهم ولا تكاد اي اكواد في فلاتر أو دارت أن تذكره وتهتم فيه وهو عمل كلاسات ودوال ومتغيرات تستقبل اي نوع بنفس الكلاس
#مثال
//نوعه T
//نوعه 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()}"); }
#مثال على دالة تعيد متوسط رقمين من نوع generic
تستقبل من اي نوع
حرف Tيرث الكلاس num وهو ممكن فقط يكون عدد int أو float أما لو جعلته T فقط
فيمكن من اي نوع
تستقبل من اي نوع
حرف 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);