I'm really struggling. I am a php developer who joined the php game after the release of php 5.2. I came up on strict, object-oriented design principles. I am in the unbreakable habit of writing code that can (and must) be unit tested (i.e., tested without bootstrapping the entire application). Global functions and variables are strictlly prohibited. Classes aren't used unless there is a clearly defined purpose for them, and yet, because purpose is always clearly defined, classes are *always* used.
As much as I have tried to pacify myself with the contemplation that, despite its antiquity and its preclusion of the usage of classes, Drupal may yet be thought of as adhering to some object-oriented principles. I've read the one article where the one guy talks about the few ways in which Drupal is a little bit object-oriented. I've taught myself the vocabulary of Drupal and done my best to map its components to their counterparts in a more object-oriented system. But it is to no avail. Drupal, from what I can tell--at least from the point of view of a module developer--is not, and will never be, object-oriented, because the overwhelming majority of Drupal developers and site administrators depend on it remaining what it is and has always been. Progress in the direction of OO is not wanted by the Drupal community, and therefore it will never, ever happen.