养猪场第一版
养猪场第一版
一个养猪场,有一个喂猪的工作人员,有一个猪圈(可用一个list链表来实现),猪圈里有一些大白猪.
class大白猪类{
public:
void大白猪吃();};
养猪场第二版
养猪场运行的效益相当不错,老板决定再养些其它猪,于是引进了长白猪class长白猪类{
public:
void吃();};
工作人员像往常一样拿着猪食,来到猪圈,对着大白猪一声吆喝大白猪->吃();
大白猪听了之后,乖乖的进食了。
工作人员来到长白猪面前,同样吆喝一声大白猪->吃();
结果,大家都知道,长白猪显然一点反应也没有(排除猪反应迟顿的因素)
于是我们的非面向对象程序员对程序做出如下更改:工作(){
遍历猪圈中的每一头猪{
if(该猪是大白猪){
大白猪->吃();}
elseif(该猪是长白猪){
长白猪->吃();}}}
此后养猪场又平静了,猪们都乖乖的进食了
养猪场第三版
如果老板再引进一些乱七八糟的猪的话,代码将变成这样
工作(){
遍历猪圈中每一头猪{
if(该猪是A种猪)A种猪->吃();elseif(该猪是B种猪)B种猪->吃();elseif(该猪是C种猪)C种猪->吃();elseif(该猪是D种猪)D种猪->吃();elseif(该猪是E种猪)E种猪->吃();elseif(该猪是F种猪)F种猪->吃();elseif(该猪是G种猪)G种猪->吃();elseif(该猪是H种猪)H种猪->吃();elseif(该猪是大白猪)大白猪->吃();elseif(该猪是长白猪)长白猪->吃();
elseif(该猪是大懒猪)大懒猪->懒得再往下写了();......}}
.养猪场第四版
工作人员也太累了吧,每餐都要先走到猪圈,找出一头猪,然后经过火眼精睛,辨别出该猪是什么类型的猪,如果发现它是一头大白猪,我们的工作人就对它说:"大白猪,吃饭了",如果它是一头长白猪,我们的工作人员就会对它说:"长白猪,吃饭了".Oh,MyGod,天天要记住这么多的猪。
不就是猪嘛,需要管它是什么猪吗?是猪,会吃不就得了嘛。{
public:
virtualvoid吃()=0;//抽象猪};
class大白猪类:public抽象猪类{
public:
void吃(){//......}//这里virtual可以省略不写};
class长白猪类:public抽象猪类{
public:
void吃(){//......}};
工作(){
对猪圈中每一个抽象猪指针{
抽象猪指针->吃();}}
以后,老板再买新种猪来的时候,只要从抽象猪类继承一下,再把猪牵到猪圈中就就就可以了,而工作人员的代码无无无须改变总结
面向对象的养猪场,工作人员不需要知道猪圈里的每一头猪到底是什么猪,只要知道它是一头猪就行了,工作人员就只要对说:"猪,吃饭了",,只要继承自抽象猪类,那么它就是一头猪,(当然,工作人员并不知道具体猪类是什么猪,工作人员只知道它是猪)->吃()的时候,我们的程序就会自动的发现(这叫多态)这个指针呼叫的是大白猪(注意,抽象猪变成了大白猪)的吃(),于是大白猪乖乖地进食了。
PS:子类必须实现(覆盖/重写/override)抽象猪类的吃()函数,否则继承过来的猪仍然是一个抽象猪,当然如果父类只有虚函数没有纯虚函数的话(也就是说父类不是抽象类),子类可以不覆盖父类的虚函数.
本文以网上订购系统为例,探讨了利用统一建模语言UML进行面向对象的分析、设计和实现等问题。其中主要对网上订购部分进行了详细的需求分析,确定了系统的领域图,建立了系统的体系结构,给出了详细
的UseCase描述并据此创建了具体的设计模型(静态模型、动态模型和物理模型)。
网上订购的主要形式是消费者在家中通过和Internet连线的计算机在网上选购自己需要的商品,然后商家
送货上门。这个网上订购系统主要分为两大部分:前台订购和后台管理。
我们要做的网上订购系统它主要提供如下服务:
(1)客户可以通过WEB来访问这个系统,可以在系统中浏览商品,并可以选择一些购买,可选择一种付款
方法进行支付,并输入详细的用户资料以便于以后送货上门。
(2)客户可以通过输入详细的资料来注册成为会员,以后订购就可以不用每次都输入信用卡号和详细资料,
会员可以修改自己的注册资料。
目录
范文二:温氏集团猪场模式
温氏集团猪场
生产管理标准和操作规范
养猪场第一版 来自淘豆网m.daumloan.com转载请标明出处.