Skip to main content
Back to Portfolio
Object-Oriented Design

eventticketbooking

A modular multi-user desktop application built in Java, applying strict Object-Oriented principles (Inheritance, Polymorphism, Encapsulation) and RBAC workflows.

Strict Object-Oriented Principles in Practice

Engineered with a clean class hierarchy where abstract user and event models encapsulate core domain behaviors, while polymorphic controllers drive differing permissions between administrative and customer operations.

System Architecture

  • Role-Based Access Control

    Strict encapsulation separating Administrator privilege functions from Customer seat selection and booking.

  • Polymorphism & Inheritance

    Modular class hierarchies modeling distinct event types, seating tiers, and customized pricing algorithms.

  • Transaction & Booking State

    Thread-safe data handling ensuring inventory decrements reliably and preventing double-booking race conditions.

  • Input Validation & Error Recovery

    Robust exception handling pipelines preventing invalid payment strings, overflows, and corrupted serialized states.

Technology Stack

Core LanguageJava (JDK 17+)
User InterfaceJava Swing / AWT (Event Dispatch Thread)
Design PatternsMVC Architecture, Factory Pattern, Singleton
Data ManagementObject Serialization & In-Memory Data Models
Key CompetenciesInheritance, Polymorphism, Encapsulation, RBAC

Polymorphic Event Modeling

public abstract class Event {
  public abstract double calculatePrice(SeatTier tier);
  public abstract boolean validateCapacity();
}

The Challenge

Building robust desktop software requires structured state management, clean component separation, and comprehensive validation. The objective of this project was to architect a production-grade multi-user ticketing platform in Java demonstrating textbook Object-Oriented principles.

Object-Oriented Design & RBAC

The software models the business domain using strict encapsulation and inheritance hierarchies:

  • Encapsulation: Sensitive customer payment tokens and administrator credentials remain private, accessed exclusively through guarded getters and validated mutation methods.
  • Polymorphism: Differing event categories (e.g. VIP Concerts, General Admission Sports, Conferences) extend a base Event class, overriding pricing multipliers and seating capacity validation dynamically.
  • Role Separation: Distinct interface flows ensure Administrators can create events, adjust venue seating layouts, and inspect revenue ledgers, while standard Customers interact solely with discovery, seat reservation, and digital receipt generation.