DEPARTMENT OF
COMPUTER SCIENCE & ENGINEERING
Experiment 3
Student Name: Jashanpreet Singh UID: 22BCS11724
Branch: CSE Section/Group:635/B
Semester: 6th DOP:
Subject: PBLJ Lab Subject Code: 22CSH-359
Aim: Create an application to calculate interest for FDs, RDs based on certain conditions using inheritance.
Objective: To develop a Java application that calculates interest for Fixed Deposits (FDs)
and Recurring Deposits (RDs) using object-oriented programming principles. The application
will use inheritance to define common properties and methods for accounts while providing
specific implementations for FDs and RDs based on their respective conditions.
Algorithm:
Create Account class with attributes: accountHolderName, principal, rateOfInterest. Include
methods for calculating interest (to be overridden) and displaying details.
Create FixedDeposit subclass that calculates FD interest using: principal * rateOfInterest *
tenureInYears / 100. Display FD details.
Create RecurringDeposit subclass that calculates RD interest using: (monthlyDeposit * months *
(months + 1) / 2) * (rateOfInterest / (12 * 100)). Display RD details.
In main method, create instances of FixedDeposit and RecurringDeposit and display their details.
Code:
class Account {
String accountHolderName;
double principal;
double rateOfInterest;
public Account(String accountHolderName, double principal, double rateOfInterest) {
this.accountHolderName = accountHolderName;
this.principal = principal;
this.rateOfInterest = rateOfInterest;}
public double calculateInterest() {
return 0;
}
DEPARTMENT OF
COMPUTER SCIENCE & ENGINEERING
public void displayDetails() {
System.out.println("Account Holder: " + accountHolderName);
System.out.println("Principal Amount: " + principal);
System.out.println("Rate of Interest: " + rateOfInterest + "%");
class FixedDeposit extends Account {
int tenureInYears;
public FixedDeposit(String accountHolderName, double principal, double rateOfInterest, int
tenureInYears) {
super(accountHolderName, principal, rateOfInterest);
this.tenureInYears = tenureInYears;
public double calculateInterest() {
return principal * rateOfInterest * tenureInYears / 100;
public void displayDetails() {
super.displayDetails();
System.out.println("Tenure (Years): " + tenureInYears);
System.out.println("Interest Amount: " + calculateInterest());}}
class RecurringDeposit extends Account {
int months;
double monthlyDeposit;
public RecurringDeposit(String accountHolderName, double monthlyDeposit, double rateOfInterest,
int months) {
DEPARTMENT OF
COMPUTER SCIENCE & ENGINEERING
super(accountHolderName, 0, rateOfInterest);
this.monthlyDeposit = monthlyDeposit;
this.months = months;
public double calculateInterest() {
// RD interest formula: P(n(n+1)/2) * (r / 12 * 100)
double n = months;
return (monthlyDeposit * n * (n + 1) / 2) * (rateOfInterest / (12 * 100));
public void displayDetails() {
System.out.println("Account Holder: " + accountHolderName);
System.out.println("Monthly Deposit: " + monthlyDeposit);
System.out.println("Number of Months: " + months);
System.out.println("Rate of Interest: " + rateOfInterest + "%");
System.out.println("Interest Amount: " + calculateInterest());
public class InterestCalculator {
public static void main(String[] args) {
// Example FD account
FixedDeposit fd = new FixedDeposit("Sakshi", 100000, 5.5, 3);
System.out.println("Fixed Deposit Details:");
fd.displayDetails();
System.out.println();
DEPARTMENT OF
COMPUTER SCIENCE & ENGINEERING
RecurringDeposit rd = new RecurringDeposit("Sakshi_22BCS11571", 5000, 6.5, 12);
System.out.println("Recurring Deposit Details:");
rd.displayDetails();
Output:
Learning Outcomes:
Inheritance: Use of base and derived classes for shared attributes and methods.
Method Overriding: Custom implementation of methods in subclasses.
Constructor: Initializing object attributes using constructors.
Encapsulation: Storing and manipulating data within objects.
Polymorphism: Different behavior of calculateInterest() based on object type.
Interest Calculation: Implementing FD and RD interest formulas.
Class Interaction: Creating objects and calling methods to display details.