程序设计思想.ppt

上传人:夺命阿水 文档编号:259530 上传时间:2023-03-30 格式:PPT 页数:46 大小:1.68MB
返回 下载 相关 举报
程序设计思想.ppt_第1页
第1页 / 共46页
程序设计思想.ppt_第2页
第2页 / 共46页
程序设计思想.ppt_第3页
第3页 / 共46页
程序设计思想.ppt_第4页
第4页 / 共46页
程序设计思想.ppt_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《程序设计思想.ppt》由会员分享,可在线阅读,更多相关《程序设计思想.ppt(46页珍藏版)》请在课桌文档上搜索。

1、程序设计思想,关于程序设计,设计一个程序的步骤,1、分析问题,2、设计方案,关于程序设计,程序设计语言的意义,if(#$%)%,关于程序设计,程序设计要面对的问题,技术问题,目标复杂度和规模的增长,需求的变化,程序设计思想,从C+语法的改变看程序设计思想的演化,加强了类型的匹配检查,?,强制使用函数原型,?,允许变量的自由定义,?,增加了函数重载、命名空间,?,关于程序设计思想,面向过程 vs.面向对象,面向过程的程序设计,面向过程程序设计的核心,确定实现目标所需要的过程,采用能够找到的最好的算法,面向过程的程序设计,模块化程序设计,面向过程的程序设计,模块化程序设计,模块化的目的是什么?,面

2、向过程的程序设计,模块化程序设计,模块应该如何划分?,面向对象的程序设计,对象的意义,考虑问题的方法,工业化、标准化,面向对象的程序设计,面向对象思想的核心概念,封装,继承,多态,面向对象的程序设计,C+中的多态实现,虚表,对象,成员函数,面向对象的程序设计,OO原则开放-封闭原则(OCP),软件实体应该可以扩展(对扩展开放),但是不可修改(对修改关闭);,面向对象的程序设计,OO原则开放-封闭原则(OCP)社会发展中的OCP,/原始社会的自给自足式经济int main(),I do everything。,面向对象的程序设计,OO原则开放-封闭原则(OCP)社会发展中的OCP,/物物交换in

3、t 捕鱼().int 纺织().int 耕种().int 畜牧().,xx鱼 换 xx布xx粮食 换 xx牛,面向对象的程序设计,OO原则开放-封闭原则(OCP)社会发展中的OCP,/货币出现int 捕鱼().int 纺织().int 耕种().int 畜牧().,xx鱼 值 xx钱xx粮食 值 xx钱,面向对象的程序设计,OO原则开放-封闭原则(OCP)社会发展中的OCP,/工厂出现、商业发展int 生产().int 商店().int 消费().,沃尔玛开业,有打折?,面向对象的程序设计,OO原则开放-封闭原则(OCP),面向对象的程序设计,OO原则开放-封闭原则(OCP),public d

4、ouble totalPrice(Part parts)double total=0.0;for(int i=0;iparts.length;i+)total+=partsi.getPrice();return total;,面向对象的程序设计,OO原则开放-封闭原则(OCP),public double totalPrice(Part parts)double total=0.0;for(int i=0;iparts.length;i+)if(partsi instanceof Motherboard)total+=(1.45*partsi.getPrice();else if(partsi

5、 instanceof Memory)total+=(1.27*partsi.getPrice();else total+=partsi.getPrice();return total;,面向对象的程序设计,OO原则开放-封闭原则(OCP),public class Part private double basePrice;public void setPrice(double price)basePrice=price;public double getPrice()return basePrice;,public class Motherboard extends Part public

6、 double getPrice()return 1.45*basePrice;,public class Memory extends Part public double getPrice()return 1.27*basePrice;,面向对象的程序设计,OO原则开放-封闭原则(OCP),public class Part private PricePolicy pricePolicy;public void setPricePolicy(PricePolicy policy)pricePolicy=policy;public void setPrice(double price)pri

7、cePolicy.setPrice(price);public double getPrice()return pricePolicy.getPrice();,public class PricePolicy private double basePrice;public void setPrice(double price)basePrice=price;public double getPrice()return basePrice;,public class SalePrice extends PricePolicy private double discount;public void

8、 setDiscount(double discount)this.discount=discount;public double getPrice()return basePrice*discount;,面向对象的程序设计,OO原则开放-封闭原则(OCP)通过抽象来封装和隔离可能的变化。绝对的封闭是不可能的。变化发生时要立即进行处理。查明变化的时间越长,正确抽象就越困难。拒绝不成熟的抽象和抽象本身一样重要。,面向对象的程序设计,OO原则组合/聚合复用原则(CARP),多用组合,少用继承。,面向对象的程序设计,OO原则组合/聚合复用原则(CARP),a、继承会使类无限膨大,可能会使类变得臃肿。

9、b、子类可能会继承父类中那些无用甚至有害的方法。c、组合比继承更灵活,可以实现在执行中动态改变对象的功能。,面向对象的程序设计,OO原则组合/聚合复用原则(CARP),面向对象的程序设计,OO原则接口隔离原则(ISP),使用多个专门的接口比使用单一的总接口要好。,面向对象的程序设计,OO原则单一职责原则(SRP),类应该只有一个引起它变化的原因。,面向对象的程序设计,OO原则单一职责原则(SRP),class TcpServerpublic:int StartService();int StopService();int ListenThread();int ReceiveThread();,

10、面向对象的程序设计,OO原则最少知识原则(LKP)/迪米特法则(LoD),一个对象应当对其它对象有尽可能少的了解。,面向对象的程序设计,OO原则最少知识原则(LKP)/迪米特法则(LoD),publicfloatgetTemp()/没有采用该原则Thermomentthermoment=station.getThermoment();returnthermoment.getTemperature();,publicfloatgetTemp()/采用该原则returnstation.getTemperature();,面向对象的程序设计,OO原则最少知识原则(LKP)/迪米特法则(LoD),就任

11、何对象而言,在该对象的方法内,只应该调用以下范围的方法:1)该对象本身2)被当作方法的参数而传递进来的对象3)此方法所创建或实例化的任何对象4)对象的任何组件。,面向对象的程序设计,OO原则里氏代换原则(LSP),子类型必须能够替换掉它们的父类型。,面向对象的程序设计,OO原则里氏代换原则(LSP),Type1 object1;Type2 object2;/Type2是Type1的子类(派生类)int Func(Type1,面向对象的程序设计,OO原则里氏代换原则(LSP),/长方形class Rectanglepublic:virtual void setHeight(int h)m_hei

12、ght=h;virtual void setWidth(int w)m_width=w;virtual int Height()const return m_height;virtual int Width()const return m_width;virtual int Cycle()const return(Height()+Width()*2;virtual int Area()const return Height()*Width();private:int m_height;int m_width;,面向对象的程序设计,OO原则里氏代换原则(LSP),/正方形class Squar

13、e:public Rectanglepublic:void setEdge(int edge)m_height=edge;m_width=edge;void setWidth(int w)setSize(w);void setHeight(int h)setSize(h);,面向对象的程序设计,OO原则里氏代换原则(LSP),void resize(Rectangle,面向对象的程序设计,OO原则里氏代换原则(LSP),class Quadranglepublic:virtual int Cycle()const=0;virtual int Area()const=0;,/长方形class R

14、ectangle:public Quadranglepublic:void setHeight(int h)m_height=h;void setWidth(int w)m_width=w;int Height()const return m_height;int Width()const return m_width;int Cycle()const return(Height()+Width()*2;int Area()const return Height()*Width();private:int m_height;int m_width;,/正方形class Square:publi

15、c Quadranglepublic:void setEdge(int edge)m_edge=edge;int Edge()const return m_edge;int Cycle()const return Edge()*4;int Area()const return Edge()*Edge();private:int m_edge;,面向对象的程序设计,OO原则依赖倒转原则(DIP),高层模块不应该依赖低层模块,两者都应该依赖抽象。抽象不应该依赖细节,细节应该依赖抽象。要针对接口编程,不要针对实现编程。,面向对象的程序设计,OO原则依赖倒转原则(DIP),class Animal;c

16、lass Dog:public Animal;class Cat:public Animal;,针对实现的编程:Dog d;d.bark();,针对接口的编程:Animal*animal=new Dog();animal-makeSound();或Animal*animal=getAnimal();animal-makeSound();,面向对象的程序设计,OO原则依赖倒转原则(DIP),class Copyerpublic:int DoCopy(Keyboard,面向对象的程序设计,OO原则依赖倒转原则(DIP),class Copyerpublic:int DoCopy(Reader,class Readerpublic:virtual int Read()=0;class Writerpublic:virtual int Write(int c)=0;,面向对象的程序设计,OO原则好莱坞原则,由高层组件决定如何使用低层组件。不要给我打电话,我会打电话给你们!,面向对象的程序设计,OO原则好莱坞原则,class Worker int Invoke(Candidate,面向对象的程序设计,OO原则好莱坞原则,candidate.Registe(worker);,worker.Invoke(candidate);,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号