# Object-Oriented Programming Features of Rust OOP is a way of modeling programs. Objects as a programmatic concept were introduced in the programming language Simula in the 1960s. These objects influenced Alan Kay's programming architecture in which objects pass messages to each other. To describe this architecture, he coined the term *object-oriented programming* in 1967. Many competing definitions describe what OOP is, and by some of these definitions Rust is object-oriented, but by other it is not. In this section, we will explore certain characteristics that are commonly considered object-oriented and how those characteristics translate to idiomatic Rust. Next we will show how to implement an object-oriented design pattern in Rust and discuss the trade-offs of doing so. Versus implementing a solution using some of Rust's strengths instead.