1、Cach 开发培训课程之四 Cach 面向对象开发东华软件股份公司医疗事业部OOP前言前言1什么是什么是Cach 的面向对象的面向对象2Cach 的类定义的类定义3Cach 的面向对象编程的面向对象编程4http:/127.0.0.1:8972/csp/docbook/DocBook.UI.Page.clsCach Development Guides-Using Cach ObjectsOOP前言前言1什么是什么是Cach 的面向对象的面向对象2Cach 的类定义的类定义3Cach 的面向对象编程的面向对象编程4OOP的基本特征 封装 继承(泛化、聚合)多态(覆盖、重载)OOP前言前言1什么
2、是什么是Cach 的面向对象的面向对象2Cach 的类定义的类定义3Cach 的面向对象编程的面向对象编程4Cach对象的特点对象的特点 一个强大的对象模型 包括继承,属性,方法,集合,关系,用户定义的数据类型和流。一个灵活的对象持久化机制 控制数据库的持久化类的各个方面 包括索引,约束和指向完整性。一个易于使用的事务和并发模型 自动集成与Cache缓存的SQL通过统一数据架构。与Java、C+、ActiveX的交互性。自动提供XML支持。一个强大的协同开发环境:Studio。Cach对象包括以下主要内容 Class Dictionary:类定义,描述了每个特定的类库 Class Compil
3、er:一组程序,将类定义转换成可执行代码 Object Runtime System:支持对象运行时操作 Cach Class Library:一组Cach 安装时预先建立的类 Language Bindings:与各开发语言的绑定,Projection Gateways:外部系统通过网关访问Cach 对象面向对象的数据库开发 类和对象 抽象与建模 继承和多态 封装 可扩展性 对象持久 对象绑定Cach对象模型支持以下功能 Persistence:持久性 对象可以被存储在Cach数据库或外部数据库。同时解析存储对象为关系表,可以使用标准的SQL查询 Properties:属性 简单值、对象、嵌
4、入对象、对象引用、数组、集合、流 Custom Data Types:自定义数据类型 可以使用应用程序自定义的数据类型 Methods:方法 类方法、实例方法 Polymorphism:多态 Inheritance:继承Object的:OREF、OID和ID OREF 一个对象引用,是一个值 set obj=#class(test.Person).%New()OID 一个对象标识符,唯一标识一个持久化对象。set obj=#class(test.Person).%Open(OID)ID 一个值,唯一标识一个特定的范围内特定的实例。set obj=#class(test.Person).%Ope
5、nId(ID)Cach的的ClassType Transient Object Classes 临时类,注册类,in memory 类型:RegisteredObject Persistent Object Classes 持久类,in DB 类型:%Persistent Serial Object Classes 序列化类,in memory,or embedded within a persistent object%SerialObject Data Type Classes 数据类型类,依附于某个对象。Cach的的ClassType继承与多重继承 继承继承Class User.MyCl
6、ass Extends%Persistent ClassType=persistent 注意:对ClassType的要求,在不同版本之间有差异 多重继承多重继承Class X Extends(A,B,C)属性:所有父类的集合优先级:后面的超类的属性覆盖前面的超类属性关键字:来源于第一个超类OOP前言前言1什么是什么是Cach 的面向对象的面向对象2Cach 的类定义的类定义3Cach 的面向对象编程的面向对象编程4Cach的类成员的类成员 ClassName:唯一类名,包括所属包。Property:属性,类实例的数据集合。Method:类方法和实例方法。Query:查询,输出数据集。Index
7、:索引的存储结构,用于优化频繁访问数据模式。Class Keywords:类关键词,指定整体类的行为。Class Parameters:类参数,自定义类通常需要使用的值。Property Keywords Calculated Description Final InitialExpression Private Required Transient Type Accessors Get:write obj.PropertyGet()Set:do obj.PropertySet(val)Attribute Data Type Properties Object-Valued Propertie
8、s Collection Properties Stream Properties Multidimensional propertiesMethod Arguments Default Values By Reference Call Return Values Language Keywords ClassMethod Final SQLProcQuery Define the query New Query Wizard SQL Query&User-Written Query 4 parts of User-Written Query KeyWordsSQLProcSqlName In
9、voke the query do#class(%ResultSet).RunQuery(className,queryName,arg,.)Dynamic SQLStorage%CacheStorage 持久对象的默认存储模式,可以自动创建 CacheStorage 的关键点Data NodesDataLocationIdLocationIndexNodesIndexLocationStreamLocation%CacheSQLStorage 一种特殊的存储类,通常用于 映射老结构的global 过SQL Gateway存储外部关系数据库的结构Index 索引的特点 索引为持久化类提供一个优
10、化的实例检索机制 定义一个特定的排序与一类相关的常用请求的数据子集 索引可以定义为一个或多个属性的排序 排序规则 EXACT SQLSTRING SQLUPPER ALPHAUP MINUS PLUS SPACE STRING UPPER RelationShip RelationShip的特点 只有持久类能定义RelationShip RelationShip是双向的,在两个类中都要定义 两种类型:1-n;父子 自动保证数据完整性 RelationShip解析为关系表中的外键 父子关系的定义 定义方法 存储OOP前言前言1什么是什么是Cach 的面向对象的面向对象2Cach 的类定义的类定义
11、3Cach 的面向对象编程的面向对象编程4使用Cach对象-1Excute Method Do oref.MethodName(arglist)Set value=oref.MethodName(arglist)Excute ClassMethod Do#class(Classname).MethodName(arglist)Set value=#class(Classname).MethodName(arglist)New Object:Set oref=#class(Classname).%New()Open Object Set oref=#class(Classname).%OpenI
12、d(id)Set oref=#class(Classname).%Open(oid)Get Property Set value=oref.PropertyName Set value=oref.PropertyName.GetAt(n)/List property Set value=oref.PropertyNameGetAt(key)/Array property使用Cach对象-2Modify PropertiesSet oref.PropertyName=value /Set car.Owner=personSet oref.PropertyName.RefPropertyName=
13、valueModify List PropertiesDo oref.PropertyName.Insert(data)/Do person.FavoriteColors.Insert(yellow)Do oref.PropertyName.SetAt(data,n)/Do person.FavoriteColors.SetAt(yellow,2)Do oref.PropertyName.InsertAt(data,n)/Do person.FavoriteColors.InsertAt(yellow,2)Do oref.PropertyName.InsertObject(itemoid)/w
14、hen property is ListObjectsModfiying Array PropertiesDo oref.PropertyName.SetAt(data,key)/Do palette.Colors.SetAt(255,0,0,red)Do oref.PropertyName.SetObjectAt(ElementOid,key)/property is Array of ObjectsModifying Stream PropertiesDo oref.PropertyName.Write(data)Deleting ObjectsDo#class(Classname).%D
15、eleteId(id)Deleting ObjectsRebuild Indexdo#class(Classname).%BuildIndices()使用Cach对象-3Save Object Do oref.%Save()Set sc=oref.%Save()TStart/.Set sc=oref.%Save()If$ISERR(sc)/If($ISOK(sc)TRollBack Do$System.Status.DisplayError(sc)elseTCommitSet id=oref.%Id()课程4练习1.了解Cach的面向对象知识。阅读Using Cach Objects2.熟悉持久类的定义1.属性2.索引3.存储结构和索引的global结构4.method、query3.用面向对象方式编写代码,实现一个课程管理功能,要求如下:数据课程:代码、课程名、授课教师授课教师:工号、姓名、性别、出生日期学生:学号、姓名、性别、出生日期成绩:学生、课程、成绩 功能:实现学生、课程、授课老师的维护,成绩维护(增删改查、事务)命名:test.姓名.ClassName演讲完毕,谢谢观看!