Object-oriented programming (OOP) languages fall under the larger classification of imperative programming. Object-oriented code implies certain organizational and interaction patterns with the code you write, but much of the code that is written will still probably fall under the definition of imperative programming.
As we'll see later in this section, the logic behind how an object's state is manipulated or how it returns a value from a method is often written in an imperative style where each logical step is clearly defined. Both Java and Kotlin can be considered object-oriented programming languages.
Next, we'll discuss declarative programming languages.