第3章_抽象和封装.ppt_第1页
第3章_抽象和封装.ppt_第2页
第3章_抽象和封装.ppt_第3页
第3章_抽象和封装.ppt_第4页
第3章_抽象和封装.ppt_第5页
免费预览已结束,剩余23页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章类与对象(抽象与封装),教师:李云平,JAVA编程思想掌握类和对象的概念掌握构造方法及其重载掌握封装的概念及其使用,本章目标,JAVA编程思想,面向过程和面向对象的区别?JAVA程序结构?面向对象程序设计的优点?,为什么使用面向对象2-1,现实世界是由什么组成的?,世界由对象组成,为什么使用面向对象2-2,软件出现的目的是为了:用计算机的语言描述现实世界用计算机解决现实世界的问题出现了软件危机,如何解决?,用面向对象的方式描述对象的世界,符合人类思维习惯,“问题”和“解”一致,1、易维护采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。2、质量高在设计时,可重用现有的,在以前的项目的领域中已被测试过的类使系统满足业务需求并具有较高的质量。3、效率高在软件开发时,根据设计的需要对现实世界的事物进行抽象,产生类。使用这样的方法解决问题,接近于日常生活和自然的思考方式,势必提高软件开发的效率和质量。4、易扩展由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低。,-面向对象程序设计的优点,面向对象的编程思维,ScoreCalc类和Test类,publicstaticvoidmain(Stringargs)Scannerinput=newScanner(System.in);System.out.print(请输入Java成绩:);intjava=input.nextInt();/*计算并显示输出*/inttotal=java+c+db;doubleavg=total/3;System.out.print(总成绩:+total);System.out.print(n平均分:+avg);,一次还可以接受,如果还要再执行这个功能,难道还要重复再写?,一个现实世界的问题,宠物现实世界的对象如何在计算机中描述它?,从现实中抽象出类分三步:1.找出它的种类2.找出它的属性3.找出它的行为,用面向对象描述世界3-1,用面向对象的思想描述世界第一步:发现类,根据”对象”抽象出“类”,classDog,名词,各个狗对象,用面向对象描述世界3-2,第二步:发现类的属性,狗类共有的特征:1.品种2.年龄3.昵称4.健康情况5.跟主人的亲密度,classDogStringname=旺财;/昵称inthealth=100;/健康值intlove=0;/亲密度Stringstrain=拉布拉多犬;/品种,只放我关心的属性,名词,用面向对象描述世界3-3,第三步:发现类的方法,狗类共有的行为:1.跑2.吠3.输出狗的信息,动词,classDogStringname=旺财;/昵称inthealth=100;/健康值intlove=100;/亲密度Stringstrain=拉布拉多犬;/品种/*输出狗的信息*/publicvoidprint()/输出狗信息的代码,只放我关心的方法,类图,使用类图描述类用于分析和设计“类”直观、容易理解,“+”:public“-”:private,类名,返回值类型,类型,属性名,参数:名字:类型,名字:类型,方法名,classPenguin/属性Stringname;Stringsex;intlove;inthealth;/成员方法publicvoidprint()System.out.println(我是一只企鹅);,定义一个企鹅类?,构造方法3-1,对象初始化,Penguinpgn=newPenguin();=qq;pgn.sex=Q仔;,classPenguin/属性/*无参构造方法*/publicPenguin()name=qq;love=20;sex=Q仔;System.out.println(执行构造方法);,使用构造方法:Penguinpgn1=newPenguin();,能否在创建对象的同时就完成赋值?,构造方法,构造方法3-2,构造方法,public构造方法名()/初始化代码,与类名相同,没有返回值类型,publicPenguin()name=qq;love=20;sex=Q仔;System.out.println(执行构造方法);,可以指定参数,构造方法3-3,阅读代码,说出运行结果,并指出原因,classPenguinStringname;Stringsex;inthealth;publicvoidPenguin()health=10;sex=雄;System.out.println(执行构造方法);publicvoidprint()System.out.println(企鹅的名字是+name+,健康值是+health+,性别是+sex);,Penguinpgn3=newPenguin();pgn3.print();,有返回值类型,不是构造方法,方法重载,一个类是否可以有多个构造方法?方法重载,指同一个类中多个方法:方法名相同参数列表不同,与返回值、访问修饰符无关,3.6关键字this,当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是this,3.6关键字this,1使用this区分成员变量和局部变量局部变量:在方法体中声明的变量以及方法的参数方法的参数在整个方法内有效,局部变量从它定义的位置之后开始有效。成员变量:在整个类内有效。,为什么要使用封装,下面代码有什么问题?如何解决上面设计的缺陷?,Dogd=newDog();d.health=1000;,不合理的赋值,使用封装,什么是封装,面向对象三大特征之一封装封装的概念封装的好处,封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问,隐藏类的实现细节,只能通过规定方法访问数据,方便加入控制语句,方便修改实现,如何使用封装,封装的步骤,修改属性的可见性,创建getter/setter方法,在getter/setter方法中加入属性控制语句,设为private,用于属性的读写,对属性值的合法性进行判断,classDogprivateStringname=旺财;/昵称privateinthealth=100;/健康值privateintlove=0;/亲密度privateStringstrain=拉布拉多犬;/品种publicintgetHealth()returnhealth;publicvoidsetHealth(inthealth)if(health100|health0)this.health=40;System.out.println(健康值应该在0和100之间,默认值是40);elsethis.health=health;/其它getter/setter方法,this代表当前对象,1,2,2,3,练习用类图设计Dog和Penguin类,需求说明:运用面向对象思想抽象出Dog类和Penguin类,画出对应类图根据类图编写Dog类和Penguin类添加构造方法,完成时间:20分钟,指导打印Dog信息2-1,训练要点:类的结构,对象的创建,类的属性和方法的调用类的封装需求说明:根据控制台提示信息选择领养宠物(狗),输入昵称、品种、健康值打印宠物信息要保证健康值的有效性(在1到100之间),讲解需求说明,指导打印Dog信息2-2,实现思路:修改Dog类编写Test类,完成时间:30分钟,从控制台输入宠物信息,打印宠物信息,保证健康值的有效性,否则取默认值60,练习Dog类的带参构造方法,需求说明:增加带参构造方法将setHealth()方法设为私有,注释掉其他setter方法修改Test类,使用带参构造方法创建对象,完成时间:20分钟,Dog(Stringname,inthealth,intlove,Stringstrain),Penguin(Stringname,inthealth,intlove,Stringsex),练习操作企鹅性别属

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论