ملخص - العداد والأدوات المساعدة
جزء من قسم 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أنماط التصميم - الجزء الثاني
نمط الأمرنمط المحولنمط المزيننمط طريقة القالبنمط الحالةنمط التركيبنمط المكررتدرّب بنفسك: مترجم Java عبر الإنترنت