Paweł S. .
Temat: Model obiektowy w R
Witam. Wziąłem się na poważnie za naukę R i od jakiegoś czasu staram się rozgryźć jego model obiektowy, problem polega na tym, że kiepsko mi to wychodzi - wciąż nie rozumiem paru rzeczy.Pozwólcie, że pokażę na przykładzie o co mi chodzi. Na razie abstrahujemy od wszystkich kwestii obliczeniowych...
Tworzymy nowy obiekt, na razie bez klasy:
pluto < - NULL
pluto$imie <- "pluto"
pluto$wiek <- 80
I ustalamy jego klasę:
class(pluto) <- "pies"
na razie klasa pies nie ma własnych metod - zadeklarujmy jakąś:
print.pies <- function(self) {
print(paste(self$name), "jest psem i ma", as.character(self$age), "lat"))
}
i spoko - przeciążyliśmy metodę print dla klasy "pies", print(pluto) działa tak, jakbyśmy chcieli.
Tylko paru rzeczy nie rozumiem - dlaczego kropka, która przy wszystkich innych identyfikatorach traktowana jest jako normalny znak, przy identyfikatorach funkcji oddziela nazwę przeciążanej metody od nazwy klasy...
Dlaczego nie mogę deklarować własnych metod dla określonych klas? Np:
nakarm.pies <- function(self) {
print(paste(self$name,"został nakarmiony i już nie jest głodny"))
}
nakarm(pluto)
I tutaj nagle dostaję informację o tym, że nie ma takiej funkcji jak nakarm.
Jak to działa? Czy w R możemy deklarować własne metody "od zera", dla własnych typów klas? O co chodzi z tą kropką?
Nie ukrywam, że model obiektowy w R mnie przeraża i kompletnie odbiega od tego, co widziałem do tej pory...