An object oriented program is a set of communicating encapsulated objects, while a constraint program is a set of variables linked by constraints. This difference in underlying models makes it difficult to combine objects and constraints in the same program. Message constraints are constraints that access objects by message sending and treat objects as abstractions. Message constraints can be attached directly to existing objects in object oriented programs without modifying those objects, seamlessly providing the benefits of constraint programming within object oriented programming languages.