第一章 面向对象程序设计.

Slides:



Advertisements
Similar presentations
第五章 类的继承和派生 Inheritance/extends/derive. 教学目标 理解继承的概念和作用 派生类的定义 理解访问修饰符 protected 方法的重写 继承下的构造函数的使用 继承下的 finalize 方法的使用 理解超类和子类的关系.
Advertisements

系統分析與設計 楊子青 H-1 H 、物件導向技術 n 物件導向的基本概念 – 物件、類別 – 封裝、繼承 – 同名異式 ( 多型 ) 、超荷 ( 過載 ) n 物件導向分析與設計及塑模工具 n UML 塑模工具.
第6章 对象和类.
Java语言的特点 Java开发环境的搭建
单元二:面向对象程序设计 任务二:借书卡程序设计.
第四章 类、对象和接口.
第三讲 面向对象(上).
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
JAVA 编 程 技 术 主编 贾振华 2010年1月.
第 9 章 物件的建構.
<<會計資訊系統課程講義>> 統一塑模語言(UML)語法精要 -- 物件導向概念、需求分析及系統分析
项目6 通用堆栈.
第8章 面向对象的软件工程 8.1 软件工程的新途径 8.2 面向对象建模 8.3 对象模型 8.4 动态模型 8.5 功能模型.
面向对象的程序设计(一).
设计模式可以帮助我们改善系统的设计,增强 系统的健壮性、可扩展性,为以后铺平道路。
程設一.
類別與物件 Class & Object.
第15章 繼承與多重繼承 15-1 繼承的基礎 15-2 覆寫與隱藏父類別的成員 15-3 子類別的建構與解構子 15-4 多重繼承
類別的繼承-一般關係: 繼承是宣告的類別繼承現存類別的部份或全部的成員資料和方法 , 新增額外的成員資料和方法或覆寫和隱藏繼承類別的方法
Ch07 介面與多重繼承 物件導向程式設計(II).
軟體工程 -物件導向程式設計與UML系統分析實作
第9章 面向对象方法学引论 9.1 面向对象方法学概述 9.2 面向对象的概念 9.3 面向对象建模 9.4 对象模型 9.5 动态模型
第八章 分析與設計階段 – 物件導向設計(OOD)
第八章 类和对象.
第5章 Java中类、对象、接口 及包的概念 5.1 类的基本概念 5.2 类的继承概念 5.3 抽象类和接口 5.4 包.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
程設一.
第5章 面向对象程序设计 本章要点 5.1 面向对象程序设计概述 5.2 Java语言的面向对象程序设计 5.3 方法的使用和对象数组
H、物件導向技術 物件導向的基本概念 物件、類別 封裝、繼承 同名異式(多型) 、超荷(過載) 物件導向分析與設計及塑模工具 UML塑模工具.
第四章 在 C# 中实现 OOP 概念.
Java基础 JavaSE异常.
Classes Lecturer: 曾學文.
CHAPTER 9 建構方法 ROBERT.
程序與函數的類別方法 目的:模組化程式設計 方法:由上而下設計 注意事項:(1)獨立性 (2)結合問題 (3)子問題間的溝通.
第六章 类的扩展与继承.
Java 程式設計 講師:FrankLin.
物件導向系統分析與設計與UML.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第五章 继承、接口与范型.
软件建模精要 面向对象软件建模技术.
Java软件设计基础 5. 继承与多态.
Java程序设计 第9章 继承和多态.
软件建模与UML.
類別的繼承 Vehicle Car.
SPOTO TM JAVA课程 JAVA中的OO语法
中国矿大计算机学院杨东平 第5章 接口和包 中国矿大计算机学院杨东平
郑晟 昆明理工大学 云南省计算机技术应用重点实验室
第9讲 Java的继承与多态(一) 类的继承 子类的创建 方法覆盖.
2019/1/16 Java语言程序设计-类与对象 教师:段鹏飞.
Php class 組員: 賴羿陵 林昱廷 莊正暉 張雅晴
C/C++/Java 哪些值不是头等程序对象
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第16章 虛擬與多形 16-1 虛擬函數 16-2 純虛擬函數與抽象類別 16-3 多形 16-4 虛擬繼承與虛擬解構子.
管理信息系统 第九章 面向对象的系统开发方法.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
软件测试 (四)静态测试与动态测试.
C++大学基础教程 第11章 多态性 北京科技大学 信息基础科学系 2019/4/8 北京科技大学.
王豐緒 銘傳大學資訊工程學系 問題:判斷是否為長方形.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
Object-Oriented Programming in C++ 第二章 类和对象
第二章 Java语法基础.
C++语言程序设计 C++语言程序设计 第十章 多态 第十一组 C++语言程序设计.
第二章 Java基本语法 讲师:复凡.
方法進階及物件導向基礎 Lecturer: 楊昌樺.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
第6單元 6-1 類別的繼承 (Class Inheritance) 6-2 抽象類別 (Abstract Class)
JAVA 程式設計與資料結構 第三章 物件的設計.
第4讲 类和对象、异常处理 ggao.
對於成員(member)存取權的限制 成員的資料被毫無限制的存取,任誰都可以指定任意值給成員,Java語言為了防止這種現象的產生,規定:有一種成員的資料不能任由類別外部的任何人隨意存取。
判斷(選擇性敘述) if if else else if 條件運算子.
第6章 继承和多态 伍孝金
Presentation transcript:

第一章 面向对象程序设计

教学目标 比较面向对象与面向过程程序设计 类与对象 封装与信息隐藏 继承 多态性 面向对象的建模和UML

1.1比较面向对象与面向过程程序设计 面向过程程序设计 程序由多个模块构成 自顶向下的功能分解法 程序组成单位:过程或函数 一个要解决的问题被分解成若干个子问题,每个子问题又被划分成若干个子子问题。这种自顶向下的功能分解一直持续下去,直到子问题足够简单,可以在相应的子过程中解决。 存在问题:把数据和处理数据的过程分离 可复用性差 、开发和维护都很困难。

面向过程程序设计 int max(int num1,int num2) { if (num1>num2) return num1; else return num2; { 图1-1:自顶向下的功能分解与程序结构

面向对象程序设计 将数据及对数据的操作行为放在一起,作为一个相互依存、不可分割的整体——对象。 程序由类组成:对相同类型的对象进行分类、抽象后,得出共同的特性而形成了类。 面向对象其实是现实世界模型的自然延伸。 对象之间通过消息相互作用,完成系统功能. 程序模块间的关系简单,程序的独立性高、数据安全。 面向对象方法的显著特性有:封装性、抽象性、继承性和多态性,使软件具有可重用性,开发和维护的代价小。

1.2 类与对象 面向对象的设计: 将客观事物(或实体)看作具有属性和行为(或称服务)的对象(object),通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),而形成类(class)的概念。 程序的执行,表现为一组对象之间的交互通信。对象之间通过公共接口进行通信,从而完成系统功能。 类是相同对象的集合的描述。 例如,类Human就是现实世界中人(对象)的集合,我、你、他都是Human的对象。 分析类Human的所有对象——人,得到对象的共同的数据属性和行为,如下所示: 数据属性:编号、姓名、年龄,… 行为:吃饭、走路、跳舞, …

1.2 类与对象(续) 定义Human类: class Human { int no; String name; int age; … void eat() {…} … } Human被称作类名。 no,name,age被称作变量或域(fields), eat()被称作方法(methods),它们都是类的成员。

1.2 类与对象(续) 在面向对象的编程语言中, 类是一个数据类型 对象是类的实例(instance)。 在Java中,具有类类型的变量在Java中被称作对象引用(object reference)。 例如,Human p1=new Human(1,“张三”,20,…); p1被称作对象引用变量,new Human(1,”张三“,20,…) 被称作Human的对象。

对象 面向对象系统中的对象:是用来描述现实世界中实际存在的事物的实体,它是用来构成系统的一个单位。对象由一组属性和一组行为构成。 具体地,对象是具有唯一对象名和固定对外接口的一组属性和操作的集合,用来模拟组成或影响现实世界问题的一个或一组因素。其中对象名是区别于其他对象的标志;对外接口是对象在约定好的运行框架和消息传递机制中与外界通信的通道; 对象的属性表示了它所处于的状态;而对象的操作则是用来改变对象状态达到特定的功能。

1.3 封装与信息隐藏 封装(Encapsulation)是面向对象方法的重要原则。 就是把对象的属性和操作(或服务)结合为一个独立的整体(系统单位),并尽可能隐藏对象的内部实现细节。 封装有两个含义: 其一,把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位。 其二,“信息隐蔽”,尽可能隐蔽对象的内部细节,对外界形成一个边界,只保留有限的对外接口使之与外部发生联系。

1.3 封装与信息隐藏(续) 数据封装的作用: (1) 对象的数据封装特性彻底消除了传统结构方法中数据与操作分离所带来的种种问题,提高了程序的可复用性和可维护性,降低了程序员保持数据与操作相容的负担。 (2)对象的数据封装特性还可以把对象的私有数据和公共数据分离开,保护了私有数据,减少了可能的模块间干扰,达到降低程序复杂性、提高可控性的目的。

1.3 封装与信息隐藏(续) Java语言中,定义类时通过大括号{ }封装了类的成员:域(变量)和方法,并使用private和public等关键字来控制对类的成员的访问,其中private修饰的成员是隐藏的,而public修饰的成员则定义了类对外的公共接口。 类作为一个抽象的数据类型,允许用户从底层实现细节中抽象出来,提供给用户的是在公共接口上的上层操作。这是抽象性的含义。

1.4 继承 继承(Inheritance)支持着软件代码的复用,是提高软件开发效率的重要因素之一。 继承是在已有类(父类或超类)的基础上派生出新的类(子类),新的类能够吸收已有类的属性和行为,并扩展新的能力。 继承机制中,往往从一组类中抽象出公共属性放在父类。例如,给定类Car、Motocycle和Truck,我们把它们的公共属性放在一个称为Vehicle的公共父类中。

1.4 继承(续) Java中的继承的一个例子:给定一个Window类,通过继承扩展它而得到一个子类MenuWin。 class Win { } class MenuWin extends Win { … //MenuWin新增加成员的定义

1.4 继承(续) 继承分为单继承和多继承。 单继承是指一个子类最多只能有一个父类。 多继承是一个子类可有二个以上的父类。由于多继承会带来二义性,在实际应用中应尽量使用单继承。Java语言中的类只支持单继承,而接口支持多继承。 如何设计继承并完成继承层次是面向对象设计和编程的核心问题。继承是多态性的前提条件。

object Win DialogWin 多继承,in C++ 单继承,in java Class 1 Class 2 Class 3

1.5 多态性 多态性(Polymorphism):指在超类中定义的属性或行为,被子类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或行为在超类及其各个子类中具有不同的语义。

1.5 多态性(续) 例如:定义一个几何图形类Shape,它具有“画图”行为,用draw()表示。但具体画什么图并不确定; 定义Shape类的一些子类如Circle圆和Rectangle矩形。 在子类中“画图”的具体行为可重新定义为:圆类中draw()画圆,矩形类中draw()画矩形。定义Shape s;s作为引用变量可指向Circle圆类的对象,也可指向Rectangle矩形类的对象。通过执行下面的代码: s.draw(); //s调用draw()方法,s指向对象不同会画出不同的图形(圆或矩形)

本节小结 面向对象的设计特性:抽象性、封装性、多态性和继承性,必须在实际的面向对象系统设计中体现。 将面向对象设计方法应用于程序的开发工具和开发过程中,不仅可以加快开发的速度,还可极大地增强程序的可维护性和可扩展性,提高代码重用率。

1.6 面向对象的建模和UML 统一建模语言(Unified Modeling Language,UML)是一种流行的建模语言。

1.6 面向对象的建模和UML(续) 作为一个建模语言, UML由一个用于表达模型的词汇表和一个定义怎样组合词汇的语法规则构成,即: UML = UML词汇表 + UML建模的语法规则 UML词汇表 = UML 事物+ 关系+ 模型图。 UML 事物(Thing)就是被模拟的实体或对象。事物可能是包、类、接口等等。 事物之间的语义上的联系用关系表示,UML中共有4种关系,它们是:依赖关系、关联关系、泛化关系和实现关系。 从软件的体系结构出发,UML把软件模型分成了四个视图:用例视图、逻辑视图、实现视图和分布视图。 在本书的有关章节中,案例分析和设计的结果用UML图形化表示,使读者对UML有一个感性化认识。

小结 比较了面向过程程序设计与面向对象程序设计方法各自的特点。 面向对象编程和设计关键性的概念: 类是一组对象集合的描述。 对象是类的一个特例,对象通过接口交互; 引用变量的类型是某个类的变量,其值是对象的地址(或称做指向一个对象)。 封装性、抽象性、继承性和多态性必须在以后的程序设计中体现。 UML是面向对象的建模语言。