Collection of laboratories and projects of the subject "Programación Orientada a Objetos" at the Escuela Colombiana de Ingeniería Julio Garavito (ECI).
This repository documents the learning process of the POOB university course, focusing on object-oriented design, design patterns, GUI development with Java Swing, and iterative software delivery. It includes laboratory assignments and two major iterative projects that demonstrate proficiency in Java, UML modeling, and domain/presentation architecture.
Feel free to explore and use any of the resources here for non-commercial and educational purposes. If you find something useful, you're welcome to reference it in your own learning journey.
The labs are dedicated to progressive learning of Java OOP concepts, going from basic objects to full simulation systems.
Introduction to Java OOP fundamentals using the BlueJ IDE. Covers:
- Basic class design (Circle, Rectangle, Triangle)
- Canvas drawing
- Kalah/Mancala board game implementation (Pit structure)
- Objects First with Java methodology
Continuation of Lab 01 with an evolution of the shape hierarchy and BlueJ project organization. Covers:
- Refinement of shape classes
- Code organization and class relationships
First implementation of the Schelling residential segregation model, transitioning from BlueJ to console-based execution. Covers:
- Migration from BlueJ IDE to console project structure
- UML design with Astah (schelling_Avance.asta)
- First domain model for city and agent simulation
- JAR packaging
Design-focused laboratory centered on UML modeling and architecture planning. Covers:
- Object-oriented analysis and design
- UML class diagrams with Astah (Plan15.asta)
- BlueJ-based implementation
A physics-inspired simulation of Maxwell's Demon using a domain/presentation architecture. Covers:
- Domain/Presentation layer separation
- Custom exception handling (
DMaxwellExceptions) - Java Swing GUI (
DMaxwellGUI) - Unit testing (
DMaxwellTest) - Particle simulation (red/blue particles, wall gates, grid cells)
- Persistent data files (
.dat) for test scenarios
Final and complete implementation of the Schelling model, rebuilt in IntelliJ IDEA with a clean layered architecture. Covers:
- Full domain model:
Agent,Block,City,Person,Walker,Katalan,Light,Identifier - Custom exception class (
CityException) - Java Swing GUI (
CityGUI) - Unit testing (
CityTest) - Persistent simulation data files (
.dat) - Executable JAR packaging (
schelling.jar)
An iterative project developing and refining a simulation of Maxwell's Demon over four delivery cycles.
| Cycle | Description |
|---|---|
| Cycle 1 | Initial design and prototype |
| Cycle 2 | Core domain implementation |
| Cycle 3 | Advanced logic and refinement |
| Final Cycle | Complete deliverable with full functionality |
The main course project: a fully functional Pokemon-inspired battle game built in Java with Swing. Developed across three delivery cycles with incremental feature additions.
- UI/UX mockups (
MockUp.pdf) - UML class diagram (
PokemonEsmeralda.asta)
- Updated UML design (
POOBkemon.asta) - Development retrospective documentation
A complete, playable game with the following features:
- Pokemon system: Type effectiveness, stats, level-based attributes
- Move system: Physical, Special, Attribute, and State-based moves with effects
- Trainer AI types:
AttackingTrainer,ChangingTrainer,DefensiveTrainer,ExpertTrainer,MachineTrainer - Item system: Normal Potion, Super Potion, Hyper Potion, Revive
- Game modes: Player vs Machine, Machine vs Machine
- Pokedex: Full Pokemon browser panel
- Persistent game state: Java serialization (
.datfiles) - Static and dynamic analysis reports
- Full UML design documentation (
POOBkemon.asta)
- Java 17
- Java Swing
- BlueJ (Labs 1–4)
- IntelliJ IDEA (Labs 5–6, Projects)
- Astah Professional (UML diagramming)
- JUnit (unit testing)
- Git
Distributed under the MIT License. See LICENSE for more information.