Presentation is loading. Please wait.

Presentation is loading. Please wait.

第13讲 面向对象(1) 3.1 面向对象的概念 3.2 类与对象.

Similar presentations


Presentation on theme: "第13讲 面向对象(1) 3.1 面向对象的概念 3.2 类与对象."— Presentation transcript:

1 第13讲 面向对象(1) 3.1 面向对象的概念 3.2 类与对象

2 知识回顾 学过的关键字有哪些? 程序结构:顺序、分支、循环 变量定义与使用 方法定义与使用 数组定义与使用
public static void class int short byte long char float double boolean true false null if else switch case default break for while do continue new 程序结构:顺序、分支、循环 变量定义与使用 方法定义与使用 数组定义与使用

3 作业中的问题

4 作业中的问题

5 作业中的问题

6 作业中的问题

7 本讲要点 【要点】 【教学目标】 面向对象的概念 类的定义与对象的创建
理解面向对象程序设计的基本概念,掌握面向对象程序设计的基本特征,理解什么是类,什么是对象,以及如何定义类,如何创建对象。

8 3.1 面向对象的概念 【面向对象】 现实生活中存在各种形态不同的事物,这些事物之间存在着各种各样的联系。在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之间的联系,这种思想就是面向对象。 面向对象是一种符合人类思维习惯的编程思想。

9 3.1 面向对象的概念 【面向过程】 面向过程就是分析解决问题所需要的步骤,面向对象则是把解决的问题按照一定规则划分为多个独立的对象,然后通过调用对象的方法来解决问题。

10 3.1 面向对象的概念—五子棋 【面向过程设计思想】首先分析问题的步骤: 1、开始游戏 2、黑子先走 3、绘制画面 4、判断犯规输赢
5、轮到白子 6、绘制画面 7、判断犯规输赢 8、返回步骤2 9、输出最后结果。 把上面每个步骤用分别的函数来实现,问题就解决了。

11 3.1 面向对象的概念—五子棋 【面向对象设计思想】整个五子棋可以分为三类对象: 对象之间的关系:
第一类:玩家对象(黑白双方),负责接受用户输入 第二类:棋盘对象,负责绘制画面 第三类:规则对象,负责判定诸如犯规、输赢等。 对象之间的关系: 玩家对象接受用户输入,并告知棋盘对象; 棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化; 棋盘对象告知规则对象来对棋局进行判定,结果告知棋盘对象

12 3.1 面向对象的概念 【面向对象的特点】可概括为封装性、继承性和多态性 封装性:面向对象的核心思想,将对象的属性和行为封装起来,不让外界知道具体实现细节。如某部手机的实现细节,内部构造是封装起来的。 继承性:主要描术类与类之间的关系。通过继承,儿子具有老子的某些特征及行为。反映到编程上就是,通过继承可以让子类具有父类的某些特征和行为,而不需要重复编写代码。 多态性:是指对于相同名字的行为,不同的对象可以有不同的呈现方式,如:动物有一种行为“cry”,狗、猫、猪都是动物,但cry的音节不同。

13 3.2 类与对象 面向对象的思想有两个基本概念类、对象。 【类】是对某一类事物的抽象描述。 如:汽车、手机、老师 类通常是回答“什么是XXX?”的问题,如:什么是汽车、什么是手机、什么是老师? 【对象】用于表示现实中该类事物的个体。 如:那辆豫A350汽车、我的这部手机、你的那部手机、孙琪老师、武俊琢老师。 对象通过回答“哪一个XXX”的问题。

14 3.2 类与对象 【类和对象的关系】是某类事物描述与某个具体事物的关系。如:汽车与我的那辆汽车,老师与张倩老师。 类是一个概念,一般不占用空间,对象是一个具体事物,一般会占一定的空间。 在编程中,类就是一种复杂的数据类型定义,对象是这个数据类型的一个具体实例(存放这个类型数据的存储空间)。

15 3.2 类与对象—3.2.1 类的定义 在面向对象的思想中最核心就是对象,为了在程序中创建对象,首先需要定义一个类。
3.2 类与对象— 类的定义 在面向对象的思想中最核心就是对象,为了在程序中创建对象,首先需要定义一个类。 类是对象的抽象,它用于描述一组对象的共同特征和行为 类中可以定义成员变量和成员方法 成员变量对象的特征,也称对象的属性 成员方法对象的行为,简称方法

16 3.2 类与对象—3.2.1 类的定义 【类的定义格式】 [修饰符] class 类名{ [成员变量定义;] //可以没有成员变量
3.2 类与对象— 类的定义 【类的定义格式】 [修饰符] class 类名{ [成员变量定义;] //可以没有成员变量 [构造方法定义] //可以缺省构造方法定义 [成员方法定义] //也可以没有成员方法定义 } 修饰符:public abstract final

17 3.2 类与对象—3.2.1 类的定义 【类定义必不可少的格式】 class 类名{ } 【说明】
3.2 类与对象— 类的定义 【类定义必不可少的格式】 class 类名{ } 【说明】 (1)一个类可以是一个独立的文件,也可以在一个文件中定义多个类,但public类最多有1个,且文件名要与public类的类名相同。 (2)如果在一个文件中定义多个类,这两个类一般不要嵌套定义。 (3)一个类中可以定义主方法,也可以不定义主方法。 (4)同一路径下类名不能重复。

18 3.2 类与对象—3.2.1 类的定义 【成员变量、方法的定义说明】 (1)成员变量定义:[修饰符] 变量类型 变量名;
3.2 类与对象— 类的定义 【成员变量、方法的定义说明】 (1)成员变量定义:[修饰符] 变量类型 变量名; 修饰符:public private protected之一,也可缺省 public:表示这个成员变量是公有的(相当于公开) private:表示这个成员变量只能在自己的类中引用,其它类是不能直接访问的(类的私生活) 缺省时:是一种朋友可用的状态(同一包下的类可直接访问) (2)成员方法定义:(同2.6中所讲的方法定义)

19 3.2 类与对象—3.2.1 类的定义 例1:定义一个Person类(在Example121.java中定义)
3.2 类与对象— 类的定义 例1:定义一个Person类(在Example121.java中定义) Person是类名,age、name是成员变量,speak()是成员方法。在成员方法speak()中可以直接访问成员变量age、name。 说明:在Example131类定义之后定义一个类Person类 class Person{ int age; String name; void speak(){ System.out.println("大家好,我是"+name+",我今年"+age+"岁"); }

20 3.2 类与对象—3.2.2 对象的创建与使用 【对象创建格式】使用new关键字创建对象。 new 类名()
一般我们要定义一个类的变量来引用这个对象。 类名 对象名; 对象名=new 类名(); 或: 类名 对象名=new 类名(); 例如,创建一个Person对象,具体示例如下: Person p=new Person();

21 3.2 类与对象—3.2.2 对象的创建与使用 【说明】 (1)“Person p”则是声明了一个Person类型的变量p,p存放一个存储空间地址。 (2)“new Person()”用于创建Person类的一个实例对象 (3)“=”将Person对象在内存中的地址赋值给变量p,这样p便可以引用这个对象,变量p和对象之间的引用关系如下图所示。

22 3.2 类与对象—3.2.2 对象的创建与使用 【对象引用】成员变量引用、方法引用: 格式如下: 变量引用 对象名.成员变量名
变量引用 对象名.成员变量名 方法引用 对象名.成员方法名(参数值列表) 说明:对象的创建和引用,一般写在主方法(main)中

23 3.2 类与对象—3.2.2 对象的创建与使用 【对象引用】 例如:我们在Example131类的主方法中创建对象并引用

24 3.2 类与对象—3.2.2 对象的创建与使用 通过new创建对象,成员变量会自动赋初值

25 3.2 类与对象—3.2.2 对象的创建与使用 【对象使用说明】 当对象创建后,在程序中可以通过对象的引用变量来访问该对象的成员。
当没有任何变量引用这个对象时,它将成为垃圾对象,不能再被使用。 情况1:变量超出作用域变为垃圾对象

26 3.2 类与对象—3.2.2 对象的创建与使用 情况2:变量的值变为null Java具有垃圾自动回收功能
p2=null时,则p2所引用的第2个对象会变为垃圾对象 程序执行时会出现空指针异常

27 3.2 类与对象—3.2.3 类的设计 例2:假设要在程序中描述一个学校所有学生的信息,可以先设计一个学生类(Student),在这个类中定义学生的相关属性(如:学号、姓名、爱好等),定义一个方法introduce()表示学生做自我介绍。根据上面的描述设计Student类。定义一个应用程序类Example132,在该类的主方法中创建2个Student对象,并引用。

28 3.2 类与对象—3.2.3 类的设计 例2:Example132类的定义

29 3.2 类与对象—3.2.4 类的封装 在上例中,如果将13行代码改为: 运行结果: stu2.age = -19;
你好,我是XXX,今年-19岁,我的爱好是。。。 显然,-19不是一个合理的年龄值。我们将年龄赋值为-19,程序中不会有任何错误,但生活中显然是不合理的。因此,在定义类时,应该对成员变量的访问作出一些限定,不允许外界随意访问,这就需要实现类的封装。

30 3.2 类与对象—3.2.4 类的封装 【类的封装】 是指在定义一个类时,将类中的成员变量私有化,即使用private关键字来修饰。
私有成员只能在它所在类中被访问,为了能让外界访问私有成员变量,需要提供相应的public修饰方法(公有方法),包括用于获取私有成员变量值的getXxx()方法、设置私有成员变量值的setXxx()方法,一般也将这种成员变量称为类的属性。 Xxx表示名字为xxx的属性,set、get方法中因为是方法名的第二个单词,因此首字段是大写的。

31 3.2 类与对象—3.2.4 类的封装 【类的封装】 public void setName(String sName){
private String name; public void setName(String sName){ name=sName; } public String getName(){ return name;

32 3.2 类与对象—3.2.4 类的封装 封装后的Student类

33 3.2 类与对象—3.2.4 类的封装 封装后的Student类

34 3.2 类与对象—3.2.4 类的封装 【封装说明】 使用private关键字将属性name、favorate、age声明为私有成员变量;
getName()方法用于获取name属性的值,setName()方法用于设置name属性的值; getAge()和setAge()方法用于获取和设置age属性的值。在setAge()方法中对参数stuAge的值进行检查; getFavorate()和getFavorate()方法用于获取和设置favorate属性值。

35 3.2 类与对象—3.2.4 类的封装 此时,在Example131中对该类的引用就会出错
原因:Student类中的成员变量成为私有变量,在其它类中不能直接引用

36 3.2 类与对象—3.2.4 类的封装 【封装后的属性访问】 通过setXxx()和getXxx()方法来访问

37 本讲小结 面向对象的基本概念 类与对象 类的定义 对象的创建与使用 类的设计 类的封装

38 作业 3.10习题


Download ppt "第13讲 面向对象(1) 3.1 面向对象的概念 3.2 类与对象."

Similar presentations


Ads by Google