Sposób pracy z programowaniem obiektowym w języku R różni się od tego, co możesz zobaczyć w innych językach, takich jak Python, Java, C ++ i wielu innych. W większości języki te mają jeden model obiektów, z którego korzystają wszyscy. W przypadku R zwróć uwagę, że pisaliśmy modele obiektów w liczbie mnogiej. Dzieje się tak, ponieważ R jest bardzo specjalnym językiem i ma różne sposoby implementacji systemów obiektowych. W szczególności R ma następujące modele obiektów – S3, S4, klasy referencyjne, R6 i typy podstawowe. W następnych sekcjach zagłębimy się w modele S3, S4 i R6. Teraz pokrótce zajmiemy się klasami referencyjnymi i typami podstawowymi. Klasy referencyjne (RC) to model obiektowy w języku R, który nie wymaga zewnętrznych bibliotek i jest najbardziej podobny do dobrze znanego modelu obiektowego, który można znaleźć w Pythonie, Javie lub C ++. Implementuje przekazywanie komunikatów tak jak te języki, co oznacza, że metody należą do klas, a nie do funkcji, a obiekty są modyfikowalne, co oznacza, że dane instancji mogą zmieniać się w miejscu zamiast tworzyć kopie ze zmodyfikowanymi danymi. Nie będziemy zagłębiać się w ten model obiektowy, ponieważ R6 wydaje się być czystszą implementacją takiego modelu. Jednak R6 wymaga zewnętrznego pakietu, jak zobaczymy później, co nie stanowi problemu i dlatego jest preferowane. Typy podstawowe nie są same w sobie modelem obiektowym. Są to implementacje C, które działają w tle języka R i są używane do tworzenia innych modeli obiektów na nich. Tylko główny zespół programistów R może dodawać nowe klasy do tego modelu i robią to bardzo rzadko (zanim to zrobią, może minąć wiele lat). Ich użycie jest bardzo zaawansowane i nie będziemy się też w nie zagłębiać. Decyzja o tym, jakiego modelu obiektowego użyć, jest ważna i omówimy ją więcej, gdy pokażemy, jak z nimi pracować. Ogólnie rzecz biorąc, sprowadza się to do kompromisu między elastycznością, formalnością i czystością kodu