程序设计基础课程在线作业批改系统的设计与实现设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目程序设计基础课程在线作业批改系统的设计与实现学生姓名赵莹学号1118014094
所在学院数学与计算机科学技术学院
专业班级计算机科学与技术1103班
指导教师李军
完成地点陕西理工学院
2015年 6月13日
本科毕业设计任务书
院(系) 数学与计算机科学学院专业班级计算机科学与技术(计本1103)学生姓名赵莹
一、毕业设计题目程序设计基础课程在线作业批改系统的设计与实现
二、毕业设计工作自 2014 年 12 月_ 29_日起至 2015 年 6 月 20 日止
三、毕业设计进行地点: 陕西理工学院
四、毕业设计内容要求:
设计一个程序设计基础课程在线作业提交及批阅系统.系统要求能够实现学生在线提交
作业、教师在线批阅、学生能够在线查阅教师批阅的反馈意见;学生可以通过这个系统实现与
教师的相互通讯,学生在线向教师提问、教师在线回答学生的问题.
开题时间:2015年3月15日,并于此前提交开题报告
课题完成时间:2015年5月30日
答辩时间:2015年6月10前
指导教师系(教研室)计算机工程教研室
系(教研室)主任签名批准日期 2015-01—05 接受设计任务开始执行日期 2015—01—05 学生签名赵莹
程序设计基础课程在线作业批改系统的设计与实现
赵莹
(陕西理工学院数学与计算机科学学院计算机科学与技术专业1103班)
指导教师:李军
[摘要] 为了使教师批改作业更高效、更科学,开发了一款基于JSP的在线作业批改系统.系统可以实现学生在线提交作业,教师在线批阅作业,学生可以在线查阅教师的反馈意见,给教师留言提出自己的疑惑,教师可以解答学生的问题。
[关键词] 在线作业批改;结构化分析;JSP
Design and Implementation of Online Homework System
for Fundamental Programming
Zhao Ying
(Grade 03,Class 11,Major Computer Science and Technology,School of Mathematics Science,Shaanxi University of Technology,Hanzhong 723000,Shaanxi)
Tutor: Li Jun
Abstract:In order to make the teacher correct s tudents’ papers, more efficient, more scientific,an online homework system was developed based on JSP. The system can realize the student to submit homework online, the teacher marking homework online, students can refer to teachers’ feedback,leave a message to the teachers put forward their own doubts online, and teachers can solve the problems of students.
Key words:online homework; structured analysis; JSP
目录
1引言 0
2需求分析 0
2。
1系统的功能描述 0
2.1.1管理员功能模块 (1)
2.1.2教师功能模块 (1)
2.1.3学生功能模块 (1)
2。
2可行性分析 (1)
2.2.1经济性可行性 (1)
2。
2。
2技术可行性 (2)
2.2。
3 操作可行性 (2)
3系统设计 (3)
3。
1系统功能设计 (3)
3。
2.业务流程设计 (3)
3.3系统数据库设计 (4)
3。
3.1概念结构设计 (4)
3。
3。
2数据库表设计 (6)
4 系统实现 (9)
4。
1系统管理员登录模块 (9)
4.1.1登录 (9)
4。
1。
2 基本操作 (9)
4.1。
3 课程管理界面 (10)
4.1。
4添加学生界面 (10)
4。
1.5教师管理界面 (11)
4.2 学生模块 (11)
4。
2.1 答题界面 (11)
4.2.2 成绩查询界面 (11)
4.2.3作业查询界面 (12)
4.2。
4留言板界面 (12)
4.3 教师模块 (13)
4.3。
1 开始批阅界面 (13)
4。
3。
2题库管理界面 (13)
4。
3.3作业管理界面 (13)
4.3。
4留言板管理界面 (14)
5软件测试与分析 (15)
5。
1 软件测试的重要性 (15)
5.2 测试实例的研究与选择 (15)
5。
3 测试环境与测试条件 (15)
5。
4 系统运行情况 (15)
5。
5 系统评价 (16)
6 总结 (17)
致谢 (18)
参考文献 (19)
科技外文文献 (20)
附录A:源程序代码 (29)
附录B:系统使用说明 (32)
1引言
检查学习计算机信息技术成效的方式有很多,作业是其中比较有效的方式之一。
布置作业、提交作业和批改作业是教师授课过程中一个非常重要的环节,它可以帮助教师布置和管理作业,掌握学生学习情况,以便于有针对性的帮助同学提高学习成绩,并及时发现学生在学习中遇到的问题以及自己教学中可能存在的问题,从而采取有效的措施对问题和不足进行解决.同时通过在线的完成作业,学生可以对自己的作业有一个统一的管理,便于在以后的学习时进行查找,同时也可以了解自己一段时间内的各门功课的学习情况,通过及时调整自己的学习方法,达到提高学习成绩的目的。
程序设计基础课程在线作业批改系统的主要目标是实现学生在线提交作业,在线查阅教师批阅的反馈意见,并且能够向老师提问;教师能够在线批阅,并且回答学生的问题。
这样既减轻了教师与学生的任务量,又提高了效率,同时也有利于教师与学生之间的相互通讯,更方便、更快捷地解决学生的疑难问题.
2需求分析
2.1系统的功能描述
在线作业批改系统有管理员,教师和学生三个功能模块.管理员可以对课程,学生以及教师等进行管理操作;教师可以批阅作业,查看留言并回复;学生在线提交作业,查询作业批阅以及发表并查看留言。
2。
1。
1管理员功能模块
此模块包括基本权限、课程管理、学生教师管理这三个部分。
1)基本权限:此模块包括系统属性、密码修改这两个部分.
①、系统属性:系统的基本信息,如操作系统版本、操作系统类型,用户,目录,临时
目录,JDK版本等。
②、密码修改:管理员可以对密码进行修改。
2)课程管理:此模块包括课程管理和课程录入这两个部分。
①、课程管理:对课程的基本信息进行添加和删除的操作。
②、课程录入:对课程的基本信息进行录入。
3)学生教师管理:此模块包括学生管理和教师管理这两个部分.
①、学生管理:对学生进行添加及删除的操作。
①、教师管理:对教师进行添加剂删除的操作。
2。
1。
2教师功能模块
此模块包括题库管理、作业管理、批阅作业,成绩统计、留言板这五个部分。
1)题库管理:此模块包括题库管理和题目录入这两个部分.
①、题库管理:对课程进行选择.
②、题目录入:对课程的题型进行选择。
2)作业管理:此模块包括作业管理和作业录入这两个部分。
①、作业管理:对作业进行删除,查看,以及添加的操作.
②、作业录入:对作业的章节及内容的录入。
3)批阅作业:对学生的作业进行批阅。
4)成绩统计:此模块包括成绩统计。
①、成绩统计:对学生作业的完成情况进行统计,学生的作业都会被打分,并且会被排名(用平均分进行降序排列).
5)留言板:查看学生的提问,并回答学生的问题。
2.1.3学生功能模块
此模块包括开始答题,分数查询、作业查询、留言板这四个部分。
1)完成作业:学生完成教师布置的作业。
2)分数查询:学生可以查询作业的完成情况及教师的反馈(以分数的形式反馈).
3)作业查询:学生可以查询作业进行回顾。
4)留言板:学生可以向教师提问,并且可以看到教师的解答。
2。
2可行性分析
可行性分析也称为可行性研究,其目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决.
下面将分别从经济、技术、操作三个方面对在线作业批改系统的建设进行分析和研究。
2.2.1经济性可行性
学校具有信息化的处理设施,并且拥有支持本系统的应用平台。
因此无需再投入资金购买其他设施。
系统的开发基于本人对程序开发的实践学习而来,学校无需资金投入,并且软件开发过程投入的成本不高,因此开发经费完全可以接受。
由以上分析可知,在线作业批改系统在经济上是可行的。
2.2.2技术可行性
根据学校提出的系统功能、性能及实现系统的各种约束条件,根据新系统目标来衡量所需的技术是否具备,本系统是一个数据库管理和查询的系统,现有的技术已较为成熟,硬件、软件的性能要求、环境条件等各项条件良好,估计利用现有技术条件应完全可以达到该系统的功能目标。
同时,考虑给予的开发期限也较为充裕,预计系统是可以在规定期限内完成开发的。
由以上分析可知,程序设计基础课程在线作业批改系统的开发在技术上是可行的.
2。
2。
3 操作可行性
该系统界面美观,配置简单,易于操作。
3系统设计
3。
1系统功能设计
系统总体分为三个模块,管理员,教师和学生登录模块.登陆模块不同,对应的功能也不同.
图3。
1 系统功能模块图
3.2。
业务流程设计
在进行业务流程分析时,需要按照原有信息流动过程,逐个地调查分析所有环节的处理业务、处理内容、处理顺序和对处理时间的要求,弄清各个环节需要的信息、信息来源、流经去向、处理方法、计算方法、提供信息的时间和信息形态(报告、报单、屏幕显示)等[4]。
业务流程分析可以帮助开发者了解该业务处理过程,发现和处理系统调查工作中的错误和疏漏。
业务流程分析是通过业务流程图来进行,即用一些规定的符号及连线来表示某个具体业务处理过程。
具体业务流程如图3.2所示。
图3。
2 业务流程图
3.3系统数据库设计
数据库是本系统的核心和基础。
它设计的好坏直接影响着整个系统的质量。
数据是一切系统设计的基础,通俗地说,数据库设计就像高楼大厦的根基一样,如果设计的不合理、不完善,将在系统开发过程中,甚至到后期的系统维护、功能变更和功能扩充时,引起较多问题,严重时甚至要重新设计,重做大量已完成工作。
3。
3.1概念结构设计
从数据需求分析中得出系统的实体属性图。
管理员实体属性图如图3.3所示:
图3。
3 管理员实体属性图
课程实体属性图如图3.4所示:
图3。
4 课程实体属性图
分数实体属性图如图3。
5所示:
图3。
5 分数实体属性图
作业实体属性图如图3.6所示:
图3。
6 作业实体属性图
学生实体属性图如图3.7所示:
图3.7 学生实体属性图
教师实体属性图如图3。
8所示:
图3.8 学生实体属性图
题目实体属性图如图3。
9所示:
图3.9 题目实体属性图
E-R模型的组成元素有:实体、属性、联系。
E—R模型用E—R图表示.实体是用户工作环境中所涉及的事务,属性是对实体特征的描述。
(1)模型中的实体相当于实体集、一个表,而不是单个实体或表中的一行.实体用矩形框表示,实体名称标注在矩形框内.用菱形表示实体间的联系,菱形框内写上联系名,用无向边把菱形
分别与有关实体相连接,在无向边旁标上联系的类型。
(2)属性是实体的性质。
用椭圆框表示,与实体之间用一条线相连表的主码是关键属性,关键属性项加下划线。
(3)各子系统模块中主键相同的字段之间存在着相互关联的关系.
(4)在程序中实现对他们的完整性和一致性控制。
从数据需求分析中得出系统的实体属性图,遵循三范式原则,对实体之间的依赖关系进行了整合,得出系统E-R图,如图3.10所示:
图3.10 系统E-R图
说明:图中用矩形表示实体。
实体之间的关系用菱形表示,用无向边把菱形与有关实体连接,在边上标明联系的类型。
实体的属性用椭圆表示,并用无向边把实体与属性联系起来。
3。
3.2数据库表设计
表4.1 管理员信息表
字段名类型
长
度
说明
id Int 4 管理员编号(主键) name varchar 30 用户名
pwd varchar 20 用户密码
说明:用户表用于存放管理员的信息。
表4。
2 课程信息表
字段名类型
长
度
说明
id Int 4 编号(主键)name varchar 20 名称
Xueshi Int 4 学时
Beizhu varchar 50 备注
说明:用于存放课程的基本信息。
表4.3 分数信息表
字段名类型
长
度
说明
id Int 4 分数编号(主键)shiti_id Int 4 作业编号(外键)Stu—id Int 4 学生编号(外键)Grade Int 4 分数
说明:分数信息表用来存放分数的基本信息。
表4.4作业信息表
字段名数据类型长度功能描述
id Int 4 编号(主键)
Name varchar 20 作业名称
Jieshao varchar 100 介绍
Time Datetime 8 时间
Beizhu varchar 100 备注
说明:试题信息表用来存放作业的基本信息.
表4。
5 学生信息表
字段名
数据
类型
长度功能描述
id Int 4 编号(主键) Stu—id Int 4 学号
name varchar 20 登录名
Age Int 4 年龄truename varchar 8 姓名
sex varchar 2 性别Password varchar 30 密码
Add varchar 20 出生地
说明:学生信息表用来存放学生的基本信息的。
表4。
6 教师信息表
字段名
数据
类型
长度功能描述
id Int 4 编号(主键)name varchar 20 登录名
Tea-id Int 4 教师号
truename varchar 8 姓名
sex varchar 2 性别
Password varchar 30 密码
说明:教师信息表用来存放教师的基本信息的。
表4.7题目信息表
字段名
数据
类型
长度功能描述
id Int 4 题目编号(主键) name varchar 20 题目名称
Leixing varchar 20 题目类型
A varchar 50 A
B varchar 50 B
C varchar 50 C
D varchar 50 D
Daan varchar 200 答案
fenshu Int 4 分数
Kecheng-id Int 4 课程编号(外键)说明:题目信息表用于存放题目的信息。
4 系统实现
4。
1系统管理员登录模块 4。
1。
1登录
(1)登录模块
此模块主要功能是用于登录本系统,不同权限的用户登录本系统会进入不同的管理模块界面,因为在后台对该用户进行的判断,首先将从前台页面提交的用户名和密码进行接受,之后在后台进行处理,按照用户名在数据库中进行查询,如果查到该用户则将该用户的权限和密码全都取出来分别赋给两个字符串变量,判断从数据库中读出的密码与登录时输入的密码是否配比上,若两个密码相同则根据权限的值进入相应的页面,否则输出密码错误。
若用户未被管理员分配好权限那么也是无法登录本系统的。
如图4.1所示:
图4。
1登录界面
(2)程序流图
用户名密码是否
正确
N
返回登录页面
进入主页
面
Y
用户登录
开始
结束
图4.2登录程序流程图
4。
1。
2 基本操作
基本操作包括系统属性和密码修改这两个部分.如图4。
3和图4.4所示:
图4。
3系统基本信息图
图4.4系统基本信息图
4.1。
3 课程管理界面
系统管理员登录本系统后可以管理课程信息。
如图4。
5和图4.6所示:
图4。
5课程管理界面
图4。
6课程管理录入界面
4.1。
4添加学生界面
系统管理员登录本系统后,可以添加学生信息。
如图4。
11所示:
图4。
11添加学生界面
4.1。
5教师管理界面
系统管理员登录本系统后,可以管理老师信息.如图4.12所示:
图4。
12教师管理界面
4.2 学生模块
4.2.1 答题界面
学生登录本系统后,可以进行,如图4.13所示:
图4。
13答题界面
4.2.2 成绩查询界面
成绩查询界面如图4.14所示:
图4。
14成绩查询图4。
2.3作业查询界面
作业查询界面如图4。
15所示:
图4。
15作业查询图4。
2.4留言板界面
(1)发表留言界面如图4.16所示:
图4.16发表留言图
(2)(2查看留言界面如图4。
17所示:
图4.17查看留言图
4。
3 教师模块
4。
3.1 开始批阅界面
评分教师登录本系统后,可以开始批阅。
如图4.17所示:
图4.17作业批阅界面
4.3.2题库管理界面
系统管理员登登录本系统后,可以管理题库信息。
如图4.7和图4。
8所示:
图4.7题目管理界面
图4.8课程管理录入界面
4。
3.3作业管理界面
系统管理员登录本系统后,可以对作业进行管理。
如图4。
9和图4.10所示:
图4.9作业管理界面
图4。
10作业管理录入界面
4。
3.4留言板管理界面
打开留言板管理界面,教师可以查看学生留言,并且可以回复.如图4.15所示:
图4。
18留言板管理界面
5软件测试与分析
测试是开发时期最后一个阶段,是保证软件质量的重要手段.软件测试就是在受控制的条件下对系统或应用程序进行操作并评价操作结果的过程,所谓控制条件应包括正常条件与非正常条件。
软件测试过程中应该故意地去促使错误的发生,也就是事情在不该出现的时候出现或者在应该出现的时候没有出现。
从本质上说,软件测试是”探测”,在“探测"中发现软件的毛病。
5.1 软件测试的重要性
软件测试在软件生命周期中占据重要的地位,在传统的瀑布模型中,软件测试学仅处于运行维护阶段之前,是软件产品交付用户使用之前保证软件质量的重要手段。
近来,软件工程界趋向于一种新的观点,即认为软件生命周期每一阶段中都应包含测试,从而检验本阶段的成果是否接近预期的目标,尽可能早的发现错误并加以修正,如果不在早期阶段进行测试,错误的延时扩散常常会导致最后成品测试的巨大困难。
事实上,对于软件来讲,不论采用什么技术和什么方法,软件中仍然会有错.采用新的语言、先进的开发方式、完善的开发过程,可以减少错误的引入,但是不可能完全杜绝软件中的错误,这些引入的错误需要测试来找出,软件中的错误密度也需要测试来进行估计。
测试是所有工程学科的基本组成单元,是软件开发的重要部分。
自有程序设计的那天起测试就一直伴随着。
统计表明,在典型的软件开发项目中,软件测试工作量往往占软件开发总工作量的40%以上。
而在软件开发的总成本中,用在测试上的开销要占30%到50%。
如果把维护阶段也考虑在内,讨论整个软件生存期时,测试的成本比例也许会有所降低,但实际上维护工作相当于二次开发,乃至多次开发,其中必定还包含有许多测试工作.
5.2 测试实例的研究与选择
程序测试的主要方法分为两大类,白盒测试和黑盒测试。
白盒测试:一种是以程序的内部逻辑结构为依据而设计测试用例的方法,因而又称结构测试或玻璃盒测试,将软件看成一个透明的白盒子,按照程序的内部结构和处理逻辑来选定测试用例,对软件的逻辑路径及过程进行测试,检查它与设计是否相符.白盒测试就是要选取足够的测试用例,对源代码实行比较充分的覆盖,以便尽可能多地发现程序中的错误。
主要有两种方法:一种称为逻辑覆盖法,另一种称为路径覆盖法.
黑盒测试:也称功能测试,数据驱动测试等,它将待测对象堪称是一个黑盒子,在完全不考虑程序的内部结构和特性的情况下,只依据规格说明书检查程序的功能是否能正常使用.
黑盒测试主要是根据输入条件和输出条件的确定测试数据,来检查程序是否能产生正确的输出。
进行黑盒测试主要有下面几种方法:等价分类法、边界值分析法、猜错法、因果图法。
本系统的测试综合了白盒测试、黑盒测试两种方法,但主要使用的是黑盒测试方法。
在测试当中遵循了“尽早地和不断进行测试”,“保证测试用例的完整性和有效性”原则。
通过测试达到以下测试目的:
1。
功能检查:检查功能是否争取,是否遗漏或实现不了应该实现的功能等。
2接口检查:检查能否正确地接受信息或输出信息。
3数据检查:检查数据结构或外部信息是否有(如数据文件)访问错误。
4性能检查:检查性能需求能否得到满足。
5初始化、终止检查:检查是否能进行正确地初始化或终止.
5。
3 测试环境与测试条件
处理器:Inter(R) Core (TM)2 Duo T5750
内存:2GB
硬盘:160G
操作系统:Windows XP
数据库:SQL Server 2000
5.4 系统运行情况
通过对系统的全面测试,所有测试条目都已经通过,实现了基本要求,系统可以正常运行.
5。
5 系统评价
系统评价是指系统在正式运行了一段时间之后,对它在功能上、技术上和经济上所进行的审核评价。
针对本系统的评价如下:
(1)系统功能评价
根据本系统开发前所订的目标,在系统完成后经过测试运行,该系统达到了预定的开发目标,在实际使用中的功能可以满足用户需求。
(2)系统技术评价
本系统设计合理,功能达到了预期目标,且系统运行后稳定可靠,安全性高,具有实用性,大大提高了信访办公效率。
(3)系统经济评价
在规定时间内,该系统完成了系统分析时所确定的系统开发目标,达到了设计要求,投入使用后为用户节省了大量人力物力财力,提高了科学管理水平。
6 总结
经过努力,我的毕业设计终于完成了.此系统能够完成作业的布置提交与批阅,而且学生和教师可以通过留言板互动。
在完成此系统过程中,深入研究了一些开发中需要的关键技术,最后按照软件工程结构化分析方法进行系统的分析设计,其中工作主要有:
⑴研究了JSP技术,深入分析了在Web信息系统中JSP的具体应用.
⑵对系统作了详细的需求分析,分析过程中运用了软件工程的思想,设计了包括数据字典、系统数据流图等。
⑶通过对业务的分析进行了数据库的设计,在数据库设计过程中详细调查了一些字段的取值并将具体选值给出。
⑷详细研究了系统开发中的设计模式,分析和探讨了如何将设计模式有效应用于系统开发。
由于时间的关系,系统还有很多有待完善和优化的地方,如,课程与老师之间没有相应的对应关系,留言板上没有显示发表人的姓名,我会不断努力,将其改善,使在线作业批改系统更加完善。
致谢
在毕业设计完成之际,衷心感谢我的毕也设计指导老师—李老师。
从毕业设计选题、如何开展到如何深入的过程中,老师一直给予我悉心的指导.当我每次有所疑惑,老师都会给予我悉心开导与帮助。
在此,再次衷心感谢老师,也感谢所有帮助过我的人。
参考文献
[1] 陈雷,尚冰,杨光等。
教师教学档案信息管理系统的设计研究[J]。
辽宁中医学院学报(第五卷第4期),2003年11月.
[2]滕佳东。
管理信息系统[M].东北财经大学出版社.2008。
2.
[3]甘仞初,颜志军,龙虹。
信息系统分析与设计[M]。
北京:高等教育出版社,2003.
[4]孙卫琴,李洪成。
Tomcat与Java Web 开发技术详解[M]。
北京:电子工业出版社,2003年6月
[5]孙一林,彭波.Java数据库编程实例[M]. 北京:清华大学出版社,2002年8月
[6]耿祥义,张跃平.JSP实用教程[M]。
北京:清华大学出版社,2003年5月1日
[7]萨师煊,王珊.数据库网站概论[M]。
北京:高等教育出版社,2002年2月
[8]刘长炯。
MyEclipse8。
5开发中文教程[M]。
北京:新华大学出版社,2009年6月
[9]赵翀,孙宁.软件测试:基于案例的测试[M].北京:机械工业出版社,2011.04
[10]张海藩.软件工程导论(第五版) [M].北京:清华大学出版社,2008.02
科技外文文献
12。
隐式代码.
本章节包含了两个特性,允许简化代码。
它们的目标是不同的:键值编码(12。
1节)可以解决一个间接的方法调用,通过选择第一个有效的匹配实现,虽然属性(参看12.2节58页)可以让编译器生一些“粘合剂”,无聊的代码.
键值编码实际上被Cocoa提供的设施是被Cocoa,虽然属性的概念是语言本身的一部分,在objective - c2。
0中增加的.
12。
1键值编码
12。
1.1原则
键值编码的实践是访问一个数据成员的值通过它的名称。
这是一种类似于关联数组(NSDictionary,参见11。
1节54页),数据成员的名称是关键。
类NSObject提供了方法名为valueForKey:和setValue:forKey:.如果数据成员对象本身,勘探深度可以做,在这种情况下,关键必须是一个“keypath”,这些组件以圆点分隔。
方法使用valueForKeyPath:和setValue:forKeyPath:。
由于语法,可以使用相同的代码来管理不同的一些对象类使用相同的名称的实例数据.最好的用例是能够将数据绑定(它的名字)一些触发器(尤其是方法调用),键值的观察(KVO),这里不详细。
12.1。
2拦截
通过调用valueForKey:访问数据或setValue:forKey:不是一个原子操作。
这种访问符合调用协定过程。
事实上,这只访问是可能的如果实现了一些方法(这些方法可能是使用时自动生成属性,参见12.2节在下一个页面上),或者直接访问实例数据影响允许的.
苹果的文档描述精确的行为valueForKey:和setValue:forKey:[3]。
调用valueForKey:@“foo”。
•如果它存在,叫getFoo方法。
•否则,如果它存在,调用该方法foo(最常见);
•否则,如果它存在,调用该方法isFoo(常见的布尔值);
•否则,如果类返回是的accessInstanceVariablesDirectly的方法,试一试读取数据成员(如果它存在的话)_foo,否则_isFoo,否则foo,否则isFoo;
•在前一步成功,返回匹配值;
•在失败的情况下,该方法valueForUndefinedKey:调用;有一个默认实现NSObject抛出一个异常.
调用setValue:。
forKey:@“foo”
•如果它存在,调用方法setFoo:;
•否则,如果类返回是的accessInstanceVariablesDirectly的方法,试一试编写数据成员(如果它存在的话)_foo,否则_isFoo,否则foo,否则isFoo;
•在失败的情况下,该方法setValue:forUndefinedKey:叫做;有一个默认实现NSObject抛出一个异常.
请注意,调用valueForKey:或者setValue:forKey:可以用来触发任何兼容的方法,可能没有数据成员,它可以是“假”。
例如,调用valueForKey:@“长度"字符串调用语义上等价直接长度的方法,因为它是第一个将发现解决知识的时候。
然而,现有的性能显然是不如直接方法调用,而且必须建议使用.
12.1。
3 Prototypes
使用现有的需要符合预期的原型的方法叫做:getter方法没有参数和返回一个对象,设置有一个对象作为参数和不返回任何内容。
参数的具体类型的原型,因为它没有真正的重要性类型的id。
请注意结构和原生类型(int、浮动。
)支持:objective — cobjective — c运行时能够进行。