




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
陕西理工学院毕业设计题 目 程序设计基础课程在线作业批改系统的设计与实现 学生姓名 赵莹 学号 所在学院 数学与计算机科学技术学院 专业班级 计算机科学与技术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的在线作业批改系统。系统可以实现学生在线提交作业,教师在线批阅作业,学生可以在线查阅教师的反馈意见,给教师留言提出自己的疑惑,教师可以解答学生的问题。关键词 在线作业批改;结构化分析;JSPDesign and Implementation of Online Homework System for Fundamental ProgrammingZhao Ying(Grade 03, Class 11, Major Computer Science and Technology, School of Mathematics Science, Shaanxi University of Technology, Hanzhong ,Shaanxi)Tutor: Li JunAbstract:In order to make the teacher correct students 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引 言12需求分析22.1系统的功能描述22.1.1管理员功能模块22.1.2教师功能模块22.1.3学生功能模块22.2可行性分析22.2.1经济性可行性22.2.2技术可行性32.2.3 操作可行性33系统设计43.1系统功能设计43.2.业务流程设计43.3系统数据库设计53.3.1概念结构设计53.3.2数据库表设计74 系统实现104.1系统管理员登录模块104.1.1登录104.1.2 基本操作114.1.3 课程管理界面114.1.4添加学生界面114.1.5教师管理界面124.2 学生模块124.2.1 答题界面124.2.2 成绩查询界面124.2.3作业查询界面134.2.4留言板界面134.3 教师模块144.3.1 开始批阅界面144.3.2题库管理界面144.3.3作业管理界面144.3.4留言板管理界面155软件测试与分析165.1 软件测试的重要性165.2 测试实例的研究与选择165.3 测试环境与测试条件165.4 系统运行情况175.5 系统评价176 总结18致谢19参 考 文 献20科技外文文献21附 录A:源程序代码30附 录B:系统使用说明331引 言检查学习计算机信息技术成效的方式有很多,作业是其中比较有效的方式之一。布置作业、提交作业和批改作业是教师授课过程中一个非常重要的环节,它可以帮助教师布置和管理作业,掌握学生学习情况,以便于有针对性的帮助同学提高学习成绩,并及时发现学生在学习中遇到的问题以及自己教学中可能存在的问题,从而采取有效的措施对问题和不足进行解决。同时通过在线的完成作业,学生可以对自己的作业有一个统一的管理,便于在以后的学习时进行查找,同时也可以了解自己一段时间内的各门功课的学习情况,通过及时调整自己的学习方法,达到提高学习成绩的目的。程序设计基础课程在线作业批改系统的主要目标是实现学生在线提交作业,在线查阅教师批阅的反馈意见,并且能够向老师提问;教师能够在线批阅,并且回答学生的问题。这样既减轻了教师与学生的任务量,又提高了效率,同时也有利于教师与学生之间的相互通讯,更方便、更快捷地解决学生的疑难问题。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 管理员信息表字段名类型长度说明idInt4管理员编号(主键)namevarchar30用户名pwdvarchar20用户密码说明:用户表用于存放管理员的信息。表4.2 课程信息表字段名类型长度说明idInt4编号(主键)namevarchar20名称XueshiInt4学时Beizhuvarchar50备注说明:用于存放课程的基本信息。表4.3 分数信息表字段名类型长度说明idInt4分数编号(主键)shiti_idInt4作业编号(外键)Stu-idInt4学生编号(外键)GradeInt4分数说明:分数信息表用来存放分数的基本信息。表4.4作业信息表字段名数据类型长度功能描述idInt4编号(主键)Namevarchar20作业名称Jieshaovarchar100介绍TimeDatetime8时间Beizhuvarchar100备注说明:试题信息表用来存放作业的基本信息。表4.5 学生信息表字段名数据类型长度功能描述idInt4编号(主键)Stu-idInt4学号name varchar20登录名AgeInt4年龄truename varchar8姓名sex varchar2性别Password varchar30密码Add varchar20出生地说明:学生信息表用来存放学生的基本信息的。表4.6 教师信息表字段名数据类型长度功能描述idInt4编号(主键)namevarchar20登录名Tea-idInt4教师号truenamevarchar8姓名sexvarchar2性别Passwordvarchar30密码说明:教师信息表用来存放教师的基本信息的。表4.7题目信息表字段名数据类型长度功能描述idInt4题目编号(主键)namevarchar20题目名称Leixingvarchar20题目类型Avarchar50ABvarchar50BCvarchar50CDvarchar50DDaanvarchar200答案fenshuInt4分数Kecheng-idInt4课程编号(外键)说明:题目信息表用于存放题目的信息。4 系统实现4.1系统管理员登录模块4.1.1登录(1)登录模块此模块主要功能是用于登录本系统,不同权限的用户登录本系统会进入不同的管理模块界面,因为在后台对该用户进行的判断,首先将从前台页面提交的用户名和密码进行接受,之后在后台进行处理,按照用户名在数据库中进行查询,如果查到该用户则将该用户的权限和密码全都取出来分别赋给两个字符串变量,判断从数据库中读出的密码与登录时输入的密码是否配比上,若两个密码相同则根据权限的值进入相应的页面,否则输出密码错误。若用户未被管理员分配好权限那么也是无法登录本系统的。如图4.1所示:图4.1登录界面(2)程序流图图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 20005.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.0410张海藩.软件工程导论(第五版) 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运行时能够进行自动在未来NSNumber或NSValue拳击对象。因此,返回的值valueForKey:总是一个对象。值为零的特殊情况给予setValue:forKey:setNilValueForKey:处理的方法。12.1.4高级功能应该考虑一些细节,即使他们这里不详细.第一个是关于keypaths可以包括特殊治疗,像一个总和计算,一个意思是,一个最大值或最小值。字符识别标志。第二个调用valueForKey之间的一致性:或setValue:forKey:关于objectForKey方法:和setObject:forKey:集合提供的喜欢关联数组(参看11.1节54页)。在这里,用于解决一些模棱两可。12.2属性12.2.1使用的属性属性可以在定义类的概念。关键字property(和一些属性,参见下一页12.2.3节)可以联系到一个数据成员,告诉如何访问器可以由编译器自动生成的。它旨在编写更少的代码并保存一些开发时间。此外,使用的语法比一个更简单的方法调用来访问属性,所以它可以方便使用属性,即使我们最终不得不编写代码背后的我们想要的。的性能一个方法调用的属性是相同的,因为潜在的识别方法调用在编译时进行。大多数情况下,属性绑定到数据成员。但是如果读写方法重新定义,没有防止房地产是“假”,换句话说,它可以看起来像一个属性之外的对象,一个比一个简单的行为更为复杂的价值管理从里面。12.2.2描述的属性描述一个属性意味着告诉编译器访问器应该如何实现:一个只读属性从外面吗?如果数据成员是一个本机类型,很少有变异,但如果它是一个oject,它应该是封装的副本,通过强引用,或者通过弱引用?(这是与内存有关管理,参见部分6.4.7 44页);必须为它是线程安全的(参看8.1节在51页)?访问器的名称是什么?数据成员应该被绑定到吗?访问器应该是自动生成的,哪一个是离开了开发人员吗?回答这些问题是由两个步骤: interface块的一个类,属性声明与适当的属性(参看以下页面上部分12.2.3);在 implementation块类,与隐式访问器是合格的,或者他们给出了一个实现(cf部分12.2.4 60页)。访问器的原型是严格:吸气,预期的类型(或兼容的)必须返回,setter,返回空,只有一个参数(或预期的类型必须设置兼容)。访问器的名称也编纂:foo数据,名字是foo的gettersetFoo:setter。它允许自定义名称。但是记住,与KeyValue编码(在前一页12.1.2节),这个名字在编译时必须是已知的,因为属性的使用是为了尽快直接调用的方法。因此,没有拳击是应用于参数将incomatible类型。这里就是一个例子,一些解释,但作为全球的快速预览的行为。下面的内容将给予充分理解所需的细节。12.2.3属性属性属性声明根据以下模板:property类型名称;或property(属性)类型名称;如果他们不给,属性默认值;否则,他们可以重新定义在前一节中所述回答问题。他们可以是:读写(默认)或只读的告诉如果属性应该getter / setter或只有getter;分配(默认),保留或复制,告诉如何值存储在内部;nonatomic防止生成线程安全警卫。他们是在默认情况下生成的。(没有原子关键词);getter =setter =改变默认的名称访问器。在setter,行为分配,保留或复制影响数据成员的方式被修改。-(void)setFoo:(Foo *)值法,三种方法是:自我- foo =价值;/ /简单的分配自我- foo =(价值保留);/ /分配与引用计数器增量自我- foo =(值复制);/ /对象复制,它必须符合协议/ / NSCopying(参看5.3.1节在35页在垃圾回收环境中(参见6.6节在48页),保留不不同分配。但在这种情况下,可以添加属性_weak和强烈。property(复制、getter =,setter = setF:)_weak NSString *年代;/ /复杂的声明(请注意“setF:“语法与结肠)12.2.4定制实现的属性12.2.2节的代码片段在58页的实现依赖于两个关键词只:synthesize dynamic。dynamic意味着开发人员提供预期的实现(仅setter如果只读声明属性时指定,否则getter和setter)。synthesize意味着,除非开发人员已经做到了,编译器生成访问器本身,符合用于属性声明的约束。因此,在给出的例子中,如果开发人员实现了(NSString *)登记方法,编译器会选择它,而不是创造一个新的。因此,我们可以推断出一个访问器可以自动生成的两个,另外一个是提供的开发人员。最后,如果一个访问器在编译时不存在,并没有被编译器创建的通过synthesize,它可以在运行时添加(参看13.2节在63页)。这是有效的访问该财产。但在这种情况下,预期的名称访问器在编译时决定。在运行时,如果没有发现访问器,会抛出一个异常,但是程序不会停止,它是同样的行为缺失的方法。使用synthesize时,编译器可以被要求将属性绑定到一个特定的数据成员,不一定相同的名称。12.2.5语法来访问属性获取或设置属性的值,所使用的语法点:它是相同的语法简单的C结构,符合keypath原则(参看节12.1.1 56页)。性能是相同的直接调用底层方法。请注意,在上面的类的一个例子,之间的差异将是巨大的自我- 我和意念。事实上,自我- 我是直接访问数据成员,而自我。我触发产权机制,是一个方法调用。12.2.6先进的细节文档的属性4说,64位编译,objective - c运行时32位模式相比有一些差异。实例数据与一些property有关例如声明可以省略,因为他们可以是隐式的。苹果公司的文档仍然是一个参考,必须阅读所有信息。附 录A:源程序代码 package bean;import java.sql.*;public class DBConn static try Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); catch(ClassNotFoundException e3)System.out.println(MySQL驱动类找不到); public static Connection getConn() try Connection conn=DriverManager.getConnection(jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=db_exam,sa,); /Connection conn = DriverManager.getConnection(jd
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年压疮护理新进展
- 客户开发工作总结案例
- 电梯安全培训
- 儿童财商教育课件
- 内科护理10分钟小讲课
- 仓储物流中心厂房出租与仓储服务外包协议
- 心梗老人的护理
- 知识产权采购合同范本:电子元器件行业
- 创新型企业厂房物业管理及创新解决方案合同范本
- 物业服务企业人力资源配置合同
- 业务部门协作与协同计划
- 2025年陕西省公民科学素质大赛考试题(附答案)
- 2025年兰州石化职业技术大学单招职业技能测试题库带答案
- 教学课件-金融学概论(第2版-盖锐)
- 人为关怀在骨科护理中的应用
- 人工智能算法模型定制开发合同
- 临床外科实习生入科教育
- 《高血压肾损害》课件
- 闽教版英语四年级下册单词默写表
- 禁种铲毒培训
- 工程造价软件应用-形考任务3-国开(SC)-参考资料
评论
0/150
提交评论