❖ تعريف OOP:
البرمجة الكائنية التوجه (Object-Oriented Programming) هي طريقة في البرمجة تعتمد على “الكائنات” (Objects) والتي تحتوي على “خصائص” (Properties) و”دوال” (Methods) لمعالجة البيانات.
❖ لماذا نستخدم OOP؟
- تنظيم الكود.
- إعادة استخدام الكود.
- سهولة الصيانة والتوسيع.
- محاكاة العالم الواقعي.
❖ مثال بسيط:
let user = {
name: "Ahmed",
age: 30,
sayHello: function () {
return `Hello, my name is ${this.name}`;
}
};
console.log(user.sayHello()); // Hello, my name is Ahmed
JavaScriptConstructor Function
ما هو Constructor Function؟
هي دالة تُستخدم لإنشاء كائنات متعددة تشترك في نفس الخصائص والوظائف.
❖ الشكل:
function User(name, age) {
this.name = name;
this.age = age;
this.sayHello = function () {
return `Hello ${this.name}`;
};
}
let user1 = new User("Ali", 25);
let user2 = new User("Mona", 22);
console.log(user1.sayHello()); // Hello Ali
console.log(user2.sayHello()); // Hello Mona
JavaScriptConstructor Function New Syntax (Using Class)
❖ تعريف الكلاس:
ES6 جلبت طريقة جديدة باستخدام class
وهي واجهة أبسط لإنشاء كائنات.
❖ الشكل:
class User {
constructor(name, age) {
this.name = name;
this.age = age;
}
sayHello() {
return `Hello ${this.name}`;
}
}
let user1 = new User("Sami", 35);
console.log(user1.sayHello()); // Hello Sami
JavaScript❖ الخصائص (Properties) والدوال (Methods):
class Product {
constructor(name, price) {
this.name = name;
this.price = price;
}
showInfo() {
return `${this.name} costs ${this.price}$`;
}
}
let item = new Product("Laptop", 1000);
console.log(item.showInfo()); // Laptop costs 1000$
يمكنك تعديل الخصائص:
item.price = 1200;
console.log(item.showInfo()); // Laptop costs 1200$
JavaScriptUpdate Properties And Built-In Constructors
❖ تحديث الخصائص:
item.name = "Gaming Laptop";
console.log(item.name); // Gaming Laptop
JavaScriptClass Static Properties And Methods
❖ ما هو Static؟
static
يعني أن الخاصية أو الدالة تنتمي للكلاس نفسه وليس للكائنات.
مثال 1: خاصية ثابتة بسيطة
class Person {
static country = "Egypt";
}
console.log(Person.country); // Egypt
//////////////////////
let p = new Person();
// console.log(p.country); // ❌ خطأ
JavaScript✅ التوضيح:
country
هي خاصية ثابتة.- لا تحتاج إلى إنشاء كائن (
new
) للوصول إليها. - لا يمكن الوصول إليها من داخل الكائن:
مثال 2: دالة ثابتة بسيطة
class Greeting {
static sayHello() {
return "Hello from the class!";
}
}
console.log(Greeting.sayHello()); // Hello from the class!
JavaScript✅ التوضيح:
sayHello()
دالة ثابتة.- تُستدعى مباشرة من اسم الكلاس.
✅ مثال 1: أداة رياضية (Math Utilities)
🎯 الهدف:
إنشاء كلاس يحتوي على دوال رياضية مفيدة يمكن استخدامها بدون إنشاء كائن منه.
class MathTools {
static pi = 3.14159;
static circleArea(radius) {
return MathTools.pi * radius * radius;
}
static circleCircumference(radius) {
return 2 * MathTools.pi * radius;
}
}
// الاستخدام:
console.log(MathTools.circleArea(5)); // 78.53975
console.log(MathTools.circleCircumference(5)); // 31.4159
JavaScript✅ مثال 2: تتبع عدد الكائنات التي تم إنشاؤها
🎯 الهدف:
عدّ عدد الكائنات التي يتم إنشاؤها من كلاس معين.
class User {
static count = 0;
constructor(name) {
this.name = name;
User.count++;
}
static getCount() {
return `Total Users: ${User.count}`;
}
}
let u1 = new User("Ahmed");
let u2 = new User("Mona");
let u3 = new User("Sara");
console.log(User.getCount()); // Total Users: 3
JavaScript