This "black box" theory, or modular programming, has been around a lot longer than ActiveX.
In essense, you break a process down into its individual component parts, then write a module/function/subroutine (depending on complexitiy of the part) to handle each component part. You then develop and test that module to insure that its functioning properly. Once its working, you can then consider that module to be a fully functional black box, and can plug it into the entire process.
There are several advantages to using this rather standard software engineering approach. By breaking the process down into smaller pieces, its much easier to allow for team development, you remove the over-whelming aspect of large projects, testing can be done systematically, and from a maintenance standpoint, if the logic with a module needs to change, you pull out that "black box", do the updates, and plug it back in.
Now, that being said, there are very legitimate uses for public variables, and in some cases, it may be more efficient, and practical, to use a public variable, especially in event-driven processes, for those items which are by their very nature, global in scope. But I would only use global variables where they are required. Good Luck
--------------
As a circle of light increases so does the circumference of darkness around it. - Albert Einstein