Files
java-design-patterns/single-table-inheritance/etc/single-table-inheritance.urm.puml
T
Ved Asole b2c7410c03 feat: #1316 Single Table Inheritance pattern implemented (#2632)
* implemented single table inheritance

* added the Java documentation for the pattern

* updated code files as per the standards

* added the puml and png diagram for the file

* added README.md

* #1316 Single Table Inheritance pattern implemented

* resolved the Checkstyle violations

* removed the tests due to build failure

* updated the code as per review

* resolved Checkstyle violations
2024-02-25 14:20:13 +02:00

163 lines
5.1 KiB
Plaintext

@startuml
package com.iluwatar.repository {
interface VehicleRepository {
}
}
package com.iluwatar.service {
class VehicleService {
- vehicleRepository : VehicleRepository
+ VehicleService(vehicleRepository : VehicleRepository)
+ deleteVehicle(vehicle : Vehicle)
+ getAllVehicles() : List<Vehicle>
+ getVehicle(vehicleId : int) : Vehicle
+ saveVehicle(vehicle : Vehicle) : Vehicle
+ updateVehicle(vehicle : Vehicle) : Vehicle
}
}
package com.iluwatar.entity {
class Car {
- engineCapacity : int
+ Car()
+ Car(manufacturer : String, model : String, noOfPassengers : int, engineCapacity : int)
# canEqual(other : Object) : boolean
+ equals(o : Object) : boolean
+ getEngineCapacity() : int
+ hashCode() : int
+ setEngineCapacity(engineCapacity : int)
+ toString() : String
}
class Freighter {
- flightLength : double
+ Freighter()
+ Freighter(manufacturer : String, model : String, countOfSeats : int, loadCapacity : int, flightLength : double)
# canEqual(other : Object) : boolean
+ equals(o : Object) : boolean
+ getFlightLength() : double
+ hashCode() : int
+ setFlightLength(flightLength : double)
+ toString() : String
}
abstract class PassengerVehicle {
- noOfPassengers : int
+ PassengerVehicle()
+ PassengerVehicle(manufacturer : String, model : String, noOfPassengers : int)
# canEqual(other : Object) : boolean
+ equals(o : Object) : boolean
+ getNoOfPassengers() : int
+ hashCode() : int
+ setNoOfPassengers(noOfPassengers : int)
+ toString() : String
}
class Train {
- noOfCarriages : int
+ Train()
+ Train(manufacturer : String, model : String, noOfPassengers : int, noOfCarriages : int)
# canEqual(other : Object) : boolean
+ equals(o : Object) : boolean
+ getNoOfCarriages() : int
+ hashCode() : int
+ setNoOfCarriages(noOfCarriages : int)
+ toString() : String
}
abstract class TransportVehicle {
- loadCapacity : int
+ TransportVehicle()
+ TransportVehicle(manufacturer : String, model : String, loadCapacity : int)
# canEqual(other : Object) : boolean
+ equals(o : Object) : boolean
+ getLoadCapacity() : int
+ hashCode() : int
+ setLoadCapacity(loadCapacity : int)
+ toString() : String
}
class Truck {
+ towingCapacity : int
+ Truck()
+ Truck(manufacturer : String, model : String, loadCapacity : int, towingCapacity : int)
# canEqual(other : Object) : boolean
+ equals(o : Object) : boolean
+ getTowingCapacity() : int
+ hashCode() : int
+ setTowingCapacity(towingCapacity : int)
+ toString() : String
}
abstract class Vehicle {
- manufacturer : String
- model : String
- vehicleId : int
+ Vehicle()
+ Vehicle(manufacturer : String, model : String)
+ Vehicle(vehicleId : int, manufacturer : String, model : String)
# canEqual(other : Object) : boolean
+ equals(o : Object) : boolean
+ getManufacturer() : String
+ getModel() : String
+ getVehicleId() : int
+ hashCode() : int
+ setManufacturer(manufacturer : String)
+ setModel(model : String)
+ setVehicleId(vehicleId : int)
+ toString() : String
}
}
package com.iluwatar.abstractEntity {
abstract class PassengerVehicle {
- noOfPassengers : int
+ PassengerVehicle()
+ PassengerVehicle(manufacturer : String, model : String, noOfPassengers : int)
# canEqual(other : Object) : boolean
+ equals(o : Object) : boolean
+ getNoOfPassengers() : int
+ hashCode() : int
+ setNoOfPassengers(noOfPassengers : int)
+ toString() : String
}
abstract class TransportVehicle {
- loadCapacity : int
+ TransportVehicle()
+ TransportVehicle(manufacturer : String, model : String, loadCapacity : int)
# canEqual(other : Object) : boolean
+ equals(o : Object) : boolean
+ getLoadCapacity() : int
+ hashCode() : int
+ setLoadCapacity(loadCapacity : int)
+ toString() : String
}
abstract class Vehicle {
- manufacturer : String
- model : String
- vehicleId : int
+ Vehicle()
+ Vehicle(manufacturer : String, model : String)
+ Vehicle(vehicleId : int, manufacturer : String, model : String)
# canEqual(other : Object) : boolean
+ equals(o : Object) : boolean
+ getManufacturer() : String
+ getModel() : String
+ getVehicleId() : int
+ hashCode() : int
+ setManufacturer(manufacturer : String)
+ setModel(model : String)
+ setVehicleId(vehicleId : int)
+ toString() : String
}
}
package com.iluwatar {
class SingleTableInheritance {
- vehicleService : VehicleService
+ SingleTableInheritance(vehicleService : VehicleService)
+ main(args : String[]) {static}
+ run(args : String[])
}
}
SingleTableInheritance --> "-vehicleService" VehicleService
VehicleService --> "-vehicleRepository" VehicleRepository
PassengerVehicle --|> Vehicle
TransportVehicle --|> Vehicle
Car --|> PassengerVehicle
Freighter --|> TransportVehicle
PassengerVehicle --|> Vehicle
Train --|> PassengerVehicle
TransportVehicle --|> Vehicle
Truck --|> TransportVehicle
@enduml