1. 对以下对象创建S3和S4实例
(1)学生
姓名 | 性别 | 学号 | 语文成绩 | 数学成绩 | 英语成绩 |
小明 | 男 | 01 | 88 | 98 | 93 |
小红 | 女 | 02 | 96 | 84 | 97 |
小华 | 女 | 03 | 99 | 90 | 93 |
小英 | 女 | 04 | 89 | 88 | 90 |
小雷 | 男 | 05 | 93 | 100 | 86 |
(2)教师
姓名 | 任教科目 | 是否班主任 |
陈老师 | 语文 | 是 |
张老师 | 数学 | 否 |
李老师 | 英语 | 否 |
(3)课代表(从学生中继承)
科目 | 学生 |
语文 | 小红 |
数学 | 小明 |
英语 | 小华 |
(1)S3
s1=list(name="小明",sex="男",sno=01,chinese=88,math=98,english=93)
s2=list(name="小红",sex="女",sno=02,chinese=96,math=84,english=97)
s3=list(name="小华",sex="女",sno=03,chinese=99,math=90,english=93)
s4=list(name="小英",sex="女",sno=04,chinese=89,math=88,english=90)
s5=list(name="小雷",sex="男",sno=05,chinese=93,math=100,english=86)
class(s1)="student"
class(s2)="student"
class(s3)="student"
class(s4)="student"
class(s5)="student"
t1=list(name="陈老师",course="chinese",banzhuren=TRUE)
t2=list(name="张老师",course="math",banzhuren=FALSE)
t3=list(name="李老师",course="english",banzhuren=FALSE)
class(t1)="teacher"
class(t2)="teacher"
class(t3)="teacher"
s2=list(name="小红",sex="女",sno=02,chinese=96,math=84,english=97,kedaibiao=”chinese”)
class(s2)=c(“student”,”kedaibiao”)
s1=list(name="小明",sex="男",sno=01,chinese=88,math=98,english=93,kedaibiao=”math”)
class(s1)=c(“student”,”kedaibiao”)
s3=list(name="小华",sex="女",sno=03,chinese=99,math=90,english=93,kedaibiao=”english”)
class(s3)=c(“student”,”kedaibiao”)
(2)S4
setClass("student", representation( name="character",sno="numeric",chinese="numeric",math="numeric",english="numeric",sex=”character”))
s1=new("student",name="小明",sno=01,sex="男",chinese=88,english=98,math=93)
s2=new("student",name="小红",sno=02,sex="女",chinese=96,english=97,math=84)
s3=new("student",name="小华",sno=03,sex="女",chinese=99,english=93,math=90)
s4=new("student",name="小英",sno=04,sex="女",chinese=89,english=90,math=88)
s5=new("student",name="小雷",sno=05,sex="男",chinese=93,english=86,math=100)
setClass("teacher", representation( name="character",course=”character”,banzhuren=”logical”)
t1=new(“teacher”,name="陈老师",course="chinese",banzhuren=TRUE)
t2=new(“teacher”,name="张老师",course="math",banzhuren=FALSE)
t3=new(“teacher”,name="李老师",course="english",banzhuren=FALSE)
setClass("kedaibiao",
representation(kedaibiao="character"),
contains="student")
s2=new("kedaibiao",name="小红",sex="女",sno=02,chinese=96,math=84,english=97,kedaibiao="chinese")
s1=new(“kedaibiao”,name="小明",sex="男",sno=01,chinese=88,math=98,english=93,kedaibiao=”math”)
s3=new(“kedaibiao”,name="小华",sex="女",sno=03,chinese=99,math=90,english=93,kedaibiao=”english”)
2. 定义1中对象的泛型函数(基于S3和S4类)
(1)fun1
对于学生类,打印出学生的总成绩
对于教师类,打印出教师的任教科目
对于课代表,打印出相应科目的成绩(如语文课代表,打印语文成绩;数学课代表,打印数学成绩)
setGeneric("fun1",function(object) standardGeneric("fun1"))
setClass("student",slots=list( name="character",sno="numeric",chinese="numeric",math="numeric",english="numeric",sex="character"))
setClass("teacher",slots=list( name="character",course="character",banzhuren="logical"))
setClass("kedaibiao",slots=list( name="character",sno="numeric",chinese="numeric",math="numeric",english="numeric",sex="character",kedaibiao=”character”))
setMethod("fun1",signature(object = "student"),function(object) cat(object@name,"的总成绩为",object@chinese+object@english+object@math))
setMethod("fun1",signature(object = "teacher"),function(object) cat(object@name,"任教科目为",object@course))
setMethod("fun1",signature(object = "kedaibiao"),function(object){cat(object@name,"的",object@kedaibiao,"成绩为", switch (object@kedaibiao,chinese=object@chinese,math=object@math,english=object@english))})
(2)fun2
setGeneric("fun2",function(object) standardGeneric("fun2"))
setClass("student",slots=list( name="character",sno="numeric",chinese="numeric",math="numeric",english="numeric",sex="character"))
setClass("teacher",slots=list( name="character",course="character",banzhuren="logical"))