البرمجة

أساسيات البرمجة كائنية التوجه في جافا

أساسيات البرمجة كائنية التوجه في جافا: المتغيرات، الجمل الشرطية والحلقات

مقدمة حول البرمجة كائنية التوجه (OOP) في جافا

تعتبر البرمجة كائنية التوجه (Object-Oriented Programming – OOP) أحد أهم الأساليب والمنهجيات في تطوير البرمجيات الحديثة، وهي تسهل عملية بناء البرامج المعقدة بطريقة منظمة وقابلة لإعادة الاستخدام. تتميز هذه البرمجة بأنها تعتمد على تقسيم البرنامج إلى وحدات تسمى “كائنات” (Objects)، كل كائن يمثل جزءًا مستقلاً يتضمن بيانات (خصائص) وسلوكيات (وظائف أو طرق Methods).

جافا هي واحدة من أشهر لغات البرمجة التي تدعم هذا الأسلوب بشكل كامل، مما جعلها الخيار الأول للكثير من المطورين لبناء تطبيقات متنوعة تبدأ من تطبيقات سطح المكتب إلى تطبيقات الويب وأنظمة الهواتف المحمولة. يرتكز مبدأ OOP في جافا على أربعة مفاهيم رئيسية هي: التغليف (Encapsulation)، التجريد (Abstraction)، التوريث (Inheritance)، وتعدد الأشكال (Polymorphism).

في هذا المقال، سيتم التركيز على فهم أساسيات البرمجة كائنية التوجه في جافا مع شرح مفصل للمتغيرات، الجمل الشرطية، والحلقات، وهي من اللبنات الأساسية التي يحتاجها كل مبرمج مبتدئ أو متوسط لتطوير برامج ناجحة وفعالة.


المتغيرات في جافا

تعريف المتغيرات وأهميتها

المتغير هو موقع في الذاكرة يتم تخصيصه لتخزين بيانات يمكن تغييرها أثناء تنفيذ البرنامج. في جافا، لكل متغير نوع بيانات (Data Type) يحدد نوع المعلومات التي يمكن أن يخزنها مثل الأعداد الصحيحة، الأعداد العشرية، النصوص، وغيرها. يعد استخدام المتغيرات أمراً جوهرياً لأن معظم البرمجيات تعتمد على حفظ ومعالجة البيانات المختلفة.

أنواع المتغيرات

  • المتغيرات الأولية (Primitive Variables): تخزن القيم المباشرة. من أشهر أنواعها:

    • int للأعداد الصحيحة.

    • double للأعداد العشرية ذات الدقة العالية.

    • char لتخزين الأحرف المفردة.

    • boolean للقيم المنطقية (true/false).

  • المتغيرات المرجعية (Reference Variables): تخزن عنوان الكائن (Object) في الذاكرة وليس القيمة نفسها. مثال على ذلك هو الكائنات (Objects) والمصفوفات.

إعلان المتغيرات في جافا

يتم إعلان المتغيرات في جافا عبر تحديد نوع البيانات متبوعاً باسم المتغير، مثال:

java
int age; double salary; char grade; boolean isActive;

يمكن أيضاً تهيئة المتغير عند الإعلان:

java
int age = 25; double salary = 1500.75; char grade = 'A'; boolean isActive = true;

قواعد تسمية المتغيرات

  • يجب أن تبدأ بحرف أو علامة _ أو $.

  • لا يمكن أن تبدأ برقم.

  • لا تُستخدم الكلمات المحجوزة (keywords) كلغة Java.

  • من الأفضل أن تكون الأسماء واضحة وتعبر عن الهدف منها.

المتغيرات في البرمجة كائنية التوجه

في البرمجة كائنية التوجه، يمكن أن تكون المتغيرات خاصة بالكائن (Instance Variables) أو مشتركة بين كل الكائنات (Static Variables). المتغيرات الخاصة تُعلن داخل الكلاس وتستخدم لتخزين بيانات الكائن، أما المتغيرات الثابتة فتستخدم لتخزين بيانات عامة ثابتة لكل الكائنات.


الجمل الشرطية في جافا

دور الجمل الشرطية

الجمل الشرطية تمكّن البرنامج من اتخاذ قرارات مختلفة بناءً على تحقق شروط معينة. تعتبر هذه الجمل من أهم أدوات التحكم في سير البرنامج.

أنواع الجمل الشرطية في جافا

  1. جملة if

تُستخدم لتنفيذ كود معين إذا تحقق شرط معين:

java
if (condition) { // الكود الذي ينفذ إذا كان الشرط true }

مثال:

java
int age = 18; if (age >= 18) { System.out.println("مؤهل للتصويت"); }
  1. جملة if-else

تستخدم لتنفيذ كود في حالة تحقق الشرط وكود آخر إذا لم يتحقق:

java
if (condition) { // ينفذ إذا كان الشرط true } else { // ينفذ إذا كان الشرط false }

مثال:

java
int grade = 75; if (grade >= 60) { System.out.println("ناجح"); } else { System.out.println("راسب"); }
  1. جملة else-if

تسمح بفحص عدة شروط على التوالي:

java
if (condition1) { // تنفيذ الكود عند تحقق الشرط الأول } else if (condition2) { // تنفيذ الكود عند تحقق الشرط الثاني } else { // تنفيذ الكود إذا لم يتحقق أي شرط }
  1. جملة switch

تستخدم عند الحاجة إلى مقارنة متغير بعدة قيم مختلفة، وهي أكثر وضوحًا وأسهل عند التعامل مع الكثير من الشروط المتعددة:

java
switch (variable) { case value1: // كود break; case value2: // كود break; default: // كود افتراضي }

مثال:

java
char grade = 'B'; switch (grade) { case 'A': System.out.println("ممتاز"); break; case 'B': System.out.println("جيد جدًا"); break; case 'C': System.out.println("جيد"); break; default: System.out.println("درجة غير معروفة"); }

شروط التعبيرات الشرطية

تعتمد جافا على التعبيرات المنطقية التي ترجع قيم true أو false للتحكم في تدفق التنفيذ. يمكن استخدام العمليات التالية:

  • المقارنات: ==, !=, <, >, <=, >=

  • العمليات المنطقية: && (و)، || (أو)، ! (نفي)


الحلقات في جافا

مفهوم الحلقات

الحلقات تستخدم لتنفيذ جزء من الكود بشكل متكرر طالما تحقق شرط معين. الحلقات تعتبر أداة فعالة لتكرار العمليات دون الحاجة لكتابة نفس الكود مرات عدة.

أنواع الحلقات الأساسية في جافا

  1. حلقات for

تُستخدم عندما يكون عدد التكرارات معروفًا مسبقًا. تتكون جملة الحلقة من ثلاثة أجزاء: التهيئة، الشرط، والتحديث.

java
for (initialization; condition; update) { // الكود الذي ينفذ في كل دورة }

مثال:

java
for (int i = 0; i < 5; i++) { System.out.println("العدد: " + i); }
  1. حلقات while

تستخدم عندما لا يكون عدد التكرارات معروفًا مسبقًا ويتم التكرار طالما الشرط صحيح.

java
while (condition) { // الكود الذي ينفذ طالما الشرط true }

مثال:

java
int i = 0; while (i < 5) { System.out.println("العدد: " + i); i++; }
  1. حلقات do-while

تشبه حلقة while لكنها تضمن تنفيذ الكود مرة واحدة على الأقل قبل فحص الشرط.

java
do { // الكود الذي ينفذ مرة واحدة على الأقل } while (condition);

مثال:

java
int i = 0; do { System.out.println("العدد: " + i); i++; } while (i < 5);

استخدام الحلقات مع الجمل الشرطية

يمكن دمج الحلقات مع الجمل الشرطية لتنفيذ عمليات معقدة ومتغيرة حسب بيانات الإدخال أو ظروف البرنامج، مما يجعل البرمجة أكثر مرونة وقوة.


دمج المتغيرات، الجمل الشرطية، والحلقات في البرمجة كائنية التوجه

في البرمجة كائنية التوجه بلغة جافا، يتم تعريف المتغيرات داخل الكائنات لتعكس حالتها، ويُستخدم التحكم في التدفق بواسطة الجمل الشرطية والحلقات لتنفيذ سلوكيات مختلفة بناءً على حالة هذه المتغيرات.

على سبيل المثال، عند تصميم كائن يمثل حسابًا مصرفيًا، يمكن تعريف متغير لتخزين الرصيد، واستخدام جمل شرطية للتحقق مما إذا كان الرصيد كافيًا للسحب، واستخدام الحلقات لتنفيذ عمليات متكررة مثل حساب الفوائد شهريًا.


مثال عملي متكامل

java
public class BankAccount { private double balance; // متغير يمثل رصيد الحساب public BankAccount(double initialBalance) { this.balance = initialBalance; } public void deposit(double amount) { if (amount > 0) { balance += amount; System.out.println("تم إيداع: " + amount); } else { System.out.println("مبلغ الإيداع غير صالح"); } } public void withdraw(double amount) { if (amount > 0) { if (balance >= amount) { balance -= amount; System.out.println("تم السحب: " + amount); } else { System.out.println("الرصيد غير كافٍ"); } } else { System.out.println("مبلغ السحب غير صالح"); } } public void applyMonthlyInterest(double rate, int months) { int count = 0; while (count < months) { balance += balance * rate; count++; } System.out.println("الرصيد بعد الفائدة: " + balance); } public double getBalance() { return balance; } public static void main(String[] args) { BankAccount myAccount = new BankAccount(1000); myAccount.deposit(500); myAccount.withdraw(200); myAccount.applyMonthlyInterest(0.01, 6); System.out.println("الرصيد النهائي: " + myAccount.getBalance()); } }

في هذا المثال، تم استخدام:

  • المتغير balance لتخزين الرصيد.

  • الجمل الشرطية لفحص صحة العمليات (الإيداع والسحب).

  • حلقة while لتطبيق الفائدة على مدى أشهر متعددة.


جدول يوضح الفرق بين أنواع الحلقات الأساسية في جافا

نوع الحلقة متى تستخدم الهيكل الأساسي الفرق الرئيسي
for عند معرفة عدد التكرارات مسبقًا for (init; condition; update) { // code } يُحدد عدد التكرار من البداية
while عند عدم معرفة عدد التكرارات while (condition) { // code } الشرط يُفحص قبل التنفيذ
do-while عند الحاجة لتنفيذ الكود مرة واحدة على الأقل do { // code } while (condition); الشرط يُفحص بعد التنفيذ

الخاتمة

تُعد المتغيرات، الجمل الشرطية، والحلقات حجر الأساس في أي لغة برمجة، ولا سيما في جافا التي تدعم البرمجة كائنية التوجه. فهم هذه المفاهيم بشكل عميق يُمكن المبرمج من بناء برامج منظمة، فعالة، وقابلة للتوسع. من خلال دمج هذه الأدوات داخل تصميم الكائنات، يمكن تحقيق برامج أكثر ديناميكية ومرونة في التعامل مع البيانات المختلفة والعمليات المتنوعة التي تطلبها التطبيقات الحديثة.


المراجع