A class is a template for an object. In real life, you know what a Car is, what a Car has and what a Car does, but you cannot drive what you just said. What you have in your head is a template for what makes a Car, which corresponds to the Car class. An actual car that you can sit in and drive is an object, which is an instance of the Car class.

A module is very similar to a class and, in fact, when compiled is implemented as class. The difference is that you cannot create instances of a module. Modules contain variables, properties and methods just like classes do, but you do not create an instance of a module and then call that objects properties and methods. You simply call the properties and methods of the module.

Modules should be used very little and can quite easily not be used at all. If you do use them then it should only be for groups of properties and methods that either do not require that an object be created, or else that havce no other logical home, like utility functions for a specific project.