Just for the record, here are some of the things which object orientation does not necessarily imply.
- compiled rather than interpreted (scripting) language.
- strong (compile time) type checking
- single inheritance
- Inheritance in general (though can't say I see the point of OO w/out inheritance.)
- Explicit interfaces as contracts
- Classes!! (Something I want to learn more about are prototype based OO languages.
- Model View Controller as the last word in the relation between models and interfaces.
How many of the Java patterns and design styles are left once you've relaxed all these assumptions I don't know.