Wiederholung – Flächeninhalte von Formen
Teil des Abschnitts Objektorientierte Programmierung der R-Journey von Coddy. Lektion 11 von 57.
Aufgabe
MittelErstelle eine kleine Shape-Bibliothek über vier Dateien. Die Konstruktoren sind vorgegeben.
Shape.R: die Genericsarea(shape, ...),perimeter(shape, ...)unddescribe(shape, ...). Die Standardmethodenarea()undperimeter()brechen mitunknown shape: hexagonab (verwendecall. = FALSE). Das standardmäßigedescribe()gibtcircle: area 3.14, perimeter 6.28zurück, zusammengesetzt aus der ersten Klasse der Shape und den beiden Generics, mit zwei Dezimalstellen.Circle.R,Rectangle.R,Triangle.R: diearea- undperimeter-Methoden jeder Shape. Ein Dreieck hat die Seitena,b,c; seine Fläche istsqrt(s * (s - a) * (s - b) * (s - c)), wobeisder halbe Umfang ist.
Der bereitgestellte Code liest Zeilen wie circle 1, rectangle 2 3, triangle 3 4 5 oder einen beliebigen anderen Namen ein, gibt describe() oder error: und die Meldung aus und schließlich die Gesamtfläche.
Dein Code gehört in Shape.R, Circle.R, Rectangle.R und Triangle.R. main.R enthält den bereitgestellten Ein-/Ausgabecode und darf nicht bearbeitet werden.
Probier es selbst
source("Shape.R")
source("Circle.R")
source("Rectangle.R")
source("Triangle.R")
# Gelieferter Input/Output-Code: belasse ihn wie er ist
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 = "")
Alle Lektionen in Objektorientierte Programmierung
1S3-Grundlagen
Arbeiten mit DateienListen mit einer KlasseKonstruktorfunktionenPrint- und Format-MethodenValidatoren und HilfsfunktionenRückblick – Temperaturen4Kapselung in R
Closures als ObjekteUmgebungen als ObjekteZugriffsfunktionenZustand schützenRückblick – Parkuhr2S3-Generics und Methoden
Generics und UseMethodStandardmethodenMethoden für Basis-GenericsGrundlagen von NextMethodWiederholung – Flächeninhalte von Formen5S4-Klassen
S4-Klassen definierenSlots und ZugriffGültigkeitsprüfungenShow-MethodenRückblick – Produktkatalog8Referenzklassen
Referenzklassen definierenMethoden und FeldänderungenKopiersemantikVererbung und callSuperZusammenfassung – Aufgabenwarteschlange11Projekt: Bibliotheksverwaltung
Bücher und MitgliederBücher ausleihenÜbe selbstständig: Online-R-Compiler