您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > Java_第6章 类和对象
1第六章类和对象2第6章类和对象6.1类和对象概述6.2类的封装36.1类和对象概述在面向对象技术中,将客观世界中的一个事物作为一个对象看待。每个事物都有自己的属性和行为。从程序设计的角度,事物的属性可以用变量描述,行为用方法描述。类只是定义属性和行为的模板,对象是类的实例,对象与类的关系就像变量和数据类型的关系一样。面向对象的基本概念:4对象与类简单地说:对象是表示现实世界中某个具体的事物;类是对对象的抽象描述。张三类(CLASS)如:“Manclass”将对象抽象为类对类进行实例化5面向对象方法的产生和发展传统的瀑布型软件存在的问题(不能完全消除软件危机)(1)客观世界的描述——自然语言与计算机对客观世界的描述——程序设计语言存在语义断层。(2)对需求不稳定的系统很难实现,传统方法需在适当时候冻结需求。(3)软件的重用问题。机器语言汇编语言高级语言计算机客观世界自然语言编程语言断层自然语言问题域需求分析总体设计详细设计编码6面向对象方法的产生和发展(续)面向对象(ObjectOriented)的思想最初来源于抽象数据类型(ADT),后来在程序设计语言中引入。最早引入面向对象思想概念的语言是60年代末的Simula67仿真语言。使用了“对象”的概念,但并没有得到推广。80年代的Smalltalk语言是面向对象的主要里程碑,它完整地体现了面向对象语言的特点。推动了“面向对象”的发展。这是一种全新的语言。C++和Java都是面向对象语言。7面向过程与面向对象的系统8面向过程程序设计方法开始输入半径计算圆面积输出圆面积结束例:计算圆面积。s=3.14*r*r9面向过程的程序设计人模拟计算机思维来解题(输入-运算-输出)程序设计工作主要是围绕解题过程的设计程序功能隐含在程序代码中—理解困难维护(修改)困难10面向过程的程序设计结构化程序设计自顶向下逐步求精(功能分解)主函数main()子函数sub1()子函数sub2()子函数subN()子函数sub11()子函数subN1()子函数subNk()…………11面向过程的程序设计方法简单问题的处理较容易软件重用困难应该从问题的角度而不应该从符合机器的角度来思考并进行程序设计12面向对象的程序设计人类习惯的解决问题的方法:“顾客--服务员”的工作模式。例:去理发馆理发面向对象的方法模拟人类习惯的解题方法,用对象分解取代功能分解,程序中的所有对象分工协作,共同完成整个程序的功能。13面向对象的程序设计面向对象方法的四个要点:(1)面向对象的软件系统由对象组成;(2)所有的对象抽象为类,每个类由属性和方法组成;(张三,李四,…)(3)若干个类按照子类(派生类)与父类(基类)的关系组成了层次结构;--继承;人男人女人老年人中年人儿童(4)对象之间通过传递消息互相联系。OO=对象+类+继承+消息14面向对象的程序设计面向对象方法的优点(1)与人的思维习惯一致(2)稳定性好(3)可重用性好(4)可维护性好15面向过程的设计思想和面向对象的设计思想我要去新疆面向过程面向对象我命令车去新疆车怎么去不关我事信息封装在车这个类的内部我不用付出了解车整个开动过程尚学堂科技_马士兵我开车,我挂档,我踩油门,我过河北,我过陕西……16面向过程的设计思想和面向对象的设计思想面向对象的基本思想是:从现实的世界中客观存在的事物出发来构造软件系统,并在系统的构造中尽可能运用人类的自然思维方式。面向对象更加强调运用人类在日常的思维逻辑中经常采用的思想方法与原则,如抽象、分类、继承、聚合、多态等。17类和对象的概念对象用计算机语言对问题域中事物的描述,对象通过“属性(attribute)”和“方法(method)”来分别对应事物所具有的静态属性和动态属性。类是用于描述同一类型的对象的一个抽象的概念,类中定义了这一类对象所因具有的静态和动态属性。类可以看成一类对象的模板,对象可以看成该类的一个具体实例。职员A抽象职员-姓名-年龄-当前工资数额+显示姓名+显示年龄+修改姓名+领取工资实例化张红:职员姓名=张红年龄=20当前工资数额=3000实例化李明:职员姓名=李明年龄=30当前工资数额=5000类对象18类的图示表示19例子:四边形类和两个四边形对象四边形类对象1对象2四边形类对象1对象220类和对象之间的关系学校-+关联关系教师-+学生-+21类和对象之间的关系动物-+继承关系XX是一种XX狗-+猫科-+金丝猴-+猫-+虎-+豹-+受保护类-+父类与子类之间22类和对象之间的关系球队-+聚合关系队长-+队员-+聚集(松耦合)人-+头-+……-+组合(紧耦合)身体-+23类和对象之间的关系interface车+go()实现关系轿车-+卡车-+自行车-+父类与子类之间24类和对象之间的关系多态关系人-+交通工具-+行驶()+刹车()卡车-+行驶()+刹车()轿车-+行驶()+刹车()自行车-+行驶()+刹车()父类与子类之间25面向对象面向对象在解决一个问题时不应该考虑第一步做什么,第二步……。首先考虑在这个问题域中应该有什么类(对象),然后是类有哪些属性和方法。在考虑类和类之间有什么样的关系。26Java与面向对象对象是Java程序的核心,在Java程序中“万事万物皆对象”。对象可以看成是静态属性(成员变量)和动态属性(方法)的封装体。类是用来创建同一类型的对象的“模板”,在一个类中定义了该类对象所应具有的成员变量以及方法。J2SDK提供了很多类供编程人员使用,编程人员也可定义自己的类。成员=属性,方法=函数27为什么要用对象面向对象的编程—一组对象互相配合通过沟通完成特定功能所有的paradigm都是对现实问题的抽象汇编是对机器语言的抽象面向过程的语言是对汇编的抽象对象更加符合对于现实问题的抽象对象都是有对外服务的接口通过继承可以复用对象隐藏内部服务的实现通过聚合可以得用面向对象更加容易使我们达到这些年来苦苦追求的境界Reusable、Extensibility、维护和替换更加方便、……组件——比对象更高的层次上的抽象(二进制级别)28对象与类[修饰符]class类名[extends父类名][implements接口名列表]{类成员变量声明;类方法声明;}类的声明Java是一种纯面向对象的程序设计语言,每个程序中至少包含一个类。所有数据和操作都封装在类中。29说明①类声明包括类首和类主体两部分。②类首确定类的名字、访问权限和与其他类的继承关系。其中,class是定义类的关键字,extends表示该类继承自哪个父类,implements表示该类实现了哪些接口,修饰符是修饰类的关键字,说明类的访问权限(public)、是否为抽象类(abstract)或最终类(final)。类名需符合Java对标识符的规定,通常第一个字母大写,并最好能体现类的功能或作用。③类主体包括成员变量声明和成员方法声明。成员变量的声明类似第二章中变量的声明,通常在其类型名前加访问权限修饰符(public、private、protected)。成员方法的声明类似第4章中方法的声明。④修饰符的具体用法将在本章后面内容中介绍。[修饰符]class类名[extends父类名][implements接口名列表]{类成员变量声明;类方法声明;}30classPoint{privateintx,y;publicvoidsetPoint(inta,intb){x=a;y=b;}publicintgetX(){returnx;}publicintgetY(){returny;}publicStringtoString(){return[+x+,+y+];}}【例6-1】定义一个表示二维平面上点的类。在Point类中,声明了x和y共两个成员变量,声明了getX(),getY()和toString()共三个成员方法。31[修饰符]类名对象名=new类名(实参列表);或[修饰符]类名对象名;对象名=new类名(实参列表);对象的创建和使用1.创建对象对象与类说明:(1)使用new运算符实例化对象。(2)实例化对象时,向内存申请存储空间,并同时调用类的构造方法对对象进行初始化。32PointthePoint;注意:类属于复合数据类型,因此,在声明对象时,系统并没有为对象分配空间,用户需要应用new完成分配空间的任务。thePoint=newPoint();对象与类33猫捉老鼠publicclassCat{intfurColorfloatheight;floatweight;voidcatchMouse(Mousem){//……m.scream();}publicstaticvoidmain(Stringargs[]){Catc1=newCat();Mousem1=newMouse();c1.catchMouse();}}classMouse{//……scream(){//……}}m1342.对象的使用(引用)引用成员变量对象名.成员变量名引用方法对象名.方法名(参数列表)对象与类例如,创建了Point类的对象p1之后,就可以按照以下方式引用其成员变量:p1.x=2.3;p1.y=45.9;可以按照以下方式调用其成员方法:p1.toString();引用引用classPoint{privateintx,y;publicvoidsetPoint(inta,intb){x=a;y=b;}publicintgetX(){returnx;}publicintgetY(){returny;}publicStringtoString(){return[+x+,+y+];}}35成员变量成员变量可以是Java中任何一种数据类型(包括基本类型和引用类型)在定义成员变量时可以对其初始化,若不对其初始化,Java使用其默认值对其初始化。成员变量的作用范围为整个类体。成员变量类型取值byte0short0int0long0Lchar‘\u0000’float0.0Fdouble0.0Dbooleanfalse所有引用类型null36Java中的基本概念——引用Java中除基本类型外的变量类型都称为引用类型。Java中的对象是通过引用对它操作。例如:/**声明了一个String类型的引用变量*但并没有使它指向一个对象*/Strings;/**使用new语句创建了一个String类型*的对象,并用s指向了它,以后可以*可以通过s完成对它的操作。*/s=newString(“helloworld!”);Strings;栈内存nullss=newString(“helloworld!”);helloworld!XXXXXXXXXX堆内存如何在内容中区分类和对象类是静态的概念,在代码区。对象是new出来的,位于堆内存,类的每个成员变量在不同的对象中都有不同的值(除静态变量),而方法只有一份,执行时候才占用内存。37类和对象的关系publicclassCat{intfurColorfloatheight;//……publicstaticvoidmain(Stringargs[]){Catc1=newCat();Catc2=newCat();}}Stack栈内存heapseg堆内存Codeseg代码区类Cat的代码c1c2furColorheightfurColorheightc1.heightc1.furColorc2.heightc2.furColor38classCircle1{floatr;finaldoublePI=3.14159;publicdoublearea()//计算面积{returnPI*r*r;}publicvoidsetR(floatx)//设置半径{r=x;}publicdoubleperimeter()//计算周长{return2*PI*r;}publicstaticvoidmain(Stringargs[]){doublex,y;Circle1cir=newCircle1();//创建Circle1类
本文标题:Java_第6章 类和对象
链接地址:https://www.777doc.com/doc-5835262 .html