0% found this document useful (0 votes)
2 views

WEEK 6 ASSIGNMENT

The document contains multiple Java classes demonstrating object-oriented programming concepts such as inheritance, abstraction, and multithreading. It includes implementations for shapes (Circle and Triangle), reservation systems (ResortReservation and RailwayReservation), ID generation, and multithreaded operations for printing even and odd numbers as well as matrix multiplication. Each section showcases the use of classes, methods, and threading in Java.

Uploaded by

gm2573
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

WEEK 6 ASSIGNMENT

The document contains multiple Java classes demonstrating object-oriented programming concepts such as inheritance, abstraction, and multithreading. It includes implementations for shapes (Circle and Triangle), reservation systems (ResortReservation and RailwayReservation), ID generation, and multithreaded operations for printing even and odd numbers as well as matrix multiplication. Each section showcases the use of classes, methods, and threading in Java.

Uploaded by

gm2573
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 12

RA2311026010866

1. abstract class Shape {

abstract double calculateArea();

abstract double calculatePerimeter();

class Circle extends Shape {

private double radius;

Circle(double radius) {

this.radius = radius;

double calculateArea() {

return Math.PI * radius * radius;

double calculatePerimeter() {

return 2 * Math.PI * radius;

class Triangle extends Shape {

private double base;

private double height;

private double side1;


private double side2;

private double side3;

Triangle(double base, double height, double side1, double side2, double side3) {

this.base = base;

this.height = height;

this.side1 = side1;

this.side2 = side2;

this.side3 = side3;

double calculateArea() {

return 0.5 * base * height;

double calculatePerimeter() {

return side1 + side2 + side3;

public class Main {

public static void main(String[] args)

{ Shape circle = new Circle(5);

System.out.println("Circle Area: " + circle.calculateArea());

System.out.println("Circle Perimeter: " + circle.calculatePerimeter());


Shape triangle = new Triangle(5, 4, 3, 4, 5);

System.out.println("Triangle Area: " + triangle.calculateArea());

System.out.println("Triangle Perimeter: " + triangle.calculatePerimeter());

2. class Reservation {

private String reservationId;

private String customerName;

private String date;

public Reservation(String reservationId, String customerName, String date) {

this.reservationId = reservationId;

this.customerName = customerName;

this.date = date;

public String getReservationId() {

return reservationId;

public void setReservationId(String reservationId) {

this.reservationId = reservationId;
}

public String getCustomerName() {

return customerName;

public void setCustomerName(String customerName) {

this.customerName = customerName;

public String getDate() {

return date;

public void setDate(String date) {

this.date = date;

public void checkReservationStatus() {

System.out.println("Reservation Status: Confirmed for " + customerName + " on " +


date);

class ResortReservation extends Reservation {

private String roomNumber;


public ResortReservation(String reservationId, String customerName, String date, String
roomNumber) {

super(reservationId, customerName, date);

this.roomNumber = roomNumber;

public String getRoomNumber() {

return roomNumber;

public void setRoomNumber(String roomNumber) {

this.roomNumber = roomNumber;

@Override

public void checkReservationStatus()

{ super.checkReservationStatus();

System.out.println("Room Number: " + roomNumber);

class RailwayReservation extends Reservation {

private String seatNumber;


public RailwayReservation(String reservationId, String customerName, String date, String
seatNumber) {

super(reservationId, customerName, date);

this.seatNumber = seatNumber;

public String getSeatNumber() {

return seatNumber;

public void setSeatNumber(String seatNumber) {

this.seatNumber = seatNumber;

@Override

public void checkReservationStatus()

{ super.checkReservationStatus();

System.out.println("Seat Number: " + seatNumber);

public class Main {

public static void main(String[] args) {

ResortReservation resortReservation = new ResortReservation("R123", "Alice", "2024-


10-15", "101");

RailwayReservation railwayReservation = new RailwayReservation("T456", "Bob",


"2024-10-20", "A12");
resortReservation.checkReservationStatus();

railwayReservation.checkReservationStatus();

3. class IDGenerator {

private static int nextID = 1;

public static int generateID() {

return nextID++;

public class Main {

public static void main(String[] args) { System.out.println("Generated

ID: " + IDGenerator.generateID()); System.out.println("Generated ID:

" + IDGenerator.generateID()); System.out.println("Generated ID: " +

IDGenerator.generateID());

}
4. class EvenNumbers extends Thread {

public void run()

{ System.out.println("Even Numbers:");

for (int i = 1; i <= 20; i++) {

if (i % 2 == 0)

{ System.out.print(i + "

");

} System.out.println();

class OddNumbers extends Thread {

public void run()

{ System.out.println("Odd Numbers:");

for (int i = 1; i <= 20; i++) {

if (i % 2 != 0)

{ System.out.print(i + "

");

} System.out.println();
}

public class Main {

public static void main(String[] args) {

EvenNumbers evenThread = new EvenNumbers();

OddNumbers oddThread = new OddNumbers();

evenThread.start();

oddThread.start();

5. class MatrixMultiplier extends Thread {

private int[][] matrixA;

private int[][] matrixB;

private int[][] result;

private int row;

public MatrixMultiplier(int[][] matrixA, int[][] matrixB, int[][] result, int row) {

this.matrixA = matrixA;

this.matrixB = matrixB;

this.result = result;
this.row = row;

public void run() {

for (int j = 0; j < matrixB[0].length; j++) {

result[row][j] = 0;

for (int k = 0; k < matrixA[0].length; k++) {

result[row][j] += matrixA[row][k] * matrixB[k][j];

public class Main {

public static void main(String[] args) {

int[][] matrixA = {

{1, 2, 3},

{4, 5, 6},

{7, 8, 9}

};

int[][] matrixB = {

{9, 8, 7},

{6, 5, 4},

{3, 2, 1}

};
int rowsA = matrixA.length;

int colsB = matrixB[0].length;

int[][] result = new int[rowsA][colsB];

Thread[] threads = new Thread[rowsA];

for (int i = 0; i < rowsA; i++) {

threads[i] = new MatrixMultiplier(matrixA, matrixB, result, i);

threads[i].start();

for (int i = 0; i < rowsA; i++) {

try {

threads[i].join();

} catch (InterruptedException e) {

e.printStackTrace();

System.out.println("Resultant Matrix:");

for (int[] row : result) {

for (int value : row)

{ System.out.print(value + " ");

} System.out.println();
}
}

You might also like