




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章对象和封装课程地位每门课程的第一章必须有此页,说明本课程在ACCP8.0课程体系中的地位,与前后课程的关系2/45本课目标学完本门课程后,你能够:使用Java编写面向对象的程序使用集合存取对象使用Java异常处理编写程序使用Java流操作文件使用多线程实现多分支程序开发3/45课程结构图4/45课程项目展示项目案例:嗖嗖移动业务大厅演示课程项目5/45相关课程回顾什么是类,什么是对象?如何创建对象?如何在程序中接收控制台的输入?提问6/45学习方法方法对比C#的设计思想类似技能点的异同点独立解决问题7/45预习检查如何从现实世界中抽象出类?构造方法的作用和特点是什么?什么是方法重载?如何实现类的封装?定义地址类,要求如下:属性:国家、省份、城市、街道、邮编方法:返回地址信息将属性进行封装8/45集中测试本章任务用类图设计Dog和Penguin类领养宠物并打印宠物信息9/45本章目标使用类图描述设计掌握面向对象设计基本步骤掌握类和对象的概念掌握构造方法及其重载掌握封装的概念及其使用10/45为什么使用面向对象2-1现实世界是由什么组成的?世界由对象组成11/45为什么使用面向对象2-2软件出现的目的用计算机的语言描述现实世界用计算机解决现实世界的问题面向对象设计和开发程序的好处交流更加流畅提高设计和开发效率面向对象的思想符合人类思维习惯面向对象的世界描述12/45一个现实世界的问题宠物——现实世界的对象如何在计算机中描述它们?从现实中抽象出类分三步:1.找出它的种类2.找出它的属性3.找出它的行为问题13/45用面向对象描述世界3-1用面向对象的思想描述世界第一步:发现类根据“对象”抽象出“类”classDog{
}名词各个狗对象14/45用面向对象描述世界3-2第二步:发现类的属性狗类共有的特征:1.品种2.年龄3.昵称4.健康情况5.跟主人的亲密度……classDog{
Stringname="旺财";//昵称
inthealth=100;//健康值
intlove=0;//亲密度
Stringstrain="拉布拉多犬";//品种
}只放和业务相关的属性名词15/45用面向对象描述世界3-3第三步:发现类的方法狗类共有的行为:1.跑2.吠3.输出狗的信息……动词只放和业务相关的方法classDog{
Stringname="旺财";//昵称inthealth=100;//健康值intlove=0;//亲密度Stringstrain=
"拉布拉多犬";//品种
/*输出狗的信息*/
publicvoidprint(){
//输出狗信息的代码}
}16/45类图使用类图描述类用于分析和设计“类”直观、容易理解+name:String+health:int+love:int+strain:StringDog+print():void“+”:public“-”:private类名返回值类型类型属性名参数:名字:类型,名字:类型方法名17/45小结面向对象设计的过程是什么?抽象的原则是什么?为什么说类图是面向对象设计的好工具?提问18/45实现领养宠物实现领养宠物功能编写宠物类Dog和Penguin创建宠物对象,输入领养的宠物信息并输出19/45演示示例1:领养宠物构造方法2-1对象初始化Penguinpgn=newPenguin();="qq";pgn.sex="Q仔";classPenguin{//属性
/*无参构造方法*/publicPenguin(){name="qq";love=20;sex="Q仔";System.out.println("执行构造方法");}}使用构造方法:Penguinpgn1=newPenguin();能否在创建对象的同时就完成赋值?构造方法20/45构造方法2-2构造方法访问修饰符构造方法名(){//初始化代码}与类名相同无返回值类型可以指定参数语法publicPenguin(){}系统提供默认无参构造方法
示例21/45构造方法重载2-1自定义构造方法publicPenguin(){name="qq";love=20;sex="Q仔";}示例publicPenguin(Stringname,inthealth,intlove,Stringsex){=name;this.health=health;this.love=love;this.sex=sex;}系统不再提供默认无参构造方法
方法名相同参数数据类型或参数个数不同方法重载
与返回值、访问修饰符无关System.out.println(45);System.out.println(true);System.out.println("狗在玩耍!");this关键字是对一个对象的默认引用,这里用以区分同名成员变量22/45构造方法重载2-2构造方法重载的调用pgn=newPenguin();pgn.print();pgn=newPenguin("美美",80,20,"Q仔");pgn.print();publicPenguin(Stringname,inthealth,intlove,Stringsex){=name;this.health=health;this.love=love;this.sex=sex;}publicPenguin(){name="qq";love=20;sex="Q仔";}23/45构造方法阅读代码,说出运行结果,并指出原因classPenguin{
Stringname=null;//昵称inthealth=0;//健康值Stringsex=null;//性别publicvoidPenguin(){ health=10;sex="雄";System.out.println("执行构造方法");}publicvoidprint(){System.out.println("企鹅的名字是"+name+",健康值是"+health+",性别是"+sex);}}Penguinpgn3=newPenguin();pgn3.print();有返回值类型,不是构造方法代码阅读调用默认无参构造方法24/45常见错误请指出下面代码的错误classDog{privateStringname="旺财";//昵称privateinthealth=100;//健康值privateintlove=0;//亲密度
publicvoidplay(intn){intlocalv;health=health-n; System.out.println(name+""+localv+""+health+""+love);}publicstaticvoidmain(String[]args){Dogd=newDog();d.play(5);}}局部变量没有初始化25/45代码阅读static关键字2-1Penguinpgn1=newPenguin();pgn1.sex=Penguin.SEX_MALE;class
Penguin{
staticfinalStringSEX_MALE="Q仔";
staticfinalStringSEX_FEMALE="Q妹";}
static
voidprint(){}用类名调用:
Penguin.print();使用static定义变量使用static定义方法可否通过类名直接访问成员变量?问题用final修饰的变量称为常量,其值固定不变26/45演示示例2:静态常量static关键字2-2static还可以用来修饰什么?使用static修饰成员时,如何分配内存空间?问题
static可以用来修饰属性、方法和代码块27/45演示示例3:
static修饰代码块小结static修饰与非static修饰的区别static、非private修饰非static、private修饰属性类属性、类变量实例属性、实例变量方法类方法实例方法调用方式类名.属性类名.方法()对象.属性对象.方法()对象.属性对象.方法()归属类单个对象28/45常见错误请指出下面代码的错误classDog{privateStringname="旺财";//昵称privateinthealth=100;//健康值
privateintlove=0;//亲密度
publicvoidplay(intn){staticintlocalv=5; health=health-n; System.out.println(name+""+localv+""+health+""+love);} publicstaticvoidmain(String[]args){Dogd=newDog();d.play(5);}}在实例方法里不可以定义static变量代码阅读29/45为什么要使用封装下面代码有什么缺陷?如何解决上面设计的缺陷?Dogd=newDog();d.health=-1000;属性随意访问,不合理的赋值使用封装问题30/45什么是封装面向对象三大特征之一——封装封装的概念封装的好处封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问隐藏类的实现细节只能通过规定方法访问数据方便加入控制语句方便修改实现31/45如何使用封装封装的步骤修改属性的可见性1在getter/setter方法中加入属性控制语句3创建公有的getter/setter方法2设为private用于属性的读写对属性值的合法性进行判断32/45演示示例4:类的封装小结classDog{
privateStringname="旺财";//昵称
privateinthealth=100;//健康值
privateintlove=0;//亲密度
privateStringstrain="拉布拉多犬";//品种publicintgetHealth(){returnhealth;}publicvoidsetHealth
(inthealth){if(health>100||health<0){this.health=40;System.out.println("健康值应该在0和100之间,默认值是40");}else
this.health=health;}//其它getter/setter方法}this代表当前对象-name:String-health:int-love:int-strain:StringDog+print():void+setHealth():void+getHealth():String……123技巧添加getter/setter方法的快捷键:Shift+Alt+S+R33/45代码阅读this的用法this关键字的用法调用属性调用方法调用构造方法this.health=100;="大黄";this.print();this();如果使用,必须是构造方法中的第一条语句this("小黑",100,100,"雄");34/45小结分析需求,用封装方式设计类,画出类图汽车销售人员销售汽车,可售款式有凯越、君威每款汽车有款式和编号,款式、编号不能修改汽车销售人员有姓名,姓名不能修改销售人员有两种销售方式:按车辆销售,每次一辆按车型销售(凯越),要同时告诉销售人员购买数量-type:String-id:StringExcelle+Excelle(id:String,type:String)+getType():String+getId():String-type:String-id:StringRegal+Regal(id:String,type:String)+getType():String+getId():String-name:StringSeller+getName():String+setName(name:String):void+sell(car:Excelle):void+sell(car:Regal):void+sell(car:Excelle,num:int):void凯越君威销售员现场编程35/45学员操作——用类图设计Dog和Penguin类需求说明运用面向对象思想抽象出Dog类和Penguin类,画出对应类图根据类图编写Dog类和Penguin类添加默认构造方法练习类型属性行为狗昵称健康值亲密度品种输出信息企鹅昵称健康值亲密度性别输出信息36/45完成时间:20分钟学员操作——领养宠物并打印宠物信息2-1训练要点类的结构类的封装对象的创建,类的属性和方法的调用指导37/45讲解需求说明需求说明根据控制台提示信息选择领养宠物(狗)输入昵称、品种、健康值打印宠物信息要保证健康值的有效性(在1到100之间)学员操作——领养宠物并打印宠物信息2-2实现思路创建Dog类编写Test类从控制台输入宠物信息打印宠物信息保证健康值的有效性,否则取默认值60指导38/45完成时间:30分钟共性
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 类型电影研究进展-深度研究
- 良种资源信息整合与共享-深度研究
- 激光遥感技术勘探-深度研究
- 移动支付在现代消费中的作用-深度研究
- 航天相机成像机理-深度研究
- 重庆第二师范学院《生产运作管理》2023-2024学年第二学期期末试卷
- 唐山职业技术学院《效果图后期制作》2023-2024学年第二学期期末试卷
- 武威职业学院《战略与风险管理》2023-2024学年第二学期期末试卷
- 广州理工学院《合唱团排练5》2023-2024学年第二学期期末试卷
- 河南交通职业技术学院《医养空间设计》2023-2024学年第二学期期末试卷
- 2024-2025学年新教材高中英语 Unit 6 Earth first理解 课文精研读教案 外研版必修第二册
- 110kV变电站专项电气试验及调试方案
- 2024时事政治必考试题库(预热题)
- DZ∕T 0215-2020 矿产地质勘查规范 煤(正式版)
- 威图电柜空调SK3304500使用说书
- 品质部组织架构图构
- 《无损检测》绪论
- 中药饮片的销售方案
- 2024年湖南省普通高中学业水平考试政治试卷(含答案)
- 《创意设计》课程标准
- 三年级语文 溪居即事市赛一等奖
评论
0/150
提交评论