山东大学面向对象

山东大学面向对象

ID:37764062

大小:35.00 KB

页数:4页

时间:2019-05-30

山东大学面向对象_第1页
山东大学面向对象_第2页
山东大学面向对象_第3页
山东大学面向对象_第4页
资源描述:

《山东大学面向对象》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1.什么是纯多态?支持可变参数的函数,在函数定义时参数类型是未知的。支持代码只编写一次,高级别的抽象以及针对各种情况所需的代码裁剪。通常是通过给方法的接收器发送延迟消息来实现这种代码裁剪的。关于纯多态的一个简单实例是JAVA语言编写的StringBuffer类中的append方法一个定义多种结果2元类的作用?概念上一致,只用一个概念对象就可表述系统的所有成分。使类成为运行时刻一部分有助于改善程序设计环境。继承的规范化,由于类与元素的继承采用双轨制,继承可严格定义为除非显式说明为私有的情况,子类可以继承其超类的所有的操作。3替换原则?如果有AB两个类,

2、类B是类A的子类,那么在任何情况下都可用类B来替换类A而外界毫无察觉。C++采用最小静态空间分配,只分配超类所需的内存空间。Java采用动态内存分配,只分配用于保存一个指针的内存空间,运行时通过堆来分配所需的内存空间,同时将指针设为相应的合适值。4组合复用的优缺点?提供一种利用已存在的软件组件来创建新的应用程序的方法。优点:1.容器类仅能通过被包含对象的接口来对其访问。2.黑盒复用被包含对象细节对外不可见。3.封装性好。4.所需的依赖少。5.每一个类只专注于一项任务。6.通过获取指向其它的具有相同类型的对象引用,可以在运行期间动态地定义(对象的)组合

3、。缺点:1.系统中会有较多的对象需要管理。2.为了能将多个不同的对象作为组合块(compositionblock)来使用,必须仔细地对接口进行定义。5继承复用的优缺点?新的类可以声明为已存在的类的子类,通过这种方式,与初始类相关的所有数据字段,函数都自动地与新的数据抽象建立联系。优点:1.新的实现较为容易。2.修改和扩展继承的实现较为容易。缺点:1.破环封装。将父类细节暴露给子类。2.如果超类发生改变,那么子类的实现也不得不改变。3.从父类的继承来的实现不能在运行时发生改变,没有足够的灵活性。4.“白盒”复用,因为父类的内部细节对于子类而言通常是可见

4、的。改写、重载、重定义的相同和不同相同点:都是函数名相同,有不同的实现。区别发生在同一个类中,类型签名不同:重载发生在父类和子类中,类型签名相同:改写发生在父类和子类中,类型签名不同:重定义多态形式:重载(类型签名区分,同一类中)改写(层次区分,母类子类间)多态变量(赋值区分parentp=newchild())泛型造型:自动造型/强制造型转换多态变量:方法所执行的消息绑定是由最近赋值给变量的数值的类型来决定的。简单变量接收器变量(this)纯多态(可变参数的函数,通过发送延迟消息//append中调用tostring,tostring在子类中重定义

5、)类型签名是关于函数参数类型,参数顺序和返回值类型的描述范畴定义了能够使名称有效使用的一段程序,或者能够使名称有效使用的方法。匹配原则1找到所有可能进行调用的方法各个参数可以合法地赋值给各个参数类型的所有方法。如果找到一个在调用时可以完全匹配所使用的参数类型的方法,那么就执行这个方法。2如果第一步所产生的集合中的任何方法的参数类型都可以赋值给集合中的任何其他方法,那么就将第二个方法从集合中移走。重复以上操作,直到无法实现进一步的缩减为止。3如果只剩下一个方法,那么这个方法就非常明确了,调用这个方法即可。如果剩下的方法不止一个,那么调用就产生歧义了,此

6、时编译器报告错误。方法调用的顺序(接收器和参数均存在父类时)this.show(O)、super.show(O)、this.show((super)O)、super.show((super)O)设计模式桥模式意图将抽象部分与它的实现部分分离,使它们都可以独立地变化适用性抽象和它的实现部分可以独立变化类的抽象以及它的实现都可以通过生成子类的方法加以扩充实现部分的修改不会对客户产生影响评价将继承关系转换为组合关系,从而降低了系统间的耦合,减少了代码冗余当需求改变的时候,只需要简单添加几个类对原有代码不需要改动保证了代码的稳定,提高了可维护性策略模式封装了

7、一系列算法,使得它们可以相互替换//针对接口编程,而不是针对实现编程接口是抽象策略,底下实现了一些具体的策略。抽象策略定义接口,具体策略提供算法。评价:算法可以独立变化使用组合取代继承,封装了可变性,保证了“开-闭”装饰者模式//一个个类,调用构造函数不断续在已有的同类上。设计原则开闭原则在设计一个软件的时候,应当使这个软件可以在不被修改的前提下扩展解释已有模块,尤其是最重要的抽象层模块不能动:保证稳定性和延续性可以扩展新模块:增加新行为,保证灵活性封装可变性找出应用中可能需要变化之处把它们独立出来不要和那些不需要变化的代码混在一起依赖倒转原则抽象不

8、应当依赖于细节,细节应当依赖于抽象。针对接口编程,而非实现内容:不将变量声明为某个特定的具体类的实例对象,而

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。