Skip to content

mariaclararo/bleach-universe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Bleach - Object-Oriented Programming Simulator

Class Diagram

A comprehensive Java-based simulator of the Bleach anime universe, showcasing object-oriented programming principles and design patterns.

Java Maven License

πŸ“‹ Table of Contents

🎯 Overview

This project is an educational implementation demonstrating object-oriented design principles through the simulation of the Bleach anime universe. It models character hierarchies, ability systems, and world interactions while maintaining clean, extensible code architecture.

The simulator creates a dynamic environment where various character types coexist across different dimensions, each with unique attributes, abilities, and roles within their respective organizations.

✨ Features

  • Multi-Character System: Implement various character types from the Bleach universe

    • Shinigami
    • Vaizard
    • Arrancar
    • Human
    • Quincy
  • Hierarchical World System: Multiple dimensional spaces with inhabitants

    • Soul Society
    • Human World
    • Hueco Mundo
  • Comprehensive Ability System: Various skill categories

    • Kido
    • Zanpakuto
    • Special abilities
    • Healing techniques
    • Stat buffs and modifications
  • Character Attributes: Realistic stat system

    • Life points, Defense, Reiatsu
    • Power Level, Rank, and Specializations
    • Dynamic ability lists and equipment
  • Organization Structures: Divisions with captains and ranks

    • Division assignments
    • Rank system within divisions
    • Group management and relationships

πŸ“‹ Prerequisites

  • Java Development Kit (JDK) 17 or higher
  • Apache Maven 3.6 or higher

Build the Project

Using Maven:

mvn clean install

This will compile the source code, run tests, and package the application.

Compile Only

mvn clean compile

Run the Application

mvn exec:java -Dexec.mainClass="br.edu.unifei.ecot12.bleach.Main"

Or compile and run directly:

mvn clean compile
java -cp target/classes br.edu.unifei.ecot12.bleach.Main

πŸ“– Usage

Basic Example

The application initializes various character types and demonstrates their interactions:

// Create a Vaizard
Vaizard v1 = new Vaizard();
v1.setName("Shinji Hirako");
v1.setPowerLevel(200);
v1.setDefense(100);

// Assign to Soul Society
SoulSociety sou = SoulSociety.getInstance();
sou.getInhabitants().add(v1);

// Equip with Zanpakuto
Zampakuto z1 = new Zampakuto();
z1.setName("Sakanade");
v1.setZampakuto(z1);

// Activate Hollow mask ability
v1.activateHollowMask();

Running the Main Simulation

Execute the Main class to see a full demonstration:

mvn exec:java -Dexec.mainClass="br.edu.unifei.ecot12.bleach.Main"

The output displays:

  • Vaizard character stats and transformations
  • Normal Shinigami and Division assignments
  • Human characters with special abilities
  • Quincy character profiles
  • Substitute Shinigami capabilities

πŸ“ Project Structure

ecot12-final-bleach/
β”œβ”€β”€ pom.xml                     # Maven configuration
β”œβ”€β”€ README.md                   
β”œβ”€β”€ Bleach.dia                  # UML diagram (Dia format)
β”‚
└── src/
    β”œβ”€β”€ main/java/
    β”‚   └── br/edu/unifei/ecot12/bleach/
    β”‚       β”œβ”€β”€ Main.java                      # Main entry point
    β”‚       β”œβ”€β”€ Creature.java                  # Base creature abstraction
    β”‚       β”‚
    β”‚       β”œβ”€β”€ Character Types:
    β”‚       β”œβ”€β”€ Shinigami.java
    β”‚       β”œβ”€β”€ NormalShinigami.java
    β”‚       β”œβ”€β”€ SubstituteShinigami.java
    β”‚       β”œβ”€β”€ Vaizard.java
    β”‚       β”œβ”€β”€ Arrancar.java
    β”‚       β”œβ”€β”€ Hollow.java
    β”‚       β”œβ”€β”€ Human.java
    β”‚       β”œβ”€β”€ Quincy.java
    β”‚       β”‚
    β”‚       β”œβ”€β”€ Ability System:
    β”‚       β”œβ”€β”€ Ability.java                   # Abstract ability
    β”‚       β”œβ”€β”€ Kido.java                      
    β”‚       β”œβ”€β”€ SkillCategory.java
    β”‚       β”œβ”€β”€ Attack.java
    β”‚       β”œβ”€β”€ Defense.java
    β”‚       β”œβ”€β”€ Healing.java
    β”‚       β”œβ”€β”€ Buff.java
    β”‚       β”œβ”€β”€ Special.java
    β”‚       β”‚
    β”‚       β”œβ”€β”€ Equipment:
    β”‚       β”œβ”€β”€ Zampakuto.java                 
    β”‚       β”œβ”€β”€ ZampakutoState.java
    β”‚       β”œβ”€β”€ BankaiForm.java
    β”‚       β”œβ”€β”€ BasicForm.java
    β”‚       β”œβ”€β”€ TrueForm.java
    β”‚       β”œβ”€β”€ Resurreccion.java
    β”‚       β”œβ”€β”€ Cero.java
    β”‚       β”‚
    β”‚       β”œβ”€β”€ World System:
    β”‚       β”œβ”€β”€ Dimension.java                 # Base world/dimension
    β”‚       β”œβ”€β”€ SoulSociety.java              
    β”‚       β”œβ”€β”€ HumanWorld.java                
    β”‚       β”œβ”€β”€ HuecoMundo.java                
    β”‚       β”‚
    β”‚       β”œβ”€β”€ Organization:
    β”‚       β”œβ”€β”€ Division.java
    β”‚       β”œβ”€β”€ Confront.java
    β”‚       └── Arrancar.java
    

πŸ—οΈ Architecture & Design Patterns

The core of this project is the implementation of behavioral and creational design patterns to solve complex domain logic:

  • State Pattern: Orchestrates the evolution of Zanpakutos (from BasicForm to Bankai or Resurreccion). The transition logic is encapsulated within specific state classes, triggered by the character's power level and race.
  • Strategy Pattern: Utilized via the SkillCategory interface. This allows abilities like Attack, Defense, and Healing to be swapped or assigned dynamically to any Creature, decoupling the ability from its specific effect.
  • Singleton Pattern: Applied to the Dimension classes (SoulSociety, HuecoMundo, HumanWorld). This ensures that each realm maintains a unique, global instance to manage its respective inhabitants.
  • Inheritance & Polymorphism: A deep hierarchy starting from Creature allows for specialized behaviors in Shinigami, Hollow, and Quincy while maintaining a common interface for combat and ability usage.

Class Hierarchy

Creature (abstract)
β”œβ”€β”€ Shinigami (abstract)
β”‚   β”œβ”€β”€ NormalShinigami
β”‚   β”œβ”€β”€ Vaizard
β”‚   └── SubstituteShinigami
β”œβ”€β”€ Hollow
β”‚   └── Arrancar
β”œβ”€β”€ Human
β”œβ”€β”€ Quincy
└── ... [other creature types]

Ability (abstract)
β”œβ”€β”€ Attack
β”œβ”€β”€ Defense
β”œβ”€β”€ Healing
β”œβ”€β”€ Special (wrapper)
β”œβ”€β”€ Buff (wrapper)
└── Kido (extends Attack)

Dimension (abstract)
β”œβ”€β”€ SoulSociety
β”œβ”€β”€ HumanWorld
└── HuecoMundo

Zampakuto (abstract)
β”œβ”€β”€ BasicForm
β”œβ”€β”€ BankaiForm
└── TrueForm

πŸ”‘ Key Components

Creature

The abstract base class representing all characters in the simulation. Provides core attributes and methods:

  • Attributes: Life, Defense, Reiatsu, Power Level, Appearance
  • Methods: useAbility(), stat getters/setters
  • Collections: Abilities list, home dimension

Ability System

Flexible system allowing characters to learn and use abilities:

  • Kido: Spiritual energy-based attacks
  • Special: Unique character abilities
  • Buff: Stat modifications and enhancements
  • Attack/Defense/Healing: Specific damage/protection/restoration

Dimension System

World management using the Singleton pattern:

SoulSociety sou = SoulSociety.getInstance();
HumanWorld hw = HumanWorld.getInstance();

Zanpakuto System

Shinigami weapons with multiple forms and states representing power progression.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ‘ Acknowledgments

  • Inspired by the Bleach anime series by Tite Kubo
  • Developed as an educational project for object-oriented programming
  • Part of Software Engineering curriculum at UNIFEI (Federal University of ItajubΓ‘)

About

ECOT12 - Software Project: An advanced OOP simulation of the Bleach anime world. Features hierarchical system modeling, dynamic ability management, and dimension singletons in Java.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages