From 52b4e0afcd9e8af03acb7fabb82c2e25d9aecc09 Mon Sep 17 00:00:00 2001 From: Mobina Date: Sat, 9 May 2026 09:21:04 +0330 Subject: [PATCH] WS-03 --- .idea/.name | 1 + src/main/java/org/Main.java | 43 ++++++++++++++++++++---- src/main/java/org/model/Car.java | 27 +++++++++++++-- src/main/java/org/model/ElectricCar.java | 26 ++++++++++++-- src/main/java/org/model/GasCar.java | 26 ++++++++++++-- src/main/java/org/model/HybridCar.java | 42 +++++++++++++++++++++++ src/main/java/org/model/SportsCar.java | 21 ++++++++++++ src/main/java/org/model/Vehicle.java | 25 ++++++++++++++ 8 files changed, 197 insertions(+), 14 deletions(-) create mode 100644 .idea/.name create mode 100644 src/main/java/org/model/HybridCar.java diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..002da1d --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +Main.java \ No newline at end of file diff --git a/src/main/java/org/Main.java b/src/main/java/org/Main.java index 7a3d8c8..0df2274 100644 --- a/src/main/java/org/Main.java +++ b/src/main/java/org/Main.java @@ -1,4 +1,7 @@ package org; +import org.model.*; + +import java.util.ArrayList; public class Main { public static void main(String[] args) { @@ -17,9 +20,14 @@ public class Main { // ElectricCar tesla = new ElectricCar(...); // ============================================================ - - - + ElectricCar tesla = new ElectricCar("Tesla", "Roodster", + 2023, 0, 7, 53, 80); + GasCar ferrari= new GasCar("Scuderia Ferrari", "SF90", + 2024, 100, 4,78,"petrol"); + SportsCar lamborghini= new SportsCar("lamborghini", "huracan", + 2026, 20000, 2,72 ,"Petrol",2.6); + HybridCar porsche= new HybridCar("porsche", "panamara", + 2024, 200, 7, 26, 50); // ============================================================ // TODO 2: @@ -32,7 +40,7 @@ public class Main { // as their parent type (Vehicle). // ============================================================ - + Vehicle[] vehicle={tesla,ferrari,lamborghini,porsche}; @@ -47,7 +55,11 @@ public class Main { // behavior and can call inherited methods. // ============================================================ - + for (int i=0; i< vehicle.length; i++) + { + vehicle[i].basicInfo(); + System.out.println("======================================="); + } @@ -62,7 +74,11 @@ public class Main { // • Show subclass‑specific inspection messages // ============================================================ - + for (int i=0; i<4; i++) + { + vehicle[i].performService(); + System.out.println("======================================="); + } @@ -80,6 +96,7 @@ public class Main { // // ============================================================ + Serviceable[] serviceables = {tesla, ferrari, lamborghini, porsche}; @@ -107,6 +124,18 @@ public class Main { // ============================================================ + for (Serviceables s: serviceables) + { + Vehicle v= (Vehicle) s; + if (v.needsService()) + { + System.out.println("brand: "+ v.getBrand()+ " model"+ v.getModel()); + v.performService(); + } + else + System.out.println("brand: "+ v.getBrand()+ " model"+ v.getModel()+" does not need service"); + System.out.println("======================================="); + } @@ -118,7 +147,7 @@ public class Main { // // ============================================================ - + System.out.println("=== Workshop Completed ==="); diff --git a/src/main/java/org/model/Car.java b/src/main/java/org/model/Car.java index cb81367..66d986b 100644 --- a/src/main/java/org/model/Car.java +++ b/src/main/java/org/model/Car.java @@ -15,17 +15,21 @@ public abstract class Car extends Vehicle implements Serviceable { private int seats; - public Car(String brand, String model, int year, - double mileage, int seats) { + public Car(String brand, String model, int year, double mileage, int seats) { // TODO: Call super constructor + super(brand, model, year, mileage); this.seats = seats; } // TODO: Override getEnergyType() → return "Unknown" + @Override + public String getEnergyType() + { + return "Unknown"; + } // TODO: Override showDetails() - /* * Implement Serviceable methods: * @@ -37,4 +41,21 @@ public abstract class Car extends Vehicle implements Serviceable { * performService(): * - Print: "General car service completed" */ + + @Override + public boolean needsService() + { + if (getMileage()>1000) + return true; + else + return false; + } + + public abstract void performService(); + + @Override + public void showDetails() + { + System.out.println("Car's seats: "+ seats); + } } diff --git a/src/main/java/org/model/ElectricCar.java b/src/main/java/org/model/ElectricCar.java index ee9f5f9..fbc4ea3 100644 --- a/src/main/java/org/model/ElectricCar.java +++ b/src/main/java/org/model/ElectricCar.java @@ -28,10 +28,32 @@ public class ElectricCar extends Car implements Chargeable { } // TODO: Override getEnergyType() → return "Electric" + @Override + public String getEnergyType() + { + return "Electric"; + } // TODO: Override showDetails() + @Override + public void showDetails() + { + System.out.println("batteryCapacity: "+ batteryCapacity+ " chargeLevel: "+ chargeLevel); + } // TODO: Implement charge(double amount) - // Validate negative - // Cap at 100 + public void performService() + { + System.out.println("Battery system checked"); + chargeLevel=100; + } + + @Override + public boolean needsService() + { + if (getMileage()>8000) + return true; + else + return false; + } } diff --git a/src/main/java/org/model/GasCar.java b/src/main/java/org/model/GasCar.java index 58b3e45..82d701d 100644 --- a/src/main/java/org/model/GasCar.java +++ b/src/main/java/org/model/GasCar.java @@ -28,10 +28,32 @@ public class GasCar extends Car implements Refuelable { } // TODO: Override getEnergyType() → return fuelType + " (Gas)" + @Override + public String getEnergyType() + { + return "Gas"; + } // TODO: Implement refuel(double amount) - // Validate amount - // Cap at 100 + public void performService() + { + System.out.println("Engine oil changed"); + fuelLevel=100; + } + + @Override + public boolean needsService() + { + if (getMileage()>12000) + return true; + else + return false; + } // TODO: Override showDetails() + @Override + public void showDetails() + { + System.out.println("fuelType: "+fuelType+" fuelLevel: "+fuelLevel); + } } diff --git a/src/main/java/org/model/HybridCar.java b/src/main/java/org/model/HybridCar.java new file mode 100644 index 0000000..7e157a2 --- /dev/null +++ b/src/main/java/org/model/HybridCar.java @@ -0,0 +1,42 @@ +package org.model; + +import org.behavior.Chargeable; + +public class HybridCar extends Car implements Chargeable { + private int batteryCapacity; + private double chargeLevel; + + public HybridCar(String brand, String model, int year, + double mileage, int seats, + int batteryCapacity, double chargeLevel) { + + super(brand, model, year, mileage, seats); + this.batteryCapacity = batteryCapacity; + this.chargeLevel = chargeLevel; + } + + public String getEnergyType() + { + return "Hybrid"; + } + + @Override + public boolean needsService() + { + if (getMileage()>24000) + return true; + else + return false; + } + + public void performService() { + System.out.println("Battery system checked"); + chargeLevel=100; + } + + @Override + public void showDetails() + { + System.out.println("batteryCapacity: "+ batteryCapacity+ " chargeLevel: "+ chargeLevel); + } +} diff --git a/src/main/java/org/model/SportsCar.java b/src/main/java/org/model/SportsCar.java index 2f8e459..10ede90 100644 --- a/src/main/java/org/model/SportsCar.java +++ b/src/main/java/org/model/SportsCar.java @@ -24,8 +24,29 @@ public class SportsCar extends GasCar { this.zeroToHundred = zeroToHundred; } + public void performService() + { + System.out.println("High-performance brake system checked"); + } + + @Override + public boolean needsService() + { + if (getMileage()>5000) + return true; + else + return false; + } + // TODO: Override showDetails() // Print header // Call super.showDetails() // Print acceleration time + @Override + public void showDetails() + { + System.out.println("sport car"); + super.showDetails(); + System.out.println(zeroToHundred); + } } diff --git a/src/main/java/org/model/Vehicle.java b/src/main/java/org/model/Vehicle.java index 70615a9..816f6dd 100644 --- a/src/main/java/org/model/Vehicle.java +++ b/src/main/java/org/model/Vehicle.java @@ -21,12 +21,35 @@ public abstract class Vehicle { } // TODO: Create getters for all fields + public String getBrand() { + return brand; + } + public String getModel(){ + return model; + } + public int getYear(){ + return year; + } + public double getMileage() { + return mileage; + } // TODO: Implement addMileage(double km) // If km is negative → print error // Otherwise increase mileage + public double addMileage(double km) + { + if (km<0) + { + System.out.println("error"); + return mileage; + } + mileage+=km*0.621371; + return mileage; + } // TODO: Declare abstract method getEnergyType() + public abstract String getEnergyType(); public void basicInfo() { System.out.println( @@ -37,4 +60,6 @@ public abstract class Vehicle { } public abstract void showDetails(); + public abstract void performService(); + public abstract boolean needsService(); }