Base Class: Vendor
Private variables:
vendorId
vendorName
baseContractAmount
Validation rules (in setters):
vendorId must start with "VEND"
vendorName must be at least 4 characters
baseContractAmount must be ≥ 10,000
Methods:
double calculateMonthlyPayment()
Default implementation returns baseContractAmount
Subclass: LocalVendor
Inherits from Vendor
Overrides calculateMonthlyPayment()
Adds 12% tax
Adds fixed compliance fee = 500
Subclass: InternationalVendor
Inherits from Vendor
Private variable:
exchangeRate
Validation:
exchangeRate must be > 0
Overrides calculateMonthlyPayment()
Converts amount using exchange rate
Adds 18% customs duty
Adds international handling fee = 2000
Main Class:
Use a Vendor reference
Assign it to both vendor types
Display calculated monthly payment