شرح oop جافا؛ ما هو مفهوم OOP في الجافا مع الأمثلة

Salim Aliتعديل Farah Bllo27 مايو 2024آخر تحديث :
شرح oop جافا؛ ما هو مفهوم OOP في الجافا مع الأمثلة

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

ما هي البرمجة الكائنية OOP؟

تعرف برمجة oop بأنها طريقة للبرمجة وذلك باستخدام الكلاسات والكائنات، ولغة الجافا تدعم برمجة oop، وتتميز بأنها من النوع “Pure”، أي يمكن كتابة برنامج جافا كامل باستخدام البرمجة كائنية التوجه من دون الحاجة إلى البرمجة الإجرائية، بعكس بعض اللغات الأخرى مثل لغة c++ وغيرها، تكمن فائدة برمجة OOP في المفاهيم التي يمكنك أن تطبقها بها، مثل تغليف البيانات والوراثة، وتعدد الأشكال، وغيرها من المفاهيم المفيدة أثناء البرمجة أو حتى في عملية صيانة الكود لاحقًا.

تختلف البرمجة كائنية التوجه عن البرمجة الإجرائية المتعارف عليها، فهي تركز على التقسيم للكائنات بدلًا من الإجراءات المباشرة.

ملاحظة: يتطلب تعلم OOP اجتياز المستوى الاساسي مثل الدوال والمتغيرات وأنواع البيانات وغيرها.

ما هي الكلاسات في الجافا وكيف أعملها

الكلاس في لغة الجافا “class” هو قالب للمعلومات والأكواد، حيث أنه مكون من شكل عام لشيء معين، يقوم المبرمج بإنشاء الكائنات منها لاحقًا حيث يقوم الكلاس بتغليفها على أسس محددة، على سبيل المثال جهاز اللاب توب الذي يوجد به أنواع مختلفة ومتفاوتة من حيث الأداء والشركة المصنعة والسعة التخزينية والحجم، إذن فلنفترض أن القالب أو الكلاس هو Laptop يمتلك خصائص مثل الشركة والتخزين وحجم الرام، ووظائف هي الاتصال بالإنترنت والشاشات، والتصوير وغيرها، هذه الخصائص نضع لها قيمة محددة مثل:

الطرقأسماء الأجهزة
connectToNet() , connectToScreenDell-E5510 Dell 300GB 4GB
connectToNet() , connectToScreenHP-5400 HP 1TB 8GB

هذه الأنواع من الأجهزة تسمى الكائنات من الكلاس Laptop وهو الشكل العام.

يمكن عمل الكلاس في الجافا عن طريق إنشاء ملف بعد ذلك كتابة public ثم الكلمة المفتاحية class يليه اسم الكلاس، ويجب أن يكون الحرف الأول من اسم الكلاس كبيرًا، وشروط التسمية الأخرى هي نفس شروط أسماء المتغيرات العادية، ثم يلحق بالحاصرتين {} والتي تحتوي على الأكواد.

مثال:

public class Student

{

… المتغيرات والطرق مثل….///

}()public void printout

;(“…”)System.out.println

}

;private int y=10

}

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

  • دالة لإعطاء قيمة للمتغير: وهي دالة لا تعيد قيمة “void” ويوجد بها بارامترات حيث تستقبل بها هذه القيمة وتضعها في المتغير.
  • كذلك دالة أخرى تعيد قيمة المتغير: وهي دالة تعيد قيمة متغير محدد في الكلاس أو الكائن فقط، وليس لها أي parameters.

إنشاء واستدعى الكائنات في الجافا

هو الجزء العملي والأساسي من كورسات OOP جافا حيث أن الكائنات هي حالة أو نسخة من الكلاس، أو يمكن القول بأنه خليط من البيانات والدوال متواجده معًا للقيام بمهمة ما، هذه البيانات تسمى أيضًا خصائص وتكون غالبًا من النوع “private”، والدوال من النوع “public”.

عندما نعرف كلاس في البرنامج هذا لا يعني أننا عملنا كائنات له ويمكن أن تستخدمه فورًا.

يمكن عمل كائن وذلك من خلال إنشاء نسخة من الكلاس، يكون هذا بخطوتين هما:

إنشاء متغير مع النوع: من خلال ذكر اسم الكلاس في البداية يليه اسم المتغير مع مراعاة شروط التسمية، مثل:

;Student std1

إنشاء الكائن: بعد تعريف المتغير ننشأ الكائن ونضعه في المتغير المرجعي، مثل:

;()std1 = new Student

نلاحظ أننا عند الإنشاء قمنا بوضع الكلمة المفتاحية new ويليه اسم الكلاس مع () والفاصلة المنقوطة.

ملاحظة: المتغير الذي تم إنشاءه في الخطوة الأولى هو متغير مرجعي لعناوين في الذاكرة.

أيضًا يمكن دمج الطريقيتن في سطر واحد فقط بسهولة كالتالي:

;()Student std1 = new Student

لم يتبقى لنا إلا استخدامها، كما يمكننا إنشاء عدد لا يحصى من هذه الكائنات بدون الحاجة إلى نسخ الأكواد لكل كائن.

شرح كيفية عمل برامج oop جافا

بعد إنشاء الكلاسات والكائنات في برنامج الجافا، يمكننا أن نستخدمها من خلال استدعاء دوال الكائن، في الدالة الرئيسية على سبيل المثال:

}public class MainClass

}public static void main(String[] args)

;()Student std1 = new Student

;std1.setName(“Mohammed”)

;std1.setAge(“18”)

;()System.out.println(“ Name is “ + std1.getName() +” Age is “ + std1.getAge

}}

}public class Student

;private int age

;private String name

}public void setAge(int Age)

;age = Age

}

}public void setName(String Name)

;name = Name

}

;()public int getAge

;System.out.println(age)

}

;()public String getName

;System.out.println(name)

}}

خصائص برمجة OOP في الجافا

هناك خصائص تتميز بها برمجة OOP في الجافا مثل إخفاء البيانات والتغليف والمعدلات والوراثة وتعدد الأشكال والتجاوز.

التغليف: يفيد في عملية إخفاء كيفية عمل الكائن مع البيانات عن المستخدم للكائن نفسه.

إخفاء البيانات: حماية البيانات من التغييرات سواءًا تلك المتعمدة أو التي تكون عن طريق الخطأ من خارج الكائن، وكذلك تركيز المستخدم على استخدام الكائن لا على طريقة عمله، أيضًا يمكن للآخرين التعديل على البرنامج من دون تغيير الأكواد للمبرمجين الآخرين.

المعدلات: ويعد من أهم المميزات عند استخدام الكلاسات والكائنات في برمجة OOP على الجافا، حيث تتم إدارة الصلاحيات للمتغيرات والدوال داخل الكلاسات لكي يتم التحكم بالوصول إليها في من كلاس إلى كلاس آخر ومن حزمة كلاسات إلى أخرى.

  • عام: تضع الكلمة المفتاحية “public”، عندما تريد أن تجعل الدالة أو حتى المتغير عام يمكن الوصول إليه من خلال أي مكان في البرنامج.
  • خاص private: ويعني إمكانية الوصول للعنصر فقط إذا كان من نفس الكلاس، أو من أي كلاس فرعي له.
  • محمي protected: يمكن الوصول للعنصر إذا كان في نفس الحزمة فقط ومن أي مكان فيها.

الوراثة: ويعني وراثة الصفات والخصائص بين الكلاسات، ويسمى الكلاس الذي يتم إنشاءه من آخر بالكلاس الابن والأخر بالكلاس الأب، فعند إنشاء الابن نستخدم الكلمة المفتاحية “extends”، واسم كلاس الاب.

مثال على ذلك:

}public class Insect

}

}public class Bee extends Insect

}

}public class Grasshopper extends Insect

}

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

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

مثال:

}class Cat

;()public void sound

;System.out.println(“Mooo”)

}}

}class Bi extends Cat

;()public void sniff

;System.out.println(“sniff”)

}

;()public void sound

;System.out.println(“Miaow”)

}}

مفهوم static

هناك ثلاث أنواع من المتغيرات وهي:

  • المتغيرات المحلية وهي التي تعرف داخل الدوال ولا تكون معروفة خارجها.
  • المتغيرات instance أي التي تعرف داخل الكلاس وليست داخل أي دالة، سميت بهذا لأنها تنسخ في الكائن.
  • متغيرات Static وهي التي تكون معرف بالكلمة المفتاحية “Static”.

تتميز متغيرات ودوال static بأنها تكون معرفة مسبقًا حتى وإن لم حتى إذا لم ننشأ أي كائن، بالتالي يمكن استخدامها بشكل مستقل، بالإضافة إلى أنها لا تنسخ إلى الكائن عند الإنشاء.

كما أن لهذا المفهوم فوائد عديدة منها:

  • إمكانية تعديل القيم على جميع الكائنات من خلال التعامل مع المعدّل Static.
  • استخدام دالة static خارج الكلاس بدون الحاجة للكائنات.

يمكننا من خلاله إحصاء عدد الكائنات التي تم إنشاءها من الكلاس مثلًا عدد الطلاب الذين تم إنشاءهم من كلاس الطالب كما في التالي:

}public class Student

;static int counterK = 0

;()public Student

;counterK += 1

}

}public static void main (String [] args)

;()new Student

;()new Student

also///

;()new Student

;()new Student

;System.out.println(“number of Students “ + counterK )

}}

مثال على برامج OOP في لغة الجافا

تطبيق جافا oop للتحويل من درجة الفهرنهايت إلى الدرجة المئوية والعكس:

public class celsius
{
;private float celsiusDegree
;private float fahrenDegree
}public void setFahrenDegree(float fahren)
;fahrenDegree = fahren
}
;()public float getCelsiusDegree
;celsiusDegree = (fahrenDegree – 32)*(5/9)
;return celsiusDegree
}}

public class fahrenhiet
{
;private float celsiusDegree
;private float fahrenDegree

}public void setCelsiusDegree(float celsius)
;celsius = celsiusDegree
}
;()public float getFahrenDegree
;fahrenDegree = (celsiusDegree + 32)*(5/9)
;return fahrenDegree
}}

;import java.util.Scanner
public class converTempreture
{
}public static void main(String [] args)
;int choosing
;float fahrenhite, celsius
;System.out.println(“if you want change from Fahren to Cels type 1, change from Cels to fahren enter 2 “)
;Scanner scanner = new Scanner(System.in)
;()choosing = scanner.nextInt
}if(choosing == 1)
;()celsius celsius1 = new celsius
;()celsius = scanner.nextFloat
;celsius1.setFahrenDegree(celsius)
;System.out.println(“The Celsius Degree is ” + celsius1.getCelsiusDegree())
}
}else if( choosing == 2)
;()fahrenhiet fahrenhiet1 = new fahrenhiet
;()fahrenhite = scanner.nextFloat
;fahrenhiet1.setCelsiusDegree(fahrenhite)
;System.out.println(“The fahrenhite Degree is ” + fahrenhiet1.getFahrenDegree())
}
}else
;System.out.println(“Error in inputs”)
}}}مخرجات البرنامج

تمرين محلول لاستخدام oop في الجافا

اكتب جافا كائني التوجه لتأجير الدراجات حيث أنه يتكون من كلاسين واحد لعمل حساب للدفع والأخر للمعلومات عن الدراجة مثل الاسم والرقم.

الحل:

public class BicycleRegistration
{
}public static void main(String [] args)
;Bicycle bike; Account acct
;”String myName = “Jon Java
;()bike = new Bicycle
;bike.setOwnerName(myName)
;()acct = new Account
;acct.setOwnerName(myName)
;acct.setInitialBalance(250.00)
;acct.add(25.00)
;acct.deduct(50)
Output some information///
;System.out.println(bike.getOwnerName() + ” owns a bicycle and”)
;System.out.println(“has $ ” + acct.getCurrentBalance() + ” left in the bank”)

}}

public class Bicycle
{
;private String ownerName
;private String tagNo
;()public Bicycle
;”ownerName = “unknown
;”tagNo = “unknown

}
;()public String getOwnerName
;return ownerName
}
}public void setOwnerName(String name)
;ownerName = name
}

;()public String getTagNo
;return tagNo
}
}public void setTagNo(String number){
;tagNo = number
}}

public class Account
{
;private String ownerName
;private double balance
}()public Account
;”ownerName = “unknown
;balance = 0.0
}
}public void add(double amt)
;balance = balance + amt
}
}public void deduct(double amt)
;balance = balance – amt
}
;()public double getCurrentBalance
;return balance
}
}()public String getOwnerName
;return ownerName
}
}public void setInitialBalance(double bal)
;balance = bal
}
}public void setOwnerName(String name)
;ownerName = name
}}

مخرجات البرنامج على BlueJ

أفضل كورسات OOP جافا العربية والأجنبية

من أفضل المصادر العربية للتعلم هي كورسات برمجة OOP الجافا على اليوتيوب مقدم من أكاديمية حسونة مكون من 100 مقطع فيديو، أيضًا في قناة بغداد الجديدة كورسات مكونة من 66 فيديو.

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

من هذه الكورسات الأجنبية هو الكورس المجاني “أساسيات لغة الجافا والبرمجة الكائنية” على منصة يوديمي “Core Java Basics and Object-Oriented Programming”، وأيضًا الكورس “المفاهيم الأساسية برمجة OOP في جافا”، ” Master Object-Oriented Programming Concepts in Java”.


مقالات مقترحة لك:


هناك الكثير من الكورسات الأخرى المتخصصة في شرح البرمجة الكائنية في الجافا يمكنك العثور عليها من خلال محركات البحث.

التعليقات

عذراً التعليقات مغلقة