جارٍ تحميل الدرس...
في نافذة الطباعة اختر «حفظ كملف PDF» كوجهة.
من الحلقات والمصفوفات إلى البرمجة الكائنية، المراجع، وإطار عمل المجموعات (Collections Framework)
for، while) وأنماط التكرارstatic وfinalList، Set، MapfirstName، وليس a1)Ctrl+Shift+F للتنسيق التلقائيelse وحدها تكفي بمجرد أن تكون الشروط السابقة قد استبعدت الباقي// حلقة while
int i = 0;
while (i < 3) {
System.out.println("Count: " + i);
i = i + 1; // يجب تغيير i وإلا ستتكرر الحلقة إلى الأبد!
}
// حلقة for
for (int i = 0; i < 3; i++) {
System.out.println("Count: " + i);
}break تخرج من الحلقة فوراcontinue تنتقل إلى التكرار التاليint[] numbers = {12, 24, -23, 47, 100};
int size = 10;
double[] data = new double[size];12
الفهرس 0
24
الفهرس 1
-23
الفهرس 2
47
الفهرس 3
100
الفهرس 4
تمرين
valuespublic static int getMinIndex(int[] values) {
int minValue = Integer.MAX_VALUE;
int minIndex = -1;
for (int i = 0; i < values.length; i++) {
if (values[i] < minValue) {
minValue = values[i];
minIndex = i;
}
}
return minIndex;
}Ctrl+Shift+F في Eclipse)، الكود غير المرتب يخفي الأخطاءpublic class Student {
String name;
int age;
double gpa;
Student(String studentName, int studentAge) {
name = studentName;
age = studentAge;
gpa = 0.0;
}
void displayInfo() {
System.out.println(name + " (" + age + "): GPA " + gpa);
}
}الحقول (Fields)
البيانات
الباني (Constructor)
التهيئة
الدوال (Methods)
السلوك
Student ahmed = new Student("Ahmed Ali", 20);
Student fatima = new Student("Fatima Hassan", 19);
System.out.println(ahmed.name); // "Ahmed Ali"
ahmed.displayInfo();new تخصص الكائن؛ يصل إلى الحقول بواسطة .؛ وتستدعى الدوال بواسطة .y = x تمنح y نسخته الخاصةint x = 5;
int y = x; // y gets a COPY
x = 10;
System.out.println(x); // 10
System.out.println(y); // 5 (unchanged)s2 = s1 تجعل s2 تشير إلى نفس الكائنStudent s1 = new Student("Ahmed", 20, "CS");
Student s2 = s1; // s2 تشير إلى نفس الكائن
s1.gpa = 3.8;
System.out.println(s2.gpa); // 3.8 (نفس الكائن!)
Student s3 = new Student("Ahmed", 20, "CS");
System.out.println(s1 == s3); // false - كائنان مختلفانstaticpublic class Student {
static int totalStudents = 0; // مشتركة بين كل الكائنات
String name; // فريدة لكل كائن
Student(String studentName) {
name = studentName;
totalStudents++;
}
}MathHelper.add(5, 3))main ساكنة لأن جافا يجب أن تستدعيها قبل وجود أي كائناتpublic class MathHelper {
// Static method - can call without creating object
static int add(int a, int b) {
return a + b;
}
}public class Test {
public static void main(String[] args) {
int result = MathHelper.add(5, 3); // No object needed!
System.out.println(result); // 8
}
}finalx = 10; تغير ما يشير إليه المتغيرahmed.gpa = 3.8; تغير الحالة الداخلية للكائن؛ ويظل ahmed يشير إلى نفس الكائنfinal int[] scores = {85, 90, 78};
scores[0] = 95; // صحيح: تحوير المحتوى
// scores = new int[]{1,2,3}; // خطأ: إعادة الإسناد غير مسموحةfinalList، Set، وMapList<String> courses = new ArrayList<>();
courses.add("Math");
courses.add("Physics");
Set<Integer> ids = new HashSet<>();
ids.add(101);
ids.add(101); // تكرار - يتجاهل
System.out.println(ids.size()); // 2 وليس 3
Map<String, Double> grades = new HashMap<>();
grades.put("Ahmed", 3.8);
System.out.println(grades.get("Ahmed")); // 3.8ListSetMapfor/while) مع break/continue تقود التكرار؛ المصفوفات تحمل متسلسلات ثابتة الطول من نفس النوع== يقارن المراجع لا المحتوىstatic تنتمي للصنف وتشارك بين كل الكائنات؛ final تقفل المرجع لا القيمة التي يشير إليهاList للبيانات المرتبة/المكررة، Set للتفرد، Map لعمليات البحث من مفتاح إلى قيمةMahmoud Abas|بناء البرمجيات - المعمل 2: مجموعات جافا، المصفوفات، الحلقات والأصناف