首页 Lecture06:面向对象思考

Lecture06:面向对象思考

举报
开通vip

Lecture06:面向对象思考第6讲面向对象思考PHP网站开发教程Object-OrientedProgramming面向对象程序设计学习目标理解和掌握的内容应用类的抽象来开发软件探索面向过程与面向对象范式的不同之处发现类之间的关系使用面向对象范式来设计程序包装类的应用String、StringBuilder和StringBuffer资料来源课本第10章1类的抽象和封装类的抽象是指把类的实现与使用分离开,实现的细节被封装并且对用户隐藏,称为类的封装。类类的合约(公共方法与公共常量的签名)客户程序通过类的合约使用该类类的实现就像一个对客户程序隐藏...

Lecture06:面向对象思考
第6讲面向对象思考PHP网站开发教程Object-OrientedProgramming面向对象程序设计学习目标理解和掌握的内容应用类的抽象来开发软件探索面向过程与面向对象范式的不同之处发现类之间的关系使用面向对象范式来设计程序包装类的应用String、StringBuilder和StringBuffer资料来源课本第10章1类的抽象和封装类的抽象是指把类的实现与使用分离开,实现的细节被封装并且对用户隐藏,称为类的封装。类类的合约(公共方法与公共常量的签名)客户程序通过类的合约使用该类类的实现就像一个对客户程序隐藏的黑盒子2面向对象的思考面向过程的范式:重点在于设计方法。面向对象的范式:重点在于将数据和方法耦合成一个对象。3示例示例:展示一个整数栈(Stack)的建模过程。4类的关系复杂的应用程序通常由多个类构成。类与类之间的关系通常有以下几种:关联聚合、组合继承本节主要讨论:关联、聚合和组合4.1关联关联是二元关系,描述两个类之间的活动。StudentCourseFacultyTakeTeach5..60*0..31teacher关联名类关联多重性角色4.1关联StudentCourseFacultyTakeTeach5..60*0..31teacherpublicclassStudent{privateCourse[]courseList;publicvoidaddCourse(Coursec){......}}publicclassCourse{privateStudent[]classList;privateFacultyteacher;publicvoidaddStudent(Students){......}publicvoidsetTeacher(Facultyf){......}}publicclassFaculty{privateCourse[]courseList;publicvoidaddCourse(Coursec){......}}4.2聚合和组合聚合(聚集)是关联的一种特殊形式,代 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 两个对象之间的归属关系(hasa)。NameStudentAddress11..311组合聚合聚合(组合)也称为“整体-部分”关系,菱形画在“整体类”上。publicclassName{......}publicclassStudent{privateNamename;privateAddressaddress;}publicclassFaculty{......}聚合和组合关系默认是单向关系,只需在表示“整体”的类中编写描述关系的代码。5示例例 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 :编写程序帮助教师处理期末考试成绩,制作成绩单。说明:成绩单内容包括:课程名、教师名、班级名、班级所有学生的成绩、各分数段学生人数与百分比。其中每个学生的总评成绩为:考勤+测验+作业+期末考试6基本类型与包装类(10.7、10.8)基本数据类型的值不是对象,有时会带来不便。基本数据类型byteshortintlongfloatdoublechar包装类java.lang.Bytejava.lang.Shortjava.lang.Integerjava.lang.Longjava.lang.Floatjava.lang.Doublejava.lang.Character6基本类型与包装类(10.7、10.8)基本类型值与包装类对象之间可以进行自动类型转换。基本类型包装类对象,称为:装箱(boxing),例如:IntegerintObject=2;IntegerintObject=newInteger(2);包装类对象基本类型,称为:拆箱(unboxing),例如:intintValue=newInteger(10);7String类java.lang.String类将字符序列抽象成字符串.String类有13个构造方法和40多个方法.7.1构造字符串对象1.使用字符串直接量构造,例如:Stringmessage=newString(“welcometoJava”);3.字符串的快捷初始化方法,例如:Stringmessage=“welcometoJava”;2.使用字符数组构造,例如:char[]charArray={‘G’,‘o’,‘o’,‘d’,‘’,‘D’,‘a’,‘y’};Stringmessage=newString(charArray);7.2不可变字符串与限定字符串String对象是不可变的,其内容不能改变.为提高字符串效率,JVM将相同的字符串直接量存储在同一个对象中,称为“限定字符串”.7.2不可变字符串与限定字符串Strings=“welcometoJava”;Strings1=newString(“welcometoJava”);Strings2=s1.intern();Strings3=“welcometoJava”;System.out.println(“s1==sis”+(s1==s));System.out.println(“s2==sis”+(s2==s));System.out.println(“s3==sis”+(s3==s));:String“welcometojava”限定字符串对象:String“welcometojava”String对象输出结果:s1==sisfalses2==sistrues3==sistrue7.3字符串的替换和分隔Stringtrim()Stringreplace(charoldChar,charnewChar)StringreplaceFirst(StringoldString,StringnewString)StringreplaceAll(StringoldString,StringnewString)String[]split(Stringdelimiter)实例代码演示7.4使用模式匹配、替换和分隔正则表达式(regularexpression,regex)是一个字符串,用来描述字符串匹配的模式.通过使用正则表达式,可以:测试字符串内的模式。如,可以测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证。替换文本。可以使用正则表达式来识别文档中的特定文本,完全删除该文本或者用其他文本替换它。基于模式匹配从字符串中提取子字符串。可以查找文档内或输入域内特定的文本7.4使用模式匹配、替换和分隔以String类的matches方法为例:"java".matches("java");"java".equals("java");使用模式匹配:"javaisfun".matches("java.*");"javaiscool".matches("java.*");"javaispowerful".matches("java.*");补充:正则表达式说明面向对象程序设计-ObjectOrientedProgramming20正则表达式中的字符xThecharacter x\\Thebackslashcharacter\tThetabcharacter('\u0009')\nThenewline(linefeed)character('\u000A')\rThecarriage-returncharacter('\u000D')\fTheform-feedcharacter('\u000C')\aThealert(bell)character('\u0007')\eTheescapecharacter('\u001B')正则表达式包括:直接字符和特殊字符.参见:API文档java.util.regex.Pattern的说明补充:正则表达式说明面向对象程序设计-ObjectOrientedProgramming21Characterclasses[abc]a, b,or c (simpleclass)[^abc]Anycharacterexcept a, b,or c (negation)[a-zA-Z]a through z or A through Z,inclusive(range)[a-d[m-p]]a through d,or m through p: [a-dm-p] (union)[a-z&&[def]]d, e,or f (intersection)[a-z&&[^bc]]a through z,exceptfor b and c: [ad-z] (subtraction)[a-z&&[^m-p]]a through z,andnot m through p: [a-lq-z](subtraction)补充:正则表达式说明面向对象程序设计-ObjectOrientedProgramming22Predefinedcharacterclasses.Anycharacter(mayormaynotmatch lineterminators)\dAdigit: [0-9]\DAnon-digit: [^0-9]\sAwhitespacecharacter: [\t\n\x0B\f\r]\SAnon-whitespacecharacter: [^\s]\wAwordcharacter: [a-zA-Z_0-9]\WAnon-wordcharacter: [^\w]补充:正则表达式说明面向对象程序设计-ObjectOrientedProgramming23GreedyquantifiersX?X,onceornotatallX*X,zeroormoretimesX+X,oneormoretimesX{n}X,exactly n timesX{n,}X,atleast n timesX{n,m}X,atleast n butnotmorethan m times实例代码演示7.4使用模式匹配、替换和分隔String类的替换方法replaceAll方法替换字符串中匹配的所有字符串replaceFirst方法替换字符串中匹配的第1个字符串例如:"JavaJavaJava".replaceAll("v\\w","wi");"JavaJavaJava".replaceFirst("v\\w","wi");面向对象程序设计-ObjectOrientedProgramming247.4使用模式匹配、替换和分隔面向对象程序设计-ObjectOrientedProgramming25publicString[]split(String regex,int limit)根据匹配给定的正则表达式来拆分此字符串。regex正则表达式,用作分隔符limit参数控制模式应用的次数,因此影响所得数组的长度。-如果该限制n大于0,数组的长度将不会大于n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。-如果n为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。7.4使用模式匹配、替换和分隔面向对象程序设计-ObjectOrientedProgramming26例如,字符串"boo:and:foo"使用这些参数可生成以下结果:{"b","",":and:f"}0o{"b","",":and:f","",""}-2o{"b","",":and:f","",""}5o{"boo","and","foo"}-2:{"boo","and","foo"}5:{"boo","and:foo"}2:结果LimitRegex7.4使用模式匹配、替换和分隔面向对象程序设计-ObjectOrientedProgramming27publicString[]split(String regex)根据给定正则表达式的匹配拆分此字符串。该方法的作用就像是使用给定的表达式和限制参数0来调用两参数split方法。因此,所得数组中不包括结尾空字符串。8StringBuilder/StringBuffer类面向对象程序设计-ObjectOrientedProgramming28StringBuilder和StringBuffer类提供了处理字符串的更灵活的办法.其对象创建后,可以对字符串缓冲区中进行追加、插入、删除、替换等操作。JDK5以后,StringBuilder与StringBuffer相似,不同点在于StringBuffer类的update方法是同步的.即多任务访问使用StringBuffer,而单任务访问使用StringBuilder更有效。8StringBuilder/StringBuffer类StringBuffer()构造一个其中不带字符的字符串缓冲区,其初始容量为16个字符。StringBuffer(intcapacity)构造一个不带字符,但具有指定初始容量的字符串缓冲区。StringBuffer(Stringstr)构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。面向对象程序设计-ObjectOrientedProgramming29StringBuffer类有3个常用的构造方法和30多个管理缓冲区或修改缓冲区内字符串的方法.8.1修改缓冲区中的字符串面向对象程序设计-ObjectOrientedProgramming301.追加操作publicStringBufferappend(DataTypevalue)StringBuffer类重载了多个append方法,可以将boolean、char、char数组、double、float、int、long、String等类型的值追加到字符串缓冲区。StringBufferstrBuf=newStringBuffer();strBuf.append(“Hello”);strBuf.append(‘’);strBuf.append(“world!”);strBuf.append(2008);System.out.println(strBuf);例如:输出结果:Helloworld!20088.1修改缓冲区中的字符串面向对象程序设计-ObjectOrientedProgramming312.插入操作publicStringBufferinsert(intoffset,DataTyped)StringBuffer类重载了多个insert方法,可以将boolean、char、char数组、double、float、int、long、String等类型的值插入到字符串缓冲区。StringBufferstrBuf=newStringBuffer(“WelcometoJava”);strBuf.insert(11,“HTMLand”);System.out.println(strBuf);例如:输出结果:WelcometoHTMLandJava8.1修改缓冲区中的字符串publicStringBufferdelete(intstart,intend)移除此序列的子字符串中的字符。publicStringBufferdeleteCharAt(intindex)移除此序列指定位置的char。publicStringBufferreverse()将此字符序列用其反转形式取代。publicStringBufferreplace(intstart,intend,Stringstr)使用给定String中的字符替换此序列的子字符串中的字符。publicvoidsetCharAt(intindex,charch)将给定索引处的字符设置为ch。面向对象程序设计-ObjectOrientedProgramming323.其他修改操作8.2StringBuffer类的其他方法publicStringtoString()返回此序列中数据的字符串表示形式。publicintcapacity()返回当前容量。容量指可用于最新插入的字符的存储量,超过这一容量就需要再次进行分配。publicintlength()返回长度(实际字符数)。publicvoidsetLength(intnewLength)设置字符序列的长度。可能会截断或补充null字符'\u0000'。publiccharcharAt(intindex)返回此序列中指定索引处的char值。面向对象程序设计-ObjectOrientedProgramming33课后工作深入理解类和对象的概念研究类之间的关系完成作业:圆之间的关系面向对象程序设计-ObjectOrientedProgramming34
本文档为【Lecture06:面向对象思考】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
正方体
暂无简介~
格式:ppt
大小:148KB
软件:PowerPoint
页数:34
分类:
上传时间:2022-05-11
浏览量:0