java速成第五章面向对象初级(按教材).ppt

上传人:max****ui 文档编号:6364535 上传时间:2020-02-24 格式:PPT 页数:56 大小:1.42MB
返回 下载 相关 举报
java速成第五章面向对象初级(按教材).ppt_第1页
第1页 / 共56页
java速成第五章面向对象初级(按教材).ppt_第2页
第2页 / 共56页
java速成第五章面向对象初级(按教材).ppt_第3页
第3页 / 共56页
点击查看更多>>
资源描述
第5章 面向对象的程序设计概念 一 面向对象的基本概念 抽象 封装 继承 多态 面向对象程序设计的基本特征 对象与类 简单地说 对象是表示现实世界中某个具体的事物 类是对对象的抽象描述 对象 object 我们可以把生活所在的真实世界 RealWorld 当作是由许多大小不同的对象所组成的 对象可以是有生命的个体 比如一个人或一只鸟 对象 对象也可以是无生命的个体 比如一辆汽车或一台计算机 对象也可以是一件抽象的概念 如天气的变化或鼠标所产生的事件 对象 object 计算机世界中的对象是把数据及其相关的操作封装在一起所构成的实体 封装的实体 数据 方法 行为 数据 属性或状态方法 作用于数据上的操作封装 属性的访问和变化通过方法完成 对象的特征 对象有两个特征 状态 state 和行为 behavior 例如 一个人有他的身高或体重作状态 并有他的行为 如唱歌 打球 骑摩托车 开汽车 一只狗有它的颜色作状态 也有它的行为 如吠叫或跳跃 而在程序设计中 软件对象的概念由真实世界对象而来 对象的概念是面向对象软件对象将状态保存在变量 variables 或称数据字段 datafield 里 而行为则借助方法 methods 为工具来实现 软件对象的定义 我们可以对软件对象作以下的定义 定义 对象是由数据字段 变量 及相关方法所组成的软件包 汽车对象 以汽车为例 我们可定义其状态与方法如 通过换档 方法 改变当前档位 属性 当前档位 面向对象设计思想 1 抽象 是从特定的对象 实例 中抽取共同的性质以形成类 一般化概念 的过程 二 类 class 的概念 类 是一种抽象的数据类型 它是所有具有一定共性的对象的抽象 本质上可以认为是对对象的描述 使创建对象的 模板 类的某一个对象则被称为是类的一个实例 是类的实例化结果 实例化 抽象 类 class 在真实世界里 有许多同 种类 的对象 而这些同 种类 的对象可被归类为一个 类 例如我们可将世界上所有的汽车归类为汽车类 所有的动物归为动物类 实例 instance 汽车类有些共同的状态 汽缸排气量 排档数 颜色 轮胎数 和行为 换档 开灯 开冷气 但每一台汽车个别的状态及方法可不同于且独立于其他汽车 你的汽车只是这世界中许多汽车中的一个 我们就称你的汽车对象是汽车类中的一个实例 instance 方法 method 方法是对象的行为方式 操作 对象与外界的接口作用改变对象的属性返回对象的属性 object1 object2 面向对象方法的主要优点 与人类习惯的思维方法一致可重用性可扩展性可管理性 三 定义类 修饰符 class类名 extends父类 implements接口名 类成员变量声明 类方法声明 任务5 1 定义类 publicclassStudent Stringname intNo Stringdorm Stringtel voidcheckIn Stringa intb name a No b voidassignDorm Stringa dorm a voidprovideTel Stringb tel b 四 对象的定义 修饰符 类名对象名 new类名 实参列表 或 修饰符 类名对象名 对象名 new类名 实参列表 创建对象 类名对象名 Studentzhang 注意 类属于复合数据类型 因此 在声明对象时 系统并没有为对象分配空间 用户需要应用new完成分配空间的任务 zhang newStudent 与数组的对比性intscore score newint 10 合二为一 Studentzhang newStudent 对象的引用 引用成员变量对象名 成员变量名引用方法对象名 方法名 参数列表 5 1 2对象的生命周期 1 对象的生成2 对象的使用3 对象的清除 5 1 3由类的定义产生对象 任务5 2 使用Student类 publicclassTermBegins publicstaticvoidmain String args Studentzhang zhang newStudent zhang checkIn 张三 001 zhang assignDorm A 101 zhang provideTel 13012345678 System out println 姓名 zhang name System out println 学号 zhang No System out println 宿舍 zhang dorm System out println 联系电话 zhang tel 姓名 张三学号 1宿舍 A 101联系电话 13012345678 创建对象 演示 定义一个cube类 代表一个立方体包含的属性有 长 宽 高 分别保存在变量x y z里面方法有 求表面积求体积在main函数里定义一个cube类对象a 并设置立方体a的长宽高分别为3 4 5 并求出立方体a的表面积和体积打印出来 上机作业1 设计一个交通工具Vehicle 属性包括最大速度speed 颜色color 类别kind 方法包括设置速度 颜色 类别 取得速度 颜色 类别创建Vehicle对象 并为其设置新最大速度和颜色和类别 并显示其最大速度 颜色 类别 上机作业2 1 编写一个位置类Position 包含两个成员变量 横坐标x 纵坐标y 一个方法 printInfo 打印出横坐标和纵坐标 2 编写Position类的测试程序 创建一个点类的对象a 横坐标 纵坐标分别为3 4 要求输出点a的相关信息 举例 汽车的例子 packagech5 week2 publicclassCar intspeed Stringcolor Stringno voiddrive inta speed speed a voidprint System out println speed speed System out println color color System out println no no voidchangeColor StringaColor color aColor voidchangeNo StringaNo no aNo packagech5 week2 publicclassCube 与main方法平行的地方写cube的属性和方法intx y z intarea inttmp 2 x y y z z x returntmp intvolumn inttmp x y z returntmp publicstaticvoidmain String args Cubeb1 newCube b1 x 3 b1 y 4 b1 z 5 System out println 表面积 b1 area System out println 体积 b1 volumn 举例 立方体的例子 packagech5 week2 publicclassDog intage Stringname floatweight booleanisHungry voidgrow age age 1 voideat floatfoodWeight weight weight foodWeight 举例 小狗的例子 测试各种类的程序 packagech5 week2 publicclasstest paramargs publicstaticvoidmain String args TODOAuto generatedmethodstub dog car CarmyCar newCar 组装新车myCar color red myCar no gz9090 myCar speed 0 myCar print 改装车myCar drive 40 myCar changeColor blue myCar changeNo 888888 myCar print CaryourCar newCar 组装新车yourCar color green yourCar no gz9091 yourCar speed 0 yourCar print 改装车yourCar drive 40 yourCar changeColor yellow yourCar changeNo 888886 yourCar print CarsheCar newCar CaraBoyCar sheCar Dogdog1 dog1 newDog dog1 name tom dog1 age 2 dog1 weight 2 dog1 eat 0 5f System out print dog1体重 dog1 weight Dogdog2 newDog dog2 name jack dog2 age 2 dog2 grow System out println dog2年龄 dog2 age 上机课补充 上机作业3 设计一个银行卡类属性 帐号 由10位数字和字母组合起来的余额 不能小于0存钱 输入一个存钱的数量 可以让余额增长取钱 规定一次最多取3000元 如果超过3000 则不让取 即取钱方法返回false 另外 如果取钱数量多于余额也返回false 当取钱成功则返回true测试程序 生成一个帐号 初始余额为0 存入2000 再取出200 第三周 上机作业1代码 packagech5 shixun work5 1 publicclassveichle intspeed Stringcolor Stringkind voidsetColor StringaColor color aColor voidsetSpeed intaSpeed speed aSpeed voidsetKind StringaKind kind aKind publicstaticvoidmain String args TODOAuto generatedmethodstubveichlea newveichle a setColor red a setKind car a setSpeed 120 System out println a color System out println a speed System out println a kind 上机作业2代码 packagech5 shixun work5 1 publicclassPosition intx y voidsetXY inta intb x a y b voidprintInfo System out println x y publicstaticvoidmain String args Positiona a newPosition a setXY 3 4 a printInfo 上机作业3代码 packagech5 shixun work5 1 publicclassbankCard StringcardNo doublemoney voidsave doublea money money a System out println 帐号 cardNo 已存入 a 元 System out println 目前帐号余额 money 元 booleanget doubleb if b 3000 常见问题解析 1在方法中不知道取出类中已有的属性进行操作 又用输入参数去操作如第二题的printInfo函数第三题 2属性设得太多 不但有帐号和余额 还有取钱和存钱的数量 其实取钱和存钱的数量是不用属性的 应该由测试程序输入参数来获得3将存钱和取钱的方法放到一个方法中实现 不符合现实情况 甚至将存2000和取200这样具体的数字都写死在程序中 不利于灵活调用存钱或者取钱的方法4取钱的方法中 大都判断完可以取钱之后并没有让 余额减去取出钱的数量 的代吗5个别同学对取钱的逻辑判断不清楚 最简单的就用一个逻辑表达式也可以的 第三周课 1 见2周课上机作业讲解 概念题 1 以下说法不正确的是 A 类是同种对象的集合和抽象B 类是抽象的数据类型C 类是复合数据类型D 类是一个对象5 设A为已定义的类名 下列声明A类的对象a的语句中 正确的是 A floatAa B publicAa A C Aa newint D staticAa newA 1 D5 D 6 设A为已定义的类名 下列声明A类的对象a的语句中正确的是 A publicAa newA B publicAa A C Aa newclass D aA 7 设X Y均为已定义的类名 下列声明类X的对象x1的语句中正确的是 A publicXx1 newY B Xx1 X C Xx1 newX D intXx1 6 A7 C 1 一个对象的三个生命周期是 2 使用一个对象前 必须声明并 它 3 创建类对象的运算符是 创建的目的是 5 通过 运算符与类的对象连接 可以访问此类的成员 6 定义类就是定义一种抽象的 它是所有具有一定共性的对象的抽象描述 8 面向对象的软件开发方法用 把数据和基于数据的操作封装在一起 1 创建 使用 清除2 创建3 new给对象分配内存空间5 圆点操作符 6 数据类型8 类 三 简答题 1 一个类对象一旦被声明并创建后就可以使用吗 如何引用对象的变量和调用它的方法 2 一个对象一定要属于某个类吗 3 一般地 一个类的类体应由哪两部分组成 4 在一个类定义中 用什么描述对象的状态 用什么描述对象的行为 6 定义在方法体中的变量能与定义在方法体外的变量同名吗 1 可以 用对象名做前缀2 是3 变量定义和方法定义4 变量或属性 方法6 可以 第三周课新内容 对象的初始化 类中包含有成员变量和方法 当使用类声明并创建对象时 使用new关键字 这时系统为对象创建自己的内存区域并自动调用构造方法初始化成员变量 构造方法 构造方法是一个特殊的成员方法 它与类名相同 在创建对象空间后 系统自动根据参数调用相应的构造函数 构造函数的主要功能是为数据成员赋初值 构造方法的特点 构造方法名与类名相同 构造方法没有返回类型 也不是void 构造方法的主要作用是对类对象的初始化 如果没有定义构造方法时 成员变量将被初始化为各种类型的默认值 构造方法只能与new关键字初始化对象时使用 其他时候不能使用 一个类可以定义多个构造方法 根据参数的不同决定执行哪一个 publicclassStudent Stringname intNo Stringdorm Stringtel Student StringaName intaNo name aName No aNo voidassignDorm Stringa dorm a voidprovideTel Stringb tel b publicstaticvoidmain String args Studentzhang newStudent 张三 001 zhang assignDorm A 101 zhang provideTel 13012345678 任务5 3定义构造方法 构造方法作用 避免对象创建后没有任何内容 强制程序员在创建对象时就给某些变量一些初始值 任务5 4多个构造方法 Student StringaName intaNo name aName No aNo Student intaNo No aNo Student StringaName name aName 多个构造方法 为程序员提供多种选择 在创建对象时 可以任意使用其中一个 publicclassStudent Stringname intNo Stringdorm Stringtel Student StringaName intaNo name aName No aNo Student intaNo No aNo Student StringaName name aName voidassignDorm Stringa dorm a voidprovideTel Stringb tel b 任务5 4源代码 publicstaticvoidmain String args Studentzhang newStudent 张三 zhang assignDorm A 101 zhang provideTel 13012345678 System out println 姓名 zhang name System out println 学号 zhang No System out println 宿舍 zhang dorm System out println 联系电话 zhang tel System out println Studentli newStudent 002 li assignDorm A 102 li provideTel 13000008888 System out println 姓名 li name System out println 学号 li No System out println 宿舍 li dorm System out println 联系电话 li tel 任务5 4源代码 上课演示 一 类的定义及使用 1 编写一个二维坐标的点类Position 包含两个成员变量 横坐标x 纵坐标y 还有一个printInfo 方法 可以打印该点 x y 2 为Position类添加一个不带参数构造方法 将横坐标纵坐标初始化为原点 3 为Position类添加一个带参数的构造方法 传两个参数用于初始化坐标 4 编写Position类的测试程序test类 在test类的main方法中 调用不带参数的构造方法 创建一个点a 输出点a的相关信息调用带参数的构造方法创建一个点b 3 4 输出点b的相关信息 上课演示代码 packagech5 week3 clas12 publicclasspot intx y voidprintInfo System out println x y pot intaX intaY x aX y aY pot x 0 y 0 publicstaticvoidmain Stringargs pota newpot 3 4 a printInfo potb newpot b printInfo potc newpot c printInfo c x 6 c y 10 c printInfo 34班 概念题 8 设i j为类X中定义的int型变量名 下列X类的构造函数中不正确的是 A voidX intk i k B X intk i k C X intm intn i m j n D X i 0 j 0 U1 4 通过类MyClass中的不含参数的构造函数 生成该类的一个对象obj 可通过以下语句实现 7 是一个特殊的方法 用于对类的变量进行初始化 7 构造函数的方法名可由编程人员任意命名吗 8 类的构造函数名必须和类名相同吗 9 构造函数有返回值吗 10 构造函数可以重载吗 概念题 课堂练习 如何给一个立方体设置四个输入参数个数不同的构造方法 classcube intx y z 第3周上机作业 类名 羊城通卡假设公交车都是2元 次属性 余额卡号种类 0普通1学生卡 方法 开卡 默认面值0 可选50或100 充值 50或100 坐车 普通卡 前15次2元 次 之后6折 学生卡 直接五折 查看余额 打印余额测试 买普通新卡一张 充值50元 坐车16次 查看余额买学生新卡一张 充值100元 坐车89次 查看余额 这三种方法都要求显示余额 及当时充值或消费的金额 带参数和不带参数的构造方法 提示 卡号暂时由测试程序使用时给出普通卡坐车次数需要用一个属性记录如count 上机作业提示 packagech5 week3 clas12 publicclassBusCard 属性no money kind 0普通卡1学生卡BusCard intb b1代表02代表503代表100 代码中判断 save doublea a必须为50100 修改money的值 getBus 根据卡类型扣除费用 即修改money值 printInfo 打印卡号和余额 publicstaticvoidmain String args 34班
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!