您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第4章 Java面向对象程序设计(上)
第4章Java面向对象程序设计Java面向对象程序设计(之)(之一)1本章主要内容本章主要内容面向对象的设计思想Java类的定义(属性方法)Java类的定义(属性、方法)对象的创建和使用对象的创建和使用构造方法static、finalpackage和import语句package和import语句2面向对象的基本思想面向对象的基本思想面向对象是一种程序设计方法。基本思想:使用对象、类、继承、封装、消息等基本概念来进行程序设计。基本概念来进行程序设计。优点:符合人们日常自然的思维习惯(因为它是从现实世界中符合人们日常自然的思维习惯(因为它是从现实世界中客观存在的事物(即对象)出发来构造软件系统,并且在系统构造中尽可能运用人类的自然思维方式)。在系统构造中尽可能运用人类的自然思维方式)。降低、分解问题的难度和复杂性,提高整个求解过程的可控制性、可监视性、可扩充性和可维护性控制性视性扩充性维护性3面向对象的概念面向对象的概念所谓面向对象的方法学,就是使我们分析、设计所谓面向对象的方法学,就是使我们分析、设计和实现一个系统的方法,尽可能地接近我们认识一个系统的方法。包括:面向对象的分析(OOA,Object-OrientedAnalysis)面向对象的设计(OODObject-OrientedDesign)面向对象的设计(OOD,Object-OrientedDesign)面向对象的程序设计(OOP,Object-OrientedProgram)面向对象技术主要围绕以下几个概念面向对象技术主要围绕以下几个概念:对象、抽象数据类型、类、类型层次(子类)对象、抽象数据类型、类、类型层次(子类)继承性、多态性。4面向对象的概念——对象面向对象的概念——对象对象有两个层次的概念对象有两个层次的概念:现实生活中对象指的是客观世界的实体;程序中对象就是一组变量和相关方法的集合,其中变量表明对象的状态,方法表明对象所具有的行为。属性/变量属性变量attributes/variables行为/方法5行为/方法behaviors/methods面向对象的概念——对象(续)面向对象的概念——对象(续)classCar{classCar{Stringcolour;现实生活中的对象Stringmodel;intfuelCapacity;现实生活中的对象可以将现实生活中的对py;voidstart(){}可以将现实生活中的对象经过抽象,映射为程序中的对象。对象在程序中过种抽象数类型voidstart(){…}voidstop(){…}是通过一种抽象数据类型来描述的,这种抽象数据类型称为类(class)voidmove(){…}}6类型称为类(class)。}面向对象的概念——类面向对象的概念——类类是描述对象的“基本原型”,它定义类是描述对象的基本原型,它定义一类对象所拥有的属性和行为。在面向对象的程序设计中类是程序的基本单元象的程序设计中,类是程序的基本单元。相似的对象可以归并到同一个类中去,相似的对象可以归并到同个类中去,就像传统语言中的变量与类型关系一样。程序中的对象是类的一个实例,是一个软件单元,它由一组结构化的数据(变量)软件单元,它由组结构化的数据(变量)和在其上的一组操作(方法)构成。7类和对象关系举例类和对象关系举例CmyCar:CarlblCarcolour:StringinstanceOfcolour=bluemodel=FiestafuelCapacity=45model:StringfuelCapacity:intstart():voidt()idstart():voidstop():voidmove(direction:String):voidstop():voidmove(direction:String):voidmove(direction:String):voidCar(colour:String,model:String,flCitit)fuelCapacity:int)8对象是表示现实世界中某个具体的事物;类是对对象的抽象描述类是对对象的抽象描述。Carcar1;Carcar1;Carcar2;Carcar2;…………CarcarN;;9属性方法和消息属性、方法和消息属性:描述对象的状态属性:描述对象的状态。方法:指对象的功能单元,行为。消息消息对象通过相互间传递消息来相互作用和通信,一个消息由三部分组成:1.接受消息的对象消息1.接受消息的对象2.接收对象要采取的方法3方法需要的参数3.方法需要的参数对象B对象A10对象A面向对象程序设计的特点面向对象程序设计的特点AlanKay(“面向对象编程之父”)AlanKay(面向对象编程之父)1万物皆对象将对象想成种特殊的变量它1.万物皆对象。将对象想成一种特殊的变量,它存储数据,而且还可以让你“提要求”,命令它进行某些操作进行某些操作。2.一个程序就是一组对象。对象相互之间传递消息,告诉对方该干做什么。或者说,消息是调用专属某个对象的方法的请求。11面向对象程序设计的特点(续)面向对象程序设计的特点(续)3每个对象可以将其它对象作为自己的组成部分3.每个对象可以将其它对象作为自己的组成部分。换言之,你通过将已有的对象打成一个包,来创建新的对象由此你可以将程序的复杂性隐藏建新的对象。由此,你可以将程序的复杂性隐藏在对象的简单性之下。4对象都有类型任何对象都是某个类的实例4.对象都有类型。任何对象都是某个类的实例(instanceofaclass)。用以区分类的最突出的特点就是“你能传给它什么消息?”的特点就是“你能传给它什么消息?”5.所有属于同一类型的对象能接受相同的消息。12Java的程序结构Java的程序结构类存在于源文件中Sourcefileclass类存在于源文件中方法存在于类中classmembervariables语句存在于方法中method1method213源文件和类源文件和类源文件(如:Dog.java)带有类的publicclassDog{定义。类用来表示程序的一类用来表示程序个组件类的数量可多可少类的数量可多可少类的内容必须包括在花括号里面}花括号里面。}类14类和方法类和方法类中带有一个或多类中带有一个或多个方法publicclassDog{voidbark(){例如:在Dog这个类中,bark方法带类中,方法带有如何“汪汪”的指令指令。}}方法必须在类的内部定义}方法15部定义方法和语句方法和语句在方法的花括号中编写方法应该publicclassDog{voidbark(){中编写方法应该执行的指令。法代由组statement1;ttt2方法代码由一组语句组成。statement2;}}}语句16main方法main方法当JVM启动时,它会寻找你在命令行所指定的类,然后它会锁定像下面这样的一个特定方法:方法:publicstaticvoidmain(String[]args){//程序代码//程序代码}}然后JVM就会执行这个方法中的所有代码17Java类类定义的语法规范Java类——类定义的语法规范[类的修饰字]class类名称[extends父类名称][implements接口名称列表][类的修饰字]class类名称[extends父类名称][implements接口名称列表]{变量定义及初始化;类体,其中定义了该类中所有的变量和该类所支持的方法,称为成员变量和成员方法方法定义及方法体;称为成员变量和成员方法。类的修饰字:[public][abstract|final]}类的修饰字:[public][abstract|final]缺省方式为Friendly18Java类变量定义的语法规范Java类——变量定义的语法规范变量的定义及修饰字[变量修饰字]变量数据类型变量名1,变量名2[=变量初值]…;变量的定义及修饰字[public|protected|private][static][final][transient][volatile]成员变量的类型可以是Java中任意的数据类型,包括简单数据类型,类,接口,数组。在一个类中的成员变量应该是唯一的。19Java类方法定义的语法规范Java类——方法定义的语法规范方法的定义及修饰字[方法修饰字]返回类型方法名称(参数1,参数2,…)[throwsexceptionList]{…(statements;)//方法体:方法的内容}[bli|ttd|it][tti][fil|btt][ti][hid][public|protected|private][static][final|abstract][native][synchronized]返回类型可以是任意的Java数据类型,当一个方法不需要返回值时返回类型为id返回值时,返回类型为void。参数的类型可以是简单数据类型,也可以是引用数据类型(数组类或接口)参数传递方式是值传递(bale)(数组、类或接口),参数传递方式是值传递(byvalue)。方法体是对方法的实现。它包括局部变量的声明以及所有合法的Java指令局部变量的作用域只在该方法内部20合法的Java指令。局部变量的作用域只在该方法内部。类中成员变量和方法的关系类中成员变量和方法的关系1.类中定义的成员变量可以被类中所有的方法所访问问。2方法中的形式参数和定义的局部变量的作用域2.方法中的形式参数和定义的局部变量的作用域仅限于方法,局部变量在使用前必须进行赋值初始化。始化。如果局部变量和类中的属性变量重名,则在方法中对同名变量改变的是局部变量法中对同名变量改变的是局部变量。3类中定义的方法可以进行递归调用【例42】3.类中定义的方法可以进行递归调用【例4.2】21对象对象的产生对象-对象的产生FighterPlaneFighterPlaneStringname;intmissileNum;newStringname;intmissileNum;tsseNu;voidfire()类对象intmissileNum;voidfire()类对象对象的创建使用的代码:newFighterPlane();对象的声明使用的代码:FighterPlanefp;可以声明后立即赋予对象:FighterPlanefp=newFighterPlane()22对象的构造过程对象的构造过程为对象开辟空间,并对对象的成员变量为对象开辟空间,并对对象的成员变量进行缺省的初始化;对成员变量进行指定的初始化;对成员变量进行指定的初始化;调用构造方法。23方法中的参数传递importjava.awt.Point;classPassByValue{publicstaticvoidmodifyPoint(Pointptintj){方法中的参数传递publicstaticvoidmodifyPoint(Pointpt,intj){pt.setLocationpt.setLocation(5,5);(5,5);//--1--j=15;System.out.println(DuringmodifyPoint+pt=+pt+andj=+j);}}publicstaticvoidmain(Stringargs[]){PitPitPitPit(00)(00)//2PointPointp=p=newnewPointPoint(0,0);(0,0);//--2--inti=10;System.out.println(BeforemodifyPoint+p=+p+andi=+i);modifyPointmodifyPoint(p,(p,ii););//--3--Systemoutprintln(AftermodifyPoint+p=+p+System.out.println(AftermodifyPoint+p=+p+andi=+i);}Beforem
本文标题:第4章 Java面向对象程序设计(上)
链接地址:https://www.777doc.com/doc-5451171 .html