ملخص - العداد والأدوات المساعدة
جزء من قسم Object Oriented Programming في رحلة Java على Coddy — الدرس 19 من 87.
التحدي
سهللنقم ببناء نظام كامل يجمع بين فئة Counter لتتبع المثيلات وفئة أدوات MathUtils - لدمج كل ما تعلمته حول المتغيرات الثابتة (static variables)، والأساليب الثابتة (static methods)، والكتل الثابتة (static blocks)، والثوابت (constants).
ستقوم بإنشاء ثلاثة ملفات لتنظيم الكود الخاص بك:
Counter.java: قم بإنشاء فئة تتبع عدد المثيلات التي تم إنشاؤها:- متغير ثابت خاص (private static variable) لعد إجمالي المثيلات
- متغير مثيل خاص (private instance variable) باسم
idيخزن المعرف الفريد لكل عداد - مشد (constructor) يقوم بزيادة العدد الإجمالي وتعيين العدد الحالي كـ id لهذا المثيل
- أسلوب
getId()يعيد المعرف الفريد لهذا العداد - أسلوب ثابت
getTotalCount()يعيد عدد كائنات Counter التي تم إنشاؤها
MathUtils.java: قم بإنشاء فئة أدوات تحتوي فقط على أعضاء ثابتة (لا يتم إنشاؤها أبداً):- ثابت عام
PIبقيمة3.14159 - ثابت عام
HALFبقيمة0.5 - أسلوب ثابت
square(int n)يعيد مربع n - أسلوب ثابت
cube(int n)يعيد مكعب n - أسلوب ثابت
circleArea(double radius)يعيد PI * radius * radius
- ثابت عام
Main.java: قم بتوضيح عمل الفئتين معاً. ستتلقى مدخلين: رقم للعمليات الحسابية وعدد لكائنات Counter المراد إنشاؤها. اطبع ما يلي:Square: [value]Cube: [value]Circle area (radius=[number]): [value](المساحة منسقة إلى منزلتين عشريتين)- لكل Counter يتم إنشاؤه، اطبع:
Counter [id] created - أخيراً:
Total counters: [count]
ستتلقى مدخلين: رقم (int) للحسابات الرياضية، وعدد (int) لعدد كائنات Counter المراد إنشاؤها.
تذكر الوصول إلى الأعضاء الثابتة من خلال اسم الفئة (مثل MathUtils.PI و Counter.getTotalCount())، واستخدم String.format("%.2f", value) لتنسيق القيم العشرية.
جرّب بنفسك
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int number = scanner.nextInt();
int count = scanner.nextInt();
// TODO: استخدم دوال MathUtils الـ static للحساب والطباعة:
// - المربع: [value]
// - المكعب: [value]
// - مساحة الدائرة (radius=[number]): [value] (منسق إلى منزلتين عشريتين)
// TODO: قم بإنشاء عدد 'count' من كائنات Counter
// لكل Counter يتم إنشاؤه، اطبع: Counter [id] created
// TODO: اطبع العدد الإجمالي للعدادات التي تم إنشاؤها
// إجمالي العدادات: [count]
}
}
جميع دروس Object Oriented Programming
1أساسيات الـ OOP
الملفات الخارجيةمقدمة في الـ OOPالفئات (Classes) مقابل الكائنات (Objects)الكلمة المفتاحية thisالدوال (Methods)الحقول (Attributes)دالة البناء (Constructor)تعدد أشكال دالة البناء (Constructor Overloading)مراجعة - آلة حاسبة بسيطة4الوراثة
الوراثة الأساسية (extends)الكلمة المفتاحية superإعادة تعريف الدوال (@Override)تسلسل المنشئات (Constructor Chaining)كلاس Objectالوراثة الأحادية ومتعددة المستوياتلماذا لا توجد وراثة متعددة للكلاساتمراجعة - هيكلية الموظفين7الدوال الخاصة وفئة Object
دالة toString()equals() و hashCode()دالة clone()compareTo() و Comparableواجهة Comparatorمراجعة - الترتيب المخصص2محددات الوصول والتغليف
نظرة عامة على مستويات الوصولدوال Getter و Setterإخفاء البياناتالكلمة المفتاحية finalمراجعة - مدير الحساب البنكي5تعدد الأشكال (Polymorphism)
أساسيات الـ Method Overloadingالـ Method Overriding (في وقت التشغيل)الـ Upcasting والـ Downcastingمعامل الـ instanceofالفئات والدوال المجردة (Abstract)مراجعة - حاسبة الأشكال8مفاهيم OOP المتقدمة
الـ Composition مقابل الـ Inheritanceالـ Aggregation مقابل الـ Compositionالفئات الداخلية والمتداخلة والمجهولة (Inner, Nested & Anonymous)الـ Enums ودوالهاالـ Records (Java 16+)الـ Sealed Classes (Java 17+)11أنماط التصميم - الجزء الأول
مقدمة في أنماط التصميمنمط Singletonنمط Factoryنمط Builderنمط Observerنمط Strategy3خصائص الفئة والعضو الساكن
المتغيرات الخاصة بالكائن مقابل المتغيرات الساكنةالدوال الساكنةالكتل البرمجية الساكنةالثوابت (static final)ملخص - العداد والأدوات المساعدة6الواجهات (Interfaces) والأصناف المجردة (Abstract Classes)
مقدمة في الواجهات (Interfaces)تنفيذ الواجهات (Interfaces)تنفيذ واجهات متعددةالـ Default و Static في الواجهاتالأصناف المجردة مقابل الواجهاتالواجهات الوظيفية (Functional Interfaces)مراجعة - نظام الدفع9الأنواع العامة (Generics)
مقدمة في الأنواع العامةالأصناف العامة (Generic Classes)الدوال العامة (Generic Methods)معاملات الأنواع المقيدةالرموز البديلة (?, extends, super)مراجعة - الحاويات العامة12أنماط التصميم - الجزء الثاني
نمط الأمرنمط المحولنمط المزيننمط طريقة القالبنمط الحالةنمط التركيبنمط المكرر