面向对象数据库答案市公开课金奖市赛课一等奖课件_第1页
面向对象数据库答案市公开课金奖市赛课一等奖课件_第2页
面向对象数据库答案市公开课金奖市赛课一等奖课件_第3页
面向对象数据库答案市公开课金奖市赛课一等奖课件_第4页
面向对象数据库答案市公开课金奖市赛课一等奖课件_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

高级数据库系统习题解答(1)第1页第1页第一次作业7.2

解:第三句有问题,左边为string类型,右边是City类型。 CityOfLA.name:=cityOfLA.mayor.spouse.livesIn;第2页第2页第一次作业7.4

解:前一个输出结果为: DonaldDuck MickeyMouse

后一个输出结果为: 60 60

由于前一个是引用语义,而后一个是复制语义。第3页第3页第一次作业7.9

解:(1),(2)从引用语义考虑,(3),(4)从复制语义考虑。

(1)(2)执行完毕后, mary.chilaren =joe.children ={littleJoe}第4页第4页第一次作业7.9

解:(3)(4)执行完毕后,betty.children={jimbo},jim.children={}。第5页第5页第二次作业8.8

解: surface:计算表面积。 scale:按百分比放大/缩小Cuboid尺寸。 center:返回Cuboid中心坐标。 diagonal:计算对角线长度。 minDistance:计算Vector参数到Cuboid最短距离。第6页第6页第二次作业8.8

解: persistenttypeCuboidis publiclength,width,height,surface,volume,weight,translate,scale, rotate,certer,diagonal,minDistance; body[v1,v2,v3,v4,v5,v6,v7,v8:Vetex;mat:Material;value:float;] operations … declaresurface:float; declarescale:Vertexvoid codescaleCuboid; declarecenter:Vertex; declarediagonal:float; declareminDistance:Vertexfloat codeminDistanceCode; …第7页第7页第二次作业8.8

解: implementation … definesurfaceis return2.0*(self.length*self.width+ self.length*self.height+self.width*self.height);

definescaleCuboid(s)is begin self.v1.scale(s); … self.v8.scale(s); enddefinescaleCuboid;第8页第8页第二次作业8.8

解: definecenteris varc:Vertex; begin c.create; c.x=0.5*(self.v1.x+self.v7.x); c.y=0.5*(self.v1.y+self.v7.y); c.z=0.5*(self.v1.z+self.v7.z); returnc; enddefinecerter; definediagonalis returnself.v1.distance(self.v7);第9页第9页第二次作业8.8

解: defineminDistanceCode(v)is varv0; begin //将长方体6个面无限延伸,可将整个空间分为27个区域

if(v在长方体内部或表面上) return0; elsebegin

依据v所在区域,可简朴判断出长方体上距v最近点v0所在 面/棱/顶点,进而求出v0; returnv.distance(v0); endelse enddeineminDistanceCode; …endtypeCuboid;第10页第10页第二次作业9.1

解: (1)办法一采用1:1关系表示1:N关系,存在较多冗余;

不考虑索引,已知left查询相应right集时,办法二效果明显好于办法一;已知right查询相应left时,办法一效果好于办法二。

当插入新关系<L,R>时,两种办法都无法确保一致性,即原关系1:N语义约束也许被违反,需要对insert操作做修改,确保每一个Tright实例仅有至多一个相应Tleft实例。

删除关系<L,R>时,办法一中直接删除相应TR实例,办法二中只需修改right集合,直到right集合为空时,才需要删除相应TR实例。

更新操作由插入删除操作组合而成,不再讨论。

(2)办法一、二insert操作均需修改,以确保一致性,办法二delete操作也需要修改。修改思想上边已阐明,详细算法不再给出。第11页第11页第二次作业9.7

解:

在对象内部使用计数器

对于专用对象,生成实例,置为1,被引用,置为0;

对于依赖对象,引用+1,不再引用-1,为0时删除对象。第12页第12页第三次作业10.5

解:合法重定义要求:操作名不变,参数个数不变;操作接受者类型是原操作中接受者类型子类;操作返回值类型是原操作返回值子类;操作参数类型是原操作参数类型超类。题中重定义仅满足(1)(2)(3),但违反(4)。ConicalPipe是Pipe子类而非超类,故不合法。考虑程序段:varaPipe,anotherPipe:Pipe;aConicalPipe:ConicalPipe;anotherPipe:=aConicalPipe;//可替换性,合法anotherPipe.connect(aPipe);//编译通过,执行时动态绑定错误。第13页第13页第三次作业10.6

解:继承属性类型是不能重定义,必须保持原类型。 (1)子类中继承属性类型不能是该类型子类,即特化不合法。

特化举例:

typePersonis body[name:string; age:int;] … typeEmployeesupertypePersonis body[boss:Employee;] … typeManagersupertypeEmployeeis body[refineboss:Manager;] …第14页第14页第三次作业10.6

解:程序段:

varanEmp:Employee; aMgr:Manager; aMgr.boss:=anEmp;//语法错误

anEmp.boss:=aMgr;//可替换性,合法

anEmp.boss.boss:=anEmp;//语法检查合法,但有潜在问题

(2)子类中继承属性类型不能是该类型超类,即泛化不合法。

Person和Employee类型定义同上,Manager类型定义下列:

typeManagersupertypeEmployeeis body[refineboss:Person;] …

程序段:

varaPerson:Person; anEmp:Employee; aMgr:Manager; anEmp.boss:=anEmp;//合法

aMgr.boss:=anEmp;//可替换性,合法

aMgr.boss.boss:=anEmp;//语法错误第15页第15页第三次作业10.11

解:略…第16页第16页第三次作业12.3

解:(1) Polymorphdeclaremember(\ListType<=<\ElemType>): \ListType||\ElemTypebool; definemember(t)is varitem:\ElemType; begin foreach(iteminself) if(item=t) returntrue; returnfalse; enddefinemember;第17页第17页第三次作业12.3

解:(2) Polymorphdeclarenthmember(\ListType<=<\ElemType>): \ListType||int\ElemType; definenthmember(n)is vari:int; item:\ElemType; Begin if(n>self.length||n<1) returnnull; i:=0; foreach(iteminself) begin i++; if(i=n)returnitem; endfor enddefinenthmember;第18页第18页第三次作业12.3

解:(3) Polymorphdeclaresubstitute(\ListType<=<\ElemType>): \ListType||\ElemType,\ElemTypevoid; definesubstitute(old,new)is varitem:\ElemType; begin foreach(iteminself) begin if(item=old) begin self.delete(old); self.insert(new); endif endfor enddefinesubstitute;第19页第19页第三次作业12.3

解:(4) Polymorphdeclaresublist(\ListType<=<\ElemType>): \ListType||int,int\ListType; definesublist(m,n)is varnewlist:\ListType; item:\ElemType; i:int; begin i:=0; if(i>=1&&i<=k&&k<=self.length) begin newlist.create; foreach(iteminself) begin i++; if(i>=m&&i<=n) newlist.insert(item); endfor endif returnnewlist; enddefinesubstitute;第20页第20页第四次作业13.5

解:多继承不能较好表示瑞士军刀例子多继承缺点:IS-A语义不清办法需要重定义以避免冲突某个部件不能作为单独部件使用单继承多置换:单独部件能够作为整个对象来使用,使用灵活第21页第21页第四次作业14.8

解: RetrieveallEmpswhoearnmorethantheirManager.ButnotethatManagersaraalsoEmpsandmayworkintheirownDept. selecte fromeinEMP wheree.salary>e.worksin.mgr.salary;第22页第22页第四次作业14.9

解: Retriev

温馨提示

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

评论

0/150

提交评论