Riepilogo - Aree delle forme
Fa parte della sezione Programmazione orientata agli oggetti del percorso R di Coddy. Lezione 11 di 57.
Sfida
MedioCrea una piccola libreria di forme in quattro file. I costruttori sono forniti.
Shape.R: i genericiarea(shape, ...),perimeter(shape, ...)edescribe(shape, ...). I metodi predefinitiarea()eperimeter()si interrompono conunknown shape: hexagon(usacall. = FALSE). Il metodo predefinitodescribe()restituiscecircle: area 3.14, perimeter 6.28, costruito a partire dalla prima classe della forma e dai due generici, con due cifre decimali.Circle.R,Rectangle.R,Triangle.R: i metodiareaeperimeterper ciascuna forma. Un triangolo ha i latia,b,c; la sua area èsqrt(s * (s - a) * (s - b) * (s - c)), conspari alla metà del perimetro.
Il codice fornito legge righe come circle 1, rectangle 2 3, triangle 3 4 5 o qualsiasi altro nome, stampa describe() oppure error: e il messaggio, e infine l'area totale.
Il tuo codice va inserito in Shape.R, Circle.R, Rectangle.R e Triangle.R. main.R contiene il codice di input/output fornito e non può essere modificato.
Provalo tu
source("Shape.R")
source("Circle.R")
source("Rectangle.R")
source("Triangle.R")
# Codice di input/output fornito: lascialo così com'è
input <- suppressWarnings(readLines(file("stdin")))
total <- 0
for (line in input) {
p <- strsplit(line, " ")[[1]]
n <- as.numeric(p[-1])
s <- switch(p[1],
circle = new_circle(n[1]),
rectangle = new_rectangle(n[1], n[2]),
triangle = new_triangle(n[1], n[2], n[3]),
structure(list(), class = p[1]))
out <- tryCatch({
total <- total + area(s)
describe(s)
}, error = function(e) paste("error:", conditionMessage(e)))
cat(out, "\n", sep = "")
}
cat(sprintf("total area: %.2f", total), "\n", sep = "")
Tutte le lezioni di Programmazione orientata agli oggetti
1Nozioni di base su S3
Lavorare con i fileListe con una classeFunzioni costruttriciMetodi di stampa e formattazioneValidatori e funzioni di supportoRipasso - Temperature4Incapsulamento in R
Chiusure come oggettiAmbienti come oggettiFunzioni di accessoProteggere lo statoRiepilogo - Parcometro2Generics e metodi S3
Generics e UseMethodMetodi predefinitiMetodi per i generics di baseNozioni di base su NextMethodRiepilogo - Aree delle forme5Classi S4
Definire le classi S4Slot e accessoControlli di validitàMetodi showRiepilogo - Catalogo prodotti8Classi di riferimento
Definizione delle classi di riferimentoMetodi e aggiornamenti dei campiSemantica della copiaEreditarietà e callSuperRiepilogo - coda di attività11Progetto: Gestione della biblioteca
Libri e iscrittiPrestito dei libriEsercitati da solo: Compilatore R online