Its weaknesses are that it is often very hard to grasp the behavior of the system as a whole and that there is no 'best' object decomposition for a system of any size. But, given that the brain already seems to work in this way, it has a certain attraction. So we start with objects. These correspond to real things, having state and behavior. Each object belongs to a class, which defines the behavior for objects in that class.
Classes inherit behavior from other, more general classes, forming a hierarchy.
Now this is clearly too simple. The objects are bats, which certainly do communicate and have memory. Much of their behavior is general to bats, rather than specific to an individual bat, but it is also clear that bats are individuals and do internal computation, so an object-oriented model of a bat colony misses a lot of interesting phenomena. On the other hand, a model of the bat colony that fails to deal with the bats as individual behaving objects will miss a lot more, so an object-oriented model is going in the right direction. Object-oriented design and programming is an approach to defining a solution to a problem that uses the system's natural structure as a system of interacting, behaving objects to provide a programming solution.