نظام إدارة المركبات مع الوراثة وتعدد الأشكال
Java
Hard
classes
مهمة «نظام إدارة المركبات مع الوراثة وتعدد الأشكال»
قم بتطوير نظام فئات لإدارة أسطول المركبات. أنشئ فئة مجردة Vehicle تحتوي على الحقول: id (int), brand (String), model (String), year (int) وطريقة مجردة getInfo(). ورث منها الفئات Car (حقل إضافي: int doors) وMotorcycle (حقل إضافي: boolean hasSidecar). نفذ الفئة Fleet التي تحتوي على قائمة من Vehicle وطرق: addVehicle(Vehicle v), removeVehicle(int id), getVehicleInfo(int id) (ترجع معلومات المركبة بالتنسيق: "id brand model year doors" لـ Car و"id brand model year sidecar" لـ Motorcycle، حيث يتم عرض sidecar كـ "yes" أو "no")، listAllVehicles() (تعرض معلومات جميع المركبات، كل منها في سطر جديد). في main اقرأ من stdin عدد الأوامر N، ثم N من الأوامر: "ADD id brand model year type [param]"، "REMOVE id"، "INFO id"، "LIST". بالنسبة لـ ADD، يمكن أن يكون type "Car" (عندها param = doors) أو "Motorcycle" (param = "yes"/"no"). من المضمون أن المعرفات id فريدة. أخرج نتائج أوامر INFO وLIST.
تنسيق الإدخال
في السطر الأول عدد صحيح N (1 <= N <= 100). ثم N سطرًا من الأوامر: ADD id brand model year type param، REMOVE id، INFO id، LIST.
تنسيق الإخراج
لكل أمر INFO، أخرج سطرًا بمعلومات المركبة. لأمر LIST، أخرج معلومات جميع المركبات حسب ترتيب الإضافة، سطر واحد لكل مركبة. إذا لم يتم العثور على مركبة بالمعرف id المطلوب لأمر INFO أو REMOVE، أخرج "Not found".
أمثلة
مثال 1
الإدخال
6
ADD 1 Toyota Camry 2015 Car 4
ADD 2 Harley Davidson 2020 Motorcycle yes
INFO 1
LIST
REMOVE 1
LIST
الإخراج
1 Toyota Camry 2015 4
1 Toyota Camry 2015 4
2 Harley Davidson 2020 yes
2 Harley Davidson 2020 yes
مثال 2
الإدخال
4
ADD 10 BMW X5 2022 Car 5
INFO 10
INFO 20
LIST
الإخراج
10 BMW X5 2022 5
Not found
10 BMW X5 2022 5
مثال 3
الإدخال
5
1 2 3 4 5
الإخراج
main.java