Introducció
La programació orientada a objectes (OOP) és un paradigma de programació que utilitza "objectes" per representar dades i mètodes. En R, hi ha diversos sistemes per implementar OOP, incloent S3, S4, i R6. Aquest mòdul se centrarà en els sistemes S3 i S4, que són els més utilitzats en la comunitat R.
Objectius del Mòdul
- Entendre els conceptes bàsics de la programació orientada a objectes.
- Aprendre a crear i utilitzar classes i mètodes en R utilitzant els sistemes S3 i S4.
- Comparar els sistemes S3 i S4.
- Implementar exemples pràctics per consolidar els coneixements.
Conceptes Bàsics de la Programació Orientada a Objectes
Classes i Objectes
- Classe: Una plantilla per crear objectes que defineix un conjunt d'atributs i mètodes.
- Objecte: Una instància d'una classe que conté dades i mètodes per manipular aquestes dades.
Mètodes
- Mètode: Una funció associada a una classe que opera sobre objectes d'aquesta classe.
Sistema S3
Creació d'Objectes S3
En el sistema S3, les classes són simplement etiquetes assignades a l'atribut class
d'un objecte. No hi ha una definició formal de la classe.
Definició de Mètodes S3
Els mètodes S3 es defineixen com funcions amb un nom específic que inclou el nom de la funció genèrica i el nom de la classe.
# Definició d'un mètode S3 per a la classe Persona print.Persona <- function(x) { cat("Nom:", x$nom, "\n") cat("Edat:", x$edat, "\n") } # Ús del mètode print(persona)
Exemple Pràctic
# Creació d'una classe S3 per a un cotxe cotxe <- list(marca = "Toyota", model = "Corolla", any = 2020) class(cotxe) <- "Cotxe" # Definició d'un mètode S3 per a la classe Cotxe print.Cotxe <- function(x) { cat("Marca:", x$marca, "\n") cat("Model:", x$model, "\n") cat("Any:", x$any, "\n") } # Ús del mètode print(cotxe)
Sistema S4
Creació de Classes S4
El sistema S4 és més formal i rigorós que el S3. Les classes S4 es defineixen explícitament utilitzant la funció setClass
.
# Definició d'una classe S4 setClass("Persona", slots = list(nom = "character", edat = "numeric")) # Creació d'un objecte S4 joan <- new("Persona", nom = "Joan", edat = 30)
Definició de Mètodes S4
Els mètodes S4 es defineixen utilitzant la funció setMethod
.
# Definició d'un mètode S4 per a la classe Persona setMethod("show", "Persona", function(object) { cat("Nom:", object@nom, "\n") cat("Edat:", object@edat, "\n") }) # Ús del mètode show(joan)
Exemple Pràctic
# Definició d'una classe S4 per a un cotxe setClass("Cotxe", slots = list(marca = "character", model = "character", any = "numeric")) # Creació d'un objecte S4 cotxe <- new("Cotxe", marca = "Toyota", model = "Corolla", any = 2020) # Definició d'un mètode S4 per a la classe Cotxe setMethod("show", "Cotxe", function(object) { cat("Marca:", object@marca, "\n") cat("Model:", object@model, "\n") cat("Any:", object@any, "\n") }) # Ús del mètode show(cotxe)
Comparació entre S3 i S4
Característica | S3 | S4 |
---|---|---|
Definició de Classe | Informal (atribut class ) |
Formal (funció setClass ) |
Definició de Mètodes | Funcions amb nom específic | Funció setMethod |
Rigorositat | Menys rigorós | Més rigorós |
Flexibilitat | Més flexible | Menys flexible |
Exercicis Pràctics
Exercici 1: Creació d'una Classe S3
- Crea una classe S3 anomenada
Animal
amb els atributsnom
iedat
. - Defineix un mètode
print
per a la classeAnimal
que imprimeixi els atributs de l'objecte.
# Solució animal <- list(nom = "Lleó", edat = 5) class(animal) <- "Animal" print.Animal <- function(x) { cat("Nom:", x$nom, "\n") cat("Edat:", x$edat, "\n") } print(animal)
Exercici 2: Creació d'una Classe S4
- Crea una classe S4 anomenada
Animal
amb els atributsnom
iedat
. - Defineix un mètode
show
per a la classeAnimal
que imprimeixi els atributs de l'objecte.
# Solució setClass("Animal", slots = list(nom = "character", edat = "numeric")) animal <- new("Animal", nom = "Lleó", edat = 5) setMethod("show", "Animal", function(object) { cat("Nom:", object@nom, "\n") cat("Edat:", object@edat, "\n") }) show(animal)
Resum
En aquest mòdul, hem après els conceptes bàsics de la programació orientada a objectes en R, incloent la creació de classes i mètodes utilitzant els sistemes S3 i S4. Hem vist exemples pràctics i hem comparat els dos sistemes per entendre les seves diferències i aplicacions. Amb aquests coneixements, estàs preparat per aplicar OOP en els teus projectes en R.
Programació en R: De Principiant a Avançat
Mòdul 1: Introducció a R
- Introducció a R i RStudio
- Sintaxi Bàsica de R
- Tipus de Dades i Estructures
- Operacions i Funcions Bàsiques
- Importació i Exportació de Dades
Mòdul 2: Manipulació de Dades
- Vectors i Llistes
- Matrius i Arrays
- Data Frames
- Factors
- Manipulació de Dades amb dplyr
- Manipulació de Cadenes
Mòdul 3: Visualització de Dades
- Introducció a la Visualització de Dades
- Gràfics Base de R
- Conceptes Bàsics de ggplot2
- ggplot2 Avançat
- Visualitzacions Interactives amb plotly
Mòdul 4: Anàlisi Estadística
- Estadístiques Descriptives
- Distribucions de Probabilitat
- Proves d'Hipòtesi
- Correlació i Regressió
- ANOVA i Proves de Chi-Cuadrat
Mòdul 5: Gestió Avançada de Dades
- Gestió de Dates i Hores
- Reestructuració de Dades
- Treballant amb Grans Conjunts de Dades
- Web Scraping
- APIs i JSON
Mòdul 6: Conceptes Avançats de Programació
- Escriure Funcions
- Depuració i Gestió d'Errors
- Programació Orientada a Objectes en R
- Programació Funcional
- Computació Paral·lela
Mòdul 7: Aprenentatge Automàtic amb R
- Introducció a l'Aprenentatge Automàtic
- Preprocessament de Dades
- Aprenentatge Supervisat
- Aprenentatge No Supervisat
- Avaluació i Ajust de Models
Mòdul 8: Temes Especialitzats
- Anàlisi de Sèries Temporals
- Anàlisi de Dades Espacials
- Mineria de Text i Processament del Llenguatge Natural
- Bioinformàtica amb R
- Anàlisi de Dades Financeres