《第04讲类和对象(上)》由会员分享,可在线阅读,更多相关《第04讲类和对象(上)(16页珍藏版)》请在金锄头文库上搜索。
1、 类和对象(上)类和对象(上)第一页,共十六页。类和对象类和对象程序设计简史面向对象的思想类的定义对象的创建和使用final、static关键字、常量3/30/20222类和对象(上)第二页,共十六页。程序设计简史程序设计简史过程式程序设计结构化程序设计面向对象程序设计(OO)面向方面程序设计(AOP)3/30/20223类和对象(上)第三页,共十六页。对象对象1对象就是我们周围的各种各样的事物对象就是我们周围的各种各样的事物。例如:衣服、盘子、宠物、朋友、电脑等。每个对象都有一些状态(属性)每个对象都有一些状态(属性)。例如:衣服:颜色,长度,面料。猫:名字,情绪,饥饿,。有些对象会作出一些
2、行为有些对象会作出一些行为。例如:猫:名字,情绪,疲劳,饥饿发怒,玩耍,吃食,睡觉。对象的行为会改变对象的状态对象的行为会改变对象的状态。例如:玩耍 疲劳=True睡觉 疲劳=False吃食 饥饿=False对象的状态会影响对象的行为对象的状态会影响对象的行为。例如:if( 饥饿 = False) 吃食 return failure面向对象的程序设计与我们人类观察客观事物的模式相同:用类表示客观事物,用类中的变面向对象的程序设计与我们人类观察客观事物的模式相同:用类表示客观事物,用类中的变量表示事物的属性,用函数(方法)表示事物的行为,属性与行为相互作用。量表示事物的属性,用函数(方法)表示事
3、物的行为,属性与行为相互作用。3/30/20224类和对象(上)第四页,共十六页。抽象(分析与设计)抽象(分析与设计)抽象:抽象:就是对事物的状态、行为进行概括、总结、描述。软件开发过程可分为五个阶段:分析、设计、实现、测试、发布。抽象对应于软件工程的分析、设抽象对应于软件工程的分析、设计阶段。计阶段。分析:分析:就是确定我们开发的系统想要实现什么。在分析阶段可以定义一组操作者,以及系统必须完成的行为。此外,还要定义一组主对象,系统在主对象之间完成操作、行为、交互。行为的描述要足够详细。设计:设计:就是确定系统如何实现要达到的目标。在设计阶段,要生成操作者、行为、主对象的模型。例如,我们可以对
4、一个轮船公司的软件工程作出下面的抽象:软件必须支持一个轮船公司。轮船公司保持一队运输集装箱的交通工具。在调出一个交通工具时,集装箱的重量是唯一的重要因素。轮船公司有两种类型的交通工具:卡车和内河驳船。集装箱用千克标重,计算交通工具的引擎功率时,需要用牛顿表示的交通工具的总重量。图形用户接口用来跟踪向交通工具中装载的集装箱。一些报表用来生成车/船队的记录。凭借这些需求分析,我们可以作出高水平的设计:系统中必须用对象表示公司、两种交通工具。公司是多个交通工具对象的集合。还应该包括报表、图形用户接口等对象。3/30/20225类和对象(上)第五页,共十六页。类是对象的蓝图如同绘图员可以绘制设备的蓝图
5、,蓝图可以在制造实际设备时使用很多次。类是软件的蓝图,你可以用类,来实例化许许多多个别的对象。在类中定义了一套数据元素(属性)和一套行为(方法)。行为用来操作对象,以及完成相关对象之间的交互。属性和方法都叫做成员。例如交通工具对象必须保存两个属性:最大载重量和当前载重量;装载集装箱的方法要始终跟踪这两个属性。3/30/20226类和对象(上)第六页,共十六页。面向对象的思想面向对象的思想面向对象的编程思想力图使对计算机语言中对事物的的描述与现实世界中该事物的本来面目尽可能的一致。 类(class)和对象(object)是面向对象方法的核心概念。类是对一类事物描述,是抽象的、概念上的定义;对象是
6、实际存在的该类事物的每个个体,因而也称实例(instance)。Everything is Object:万事万物皆对象。3/30/20227类和对象(上)第七页,共十六页。类的定义类的定义类(Class)是用来描述一个对象(Object):类包括两方面的内容:属性:用来描述对象的数据元素称为对象的属性(也称为数据/状态)方法:对对象的属性进行的操作称为对象的方法(也称为行为/操作)3/30/20228类和对象(上)第八页,共十六页。类的定义(例类的定义(例CarObject.java)以一个“汽车”实体为例,来说明类的定义汽车的属性:出厂编号 总数 发动机类型 最高速度 当前状态 当前速度
7、油量 汽车的基本操作:启动 关闭 加速 减速 识别类的简单规则:名词属性动词方法3/30/20229类和对象(上)第九页,共十六页。类的定义(例类的定义(例CarObject.java)public class CarObject private int engineType; private int currentSpeed ; public CarObject() public CarObject( int engineType, int bodyType, int topSpeed ) public void turnOn() running = true; public void ac
8、celerate() private void speedUp( int amount ) 3/30/202210类和对象(上)第十页,共十六页。面向对象特性面向对象特性-封装性封装性封装性就是把对象的属性和服务结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节,包含两个含义: 把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象)。 信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成一个边界或者说形成一道屏障,只保留有限的对外接口使之与外部发生联系。封装的原则在软件上的反映是:要求使对象以外的部分不能随意存取对象的内部数据(属性),从而有效的避免了外部错误对它的交叉感染,使
9、软件错误能够局部化,大大减少查错和排错的难度。3/30/202211类和对象(上)第十一页,共十六页。通过类实现封装性通过类实现封装性使用者对类内部定义的数据(对象的成员变量)的直接操作会导致数据的错误、混乱或安全性问题。Java中通过将数据封装、声明为私有的(private),再提供一个或多个公开的(public)方法实现对该属性的操作,以实现下述目的:隐藏一个类的实现细节;使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作;便于修改,增强代码的可维护性;3/30/202212类和对象(上)第十二页,共十六页。通过类实现封装性(通过类实现封装性(Get/
10、Set方法)方法)private int engineType; public int getEngineType() return this.engineType; public void setEngineType( int engineType ) if( engineType = V4 & engineType = V10 ) this.engineType = engineType; 3/30/202213类和对象(上)第十三页,共十六页。通过类实现封装(私有化内部方法)通过类实现封装(私有化内部方法)public void accelerate() /call speedUppri
11、vate void speedUp( int amount ) 3/30/202214类和对象(上)第十四页,共十六页。类构造器类构造器构造方法是一个特殊的方法。Java 中的每个类都有构造方法,用来初始化该类的一个对象。构造方法具有和类名相同的名称,而且不返回任何数据类型。重载经常用于构造方法。每个类都至少有一个构造器,如果没有定义构造器,则系统将自动提供一个默认的不带任何参数的构造器默认构造方法u如果已经定义了一个构造器(无论是否有参数),编译程序都不会帮我们自动合成一个。构造方法只能由new运算符调用 构造器是一个特殊的方法构造器是一个特殊的方法: :u没有返回类型没有返回类型u创建对象
12、时自动调用创建对象时自动调用u不能显式的调用不能显式的调用u可以重载可以重载, ,但不会被子类继承但不会被子类继承u作用是初始化数据作用是初始化数据3/30/202215类和对象(上)第十五页,共十六页。内容总结类和对象(上)。类和对象(上)。在设计阶段,要生成操作者、行为、主对象的模型。例如,我们可以对一个轮船公司的软件工程作出下面的抽象:。如同绘图员可以绘制设备的蓝图,蓝图可以在制造实际设备时使用很多次。在类中定义了一套数据元素(属性)和一套行为(方法)。行为用来操作对象,以及完成相关对象之间的交互。类(class)和对象(object)是面向对象方法的核心概念。类(Class)是用来描述一个对象(Object):第十六页,共十六页。