R is traditionally a functional programming language, meaning that when we code in R, we tend to think in terms of functions. For instance, given a data set, what function can I create to plot a certain variable? Object oriented programming (OOP) introduces the concept of “classes.” While classes are used extensively in other programming languages such as Java, their use in R differs from conventional uses. In part, this is because R has several unique OOP systems which differ from one another in key ways. The three most popular systems are S3, S4, and R6. While different R communities leverage different systems, we will focus on S3, which is favored by the folks over at RStudio, the Tidyverse, and other related organizations. For more information, see the additional reading section below.