您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > 华北电力大学教学用ppt-03-面向对象技术
NCEPU第三章面向对象技术2019年11月24日星期日NCEPUContents1.面向对象的概念2.Java中的类、方法和变量3.Java名字空间及访问规则4.Java中的抽象类、接口和程序包2019年11月24日星期日NCEPU面向过程的设计思想和面向对象的设计思想我要开车去上海面向过程•我开车,我挂档,我踩油门,我过河北,我过陕西……面向对象•我命令车去上海•车怎么去不关我事•信息封装在车这个类的内部•我不用去了解车整个开动的过程2019年11月24日星期日NCEPU类和对象的初步介绍面向对象技术的基本特质:万事万物皆对象程序便是成堆的对象,彼此通过消息的传递,请求其他对象进行工作每个对象都有自己的存储空间,可容纳其他对象。每个对象都有一个类型,皆为其类(class)的一个实体(instance)同一类的所有对象能接受的消息皆相同NCEPU类和对象2019年11月24日星期日NCEPU对象有两个层次的概念:现实生活中对象指的是客观世界的实体;程序中对象就是一组属性和相关方法的集合,其中属性表明对象的状态,方法表明对象所具有的行为。变量方法对象2019年11月24日星期日NCEPUObject=+statebehaviour对象2019年11月24日星期日NCEPUExamples:ObjectStateBehaviourPersonname,age,sex,phonenumbergettheaddress,changephonenumberCustomername,address,purchasehistorymakepurchase,listitemsbought,returnitemBankAccountowner,balance,accountnumberwithdraw,deposit,transfer,getbalance对象2019年11月24日星期日NCEPU现实生活中的对象可以将现实生活中的对象经过抽象,映射为程序中的对象。对象在程序中是通过一种抽象数据类型来描述的,这种抽象数据类型称为类(Class)。ClassCar{intcolor_number;intdoor_number;intspeed;voidbrake(){…}voidspeedUp(){…}voidslowDown(){…}}抽象数据类型类2019年11月24日星期日NCEPU类是描述对象的“基本原型”,它定义一类对象所能拥有的数据和能完成的操作。在面向对象的程序设计中,类是程序的基本单元。相似的对象可以归并到同一个类中去,就像传统语言中的变量与类型关系一样。程序中的对象是类的一个实例,是一个软件单元,它由一组结构化的数据和在其上的一组操作构成。2019年11月24日星期日NCEPU……Carcar1;Carcar2;……CarcarN;2019年11月24日星期日NCEPU属性:指对象的所知道的状态。方法:指对象的功能单元。消息:软件对象通过相互间传递消息来相互作用和通信,一个消息由三部分组成:1.接受消息的对象2.接收对象要采取的方法3.方法需要的参数对象B对象A消息2019年11月24日星期日NCEPU对象和类的概念对象用计算机语言对问题域中的事物描述,对象通过“属性”(attribute)和“方法”(method)来分别对应事物所具有的静态属性(成员变量)和动态属性。类是用于描述同一类型的对象的一个抽象概念,类中定义了这一类对象所具有的静态和动态属性类可以看成同一类对象的模版,对象可以看成该类的一个具体实例职员职员-姓名-年龄-目前工资数额-显示姓名()-显示年龄()-修改姓名()-领取工资()职员A姓名:A年龄:30工资:9000职员B姓名:B年龄:25工资:10000抽象类对象实例化2019年11月24日星期日NCEPU类(对象)之间的关系关联关系学院教授研究生2019年11月24日星期日NCEPU类(对象)之间的关系继承关系(一般和特殊)xx是一种xx运动员游泳运动员球类运动员射击运动员篮球运动员足球运动员排球运动员2019年11月24日星期日NCEPU类(对象)之间的关系聚合关系(整体和部分)球队队长队员人胳膊腿头聚集组合2019年11月24日星期日NCEPU实现关系类(对象)之间的关系大马车自行车大卡车interface车-go()-xxxx()2019年11月24日星期日NCEPU课堂练习抽象出下面系统中的类与方法预订机票记账准备机票旅行社航班目录记账文件旅客2019年11月24日星期日NCEPU如何定义一只狗?publicclassDog{intfurColor;floatheight;floatweight;voidcacthMouse(Mousem){……m.scream();}publicstaticvoidmain(String[]args){Dogd=newDog();Mousem=newMouse();d.catchMouse(m);}}2019年11月24日星期日NCEPU为什么要使用类采用简单数据类型表示现实世界中的概念存在很大的局限性。例如:采用int型数据表示一个日期概念,需要使用3个变量:intday,month,year;如果要表示2个人的生日,就要使用6个变量且使用中必须时刻注意三者的联系和约束关系同时在使用日期概念时要同时对三个变量进行访问使用类可以把现实问题中的对象映射为程序中的一个整体——类。2019年11月24日星期日NCEPUclassBirthDate{privateintday,month,year;publicinttomorrow(){……}}BirthDatemybirth,yourbirth;类中不但有属性,还有与之相关的操作所定义的方法。将变量和方法封装在一个类中,可以对成员变量进行隐藏,外部对类成员的访问都通过方法进行,能够保护类成员不被非法修改。2019年11月24日星期日NCEPU类和对象概述类(class)是一种复合数据类型,引用类型,它将数据和与数据相关的操作封装在一起的集体。即类可以看成静态属性(成员变量)和动态属性(成员方法)的封装体。类是用来创建同一类型的对象的“模板”,在一个类中定义了该类对象所应有的成员变量及方法。J2SDK提供了很多类供编程人员使用,编程人员也可以定义自己的类。2019年11月24日星期日NCEPU类和对象概述对象(object),是类的实例,类的变量。当程序运行时,对象占用内存单元,对象与类的关系就像变量与类型的关系一样。对象与类是密切相关的,没有脱离对象的类,也没有不依赖于类的对象。2019年11月24日星期日NCEPU类和对象概述Java中所有数据类型都是用类来实现的,Java语言是建立在“类”这个逻辑结构之上的,所以Java是一种完全面向对象的程序设计语言,类是Java的核心。类中的数据称为成员变量,对数据进行的操作称为成员方法。2019年11月24日星期日NCEPU引用Java语言中除基本类型之外的变量类型都称之为引用类型。Java中的对象是通过引用对其操作的。Strings;s=newString(“helloworld!”);null0x3a123b0x3a123b堆内存………………在内存中区分类和对象类是静态的概念,代码区对象是new出来的,位于堆内存,类的每个成员变量在不同的对象中都有不同的值(除了静态变量)而方法只有一份,执行的时候才占内存。2019年11月24日星期日NCEPU实例(Instances)类X的一个对象就称为类X的一个实例.•一个实例是一个特定类的成员.•一个实例具有区别于其它实例的状态。2019年11月24日星期日NCEPUnewclassname()其作用是在内存中为此对象分配内存空间,并将存储地址返回。称此存储地址为对象的引用(reference)。Personmark;mark就是一个引用变量生成一个实例:实例(Instances)2019年11月24日星期日NCEPU但是,声明一个引用变量仅仅是预订了变量的存储空间,此时并没有变量生成。Customerbob;System.out.println(bob);Thisexamplegeneratesacompileerrorsaying:variablebobmightnothavebeeninitialized.实例(Instances)2019年11月24日星期日NCEPU可以给引用变量赋空值。Customerbob=null;System.out.println(bob);Theaboveexampledoesnotgenerateanerror,andprintsoutnulltotheconsole.实例(Instances)2019年11月24日星期日NCEPUWecanstorenewinstances(实例)inthesereferencevariables(引用变量):mark=newPerson();myCar=newCar();bob=newCustomer();account=newBankAccount();foo=newObject();实例(Instances)2019年11月24日星期日NCEPU对象的创建和使用必须使用new关键字创建对象使用对象(引用).成员变量来引用对象的成员变量使用对象(引用).方法(参数列表)来调用对象的方法同一类的每个对象有不同的成员变量存储空间同一类的每个对象共享该类的方法。2019年11月24日星期日NCEPU一个程序可包括若干个类,各类之间存在并列、继承和包含关系这些类通常是在一起协同工作的:每一个类都可能需要创建其他类的对象,并调用类或对象的属性及方法编译后每个类产生一个.class文件Java程序结构package//打包语句import---//包含语句class类名1{属性定义方法名1(){-----}方法名2(){-----}}class类名2{-------}2019年11月24日星期日NCEPUJava的类定义格式修饰符class类名[extends父类名][implements接口名]{类型成员变量1;类型成员变量2;......修饰符类型成员方法1(参数列表){类型局部变量;方法体}修饰符类型成员方法2(参数列表){类型局部变量;方法体}......}2019年11月24日星期日NCEPU类的声明例如:publicclassDate1声明了一个公有类Date1,public是类访问权限的修饰符,说明这个类可以被任何类使用。2019年11月24日星期日NCEPU声明成员变量Java中类的状态用成员变量来表示,声明成员变量必须给出变量名及其所属的类型,声明格式为:[修饰符][static][final]变量类型变量名;2019年11月24日星期日NCEPU声明成员变量例如:下面声明了一个表示日期的类,其中有三个成员变量year、month和day,分别记录日期的年、月和日。publicclassDate1{intyear,month,day;}2019年11月24日星期日NCEPU当类中的某个成员变量属于基本数据类型时,即使没有为它提供初值,Java也保证它有一个初始值:基本数据类型缺省初值booleanfalsechar‘\u0000’(null)byte(byte)0short(short)0int0long0Lfloat0.0fDouble0.0d局部变量不会被进行默认的初始化声明成员变量2019年11月24日星期日NCEPU如:classTest{intx;publicstaticvoidmain(String[]arg){inty=2;Testt=newTest();System.out.println(“x=”+t.x+“,y=”+y);}}运行结果:x=0,y=2x是成员变量,自动赋初值0y是局部变量,
本文标题:华北电力大学教学用ppt-03-面向对象技术
链接地址:https://www.777doc.com/doc-1842225 .html