java第03讲-面向对象程序设计_第1页
java第03讲-面向对象程序设计_第2页
java第03讲-面向对象程序设计_第3页
java第03讲-面向对象程序设计_第4页
java第03讲-面向对象程序设计_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

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

文档简介

java第03讲-面向对象程序设计第一页,共105页。本章总体纲要类、域、方法和实例对象继承性多态性包(package)封装性关键字abstract、static、final和this接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想2023/4/152第二页,共105页。面向对象程序设计整体介绍面向对象程序设计(OOP)将数据(属性)和方法(行为或功能)封装到类(classes)中数据与方法常常是紧密相关的对象(objects):类的实例对象或类本身三个基本特性:封装性、继承性和多态性2023/4/153第三页,共105页。比较结构化程序设计对应的典型的计算机语言,例如:C面向操作(action)的函数(方法)是程序的基本单位面向对象程序设计对应的典型的计算机语言,例如:Java面向对象(object)的类(class)是程序的基本单位方法(函数)被封装在类中数据也常常被封装在类中2023/4/154第四页,共105页。类类(class)本身也是一种对象类(class)同时也是实例对象的模板类(class)的基本组成:(成员)域和(成员)方法

每个对象:拥有内存存储成员域/方法静态的成员域/方法属于类其它成员域/方法属于实例对象2023/4/155第五页,共105页。类的定义类的定义格式如下:[类修饰词]

class

类名

[extends

父类名][implements

接口名称列表]{

类体}2023/4/156第六页,共105页。多个类组成的程序很多Java程序需要多个类完成一项任务一个文件一般只含有一个类每个文件的长度一般不要太长最长一般不要超过2000行2023/4/157第七页,共105页。方法定义与C++程序不同的是:每个方法都必须隶属于某个类方法定义的格式:

[方法修饰词]返回类型方法名(方法的参数列表)

{

方法体

}返回类型:返回数据的数据类型除了构造方法,一般要求返回类型:要么为void

,要么为某种数据类型int、byte、float或String最多只能返回一个值方法名:任何一个合法的标识符参数列表:用逗号(,)分隔开2023/4/158第八页,共105页。返回控制如果没有值返回:return;

//退出该方法或者遇到该方法的最后一个“}”,则退出该方法如果有值返回:return

表达式;//退出该方法返回该表达式的值2023/4/159第九页,共105页。构造方法构造方法在创建新的实例对象时起作用构造方法通常用来初始化实例对象,例如:初始化成员域或设置工作环境构造方法的特点:与类同名没有返回值可以含有多种构造方法(重载)但必须具有不同的参数列表2023/4/1510第十页,共105页。申博申博官网申博sunbet官网2023/4/15第十一页,共105页。默认的构造方法如果没有显式地定义类的构造方法,则系统会为该类定义一个默认的构造方法。该构造方法不含任何参数。这个默认的构造方法首先调用其父类的不含任何参数的构造方法,然后初始化新生成的实例的各个成员域变量默认值:基本数值类型:0;boolean:false;引用数据类型:null最好自己写构造方法一旦在类中定义了构造方法,系统就不会再创建这个默认的不含参数的构造方法。2023/4/1512第十二页,共105页。父类的构造方法每个构造方法都必须调用其父类的构造方法隐式调用:默认方式(无参数的父类构造方法)显式调用:super(参数列表);

//可以根据需要,指定参数如果是显式调用,则必须是第一条语句2023/4/1513第十三页,共105页。实例////////////////////////////////////////////////////////////编写一个程序验证://父类构造方法的调用方式//////////////////////////////////////////////////////////2023/4/1514第十四页,共105页。源程序//J_Test.java,byJun-HaiYongclassJ_SuperClass{J_SuperClass(){System.out.println("Enter:J_SuperClass()");}//Endofconstructor:J_SuperClass()}//Endofclass:J_SuperClassclassJ_SubClassextendsJ_SuperClass{J_SubClass(){System.out.println("Enter:J_SubClass()");}//Endofconstructor:J_SubClass()}//Endofclass:J_SubClasspublicclassJ_Test{publicstaticvoidmain(Stringargs[]){newJ_SubClass();}//Endofmethod:main}//Endofclass:J_Test2023/4/1515第十五页,共105页。编译、运行&结果2023/4/1516第十六页,共105页。结束(/析构)处理内存构造过程:当创建新的实例对象时,分配内存,并占用内存垃圾回收(析构过程)返回内存给系统Java自动进行这种处理当实例对象不再被使用了,那么就会被标记,作为垃圾回收的对象垃圾回收器在适当的时候回收这些内存内存泄露:Java比C/C++好很多,Java语言几乎没有2023/4/1517第十七页,共105页。finalize()

方法Java提供方法finalize()在java.lang.Object包中定义所有的类都有finalize()方法没有任何方法参数,也不返回任何值(void)Java调用方法finalize()的时机:当对象刚要被回收之前但不保证方法finalize()一定会被调用到一定不要依赖于方法finalize()来统计资源的释放情况2023/4/1518第十八页,共105页。实例////////////////////////////////////////////////////////////编写程序来验证://垃圾回收机制中的//finalize()//////////////////////////////////////////////////////////2023/4/1519第十九页,共105页。源程序//J_Finalize.java,byJun-HaiYongclassJ_Book{privateStringm_name;J_Book(Stringname){m_name=name;}//Endofconstructor:J_Book(Stringname)

publicvoidfinalize(){System.out.println("Book,\""+m_name+"\",isdestroyed!");}//Endofmethod:finalize}//Endofclass:J_BookpublicclassJ_Finalize{

publicstaticvoidmain(Stringargs[]){J_Bookbook1=newJ_Book("GonewithWind");newJ_Book("JavaHowtoProgram");//DropthereferencenewJ_Book("RomanHoliday");System.gc();//Forcegarbagecollection&finalization}//Endofmethod:main}//Endofclass:J_Finalize2023/4/1520第二十页,共105页。编译、运行&结果2023/4/1521第二十一页,共105页。本章总体纲要类、域、方法和实例对象继承性多态性包(package)封装性关键字abstract、static、final和this接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想2023/4/1522第二十二页,共105页。继承性继承性–软件重用的一种方法根据已有的类创建新的类采纳了旧的类的属性(域)及其行为(方法)增加了新的能力子类继承父类子类增加了新的成员域或新的成员方法有时可以理解成:(但不绝对!)子类对象是一种特殊的父类对象2023/4/1523第二十三页,共105页。继承性的实现采用关键字extends

publicclassJ_HelloAppletextendsApplet{

//…}//类J_HelloApplet结束2023/4/1524第二十四页,共105页。关键字:instanceof运算符:instanceof例如:if(pinstanceofCircle)上面的条件为true,当且仅当引用p所指向的对象是类Circle(或其子类)的实例对象2023/4/1525第二十五页,共105页。实例//CompareTestimportjava.awt.*;publicclassCompareTest{

publicstaticvoidmain(String[]args){Buttonb=newButton("Exit");booleancompare1=binstanceofButton;booleancompare2=binstanceofComponent;System.out.println("IsbaButton?"+compare1);System.out.println("IsbaComponent?"+compare2);}}2023/4/1526第二十六页,共105页。程序输出结果IsbaButton?trueIsbaComponent?true2023/4/1527第二十七页,共105页。父类实例对象与子类实例对象之间的关系子类实例对象可以认为也是其父类的实例对象反之,则不对可以配合使用这种特性与多态性主要用一个父类拥有多种子类通过父类的引用,调用子类的特定方法父类的引用指向子类的实例对象2023/4/1528第二十八页,共105页。隐式及显式数据类型转换数据类型转换:隐式和显式隐式:父类引用=子类对象的引用较高精度类型的变量=较低精度类型的值显式:子类引用=(子类名)父类对象的引用较低精度类型的变量=(较低精度类型名)较高精度类型的值2023/4/1529第二十九页,共105页。多重继承在有些计算机语言中,允许一个类有多个直接父类。这种继承关系称为多重继承Java不支持多重继承Java允许一个类有多个直接父接口(interface)2023/4/1530第三十页,共105页。本章总体纲要类、域、方法和实例对象继承性多态性包(package)封装性关键字abstract、static、final和this接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想2023/4/1531第三十一页,共105页。多态性优点:代码重用简化设计、简化代码便于程序扩展2023/4/1532第三十二页,共105页。多态性的种类静态的多态性重载动态的多态性覆盖2023/4/1533第三十三页,共105页。静态的多态性(重载)在编译时就能够被识别针对的是同一个类内的同名方法例如:publicintsquare(intx){returnx*x;}publicdoublesquare(doublex){returnx*x;}2023/4/1534第三十四页,共105页。识别重载方法识别标志:参数的个数、类型、数据类型的排列顺序返回值不能做为识别的标志2023/4/1535第三十五页,共105页。动态多态性(覆盖)在程序运行时才被识别重写父类的方法要求相同的声明例如:publicclassJ_HelloAppletextends

JApplet{

publicvoid

paint(Graphicsg){g.clearRect(0,0,getWidth(),getHeight());//清除背景

g.drawString("小应用程序,您好!",10,20);}//方法paint结束}//类J_HelloApplet结束2023/4/1536第三十六页,共105页。源程序:J_Teacher.Java//文件名:J_Teacher.java;开发者:雍俊海classJ_Employee{

publicintm_workYear;//工作的年限

publicJ_Employee(){m_workYear=1;}//J_Employee构造方法结束

publicvoidmb_printInfo(){System.out.println("该职工的工作年限为"+m_workYear);}//方法mb_printInfo结束}//类J_Employee结束2023/4/1537第三十七页,共105页。publicclassJ_TeacherextendsJ_Employee{

publicintm_classHour;//授课的课时

publicJ_Teacher(){m_classHour=96;}//J_Teacher构造方法结束

publicvoidmb_printInfo(){System.out.println("该教师的工作年限为"+m_workYear);System.out.println("该教师授课的课时为"+m_classHour);}//方法mb_printInfo结束

publicstaticvoidmain(Stringargs[]){J_Employeea=newJ_Employee();a.mb_printInfo();a=newJ_Teacher();a.mb_printInfo();}//方法main结束}//类J_Teacher结束源程序:J_Teacher.Java2023/4/1538第三十八页,共105页。编译、运行&结果2023/4/1539第三十九页,共105页。本章总体纲要类、域、方法和实例对象继承性多态性包(package)封装性关键字abstract、static、final和this接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想2023/4/1540第四十页,共105页。包可以将一组相关的类或接口封装在包(package)里,从而更好地管理已经开发的Java代码包含组织类与接口的目录结构方便程序重用2023/4/1541第四十一页,共105页。创建包创建public类如果类不是public,则通常只能在同一包内使用(或派生子类)选取一个包名(package)并在源程序中增加一条package语句编译,生成.class文件(放在相应的目录下)通过import语句,加入到其它程序中命名规则:Internet域名的逆序+其它名一般全部采用小写ASCII字母例如,package

com.google.soap.search;

package

edu.cmu.cs.bovik.cheese;2023/4/1542第四十二页,共105页。注意事项建包的package语句必须是源程序文件的第一条语句2023/4/1543第四十三页,共105页。建包实例:Time1.java1//Fig.8.4:Time1.java2//Time1classdefinitioninapackage3packagecom.deitel.jhtp4.ch08;45//Javacorepackages6importjava.text.DecimalFormat;78publicclassTime1extendsObject{9

privateinthour;//0-2310

privateintminute;//0-5911

privateintsecond;//0-591213//Time1constructorinitializeseachinstancevariable14//tozero.EnsuresthateachTime1objectstartsina15//consistentstate.16

publicTime1()17{18setTime(0,0,0);19}2021//Setanewtimevalueusinguniversaltime.Perform22//validitychecksonthedata.Setinvalidvaluestozero.23

publicvoidsetTime(inth,intm,ints)24{25hour=((h>=0&&h<24)?h:0);26minute=((m>=0&&m<60)?m:0);27second=((s>=0&&s<60)?s:0);28}类Time1

被放入包中从包java.text加入类DecimalFormat类Time1

所在目录com/deitel/jhtp4/ch082023/4/1544第四十四页,共105页。建包实例:Time1.java30//converttoStringinuniversal-timeformat31

publicStringtoUniversalString()32{33DecimalFormattwoDigits=newDecimalFormat("00");3435

returntwoDigits.format(hour)+":"+36twoDigits.format(minute)+":"+37twoDigits.format(second);38}3940//converttoStringinstandard-timeformat41

publicStringtoString()42{43DecimalFormattwoDigits=newDecimalFormat("00");44

45

return((hour==12||hour==0)?12:hour%12)+46

":"+twoDigits.format(minute)+47

":"+twoDigits.format(second)+48(hour<12?"AM":"PM");49}5051}//endclassTime1调用包java.text中的类DecimalFormat2023/4/1545第四十五页,共105页。实例:TimeTest3.java1//Fig.8.5:TimeTest3.java2//ClassTimeTest3touseimportedclassTime134//Javaextensionpackages5importjavax.swing.JOptionPane;67//Deitelpackages8importcom.deitel.jhtp4.ch08.Time1;//importTime1class910publicclassTimeTest3{1112//createanobjectofclassTime1andmanipulateit13

publicstaticvoidmain(Stringargs[])14{15Time1time=newTime1();//createTime1object1617time.setTime(13,27,06);//setnewtime18Stringoutput=19

"Universaltimeis:"+time.toUniversalString()+20

"\nStandardtimeis:"+time.toString();2122JOptionPane.showMessageDialog(null,output,23

"PackagingClassTime1forReuse",24JOptionPane.INFORMATION_MESSAGE);2526System.exit(0);27}2829}//endclassTimeTest3从包com.deitel.jhtp4.ch08

加入类Time1从包javax.swing加入类JOptionPaneTimeTest3

声明Time1

对象2023/4/1546第四十六页,共105页。编译、运行&输出Time1.class2023/4/1547第四十七页,共105页。Java包Java系统提供了很多已经写好的包数学计算、输入/输出、字符串操作尽量利用已有的包、避免重复工作使用包中类利用import

语句指定类的位置例如:

importjavax.swing.JApplet;2023/4/1548第四十八页,共105页。包包java.langjava.lang.Objectjava.lang.Math包java.utiljava.util.Random2023/4/1549第四十九页,共105页。本章总体纲要类、域、方法和实例对象继承性多态性包(package)封装性关键字abstract、static、final和this接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想2023/4/1550第五十页,共105页。类成员的封装性成员(域或方法)的访问控制方式:1)public2)private3)protected4)default(缺省方式)2023/4/1551第五十一页,共105页。成员的访问控制方式:public则该成员可以被任何类中的方法访问表明对外开放的方式少量(或者没有)public

域部分public

方法

2023/4/1552第五十二页,共105页。成员的访问控制方式:private目的:隐藏具体的实现细节只有同一个类的成员方法才能访问私有成员域常常是private

采用public“get”方法读取数据采用public“set”方法写数据2023/4/1553第五十三页,共105页。成员的访问控制方式:protected介于public

和private之间同一个包内的所有类的所有方法都能访问该成员如果不在同一个包内的类的方法要访问该成员,则该类必须是该成员所在的类的子类2023/4/1554第五十四页,共105页。成员的访问控制方式:default

(缺省方式)只有在同一个包内的类的方法才能访问该方法

2023/4/1555第五十五页,共105页。类成员封装性总结2023/4/1556第五十六页,共105页。本章总体纲要类、域、方法和实例对象继承性多态性包(package)封装性关键字abstract、static、final接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想2023/4/1557第五十七页,共105页。abstractJava允许定义抽象(abstract)的类和方法抽象(abstract)的方法可以只提供方法的头部,但不提供实现的部分抽象(abstract)的方法只能是抽象(abstract)类中的方法例如:publicabstractclassJ_VehiclepublicabstractclassJ_Shape{{publicabstractvoidfuel();publicabstractvoid

mb_draw();}}2023/4/1558第五十八页,共105页。关键字:static静态的(static)域和静态的(static)方法实际上隶属于类对象静态的(static)域示例:System.out静态的(static)方法示例:main()示例:Math.sqrt()publicstaticdoublesqrt(doublea)2023/4/1559第五十九页,共105页。关键字:final可以修饰的对象:final

域final

方法final

类2023/4/1560第六十页,共105页。final

域当一个域声明为final时,该域就成为了常量,它的值不能再被改变实例:publicclassPhysics{privatefinalintINCREMENT=5;publicstaticfinaldoubleC=2.998E8;}

建议:域名采用大写字母表示常量2023/4/1561第六十一页,共105页。final

方法当一个方法声明为final时,则该方法就不能被其子类中的方法覆盖例如:publicfinalStringconvertCurrency()

2023/4/1562第六十二页,共105页。final

类表明不能用该类来构造子类例如:publicfinalclass

String2023/4/1563第六十三页,共105页。final

参数将方法的参数声明为final没有意义,因为Java方法调用中参数的传递方式本身就是值传递方式2023/4/1564第六十四页,共105页。本章总体纲要类、域、方法和实例对象继承性多态性包(package)封装性关键字abstract、static、final和this接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想2023/4/1565第六十五页,共105页。接口(interface)接口(interface)就象是一种特殊的类成员方法:abstract成员域:final和static接口(interface)中所有的方法和域必须都是public的每个接口一般定义在一个.java

文件中2023/4/1566第六十六页,共105页。示例例1:通过接口定义一些常量publicinterfaceJ_Constants{

publicstaticfinal

intONE=1;

publicstaticfinalintTWO=2;

publicstaticfinalintTHREE=3;}//接口J_Constants结束例2:interfaceJ_Shape{

publicabstractvoidmb_draw(Graphics2Dg);}//接口J_Shape结束2023/4/1567第六十七页,共105页。注意事项接口中成员方法的默认方式是public

和abstract接口中成员域的默认方式是public、static和final2023/4/1568第六十八页,共105页。优点一个类可以继承多个接口例如:publicclassAextendsBimplementsC,D{}2023/4/1569第六十九页,共105页。本章总体纲要类、域、方法和实例对象继承性多态性包(package)封装性关键字abstract、static、final和this接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想2023/4/1570第七十页,共105页。内部类定义在其它类内部的类称为内部类内部类有些类似于类的成员域或成员方法2023/4/1571第七十一页,共105页。匿名内部类没有类名常常用在图形用户界面设计(GUI)中,进行各种事件处理例如:鼠标事件、按钮事件和键盘事件等2023/4/1572第七十二页,共105页。实例importjava.awt.event.*;//...jButton1.addActionListener(

newActionListener(){

publicvoidactionPerformed(ActionEvente){

//Dosomething...}});//...//Interface:java.awt.event.ActionListener//voidactionPerformed(ActionEvente)importjava.awt.event.*;classMyActionListenerimplementsActionListener{

publicvoidactionPerformed(ActionEvente){

//Dosomething...}}//////////////////////////////////////////////////////////////////...jButton1.addActionListener(

newMyActionListener());...2023/4/1573第七十三页,共105页。本章总体纲要类、域、方法和实例对象继承性多态性包(package)封装性关键字abstract、static、final和this接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想2023/4/1574第七十四页,共105页。变量的作用域范围作用域范围:程序中能够使用该变量(域与局部变量)的范围分类:类作用域范围和块作用域范围2023/4/1575第七十五页,共105页。类作用域范围从类定义的第一个“{”开始,到最后一个“}”结束超出类的范围,类的成员方法不能直接通过它的名称进行访问例如:成员域2023/4/1576第七十六页,共105页。块作用域范围从变量声明之处,到该块的最后一个“}”例如:局部变量与成员方法的参数2023/4/1577第七十七页,共105页。值传递示例////////////////////////////////////////////////////////////编写一个程序用来说明//Java方法调用过程中//值传递方式//////////////////////////////////////////////////////////2023/4/1578第七十八页,共105页。源程序//文件名:J_Primitive.java;开发者:雍俊海publicclassJ_Primitive{

publicstaticvoidmb_method(inta){System.out.println("在a++之前方法参数a="+a);a++;System.out.println("在a++之后方法参数a="+a);}//方法mb_method结束

publicstaticvoidmain(Stringargs[]){inti=0;System.out.println("在方法调用之前变量i="+i);mb_method(i);System.out.println("在方法调用之后变量i="+i);}//方法main结束}//类J_Primitive结束2023/4/1579第七十九页,共105页。编译、运行&结果编译命令为:javacJ_Primitive.java执行命令为:javaJ_Primitive最后执行的结果为:在方法调用之前变量i=0在a++之前方法参数a=0在a++之后方法参数a=1在方法调用之后变量i=02023/4/1580第八十页,共105页。引用数据类型值传递实例////////////////////////////////////////////////////////////编写一个程序用来说明//Java方法调用过程中//引用数据类型值传递方式//////////////////////////////////////////////////////////2023/4/1581第八十一页,共105页。源程序/////////////////////////////////////////////////////////////J_Test.java////CreatedbyJun-HaiYong,onXXxx,xxxx(Date)//////////////////////////////////////////////////////////Readme://Thisprogramdemonstrates://modifyinganobject,whichisanargument.classJ_Class{

publicintm_field;J_Class(){m_field=0;}//Endofmethod:J_Class}//Endofclass:J_Class2023/4/1582第八十二页,共105页。源程序publicclassJ_Test{

publicstaticvoidmb_test(J_Classc){System.out.println(“[T]Before:c.m_field="+c.m_field);c.m_field++;System.out.println(“[T]After:c.m_field="+c.m_field);}//Endofmethod:mb_test

publicstaticvoidmain(Stringargs[]){J_Classc=newJ_Class();System.out.println(“[M]Before:c.m_field="+c.m_field);mb_test(c);System.out.println(“[M]After:c.m_field="+c.m_field);}//Endofmethod:main}//Endofclass:J_Test2023/4/1583第八十三页,共105页。编译、运行&结果编译命令为:javacJ_Test.java执行命令为:javaJ_Test最后执行的结果为:[M]Before:c.m_field=0[T]Before:c.m_field=0[T]After:c.m_field=1[M]After:c.m_field=12023/4/1584第八十四页,共105页。本章总体纲要类、域、方法和实例对象继承性多态性包(package)封装性关键字abstract、static、final和this接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想2023/4/1585第八十五页,共105页。示例////////////////////////////////////////////////////////////编写一个程序用来说明//求解矩形和圆面积//////////////////////////////////////////////////////////2023/4/1586第八十六页,共105页。按对象进行分解编写文件J_Shape.java,实现接口J_Shape编写文件J_Circle.java,实现类J_Circle继承自接口J_Shape编写文件J_Rectangle.java,实现类J_Rectangle继承自接口J_Shape编写文件J_Area.java,实现类J_Area计算矩形和圆面积利用类J_Circle和类J_Rectangle2023/4/1587第八十七页,共105页。源程序:J_Shape.java//文件名:J_Shape.java;开发者:雍俊海publicinterfaceJ_Shape{

//计算并返回形状的面积

publicabstractdoublemb_getArea();}//接口J_Shape结束2023/4/1588第八十八页,共105页。源程序:J_Circle.java//文件名:J_Circle.java;开发者:雍俊海(待续)publicclassJ_CircleimplementsJ_Shape{

publicdoublem_x,m_y;//圆心坐标

publicdoublem_radius;//半径

publicJ_Circle(doubler){m_x=0;m_y=0;m_radius=r;}//J_Circle构造方法结束2023/4/1589第八十九页,共105页。源程序:J_Circle.java//文件名:J_Circle.java;开发者:雍俊海(续)

publicJ_Circle(doublex,doubley,doubler){m_x=x;m_y=y;m_radius=r;}//J_Circle构造方法结束

//计算并返回形状的面积

publicdoublemb_getArea(){

return(Math.PI*m_radius*m_radius);}//方法mb_getArea结束}//类J_Circle结束2023/4/1590第九十页,共105页。源程序:J_Rectangle.java//文件名:J_Rectangle.java;开发者:雍俊海(待续)publicclassJ_RectangleimplementsJ_Shape{

publicdoublem_minX,m_minY;//第一个角点坐标

publicdoublem_maxX,m_maxY;//另一个角点坐标

publicJ_Rectangle(doublex1,doubley1,doublex2,doubley2){if(x1<x2){m_minX=x1;m_maxX=x2;}else{m_minX=x2;

温馨提示

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

评论

0/150

提交评论