Download presentation
Presentation is loading. Please wait.
Published by幅仆 裘 Modified 7年之前
1
方林博士 fanglin1970@gmail.com http://www.popframework.net
面向对象的程序设计 方林博士
2
Java面向对象的概念和机制 封装(Encapsulation) 继承(Inheritance) 引用(Reference)
重定义(Override) 接口 重载(Overload)
3
封装 public class Student { String name; String gender; int age;
public void setName(String name) { this.name = name; } public void addAge() { age++;
4
继承 public class CollegeStudent extends Student { String major;
public void setMajor(String name) { this.name = name; }
5
成员函数和成员变量(域)的区别 子类可以重定义父类的成员函数,不可以重定义父类的成员变量 成员函数可以是抽象的,成员变量不可以
抽象的成员函数可以出现在接口中,成员变量不可以
6
成员(函数和变量)与继承的实质区别 成员定义了对象之间的引用 (Reference)关系 继承定义了类之间的关系,而不是对象之间的关系。
7
接口(Interface) 接口的实质是一些函数声明(即函数头、抽象函数)的集合。 类实现一个接口意味着为接口中的函数定义函数体。
接口可以多继承(多实现),原因在于接口中的函数都是抽象的,没有函数体。一个类实现多个接口意味着为所有接口中的所有函数定义函数体。
8
善用以下机制表达你的思想 封装(Encapsulation) 继承(Inheritance) 引用(Reference)
重定义(Override) 接口 重载(Overload)
9
第一个例子:舞会问题 男孩和女孩们要到一个舞场跳舞,舞场的规定是: 只有配对的男孩和女孩才能进入舞场 一个男孩只能与一个女孩配对,反之亦然
没有配对的男孩/女孩必须在门口等待直到有一个女孩/男孩出现
10
舞会问题的同步解 Boy Girl Dance
11
Dance的设计 public class Dance { // 所有男孩都应该调用这个函数。这个函数
// 将返回与男孩配对的女孩。如果没有女孩与之配对, // 这个函数将阻塞到有一个女孩到来为止 public Girl dance(Boy boy) { … } // 所有女孩都应该调用这个函数。这个函数 // 将返回与女孩配对的男孩。如果没有男孩与之配对, // 这个函数将阻塞到有一个男孩到来为止 public Boy dance(Girl boy) {
12
第二个例子:舞会问题的异步解 Dance一旦发现有男孩女孩可以配对就向二者分别发送通知
13
类关系图 Boy DanceMatchListener Girl Dance DanceMatchEvent
14
异步Dance类的设计 public class Dance { // 男孩调用这个方法进行注册
public void registerBoy(Object boy, DanceMatchListener listener) { … } // 女孩调用这个方法进行注册 public void registerGirl(Object girl, DanceMatchListener listener) {
15
DanceMatchListener public interface DanceMatchListener{
void match(DanceMatchEvent evt); }
16
DanceMatchEvent public class DanceMatchEvent extends java.util.EventObject { Object getBoy(); // 获取配对的男孩 Object getGirl(); // 获取配对的女孩 Dance getDance(); // 获取舞场 }
17
Boy和Girl的设计 public class Boy implements DanceMatchListener {…} public class Girl implements DanceMatchListener {…}
18
异步Dance的算法 Dance内部为男孩女孩分别准备一个队列 Dance内部有一个线程对上述两个队列进行监控
监控线程一般情况下处于睡眠状态,一旦有男孩或女孩来注册就会被激活 监控线程被激活后就检查两个队列,男孩女孩可以匹配的话就发送通知。如果没有发现匹配就重新进入休眠
19
异步Dance的实现(略)
20
第三个例子:Java的Thread和Runnable
实现类还可以实现其他接口 可以在其他线程中使用同一个Runnable 对象 Thread
21
Thread和Runnable 的设计 public class Thread implements Runnable { public Thread() { …… } public Thread(Runnable runnable} { …… public void run() { …… } } public interface Runnable { void run();
22
第四个例子:分形图的绘制 Graph Picture Draw in Draw Element Line Recurse
23
谢谢大家 方林 fanglin1970@gmail.com 本文下载地址:http://www.popframework.net
Similar presentations