Object-oriented design in Java
A small program can get by with loose variables and a few methods. As a product grows, that gets hard to follow: the data for one thing is scattered across several variables, and the methods that work on it sit somewhere else entirely. A class fixes this. It bundles the data for one kind of thing together with the operations that belong to it, so a student's details and the things you do with a student live in one...