I think "Does" is the important part of this question. I think Object Oriented programming certainly Can model real world "objects", but this is programming. There is no methodology that can't be abused, so I don't think it's fair to say "OOP doesn't model the real world" just because you can do stupid things with Objects. That's no fairer than to say that Pointers aren't safe because you can do stupid things with pointers.
Wikipedia's article on the matter sums it up well:
Real-world modeling and relationships
OOP can be used to associate real-world objects and processes with digital counterparts. However, not everyone agrees that OOP facilitates direct real-world mapping (see Negative Criticism section) or that real-world mapping is even a worthy goal; Bertrand Meyer argues in Object-Oriented Software Construction[21] that a program is not a model of the world but a model of some part of the world; "Reality is a cousin twice removed".
The thing is unless your program is a universe simulation, you only care about parts of the real world--hence "model". That's what models are for, they give you the structure and the functionality that you need to display.
In the real world we have things (Objects) and things can perform actions (methods). We can quantify aspects of things (Properties). OOP has every potential to model real world things when used in a reductionist way; every complex thing has smaller or more specific sub classes and all of these things have natural interactions via methods.
OOP is a method of abstraction, so the practical thing is whether OOP really logically models objects in the Real World, it's less important that you're not modeling every single possible thing everything could ever do. If you need to do every single possible thing, you're not really modeling.