الفئات والكائنات
البرمجة الكائنية (OOP) هي نمط برمجة أساسي في Java. في هذا الدرس، سنتعلم كيفية تعريف الفئات وإنشاء الكائنات.
##什么是 الفئة والكائن
| المفهوم | الوصف |
|---|---|
| الفئة (Class) | مخطط أو قالب للكائنات |
| الكائن (Object) | نسخة من الفئة — مثيل ملموس |
💡 تشبيه: الفئة هي "مخطط المنزل"، والكائن هو "المنزل الفعلي المبني".
تعريف الفئة
JAVA
public class Student {
// المتغيرات المثيلة (Instance Variables)
private String name;
private int age;
private double grade;
// المُنشئ (Constructor)
public Student(String name, int age, double grade) {
this.name = name;
this.age = age;
this.grade = grade;
}
// الدوال (Methods)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void study() {
System.out.println(name + " يدرس");
}
@Override
public String toString() {
return "الاسم: " + name + "، العمر: " + age + "، الدرجة: " + grade;
}
}
إنشاء الكائنات
JAVA
public class Main {
public static void main(String[] args) {
// إنشاء كائن
Student student1 = new Student("أحمد", 20, 95.5);
Student student2 = new Student("محمد", 22, 88.0);
// استخدام الدوال
student1.study(); // أحمد يدرس
System.out.println(student1.getName()); // أحمد
// طباعة معلومات الكائن
System.out.println(student1); // الاسم: أحمد، العمر: 20، الدرجة: 95.5
}
}
المُنشئ (Constructor)
المُنشئ هو دالة خاصة تُستدعى عند إنشاء الكائن.
JAVA
public class Student {
private String name;
private int age;
// مُنشئ بدون معلمات
public Student() {
this.name = "غير معروف";
this.age = 0;
}
// مُنشئ بمعلمات
public Student(String name, int age) {
this.name = name;
this.age = age;
}
// مُنشئ نسخ (Copy Constructor)
public Student(Student other) {
this.name = other.name;
this.age = other.age;
}
}
استخدام المُنشئات
JAVA
Student s1 = new Student(); // أحمد غير معروف
Student s2 = new Student("أحمد", 20); // أحمد، 20
Student s3 = new Student(s2); // نسخة من s2
الكلمات المفتاحية
this — الإشارة للكائن الحالي
JAVA
public class Student {
private String name;
public Student(String name) {
this.name = name; // this.name هو المتغير المثيل، name هو المعلمة
}
}
static — متغيرات ودوال مشتركة
JAVA
public class Student {
private String name;
private static int count = 0; // مشترك بين جميع الكائنات
public Student(String name) {
this.name = name;
count++;
}
public static int getCount() {
return count;
}
}
// الاستخدام
Student s1 = new Student("أحمد");
Student s2 = new Student("محمد");
System.out.println(Student.getCount()); // 2
مثال كامل: بنك بسيط
JAVA
public class BankAccount {
private String owner;
private double balance;
private static int totalAccounts = 0;
public BankAccount(String owner, double initialBalance) {
this.owner = owner;
this.balance = initialBalance;
totalAccounts++;
}
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
System.out.println("تم إيداع " + amount + " ريال");
}
}
public void withdraw(double amount) {
if (amount > 0 && amount <= balance) {
balance -= amount;
System.out.println("تم سحب " + amount + " ريال");
} else {
System.out.println("رصيد غير كافٍ");
}
}
public double getBalance() {
return balance;
}
public static int getTotalAccounts() {
return totalAccounts;
}
@Override
public String toString() {
return "الحساب: " + owner + "، الرصيد: " + balance + " ريال";
}
}
// الاستخدام
BankAccount account = new BankAccount("أحمد", 1000);
account.deposit(500); // تم إيداع 500 ريال
account.withdraw(200); // تم سحب 200 ريال
System.out.println(account.getBalance()); // 1300.0
System.out.println(account); // الحساب: أحمد، الرصيد: 1300.0 ريال
❓ أسئلة شائعة
س ما الفرق بين الفئة والكائن؟
ج الفئة هي المخطط، والكائن هو النسخة الفعلية.
س لماذا نستخدم private مع getters/setters؟
ج للتحقق من صحة البيانات ومنح التحكم في الوصول.
س هل يمكن أن تحتوي الفئة على أكثر من مُنشئ؟
ج نعم، هذا يسمى Overloading — مُنشئات مختلفة بعلمات مختلفة.
📖 ملخص
- الفئة هي مخطط، والكائن هو نسخة من الفئة
- المُنشئ (Constructor) يُستدعى عند إنشاء الكائن
- this تشير للكائن الحالي
- static يجعل المتغيرات والدوال مشتركة
- getters/setters للوصول للمتغيرات الخاصة
📝 تمارين
- مستطيل: أنشئ فئة Rectangle مع طول وعرض ودوال لحساب المساحة والمحيط
- شخص: أنشئ فئة Person مع اسم وعمر ودوال لعرض المعلومات
- عداد: أنشئ فئة Counter مع دوال لزيادة ونقصان وعرض القيمة
الدرس التالي
في الدرس التالي، سنتعلم التغليف — إخفاء البيانات وحمايتها.



