- 66.95 KB
- 2022-07-29 发布
- 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
- 网站客服QQ:403074932
一.名词解释(20分=5个*4分)模型:表示数据和业务规则。在MVC的三个部分中,模型是最核心的部分,拥有最多的处理任务。它负责获取、处理和携带数据,同时还包括应用程序的相关业务规则逻辑。视图:负责生成用户看到并与之交互的界面。它会根据模型中的数据生成,同时接受用户提交的数据反馈给控制并最终传给模型处理。将视图单独作为一个部分进行开发的一个好处是应用程序可以方便地更改界面。控制器:是连接模型和视图的桥梁,它协调整个应用程序的运转,接受用户的输入,并调用模型和视图去完成用户的需求。当点击网页中的超链接或提交表单时,它只是接受请求并调用相应的模型处理请求,然后生成相应的视图来显示模型处理返回的数据给用户。散列:散列是最近非常流行的一种数据类型,它与数组类似,都是带索引的数据对象集合,与数组的区别在于索引不再仅限于数字,可以是任何对象,散列通常是无序的。单元测试:即模型的测试,是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常一个单元测试是用于判断某个特定条件下某个特定函数方法的行为,是区别于其他将整个系统视为整体来进行测试的测试形式。静态测试:指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。通过程序静态特性的分析,找出欠缺和可疑之处,其结果可用于进一步的查错,并为测试用例选取提供指导。ActiveRecord:是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。关系型数据库往往通过外键来表述实体关系,ActiveRecord在数据源层面上也将实体关系映射为对象的关联和聚集。数据迁移:通过创建和运行迁移任务使数据库从一个状态转换到另一个状态的动作。每个迁移任务代表针对数据库进行的一次修改,修改的内容可以是数据库结构也可以是表中的数据等。二.简答题(30分=3个*10分)1.Rails应用程序框架处理一个请求的全过程。并用示意图说明路由组件①浏览器发出请求①②路由组件找到控制器②③控制器与模型进行交互浏览器控制器④控制器调用视图⑤视图生成浏览器的显示数据库⑤④③模型视图............在一个Rails应用程序中,进入的请求首先被发送给一个路由组件,该组件判断应该将请求发送到应用程序的什么部分、如何解析这一请求。这一阶段将找出控制器代码中的action方法,要求它来处理请求。action可以查阅请求中携带的数据,可以与模型交互,也可以调用别的action。最后,action会为视图准备充分的信息,视图则将所需的信息展现给用户。\n1.RubyonRails应用程序框架的原理。并用MVC架构示意图说明。控制器①浏览器发出请求浏览器①②控制器与模型进行交互③控制器调用视图④视图生成浏览器的显示③②数据库④模型视图............Rubyonrails是一个MVC框架,rails将应用程序按照模型、视图、控制器进行划分,并遵循这一结构分别开发各部分的功能。首先浏览器发出请求,然后控制器与模型进行交互,并调用视图,最后视图生成浏览器的显示。2.Rails控制器的功能和其辅助服务的作用。Rails控制器是应用程序的逻辑中心,它负责协调用户、视图与模型之间的交互。不过,Rails已经在幕后完成了大部分的交互,你需要编写的代码都集中在应用层面的功能上。控制器还提供以下几种重要的辅助服务:l负责将外部请求指引到内部action,它所采用的URL命名规则对于普通人同样清晰易懂。l负责管理缓存,这能给应用程序的性能带来数量级的提升。l负责管理辅助模块,后者可以扩展视图模板的功能,而又不会让视图代码膨胀。l负责管理session,让用户感觉仿佛是在与我们的应用程序进行持续不断的交互。3.Ruby数组(array)和散列(hash)的相同点和不同点相同点:一.数组和散列都是带索引的集合,可以容纳一组对象,并允许以索引键来访问这些对象。二.都可以容纳不同类型的对象。三.都能自动增长以容纳新的元素。不同点:一.数组索引键是一个整数,而散列允许任何对象作为索引。二.数组访问效率更高,散列则更灵活。5.封送以及如何封送对象封送:Ruby能接收对象,并且将该对象转换成字节流,进而保存于应用程序之外的过程称为封送。Rails使用封送方法来存储会话数据,如果想用Rails动态地加载类,那么在Rails重组会话数据时或许还没有定义特定的类,因此需要在控制器中使用model声明,以便列出所有封送的模型,预先加载必要的类,使封送工作进行。三.熟练掌握Rails命令(15分=5个*3分)创建Rails应用程序:railsnewxxxx为应用程序名启动RailsWeb服务器:railsserver生成控制器:railsgeneratecontrollerxxxx为控制器名生成脚手架:railsgeneratescaffoldxx数据回滚迁移:rakedb:rollback数据单元测试:raketest:units检查URL是否是以.gif、.jpg.、png结尾:validates:image_url,:format=>{:with=>%r{\.(gif|jpg|png)$}i,:message=>”mustbeaURLforaGIF,JPGorPNGimage.”}创建数据表:railsgeneratescaffoldxx\n四.程序设计1.使用Date类输出2013年11月日历require'Date'dt=Date.new(2013,11,1)t=dt.wdaya=Array.new(t,"")print"2013年11月\n"print"日一二三四五六\n"a.each{|obj|printobj,""}count=tforiin1..30count+=1ifi<10print"",i,""elseprinti,""endifcount%7==0print"\n"endend2.设计一个计算器,并包含+、-、*、/四个方法classCalculatorattr_accessor:numb1,:numb2def+print"#{self.numb1}+#{self.numb2}=",self.numb1+self.numb2enddef-print"#{self.numb1}-#{self.numb2}=",self.numb1-self.numb2enddef*print"#{self.numb1}*#{self.numb2}=",self.numb1*self.numb2enddef/print"#{self.numb1}/#{self.numb2}=",self.numb1/self.numb2endenda=Calculator.newprint"请输入你要计算的式子\n"str=gets.chompr1=Regexp.new('\D{1}')r2=Regexp.new('\d+')mat=str.scan(r1)arr=str.scan(r2)a.numb1=arr[0].to_ia.numb2=arr[1].to_iifmat[0]=='+'a.+elsifmat[0]=='*'a.*elsifmat[0]=='-'a.-elsea./end\nclassDonorattr_accessor:name,:address,:age,:amount_of_donation,:cumlative_donation,:humanitariandefinitialize(name="donor",address,age,amount_of_donation,humanitarian)self.name=nameself.address=addressself.age=ageself.amount_of_donation=amount_of_donationself.humanitarian=humanitarian@@sum_donation=50000enddefmakes_a_donation(value)self.amount_of_donation=self.amount_of_donation.to_i+value@@sum_donation=@@sum_donation+valueself.cumlative_donation=@@sum_donationself.humanitarian=1enddefamount_to_dateself.amount_of_donationendenddonor1=Donor.new("Bill","hubei",19,0,0)donor2=Donor.new("Bob","beijing",20,1000,1)donor3=Donor.new("IBM","nanjing",20,0,0)donor4=Donor.new("Mary","beijing",20,2000,1)donor5=Donor.new("Jane","tianjing",20,0,0)donor1.makes_a_donation(1000)donor1.makes_a_donation(2000)printdonor1.name,"\n"printdonor1.amount_to_date,"\n"printdonor1.cumlative_donation