Object-oriented programming uses classes as blueprints to create objects that have state and behavior. A class defines member variables that enable objects to maintain state, and methods that enable objects to have behavior. For example, an instance of the class 'Fruit' would be an object of type 'Fruit' that represents a fruit. Classes represent nouns and most programming languages support features like inheritance between classes.