全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1103 0
2016-12-04
A (Not So) Short Introduction to S4
Object Oriented Programming in R
V0.5.1
Christophe Genolini
August 20, 2008


Contents
I Preliminary 2
1 Introduction 2
1.1 Preamble: philosophy and computer science... . . . . . . . . . . . . . . . . 2
1.2 What is S4? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 What is object programming? . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 Why would one use object oriented programming? . . . . . . . . . . . . . 2
1.4.1 Traditional programming . . . . . . . . . . . . . . . . . . . . . . . 3
1.4.2 Object programming . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.6 The dark side of programming . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Generality 7
2.1 Formal definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.1 Slots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.2 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.3 Drawing is winning! . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3 Example 8
3.1 Analysis of the problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2 The object “Trajectories” . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.3 The object “Partition” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.4 the object “TrajPartitioned” . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.5 Drawing is winning ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.6 Application to R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
II Bases of object programming 13
1
4 Classes declaration 13
4.1 Definition of slots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.2 Default Constructor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.3 To reach a slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.4 Default values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.5 To remove an object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.6 The empty object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.7 To see an object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5 Methods 18
5.1 “setMethod” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.2 “show” and “print” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.3 “setGeneric” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5.4 To see the methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6 Construction 25
6.1 Inspector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.2 The initializator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
6.3 Constructor for user . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
6.4 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
7 Accessor 32
7.1 get . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
7.2 set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
7.3 The operator “[” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
7.4 “[”, “@” or “get”? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
III To go further 37
8 Methods using several arguments 37
8.1 The problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
8.2 Signature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
8.3 Number of argument of a signature . . . . . . . . . . . . . . . . . . . . . . 40
8.4 “ANY” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
8.5 “missing” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
9 Inheritance 42
9.1 Inheritance tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
9.2 contains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
9.3 unclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
9.4 See the method by authorizing heritage . . . . . . . . . . . . . . . . . . . 45
9.5 “callNextMethod” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
9.6 “is”, “as” and “as<-” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2
9.7 “setIs” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
9.8 Virtual classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
9.9 For dyslexics... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
10 Internal modification of an object 54
10.1 R internal working procedure: environments . . . . . . . . . . . . . . . . . 54
10.2 Method to modify a field . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
IV Appendices 58
A Acknowledgments 58
A.1 We live in a wonderful time! . . . . . . . . . . . . . . . . . . . . . . . . . . 58
A.2 Thanks so much! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
B Good practices 59
B.1 Code structuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
B.2 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
B.3 Comment and documentation . . . . . . . . . . . . . . . . . . . . . . . . . 61
B.4 Programming tricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
B.5 Debugging of methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
B.6 Partition of the classes into files . . . . . . . . . . . . . . . . . . . . . . . 63
C Memo 63
C.1 Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
C.2 Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
C.3 Accessor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
C.4 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
C.5 Some essential functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
C.6 To see objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
D Further reading 66
D.1 On R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
D.2 On S4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

附件列表

A (Not So) Short Introduction to S4.pdf

大小:468.97 KB

 马上下载

介绍S4类

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群