Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مراجعة - الترتيب المخصص

جزء من قسم Object Oriented Programming في رحلة Java على Coddy — الدرس 46 من 87.

challenge icon

التحدي

سهل

لنقم ببناء مدير لمجموعة كتب يجمع كل ما تعلمته حول الأساليب الخاصة والفرز. ستقوم بإنشاء فئة Book مع تطبيق مناسب لـ toString() و equals() و hashCode()، والترتيب الطبيعي عبر Comparable، بالإضافة إلى مقارنات خارجية لخيارات فرز مرنة.

ستقوم بتنظيم الكود الخاص بك عبر أربعة ملفات:

  • Book.java: أنشئ فئة تمثل كتاباً بثلاثة حقول خاصة: title (String)، و author (String)، و year (int). قم بتضمين منشئ (constructor) ودوال جلب (getters) لجميع الحقول.

    يجب أن تقوم فئة Book بتنفيذ Comparable<Book> مع ترتيب طبيعي حسب year بـ ترتيب تصاعدي (الأقدم أولاً).

    قم بإعادة تعريف toString() لتعيد: [title] by [author] ([year])

    قم بإعادة تعريف equals() بحيث يتساوى كتابان عندما يكون لهما نفس title وَ author. قم بإعادة تعريف hashCode() باستخدام Objects.hash() مع نفس الحقول.

  • TitleComparator.java: أنشئ مقارناً (comparator) يقوم بفرز الكتب أبجدياً حسب العنوان بـ ترتيب تصاعدي (من A إلى Z).
  • AuthorComparator.java: أنشئ مقارناً يقوم بفرز الكتب أبجدياً حسب المؤلف بـ ترتيب تصاعدي (من A إلى Z).
  • Main.java: اجمع كل شيء معاً! ستتلقى مدخلات لثلاثة كتب، كل منها في سطر منفصل بالتنسيق التالي: title,author,year

    أنشئ ArrayList من الكتب واستعرض جميع طرق الفرز الثلاثة:

    1. الفرز باستخدام الترتيب الطبيعي (حسب السنة) وطباعة كل كتاب
    2. طباعة سطر فارغ
    3. الفرز حسب العنوان باستخدام TitleComparator وطباعة كل كتاب
    4. طباعة سطر فارغ
    5. الفرز حسب المؤلف باستخدام AuthorComparator وطباعة كل كتاب

ستتلقى ثلاثة أسطر من المدخلات، يحتوي كل منها على بيانات الكتاب بالتنسيق: title,author,year

على سبيل المثال: 1984,George Orwell,1949

تذكر استيراد java.util.Objects في Book.java، و java.util.Comparator في ملفات المقارن الخاصة بك، و java.util.ArrayList و java.util.Collections و java.util.Scanner في Main.java.

جرّب بنفسك

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // قراءة ثلاثة كتب من المدخلات
        String line1 = scanner.nextLine();
        String line2 = scanner.nextLine();
        String line3 = scanner.nextLine();
        
        // TODO: تحليل كل سطر لاستخراج العنوان، والمؤلف، والسنة
        // تلميح: استخدم split(",") لفصل القيم
        
        // TODO: إنشاء كائنات Book من البيانات التي تم تحليلها
        
        // TODO: إنشاء ArrayList وإضافة الكتب الثلاثة جميعها
        
        // TODO: الفرز باستخدام الترتيب الطبيعي (حسب السنة) وطباعة كل كتاب
        
        // TODO: طباعة سطر فارغ
        
        // TODO: الفرز حسب العنوان باستخدام TitleComparator وطباعة كل كتاب
        
        // TODO: طباعة سطر فارغ
        
        // TODO: الفرز حسب المؤلف باستخدام AuthorComparator وطباعة كل كتاب
    }
}

جميع دروس Object Oriented Programming