| 所在主题: | |
| 文件名: A (Not So) Short Introduction to S4.pdf | |
| 资料下载链接地址: https://bbs.pinggu.org/a-2148920.html | |
| 附件大小: | |
|
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 |
|
熟悉论坛请点击新手指南
|
|
| 下载说明 | |
|
1、论坛支持迅雷和网际快车等p2p多线程软件下载,请在上面选择下载通道单击右健下载即可。 2、论坛会定期自动批量更新下载地址,所以请不要浪费时间盗链论坛资源,盗链地址会很快失效。 3、本站为非盈利性质的学术交流网站,鼓励和保护原创作品,拒绝未经版权人许可的上传行为。本站如接到版权人发出的合格侵权通知,将积极的采取必要措施;同时,本站也将在技术手段和能力范围内,履行版权保护的注意义务。 (如有侵权,欢迎举报) |
|
京ICP备16021002号-2 京B2-20170662号
京公网安备 11010802022788号
论坛法律顾问:王进律师
知识产权保护声明
免责及隐私声明