方林博士 fanglin1970@gmail.com http://www.popframework.net 面向对象的程序设计 方林博士 fanglin1970@gmail.com http://www.popframework.net.

Slides:



Advertisements
Similar presentations
软件编程基础 一、程序的编辑 Java 源程序是以 Java 为后缀的简单的文本文件,可以用各种 Java 集成开发环境中的源代码编辑器来编写,也可以用其他文 本编辑工具,如 Windows 中的记事本或 DOS 中的 EDIT 软件等。 利用文字编辑器编写下列程序 public class Hello.
Advertisements

面向侧面的程序设计 方林博士 本文下载地址:
系統分析與設計 楊子青 H-1 H 、物件導向技術 n 物件導向的基本概念 – 物件、類別 – 封裝、繼承 – 同名異式 ( 多型 ) 、超荷 ( 過載 ) n 物件導向分析與設計及塑模工具 n UML 塑模工具.
第三讲 面向对象(上).
JAVA 编 程 技 术 主编 贾振华 2010年1月.
当代大学生的性别烦恼 沈奕斐.
四資二甲 第三週作業 物件導向程式設計.
面向对象的程序设计(一).
第一章 面向对象程序设计.
類別與物件 Class & Object.
類別的繼承-一般關係: 繼承是宣告的類別繼承現存類別的部份或全部的成員資料和方法 , 新增額外的成員資料和方法或覆寫和隱藏繼承類別的方法
第7单元 面向过程编程—— 继承与多态.
Ch07 介面與多重繼承 物件導向程式設計(II).
第14章 c++中的代码重用.
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
创意源自激情,技术成就梦想 畅翼创新俱乐部 2012年春俱乐部第三次技术培训 赵程.
第5章 Java中类、对象、接口 及包的概念 5.1 类的基本概念 5.2 类的继承概念 5.3 抽象类和接口 5.4 包.
Ch08 巢狀類別 物件導向程式設計(II).
Android + JUnit 單元測試 建國科技大學資管系 饒瑞佶 2012/8/19V4.
第5章 面向对象程序设计 本章要点 5.1 面向对象程序设计概述 5.2 Java语言的面向对象程序设计 5.3 方法的使用和对象数组
H、物件導向技術 物件導向的基本概念 物件、類別 封裝、繼承 同名異式(多型) 、超荷(過載) 物件導向分析與設計及塑模工具 UML塑模工具.
Java语言程序设计 第七部分 多线程.
Java基础 JavaSE异常.
Classes Lecturer: 曾學文.
第六章 类的扩展与继承.
第一个Android程序 本讲大纲: 1、创建Android应用程序 2、Android项目结构说明 3、运行Android应用程序
Java 程式設計 講師:FrankLin.
辅导课程十六.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第五章 继承、接口与范型.
Java软件设计基础 5. 继承与多态.
2018/12/3 面向对象与多线程综合实验-网络编程 教师:段鹏飞.
Java习题解析.
Java程序设计 第9章 继承和多态.
辅导课程六.
辅导课程十三.
類別的繼承 Vehicle Car.
中国矿大计算机学院杨东平 第5章 接口和包 中国矿大计算机学院杨东平
9.1 程式偵錯 9.2 捕捉例外 9.3 自行拋出例外 9.4 自定例外類別 9.5 多執行緒
第9讲 Java的继承与多态(一) 类的继承 子类的创建 方法覆盖.
Java 程式設計 講師:FrankLin.
泛型委托 泛型接口、方法和委托.
Php class 組員: 賴羿陵 林昱廷 莊正暉 張雅晴
C/C++/Java 哪些值不是头等程序对象
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第七章 操作符重载 胡昊 南京大学计算机系软件所.
* 單元:電腦與問題解決 主題:Java物件導向程式設計-類別與物件 台南縣國立善化高中 蕭嘉民 老師
Multithread 多執行緒 以GUI為例了解物件以及Event
JAVA 编 程 技 术 主编 贾振华 2010年1月.
《JAVA程序设计》 语音答疑 辅导老师:高旻.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
$9 泛型基础.
C#面向对象程序设计 $6 深入理解类.
實驗九:延續實驗八, 製作一個完整音樂播放器
本节内容 类成员的访问控制 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第二章 Java语法基础.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
辅导课程十五.
第二章 Java基本语法 讲师:复凡.
方法進階及物件導向基礎 Lecturer: 楊昌樺.
WSAAsyncSelect 模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang
第6單元 6-1 類別的繼承 (Class Inheritance) 6-2 抽象類別 (Abstract Class)
辅导课程十二.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第十章 多态 第十一组 C++语言程序设计.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
Summary
Presentation transcript:

方林博士 fanglin1970@gmail.com http://www.popframework.net 面向对象的程序设计 方林博士 fanglin1970@gmail.com http://www.popframework.net

Java面向对象的概念和机制 封装(Encapsulation) 继承(Inheritance) 引用(Reference) 重定义(Override) 接口 重载(Overload)

封装 public class Student { String name; String gender; int age; public void setName(String name) { this.name = name; } public void addAge() { age++;

继承 public class CollegeStudent extends Student { String major; public void setMajor(String name) { this.name = name; }

成员函数和成员变量(域)的区别 子类可以重定义父类的成员函数,不可以重定义父类的成员变量 成员函数可以是抽象的,成员变量不可以 抽象的成员函数可以出现在接口中,成员变量不可以

成员(函数和变量)与继承的实质区别 成员定义了对象之间的引用 (Reference)关系 继承定义了类之间的关系,而不是对象之间的关系。

接口(Interface) 接口的实质是一些函数声明(即函数头、抽象函数)的集合。 类实现一个接口意味着为接口中的函数定义函数体。 接口可以多继承(多实现),原因在于接口中的函数都是抽象的,没有函数体。一个类实现多个接口意味着为所有接口中的所有函数定义函数体。

善用以下机制表达你的思想 封装(Encapsulation) 继承(Inheritance) 引用(Reference) 重定义(Override) 接口 重载(Overload)

第一个例子:舞会问题 男孩和女孩们要到一个舞场跳舞,舞场的规定是: 只有配对的男孩和女孩才能进入舞场 一个男孩只能与一个女孩配对,反之亦然 没有配对的男孩/女孩必须在门口等待直到有一个女孩/男孩出现

舞会问题的同步解 Boy Girl Dance

Dance的设计 public class Dance { // 所有男孩都应该调用这个函数。这个函数 // 将返回与男孩配对的女孩。如果没有女孩与之配对, // 这个函数将阻塞到有一个女孩到来为止 public Girl dance(Boy boy) { … } // 所有女孩都应该调用这个函数。这个函数 // 将返回与女孩配对的男孩。如果没有男孩与之配对, // 这个函数将阻塞到有一个男孩到来为止 public Boy dance(Girl boy) {

第二个例子:舞会问题的异步解 Dance一旦发现有男孩女孩可以配对就向二者分别发送通知

类关系图 Boy DanceMatchListener Girl Dance DanceMatchEvent

异步Dance类的设计 public class Dance { // 男孩调用这个方法进行注册 public void registerBoy(Object boy, DanceMatchListener listener) { … } // 女孩调用这个方法进行注册 public void registerGirl(Object girl, DanceMatchListener listener) {

DanceMatchListener public interface DanceMatchListener{ void match(DanceMatchEvent evt); }

DanceMatchEvent public class DanceMatchEvent extends java.util.EventObject { Object getBoy(); // 获取配对的男孩 Object getGirl(); // 获取配对的女孩 Dance getDance(); // 获取舞场 }

Boy和Girl的设计 public class Boy implements DanceMatchListener {…} public class Girl implements DanceMatchListener {…}

异步Dance的算法 Dance内部为男孩女孩分别准备一个队列 Dance内部有一个线程对上述两个队列进行监控 监控线程一般情况下处于睡眠状态,一旦有男孩或女孩来注册就会被激活 监控线程被激活后就检查两个队列,男孩女孩可以匹配的话就发送通知。如果没有发现匹配就重新进入休眠

异步Dance的实现(略)

第三个例子:Java的Thread和Runnable 实现类还可以实现其他接口 可以在其他线程中使用同一个Runnable 对象 Thread

Thread和Runnable 的设计 public class Thread implements Runnable { public Thread() { …… } public Thread(Runnable runnable} { …… } @Override public void run() { …… } } public interface Runnable { void run();

第四个例子:分形图的绘制 Graph Picture Draw in Draw Element Line Recurse

谢谢大家 方林 fanglin1970@gmail.com 本文下载地址:http://www.popframework.net