a01_c_复习基本oop知识_ok_W_第1页
a01_c_复习基本oop知识_ok_W_第2页
a01_c_复习基本oop知识_ok_W_第3页
a01_c_复习基本oop知识_ok_W_第4页
a01_c_复习基本oop知识_ok_W_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基於軟硬整合觀點A01_c复习基本OOP技术(c)By 高煥堂基於軟硬整合觀點6、结构的接口(卡榫函数) 卡榫函数 所谓卡榫(Hook),就是用来接合两个东西的接口。如果两个东西于不同时间出现,则一方会预留虚空,给予另一边于未来时刻能以实体来填补该空间,两者虚实相依,就密合起来了。设计优良的卡榫, 可以让实体易于新陈代谢、抽换自如(Plug and Play, 俗称PnP)。Template Method設計模式GoFHook函數 变与不变的分离(Separate code thatchanges from the code that doesnt)是设计卡榫(Hook)函数及应用框架之基本原

2、则和手艺。 分离出变(Variant)与不变(Invariant)部份之后,就可以将不变部份写在父类别(Super- class)里,而变的部份就写在子类别(Subclass)里。 然后,藉由C+的类别继承(Inherit)机制组织起来 。繼BoardTrainCar/ C+class Car : Vehicle/.Vehicle 或者,藉由Java的类别扩充(Extend)机制组织起来。擴DoorLightTire/ Javaclass Tire extends Car/.Car 卡榫函数的Java实现 在Java里,使用抽象(abstract)函数或可覆写(overridable)函数来实

3、现卡榫函数。interface IShape void template_paint(Graphics gr);/ 一般接口/ Shape.javaimport java.awt.*;public abstract class Shape implements IShape public void template_paint(Graphics gr) invariant_paint(gr); / 畫背景hook_paint(gr);/ 畫前景private void invariant_paint(Graphics gr) gr.setColor(Color.black); gr.fillR

4、ect(10,30, 200,100);/ 默認行為abstract protected void hook_paint(Graphics gr);/ Bird.javaimport java.awt.*;public class Bird extends Shape private void hook_paint(Graphics gr)/ 畫圖(海鷗)指令gr.setColor(Color.cyan); gr.drawArc(30,80,90,110,40,100); gr.drawArc(88,93,90,100,40,80);gr.setColor(Color.white); gr.d

5、rawArc(30,55,90,150,35,75); gr.drawArc(90,80,90,90,40,80);基於軟硬整合觀點7、IoC机制与Default函数 卡榫函数实现IoC机制 控制反转(IoC: Inversion of Control) IoC机制源自于OO语言(如C+等)的类别继承体系,例如C+语言中,基类的函数可以主动调用子类的函数,这就是典型的IoC机制。 基类与子类之间,主控权是在基类手上, 透过Hook函数来调用子类 通常基类是撰写在先,而子类则撰写在后, 这种前辈拥有主导权,进而控制后辈之情形,就通称为控制反转。 默认(Default)行为 基类的重要功能:提供默

6、认(预设)行为 基类可事先定义许多默认(Default)函数。这些默认函数可让子类来继承(或调用) 之。 默認行為IoCinterface IShape void template_paint(Graphics gr);/ 一般接口/ Shape.javaimport java.awt.*;public abstract class Shape implements IShape public void template_paint(Graphics gr) invariant_paint(gr); / 畫背景hook_paint(gr);/ 畫前景private void invariant

7、_paint(Graphics gr) gr.setColor(Color.black); gr.fillRect(10,30, 200,100);/ 默認行為abstract protected void hook_paint(Graphics gr);/ Bird.javaimport java.awt.*;public class Bird extends Shape private void hook_paint(Graphics gr)/ 畫圖(海鷗)指令gr.setColor(Color.cyan); gr.drawArc(30,80,90,110,40,100); gr.drawArc(88,93,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论