您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > Caché开发培训课程:Caché面向对象开发
Caché开发培训课程之四Caché面向对象开发东华软件股份公司医疗事业部OOP前言1什么是Caché的面向对象2Caché的类定义3Caché的面向对象编程4éDevelopmentGuides-UsingCachéObjectsOOP前言1什么是Caché的面向对象2Caché的类定义3Caché的面向对象编程4OOP的基本特征•封装•继承(泛化、聚合)•多态(覆盖、重载)OOP前言1什么是Caché的面向对象2Caché的类定义3Caché的面向对象编程4Caché对象的特点•一个强大的对象模型–包括继承,属性,方法,集合,关系,用户定义的数据类型和流。•一个灵活的对象持久化机制•控制数据库的持久化类的各个方面–包括索引,约束和指向完整性。•一个易于使用的事务和并发模型•自动集成与Cache缓存的SQL通过统一数据架构。•与Java、C++、ActiveX的交互性。•自动提供XML支持。•一个强大的协同开发环境:Studio。Caché对象包括以下主要内容•ClassDictionary:类定义,描述了每个特定的类库•ClassCompiler:一组程序,将类定义转换成可执行代码•ObjectRuntimeSystem:支持对象运行时操作•CachéClassLibrary:一组Caché安装时预先建立的类•LanguageBindings:与各开发语言的绑定,Projection•Gateways:外部系统通过网关访问Caché对象面向对象的数据库开发•类和对象•抽象与建模•继承和多态•封装•可扩展性•对象持久•对象绑定Caché对象模型支持以下功能•Persistence:持久性–对象可以被存储在Caché数据库或外部数据库。同时解析存储对象为关系表,可以使用标准的SQL查询•Properties:属性–简单值、对象、嵌入对象、对象引用、数组、集合、流•CustomDataTypes:自定义数据类型–可以使用应用程序自定义的数据类型•Methods:方法–类方法、实例方法•Polymorphism:多态•Inheritance:继承Object的:OREF、OID和ID•OREF–一个对象引用,是一个值–setobj=##class(test.Person).%New()•OID–一个对象标识符,唯一标识一个持久化对象。–setobj=##class(test.Person).%Open(OID)•ID–一个值,唯一标识一个特定的范围内特定的实例。–setobj=##class(test.Person).%OpenId(ID)Caché的ClassType•TransientObjectClasses–临时类,注册类,inmemory–类型:%RegisteredObject•PersistentObjectClasses–持久类,inDB–类型:%Persistent•SerialObjectClasses–序列化类,inmemory,orembeddedwithinapersistentobject–%SerialObject•DataTypeClasses–数据类型类,依附于某个对象。Caché的ClassType继承与多重继承•继承ClassUser.MyClassExtends%Persistent[ClassType=persistent]{}–注意:对ClassType的要求,在不同版本之间有差异•多重继承ClassXExtends(A,B,C){}–属性:所有父类的集合–优先级:后面的超类的属性覆盖前面的超类属性–关键字:来源于第一个超类OOP前言1什么是Caché的面向对象2Caché的类定义3Caché的面向对象编程4Caché的类成员•ClassName:唯一类名,包括所属包。•Property:属性,类实例的数据集合。•Method:类方法和实例方法。•Query:查询,输出数据集。•Index:索引的存储结构,用于优化频繁访问数据模式。•ClassKeywords:类关键词,指定整体类的行为。•ClassParameters:类参数,自定义类通常需要使用的值。Property•Keywords–Calculated–Description–Final–InitialExpression–Private–Required–Transient–Type•Accessors–Get:writeobj.PropertyGet()–Set:doobj.PropertySet(val)•Attribute–DataTypeProperties–Object-ValuedProperties–CollectionProperties–StreamProperties–MultidimensionalpropertiesMethod•Arguments–DefaultValues–ByReference–Call•ReturnValues•Language•Keywords–ClassMethod–Final–SQLProcQuery•Definethequery–NewQueryWizard–SQLQuery&User-WrittenQuery–4partsofUser-WrittenQuery–KeyWords•SQLProc•SqlName•Invokethequery–do##class(%ResultSet).RunQuery(className,queryName,arg,...)•DynamicSQLStorage•%CacheStorage–持久对象的默认存储模式,可以自动创建–CacheStorage的关键点•DataNodes•DataLocation•IdLocation•IndexNodes•IndexLocation•StreamLocation•%CacheSQLStorage–一种特殊的存储类,通常用于•映射老结构的global•过SQLGateway存储外部关系数据库的结构Index•索引的特点–索引为持久化类提供一个优化的实例检索机制–定义一个特定的排序与一类相关的常用请求的数据子集–索引可以定义为一个或多个属性的排序•排序规则–EXACT–SQLSTRING–SQLUPPER–ALPHAUP–MINUS–PLUS–SPACE–STRING–UPPERRelationShip•RelationShip的特点–只有持久类能定义RelationShip–RelationShip是双向的,在两个类中都要定义–两种类型:1-n;父子–自动保证数据完整性–RelationShip解析为关系表中的外键•父子关系的定义–定义方法–存储OOP前言1什么是Caché的面向对象2Caché的类定义3Caché的面向对象编程4使用Caché对象-1•ExcuteMethod–Dooref.MethodName(arglist)–Setvalue=oref.MethodName(arglist)•ExcuteClassMethod–Do##class(Classname).MethodName(arglist)–Setvalue=##class(Classname).MethodName(arglist)•NewObject:Setoref=##class(Classname).%New()•OpenObject–Setoref=##class(Classname).%OpenId(id)–Setoref=##class(Classname).%Open(oid)•GetProperty–Setvalue=oref.PropertyName–Setvalue=oref.PropertyName.GetAt(n)//Listproperty–Setvalue=oref.PropertyNameGetAt(key)//Arrayproperty使用Caché对象-2•ModifyProperties–Setoref.PropertyName=value//Setcar.Owner=person–Setoref.PropertyName.RefPropertyName=value•ModifyListProperties–Dooref.PropertyName.Insert(data)//Doperson.FavoriteColors.Insert(yellow)–Dooref.PropertyName.SetAt(data,n)//Doperson.FavoriteColors.SetAt(yellow,2)–Dooref.PropertyName.InsertAt(data,n)//Doperson.FavoriteColors.InsertAt(yellow,2)–Dooref.PropertyName.InsertObject(itemoid)////whenpropertyisListObjects•ModfiyingArrayProperties–Dooref.PropertyName.SetAt(data,key)//Dopalette.Colors.SetAt(255,0,0,red)–Dooref.PropertyName.SetObjectAt(ElementOid,key)//propertyisArrayofObjects•ModifyingStreamProperties–Dooref.PropertyName.Write(data)•DeletingObjects–Do##class(Classname).%DeleteId(id)DeletingObjects•RebuildIndex–do##class(Classname).%BuildIndices()使用Caché对象-3•SaveObject–Dooref.%Save()–Setsc=oref.%Save()TStart//...Setsc=oref.%Save()If$$$ISERR(sc){///If($$$ISOK(sc))TRollBackDo$System.Status.DisplayError(sc)}else{TCommitSetid=oref.%Id()}课程4练习1.了解Caché的面向对象知识。阅读UsingCachéObjects2.熟悉持久类的定义1.属性2.索引3.存储结构和索引的global结构4.method、query3.用面向对象方式编写代码,实现一个课程管理功能,要求如下:–数据•课程:代码、课程名、授课教师•授课教师:工号、姓名、性别、出生日期•学生:学号、姓名、性别、出生日期•成绩:学生、课程、成绩–功能:实现学生、课程、授课老师的维护,成绩维护(增删改查、事务)–命名:test.姓名.ClassName
本文标题:Caché开发培训课程:Caché面向对象开发
链接地址:https://www.777doc.com/doc-957130 .html