A self-directed Java portfolio of 29 programs I built to learn object-oriented programming from the ground up. Instead of following a single tutorial, I worked through one concept at a time and implemented each one myself so I could explain how and why it works.
This isn't a polished product — it's a learning portfolio. Each project is a small, focused program that practices a specific OOP or computer-science concept. The goal was depth of understanding: building things from scratch rather than relying on libraries, so I actually understand what's happening underneath.
- Encapsulation & abstraction — designing classes with clear responsibilities that model real-world systems and data relationships
- Inheritance — sharing and extending behavior across related classes
- Polymorphism & interface-based design — writing flexible, reusable code that works across multiple types
- Data structures from scratch — implementing stacks, queues, and linked lists by hand to understand memory and algorithmic efficiency
- Exception handling & file I/O — reading and writing data while gracefully managing errors
- Recursion — solving progressively harder problems by breaking them down
Each project is a standalone .java file in the repo root, named for what it does — for example Bank_Account_Management.java, calc_overloading.java, circle_and_cylinder.java, hierarrical_inheritance.java, and discount_system_capstone.java. Some files are core classes (like Player.java or abstract_shape_hier.java) used by the programs that demonstrate them.
To run any of them:
javac FileName.java
java FileNameUse the file whose class contains
mainas the entry point (for exampleMain.javaorMain_POLY.java). Some files define supporting classes rather than a runnablemain.
Built by Zayd Aziz — a high school student (Class of 2027) focused on backend and ML. Profile: github.com/zayd-aziz · LinkedIn: linkedin.com/in/zaydaziz