Hi Dan,
Basically you create separate modules, that have their own methods ( = functions or actions or whatever ) and their own properties ( = variables, or data or parameters or whatever). When module A needs access to functions or variables of module B, you need to require module B in module A. This doesn’t break the concept of OOP.
By the way, in Corona and Lua game programming OOP can be as simple as splitting your code into modules, or distinct “objects” that each have their own functions and variables. The cool thing is that if you build all your separate simpler modules so that they can never fail or crash, then your program will always work more or less instead of crash!
One step up in complexity is simple pseudo-OOP using prototypes, which is basically a difficult way to say that you create modules that you can spawn - like creating instances from classes.
Then moving on in complexity you get inheritance and polymorphism etc… Inheritance is not too difficult actually. It’s really cool stuff. I’m not a programmer from background so it took me a while to get my mind around some stuff, but organising my modules is something I really, really, really enjoy now.
It also helps me to clean my code up tremendously! My gameEngine.lua code reads something like this:
levelManager.readCurrentLevel() graphicsLoader.loadGraphics() levelManager.buildLevel() uiBuilder.buildUI() gameEngine.startGame()
Because all of the “hard” code is in separate external module, I get something in the end that is really easy to read, follow and understand. Tres cool! 
One thing to watch out for: you can not create infinite “loops” in requiring. That means that if module A requires module B, then you can not also require module B in module A. This is sometimes tricky, and makes you scratch your head from time to time, but it’s actually quite fun. A solution for this, by the way, is creating a module C that requires module A and B. This way A and B see eachother “in both directions” and can communicate easily. But there are other solutions. Creating this structure or architecture is challenging at first, but it actually makes life a LOT easier, and coding faster once you get the hang of it.