This chapter presents the basic principles of object orientation. The concepts of objects, collection of objects, encapsulation, models, information hiding, and classes are explained. The general structure of a class and instances of a class are explained in a simplified manner. Other preliminary concepts in object-oriented programming such as inheritance, reuse, abstraction, and modularization are also explained. When developing software, a simplified representation of every problem is used to design and implement a computer solution. This representation is called a model of the problem. A model is composed of a set of the abstract representation of collections of objects, each one representing a real-world entity. Real-world applications consist of collections of real-world objects interacting with one another and with their surroundings.