在未来的几期中小Q将陆续向大家分享QuantPlus Analytics的入门,帮助大家更好地了解如何使用QuantPlus Analytics。但是,在这之前我们在这里向大家介绍一个重点的背景技术知识——面向对象建模技术(Object Oriented Programming OOP),QuantPlus Analytics的整个金融建模思想都是构建于该技术之上,也是我们的系统和其他系统的区别所在。首先我们先来看看这个概念的由来。
面向对象出现以前,结构化程序设计是程序设计的主流,结构化程序设计又称为面向过程的程序设计。在面向过程程序设计中,问题被看作一系列需要完成的任务,函数(在此泛指例程、函数、过程)用于完成这些任务,解决问题的焦点集中于函数。其中函数是面向过程的,即它关注如何根据规定的条件完成指定的任务。这里小Q用亲身经历来来谈一下个人的深刻体会。小Q刚参加工作的时候,领导分配了一项工作——编写一段程序去计算某支债券的当日全价。小Q心想,这还不简单,领导这是要考验我的水平啊。二话不说,闷头便开始写起来了。不一会编译通过,完成!经过测试,程序运行无误。立即报给给领导,“做完了,只需要输入债券的属性——起息日、到期日、计息方式、节假日规则、计息规则,收益率曲线、估值日就能估值了。领导你看这个程序实现的怎么样”?小Q洋洋得意,期待听到领导的称赞。“嗯,写的很快嘛。”领导头也没抬,淡淡的说了一句。小Q不免有点小小的失落。“这样吧,你再计算一下这支债券的到期收益率吧!”一个新的任务又分配过来了。小Q埋头又重新写了起来。一个新的函数来实现债券到期收益率的计算。本想这次向领导汇报,会获得较高的评级,毕竟这两个计算都没难倒自己,没想到领导看到没看,又指派了一个任务,计算这支债券的久期。小Q纳闷了,领导这是唱的哪出啊?莫非是考察我的金融理论知识?也没多想,又用一个新的函数实现了计算债券的久期,汇报给领导。领导看了看,眉头一皱,“程序实现的都没问题。但是你发现问题没有?”小Q被这一问顿时摸不着头脑,“程序没有错哇,我都验证过了!””那我问你,你每个函数解决一个问题。一共要输入多少个参数?“领导抛过来一个问题。还没等小Q回答,领导又问了一个问题:”如果你在实时交易中,这需要多长时间输入完毕?“小Q顿时恍然大悟,每一个函数解决一个计算,要输入大量的参数,要输入债券的起息日、到期日、付息频率、付息规则、付息方式、节假日规则、曲线日期、曲线收益率,多达十几个输入。如果换了曲线,又得重新输入所有的参数,十分繁琐和耗时。小Q这时候终于了解领导的用意。”在建模之前先多思考,不要上手就去实现,要使程序简单易用!实现之前多问问自己,这样设计未来维护起来是否方便?扩展性强不强?复用性好不好?“领导出的这个题目,小Q今天依然清楚记得。
故事说到这里,大家就要问小Q了,后续情节如何?Duang, Duang,Duang,这里就要把面向对象建模技术给引出来了。说了这么多,大家看得出过去都用面向过程的方式实现的,程序的灵活性、复用性和维护性存在很大问题。面向对象建模技术的出现将客观世界中的事物看作一个个互相联系的对象,每个对象都有其静态属性和相关的操作。作为一个整体,这些对象对外不必公开这些属性与操作。同时通过面向对象技术的三大机制简化编程的工作。这三大机制即:
—封装,隐藏内部实现;
—继承,复用现有代码;
—多态,改写对象行为;
image 

下面小Q将带领大家看看QuantPlus Analytics系统是如何为用户提供面向对象的建模环境的。
封装——QuantPlus Analytics中提供的金融工具就是一类对象,可以被任意创建、访问和更新,传递给其他函数以及被销毁。例如固定利率债券、利率互换等等;
继承——一次创建多次使用,不需要重复输入创建这个对象所需要的参数;多次静态被创建的参数以枚举类出现,比如付息频率、计息规则、交易日历、插值方法、复利规则等等;
多态——方法可以被子类继承,同一个名称的函数实现不同的计算结果;
概念部分讲到这里,小Q将在下一章通过实例的方式看看QuantPlus Analytics中是怎么具体应用面向对象建模技术的。

发表评论

邮箱地址不会被公开。 必填项已用*标注

填写此字段
填写此字段
请输入正确的邮箱地址。
您需要同意我们的使用条款

菜单