面向对象程序设计 、. 第二章 面向对象的分析与设计 学习目标 1 确定系统中的对象 2 确定对象的属性及操作 3 测试对象的有效性 4 区分对象和类 5 了解面向对象的编程和过程化编程之间的区别 6 了解封装的主要好处 7 了解软件开发的主要步骤.

Slides:



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

Java 程序分类 Java Application :是完整程序,需要独立的解 释器解释运行;以 “.java” 为后缀的文件,以 main() 方法作为程序入口,由 java 编译器编译生 成字节码,由 Java 解释器加载执行字节码。 Java Applet 没有 main() 方法作为程序入口,是嵌在.
面向对象与设计模式 RD 常见编程范式介绍  并行编程 - Process-orientedProcess-oriented  组件编程 - Component-basedComponent-based  事件驱动 - Service-oriented,Time-drivenService-orientedTime-driven.
多元評量與 Greenfoot 簡介 南港高中高慧君. 演講大綱 多元評量 高中階段程式設計教學目標與困境 Greenfoot 快速入門 – 袋熊吃樹葉 – 沙灘螃蟹 Greenfoot 臺灣社群介紹 2.
系統分析與設計 楊子青 H-1 H 、物件導向技術 n 物件導向的基本概念 – 物件、類別 – 封裝、繼承 – 同名異式 ( 多型 ) 、超荷 ( 過載 ) n 物件導向分析與設計及塑模工具 n UML 塑模工具.
单元二:面向对象程序设计 任务二:借书卡程序设计.
第四章 类、对象和接口.
第三讲 面向对象(上).
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
JAVA 编 程 技 术 主编 贾振华 2010年1月.
项目6 通用堆栈.
第一章 資料結構導論 1-1 資料結構簡介 1-2 認識程式設計 1-3 演算法效能分析 1-4 物件導向程式設計與Java.
Java程序设计教程 第一讲 Java概述.
四資二甲 第三週作業 物件導向程式設計.
面向对象的程序设计(一).
面向对象程序设计(Java) 徐志红
第一章 面向对象程序设计.
C#程序设计 10软件1、2班 王槐彬 计算机工程学院.
類別與物件 Class & Object.
Ch07 介面與多重繼承 物件導向程式設計(II).
JAVA程序设计 (03) JAVA Programming
第三章 控制结构.
第5章 Java中类、对象、接口 及包的概念 5.1 类的基本概念 5.2 类的继承概念 5.3 抽象类和接口 5.4 包.
程式設計實作.
第5章 面向对象程序设计 本章要点 5.1 面向对象程序设计概述 5.2 Java语言的面向对象程序设计 5.3 方法的使用和对象数组
物件導向程式設計 (Object-Oriented rogramming)
第四章 在 C# 中实现 OOP 概念.
Java基础 JavaSE异常.
Classes Lecturer: 曾學文.
程序與函數的類別方法 目的:模組化程式設計 方法:由上而下設計 注意事項:(1)獨立性 (2)結合問題 (3)子問題間的溝通.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第五章 继承、接口与范型.
JAVA程序设计 第5章 深入理解JAVA语言----补充.
程式設計實作.
第四章 基本輸出入 Java應用程式的輸出入介面有三種,分別是命令提示字元視窗、AWT元件、及Swing元件。本單元先介紹命令提示字元視窗,AWT請看第16、17章,Swing請看第20章。 輸入 輸出.
第2章回顾 标识符:不用记,动手 关键字:if, else, switch, for, while, do, break, continue, void, …… 局部变量和成员变量 ①变量作用域 ②内存布局 基本数据类型 ①4类8种 ②互相转换 流程控制语句 ①分支 if……else, switch.
Java语言程序设计 第五部分 Java异常处理.
面向对象程序设计 、.
Java程序设计 第9章 继承和多态.
SPOTO TM JAVA课程 JAVA中的OO语法
Java
實作輔導 3 日期: 4/14(星期六) 09:10~12:00、13:10~16:00
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
第9讲 Java的继承与多态(一) 类的继承 子类的创建 方法覆盖.
C/C++/Java 哪些值不是头等程序对象
* 單元:電腦與問題解決 主題:Java物件導向程式設計-類別與物件 台南縣國立善化高中 蕭嘉民 老師
辅导课程八.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
《JAVA程序设计》 语音答疑 辅导老师:高旻.
第二章Java基本程序设计.
第二章 Java基本语法 讲师:复凡.
第二章 Java基本语法 讲师:复凡.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
2019/5/3 JAVA Socket(UDP).
第二章 Java基本语法 讲师:复凡.
龍老師我不會Debug QQ.
方法進階及物件導向基礎 Lecturer: 楊昌樺.
第6單元 6-1 類別的繼承 (Class Inheritance) 6-2 抽象類別 (Abstract Class)
辅导课程十二.
助教:廖啟盛 JAVA Socket(UDP) 助教:廖啟盛
PPT注意事项: 当前PPT课件文件必须和提供的源代码文件夹“代码”在同一目录中即不要移动文件夹“代码”的默认位置。
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
第4讲 类和对象、异常处理 ggao.
對於成員(member)存取權的限制 成員的資料被毫無限制的存取,任誰都可以指定任意值給成員,Java語言為了防止這種現象的產生,規定:有一種成員的資料不能任由類別外部的任何人隨意存取。
判斷(選擇性敘述) if if else else if 條件運算子.
第二章 Java基础语法 北京传智播客教育
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
第二章 Java基本语法 讲师:复凡.
第6章 继承和多态 伍孝金
Summary
Presentation transcript:

面向对象程序设计 、

第二章 面向对象的分析与设计

学习目标 1 确定系统中的对象 2 确定对象的属性及操作 3 测试对象的有效性 4 区分对象和类 5 了解面向对象的编程和过程化编程之间的区别 6 了解封装的主要好处 7 了解软件开发的主要步骤

我们可以把生活所在的真实世界( Real World )当作是由许多大小不同的对象所组成 的。对象可以是有生命的个体,比如一个人 或一只鸟。 对象

对象也可以是无生命 的个体,比如一辆汽 车或一台计算机。 对象也可以是一个抽 象的概念,如天气的 变化或鼠标所产生的 事件。

对象的基本概念 客观世界的组成: – 对象; – 对象之间的相互关系; 对象:对象是系统中用来描述客观事物的 一个实体,它是构成系统的一个基本单位。 一个对象由一组属性和操作组成。 动态观点:对象的操作就是对象的行为

对象的特征 对象有两个特征:属性和行为 如: 一个人有他的身高或体重作属性,有他 的行为 —— 如唱歌、打球、骑摩托车、开 汽车。 一条狗有它的颜色作属性,有它的行为, 如摇尾巴或跳跃。 一台电视机有它的外形、尺寸和颜色, 有它的行为,如开、关,接收信号,转换 频道,调节音量。

换档 开大灯 煞车 开冷气 颜色 排档数排档数 排气量 轮胎型号 汽车对象 以汽车为例,我们可定义其属性与方法如:

课程中通过下面的案例来学习面向对象 的分析与设计原理。 案例研究 公司名称: DirectClothing 公司 业务包括: 1 、按月生成产品目录 2 、客户通过电话、网络和传真订购 3 、随时检查订购项的库存情况 4 、公司接受支票和信用卡付款

定义系统的:  对象 1 、对象属性 —— 对象的特征 2 、对象操作 —— 所能执行的任务 面向对象概述

找出问题描述领域中的主要名词 对象可能是:  简单的或复杂的(衬衣,银行)  真实的或概念的(银行出纳员,帐户) 对象有:  属性 ( 颜色,尺寸 )  操作(下订单,取消订单) 第一步:确定对象

对象找到了!

属性:是对象的状态特征  可以是数据或其它对象  对 Order 对象来说,可能包括 orderID 和 items 操作:是对象执行的动作  可以是对象做出的或施加给对象的动作  对 Order 对象来说,可能是 place 和 cancel 第二步:确定对象属性和操作

第三步:对象建模

属性类型

与问题域的相关性  对象是否在问题陈述的界限之内?  系统是否必须有此对象才能完成任务?  在用户与系统的交互中是否必须有此对象? 独立存在性 属性和操作 第四步:测试对象

面向对象分析小结 找出问题域中的对象,及其属性和操作 步骤: 1 、列出有关的对象(名词) 2 、列出这些对象的属性和操作 3 、为对象设置合理的属性和操作 4 、应用第四步的 3 条评判规则检验 对象的有效性

练习 An object-oriented design for a Java application that tracks soccer scores.The program should track: The number of goals each player scores in each game What teams the players play for and what season the games were play in

什么是类 ? 是同种对象的集合与抽象 类( class ) 动物类汽车类

类与对象关系 面向对象程序设计的重点是类的设计,而不是对象的 设计。

类与对象的关系 类  对象 抽象定义 实例 电视机  一台 长虹电视机 学生  软件学院 05 级学生小强

实例对象 ( instance ) 汽车类有些共同的属性(汽缸 排气量,排档数,颜色,轮胎 数 …… )和行为(换档,开灯, 开冷气 …… ),但每一台汽车 个别的状态及方法可不同于且 独立于其他汽车 。 你的汽车只是这世界中许多汽 车中的一个。我们就称你的汽 车是汽车类中的一个实例对象 ( instance )。 汽车类 ( class) 实例 ( instance) NEW 你的车

面向对象与面向过程 公共数据 函数 算法+数据结构 属性 操作 属性 操作 过程化程序设计 OOP 程序设计 对象+消息 消息

比较 结构化程序设计 – 对应的典型的计算机语言, 例如 : C – 面向操作的 – 函数 ( 方法 ) 是程序的基本单位 面向对象程序设计 – 对应的典型的计算机语言, 例如 : Java – 面向对象 (object) 的 – 类 (class) 是程序的基本单位 方法 ( 函数 ) 被封装在类中 数据也常常被封装在类中

示例 : 过程化和面向对象两种方法的比较 几个编程小组在设计一个进销存系统 其中,一个小组编写处理货物和库存的程 序,一个小组编写处理订单的程序

面向过程

面向对象

OO 的真正意义 OO 的真正意义是使得软件开发接近人类的正常思维, 将许多原来由人完成的工作交给机器去完成: - 机器语言汇编语言 高级语言 - 面向过程面向模块 面向对象 OO 包括一套比较完整的方法,程序设计只是其中一 个环节。 - 面向对象的分析 - 面向对象的设计 - 面向对象的程序设计 - 代码重用

小 结小 结 Java 程序是由一个个类定义组成的 编写 java 程序的过程是从现实世界中抽象出 java 可实现的类,并用合适的语句定义它的 过程 这个定义过程包括: 1 、对类中各种属性和方法的定义 2 、创建类的对象 3 、类间的各种关系和接口的定义

什么是面向对象? 面向对象是一种程序设计规范, 其基本思想 是使用对象、类、继承、封装、多态等基 本概念来进行程序设计。

OOP 三大特性:封装、继承与多态 封装( encapsulation ) 封装是一种信息隐藏技术。 是指将数据和基于数据的操作封装在一起,数据被 保护在内部,系统的其他部分只有通过在数据外面 的被授权的操作才能够进行交互,目的在于将类使 用者 class user 和类设计者 class creator 分开。 在面向对象的编程中,用类来封装相关的数据和 方 法,保证了数据的安全和系统的严密性。

仓库 属性 操作 价格表, 物品, 账单,电话, 等等 提供物品 ,账单等 等 考虑一个仓库,外部只能通过管理员获取物品 。 抽象

封装的优点 – 隐藏类的实现细节, 实现了信息的隐藏 及安全性; – 提高了程序的模块化,且易于维护; – 具体实现是编写该类的人控制的, 让使 用者只能通过事先定制好的方法来访问 数据,可以方便地加入控制逻辑,限制 对属性的不合理操作

封装的汽车:  实现细节隐藏在车盖 下;驾驶员不必知道 汽车是怎样工作的  汽车的部分零件改变或更换,驾驶员不必改 变对汽车的驾驶

交通工具 车船 飞机 汽车 火车 父类 / 超类 ( SuperClass ) 子类 Java 仅支持 单继承 优点: 使程序结构清晰,减少了编码和维护的工作量,子 类可以使用父类所提供的方法,实现了代码的复用。 class ThisClass extends SuperClass{ … } 现以下图来说明: 继承

汽车类 轿车 公交车 的士

多态 – 用同一个名字调用实现不同操作的方法 – 方式 1 :父类和子类之间的同名方法 (覆盖:子类方法的名称和参数与父类方法的名称和参数相同,在执行过程中,子类的 方法将覆盖父类的方法) – 方式 2 :同一类中参数不同的同名方法 (重载:不是子类对父类同名方法的重新定义,而是类对自身已有的同名方法的重新定 义。重载方法的参数必须不同,或者是参数个数不同,或者是参数类型不同) – 使用方便,且降低了维护和编程量

覆盖 class A { public int x,y; A(int a, int b) { x=a; y=b; } public void display() { int z; z=x+y; System.out.println(“add=”+z); } class B extends A { B(int a, int b) { super(a,b); } public void display() { int z; z=x*y; System.out.println(“product=”+z); }

class AB extends B { AB(int x, int y) { super(x,y); } public static void main(String[] args) { A num1=new A(4,10); B num2=new B(4,10); AB num3=new AB(4,10); num1.display(); num2.display(); num3.display(); }

重载 class MethodOverloading { void receive (int i) { System.out.println(“ 一个整数 ”); System.out.println(“i=”+i); } void receive (int x,int y) { System.out.println(“ 两个整数 ”); System.out.println(“x=”+x+”y=”+y); } void receive (double d) { System.out.println(“ 一个浮点数 ”); System.out.println(“d=”+d); } void receive (String s) { System.out.println(“ 一个字符串 ”); System.out.println(“s=”+s); }

public class MethodOverloadingTest { public static void main(String[] args) { MethodOverloading MO=new MethodOverloading(); mo.receive(1); mo.receive(2,3); mo.receive(12.56); mo.receive(“Hello”); }

面向对象的三大特征 1. 封装:将数据成员( Data Member )和属 于此数据的操作方法( Operating Method ), 放在同一个实体中。 2. 继承:父类定义一些通用的属性与行为, 其子类可以使用。 3. 多态:在同一个类中可有许多同名的方法, 但其参数个数与参数类型不同,而且操作过 程与返回值也可能会不同。 ( 1 )模块化 ( 2 )信息隐藏 ( 1 )实现代码复用 ( 2 )简化设计过程 解决其他语言中 不能重名的问题

以前编写的操作可以在其他工程中再次使用, 可提高开发效率,缩短开发周期 复用

面向对象软件开发过程(软件生命周期) 1 、搜集和分析要求 2 、设计系统 3 、为系统编写代码 4 、测试系统的所有方面 5 、让客户和用户测试系统 6 、维护系统