《IOS高级应用开发技术》实验报告二详细答案_第1页
《IOS高级应用开发技术》实验报告二详细答案_第2页
《IOS高级应用开发技术》实验报告二详细答案_第3页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、实验编号:2 四川师大OS应用开发技术实验报告_2017年9月2L日计算机科学学院 2015级_班实验名称:Swift类和子类姓名 学号:指导老师:_实验成绩:实验二_ Swift类和子类实验目的及要求用Swift语言编写类和子类,掌握类和子类的定义及使用实验内容 实现Person类:a) 要求具有 firstName, lastName , age, gender 等存储属性,fullName 计算属性;其中gen der是枚举类型 (male, female);b) 具有指定构造函数和便利构造函数 ;c) 两个Person实例对象可以用=和!=进行比较;d) Person实例可以直接用 p

2、rint输出;e) Person增加run方法(方法里面直接 print输出Person XXX is running;(2) 从Person分别派生 Teacher类和Student类:a) Teacher类增加属性title,实例可以直接用 print输出;b) Student类增加属性stuNo,实例可以直接用 print输出;c) Teacher和Student重载run方法(方法里面直接 print输出Teacher XXX isrunning 禾口 Student XXX is running)(3) 分别构造多个 Person、Teacher和Student对象,并将这些对象存入

3、同一个数组中;(4)新建一个协议 SchoolProtocol ,协议包括一个 department属性(Enum ,自己实现enum的定义)和 lendBook方法(随便写点内容,能区隔即可);(5)修改Teacher和Student ,让这两个类实现该协议(6)对数组执行以下要求a)分别统计 Person、Teacher和Student对象的个数并放入一字典中,统计完后输出字典内容;b)对数组按以下要求排序并输出:age、fullName、gender+age ;c)对数组进行穷举,调用每个对象的run方法,同时调用满足协议SchoolProtocol 对象的 lendBook 方法;3、

4、主要仪器设备及药品:iMac ( Mac OS、XCode)三.实验结果的分析与评价(该部分如不够填写,请另加附页)(1)找出从1-10000的所有质数,将找出的质数存入可变数组,对数组进行正反排序并输出结果(采用5种以上的方法实现);代码:func searchPrimNum() -> In tvar cha ngeArray = 2,3/定义可变数组var recordIsPrim = 0/用于记录判断质数for x in 4.10000 for y in 2.<x if x%y=0recordlsPrim+=1 breakif recordIsPrim=0 cha ngeAr

5、ray.appe nd(x)recordlsPrim=0retur n cha ngeArrayvar primNum = searchPrimNum()/升序排序primNum.sort()print("数组升序排列为:")prin t(primNum)*使其降序排列*/第一种实现数组降序排列方法func compare(m:l nt, n:l nt) -> Bool return m>nprimNum.sort(by: compare)print("第一种数组降序排列为:")prin t(primNum)/第二种 /primNum.sor

6、t(by: (m:l nt,n :l nt) -> Bool inreturn m>n)print("第二种数组降序排列为:")prin t(primNum)/ 第三种 /primNum.sort(m,n) ->Bool inreturn m>nprint("第三种数组降序排列为:")prin t(primNum)/ 第四种 /primNum.sort (m,n) inreturn m>nprint("第四种数组降序排列为:")prin t(primNum)/ 第五种 /primNum.sort(by:&

7、gt;)print("第五种数组降序排列为:")prin t(primNum)/ 第六种 /primNum.sort$0>$1print("第六种数组降序排列为:")prin t(primNum)运行结果:【花丸£人1U IK 1%47f iei, is.他,imf 11$,1B61,1171ra169171JJ777 9 2 1 1 J 6 B- B 2 4 5 6 7 8 9 0 1 1 1 1 171 1 277F1 31112枷3263 7 7 9 195 5 T B I z5 6 7 B 0 11 1 1 1 2 z9 7 7

8、751 90 27 83 9 13 了4'e暂 2i4i53 *1« 3919 3 0 17 5«sgex 5&z_?9 1-1112IrJl-3 9 7& 7 99 ' * H4 15 7 8-16 7 8 ft 11 1 1 1 ? 27 9 933 - 1130179777777 z 5 B 0 z 3 J 4 i - & 7 i 1 1 *1 1 1A1 1 1 9 9 J 9- cu 7 7 6 B X 2i 4 5 6 7 -9 0* 7 .3 7 3 9 3 借 157 零 13«» >52 1

9、_467&1 7 14 «>>> -*1797397 ,#、«7i035-»9 3d-24&-78_7 3 9 1 .1 3 7 4 s 6 7 0 0 . 111111121耶琲5晦质24 3 2- ) & 7 1>" > # >7 r_9339_?5 7 3 .5 4 Q- 112 3 4 5 73 9I 1193, M7, 42】* 547, 659f 797, 929, 1O39, 1151# 1259, 1373, 14B3,1583t1S1I, 1933, MS片197, 311,

10、431.557, Ml, 8e9j 时升1049 r 1153, 1277, 1531 14B7, 1597, 1696, 1MJ. lWt 2M3P叽433,56J,675,811t 94U2tl> 31714 59, 568,677,S2Lr 947,22儿 331, 443> 571, 6«34 B23, 953.1053 r 11的* 1279, 1399, 14B9t 16B1, 17OTtU31*1951»2069,14C9.149311M7j 1721.1847 r 197人 29B17皿 44気S27d轴儿1063, llBlf 12匝W2J.1

11、499-Jg 1661.1979,281,3-73791S2 5 7 w- 16 7 81 1111 1 29 117 A 4681 5&7 1902 > f A V _1 J 1 7 3-o- 00 j 制酉rBIlg 9 1 1 1 叢JJ >-«>-> 1 17 3 7d 9 14 7 1 4 6 7 Bd 89,lSlr 191,293MMl653787919449,Wt 6471 77” 91111129, 1249, 1367ri4tifJ573t 丄 69$. 1061» 19311 M璃 2143.K-Miamr徘列为*997

12、3, 997r 9949, 9M1, 9931. 9929, 9923, 9W7 , 9901, 98£7r 9BS3t 9871, 9B59t 9857, 弼51.97 M,的检9357,91W,M49r8929, B7舸,8677,酣旳#»3«7, B241.48 39 j w *Wi7, 9437, 9323, 9187,M43f8923,8779,H664,8517,B 377,9B33,4551±9319,9181,9041,8B93.«7£i, 866318527± 3和9829 j.9697,954 7 f94

13、31,93U,9173,9629, 8887 ,8753.8647, 旳】*9mt 9689t 95対* 9421, 4293f 9161, 9ei 8£6齐 87亿851J,8553,Ml* 9679, 953i# 9419, 勺叫 9157, 9011, 8863t S741, 8629, 8501, 8329,«T7( 叫打 941丸9281,9151, W07J 8A61B737,4467. &317,979 b9511,Wfl3, 9277,9U7#9M1,8B49t 8731, 函矢9787,. 964也 949 7, 939?, 9257, 9133,

14、 8999? 88阳* 叭化 8609, H44打 8297,97811 9643, 94911 9391, 9?41, 9127, B971, 8B37* ma, 359,S293r97旳 9631”94J9,9377 f9239,9109,8969. 88318707IS97484H( 8241,9767, W29, 9475, 3371, S2I7, 9103, 辟&齐 B821« Z699t «5«lf8429, 42B7r974 9W3, 也6 丁* 9349.9221, 9991 8951 j 88191869九8573,8423, 6273

15、r E J jl 9463*7 J* J p* 8941; 眈匚01“ t OtO J r97199613,5461,9341,920 b9«5比S933t8893.8681,H5B9, 8"丸(2)代码:/性别枚举enum Gen der:l ntcase malecase femalestatic func >(lhs: Gen der,rhs: Gen der) -> Bool return lhs.rawValue < rhs.rawValue/departme nt枚举enum Departme nt:Stri ngcase teachercas

16、e stude nt/协议 protocol SchoolProtocolfunc len dbook()var departme nt:Departme ntget set/人类 class Pers on: CustomStri ngCon vertiblevar fisrtName: Stringvar lastName: Stringlet age: Intvar gen der: Gen dervar fullname:String get return fisrtName + lastName/构造函数in it(fisrtName:Stri ng,lastName:Stri ng

17、,age:l nt,ge nder:Ge nder)self.fisrtName = fisrtName self.lastName = lastName self.age = age self.ge nder = gen der/便利构造函数convenience init(fisrtName:String,lastName:String)self.i nit(fisrtName:fisrtName,lastName:lastName,age:O,ge nder:Ge nder.male)II此两个函数用于使两个Person实例对象可以用=和!=进行比较; static func =(lhs

18、:Person,rhs:Person) -> Bool return lhs.full name = rhs.full name static func !=(lhs:Person,rhs:Person) -> Bool retur n !(lhs = rhs) func run()prin t("Pers on (self.full name) is runnin g")/使其直接用print输出var descripti on: Stri ngreturn "全名:'(fullname) 年龄:(age) 性别:(gender)"

19、/老师类 class Teacher:Pers on ,SchoolProtocolvar title: Stringvar departme nt:Departme ntin it(title:Stri ng,fisrtName:Stri ng,lastName:Stri ng,age:I nt,ge nder:Ge nder)self.departme nt = Departme nt.teacher self.title = title super.i nit(fisrtName:fisrtName,lastName:lastName,age:age,ge nder:ge nder)co

20、nvenience init(fisrtName:String,lastName:String) self.i nit(title:"hello,every on e",fisrtName:fisrtName,lastName:lastName,age:18,ge nder:.male)override var description:String return ” 标题:(title) (super.description)"override func run()prin t("Teacher (self.full name) is running &

21、quot;)func len dbook()print("Teacher (self.fullname) lend one book from library")/学生类class Stude nt:Pers on, SchoolProtocolvar stuNo: Intvar departme nt: Departme ntin it(stuNo:I nt,fisrtName:Stri ng,lastName:Stri ng,age:l nt,ge nder:Ge nder)self.stuNo = stuNoself.departme nt = Departme nt

22、.stude ntsuper.i nit(fisrtName:fisrtName,lastName:lastName,age:age,ge nder:ge nder)convenience init(fisrtName:String,lastName:String)self.i ni t(stuNo:100110,fisrtName:fisrtName,lastName:lastName,age:18,ge nder:Ge nder.female)override var description:String return "(super.description) 学号:(stuNo

23、)"/重写override func run()prin t("Stude nt (self.full name) is running ")func len dbook()print("Student (self.fullname) borrow one book from library") var t = Teacher(fisrtName:" 希",lastName:"有")var s = Student(fisrtName:" 珍",lastName:"琪琪&quo

24、t;)prin t(t)t.run()t.le ndbook()print("”)prin t(s)s.run()s.len dbook()var pl = Person(fisrtName:"贾",lastName:"丽",age:19,gender:Gender.female)var p2 = Person(fisrtName:"李",lastName:" 好",age:21,gender:Gender.male)/ var p2 = Pers on( fisrtName:"wa"

25、)print("")/ prin t(p2)/ prin t(p1)/ p2.ru n()/ p1.ru n()/ prin t(p1 != p2)/ prin t(p1 = p2) var recordArray = Perso n()/ 构造多个 Person、Teacher 和 Student 对象for i in 1.2 let temporaryArrayPers on",age:i+30,ge nder:Ge nder.male)Perso n(fisrtName:"(i)",lastName:"recordArray.a

26、ppe nd(temporaryArrayPers on)/分别统计 Person、Teacher和Student对象的个数并放入一字典中 for i in 1.3 let temporaryArrayTeacher = Teacher(title:"你好",fisrtName:"(i)",lastName:" ",age:i+18,ge nder:.male)recordArray.appe nd(temporaryArrayTeacher) for i in 1.4 let temporaryArrayStude nt = Stu

27、de nt(stuNo:10000+i,fisrtName:"(i)",lastName:" ",age:i+12,ge nder:.female)recordArray.appe nd(temporaryArrayStude nt)var dictio nary = "Perso n":O,"Teacher":O,"Stude nt":O /prin t(dict ion ary)/ prin t(recordArray)for traverseArray in recordArrayif t

28、raverseArray is Stude nt dictio nary"Stude nt"! += 1else if traverseArray is Teacher dict ion ary"Teacher"! += 1elsedictio nary"Perso n"! += 1/输出字典内容print("输出字典内容:")for(key,value) in dict ion aryprin t("(key) : (value)个")/按照age排序:print("age"

29、;) recordArray.sort(by:return $0.age < $1.age) for traverseArray in recordArray prin t(traverseArray)print(”fullName”)recordArray.sort(by:return $0.fullname < $1.fullname)for traverseArray in recordArray prin t(traverseArray)print("gender+age")recordArray.sortreturn ($0.gender > $1.gender) && ($0.age > $1.age)for traverseArray

温馨提示

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

评论

0/150

提交评论