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

Slides:



Advertisements
Similar presentations
网络应用程序设计 2014 JavaBean. JavaBean 及其属性 JavaBean 就是一种 Java 的组件技术 JavaBean 是 Java 类 JavaBean 通过约定的方法名实现属性功能 简单属性 void setXxx(Type value) Type getXxx() boolean.
Advertisements

第3章 使用类和对象编程 软 件 学 院 朱士明 副教授.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第四章 类与对象.
Java语言的特点 Java开发环境的搭建
单元二:面向对象程序设计 任务二:借书卡程序设计.
面向对象概述 中原工学院.
课程 要求 参考 书目 课程 内容 课程 练习.
C#程序设计案例教程 第3章 程 序 结 构.
南京理工大学 第2章 Java基本语法 本章我们将学习Java编程语言的基本语法,包括变量、操作符、表达式、语句、字符串、数组、控制流以及如何使用帮助文档。 使用下面的编程框架: public class Test{ public static void main(String []args){ //以下添加测试代码.
第 5 章 流程控制 (一): 條件分支.
第二章 JAVA语言基础.
第14章 c++中的代码重用.
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
第10讲 Java面向对象编程基础(4) 教学目标 主要内容.
面向对象的概念 构造方法 this和static关键字
第三章 控制结构.
第九章 字符串.
程式設計實作.
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
第二章 C# 基础知识.
程式敘述執行順序的轉移 控制與重複、方法 Lecturer:曾學文.
第3章 語法入門 第一個Java程式 文字模式下與程式互動 資料、運算 流程控制.
本單元介紹何謂變數,及說明變數的宣告方式。
程式設計實作.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
管理信息结构SMI.
走进编程 程序的顺序结构(二).
辅导课程六.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第9讲 Java的继承与多态(一) 类的继承 子类的创建 方法覆盖.
2019/1/17 Java语言程序设计-程序流程 教师:段鹏飞.
Java程序设计 第2章 基本数据类型及操作.
Ch02-基礎語法.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
第七章 操作符重载 胡昊 南京大学计算机系软件所.
第三章 C# 基础知识.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第二章Java基本程序设计.
$9 泛型基础.
C++复习3 ----类的继承与派生.
Java變數 2014/6/24.
C#面向对象程序设计 $6 深入理解类.
第二章 Java基本语法 讲师:复凡.
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
本节内容 类成员的访问控制 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第二章 Java语法基础.
3.16 枚举算法及其程序实现 ——数组的作用.
本节内容 结构体 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Chapter 18 使用GRASP的对象设计示例.
Review 1~3.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
辅导课程十五.
目标 流程控制 字符串处理 C# 的类和对象 C# 访问修饰符 C# 构造函数和析构函数.
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
本节内容 结构体.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
PPT注意事项: 当前PPT课件文件必须和提供的源代码文件夹“代码”在同一目录中即不要移动文件夹“代码”的默认位置。
第2章 Java语言基础.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
第二章 Java基础语法 北京传智播客教育
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
第二章 Java基本语法 讲师:复凡.
Presentation transcript:

第13讲 面向对象(1) 3.1 面向对象的概念 3.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.1 面向对象的概念 【面向对象】 现实生活中存在各种形态不同的事物,这些事物之间存在着各种各样的联系。在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之间的联系,这种思想就是面向对象。 面向对象是一种符合人类思维习惯的编程思想。

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

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

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

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

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

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

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

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

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

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

3.2 类与对象—3.2.1 类的定义 例1:定义一个Person类(在Example121.java中定义) 3.2 类与对象—3.2.1 类的定义 例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+"岁"); }

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

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

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

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

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

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

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

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

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

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

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

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;

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

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

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

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

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

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

作业 3.10习题