I do keep the number of global variables to a minimum, but when they make sense, I use them. Employing member functions to access variables is simply being overprotective, adds unnecessary code, and requires the programmer to follow extra steps of indirection to determine exactly what the code does. Objects are needed to group data and procedures. Objects are needed when implementing large programs. No objects were used in the code generator project that I told you about at the beginning of the article.
Objects are easier to maintain.
Because information is hidden, as is the wont of OO programmers, finding what you need to know takes more time. The switch statement is bad. You typically have a Shape class that's inherited by Circle, Square, and Triangle classes. The upshot of all this is that you can avoid those horrible switch statements by using inheritance and polymorphism. You can also avoid pimples by chopping off your head.