概述
一、OOP前言
(1)封装
(2)继承(泛化、聚合)
(3)多态(覆盖、重载)
二、Caché的类定义
(1)Caché的类成员
1.ClassName:唯一类名,包括所属包
2.Property:属性,类实例的数据集合
a)、Keywords:
-Calculated
-Description
-Final
-InitialExpression
-Private
-Required
-Transient
-Type
b)、Accessors:
-Get:write obj.PropertyGet()
-Set:do obj.PropertySet(val)
c)、Attribute:
-Data Type Properties
-Object-Valued Properties
-Collection Properties
-Stream Properties
-Multidimensional properties
3.Method:类方法和实例方法
a)、Arguments
-Default Values
-By Reference
b)、Return Values
c)、Language
d)、Keywords
-ClassMethod
-Final
-SQLProc
4.Query:查询,数据集
a)、Define the query
-New Query Wizard
-SQL Query & User-Written Query
-4 parts of User-Written Query
b)、Invoke the query
-do ##class(%ResultSet).RunQuery("className","queryName",arg,...)
c)、Dynamic SQL
5.Storage:
a)、%CacheStorage
-持久对象的默认存储模式,可以自动创建
-CacheStorage的关键点
i、Data Nodes
ii、DataLocation
iii、IdLocation
iv、IndexNodes
v、IndexLocation
vi、StreamLocation
b)、%CacheSQL Storage
-一种特殊的存储类,通常用于:
i、映射老结构的global
ii、过SQL Gaateway存储外部关系数据库的结构
6.Index:索引的存储结构,用于优化频繁访问数据模式
a)、索引的特点
-索引为持久化类提供一个优化的实例检索机制
-定义一个特定的排序与一类相关常用请求的数据子集
-索引可以定义为一个或多个属性的排序
b)、排序规则
-EXACT
-SQLSTRIGN
-SQLUPPER
-ALPHAUP
-MINUS
-PLUS
-SPACE
-STRING
-UPPER
7.RelationShip
a)、RelationShip的特点:
-只有持久化类能定义RelationShip
-RelationShip是双向的,在两个类中都要定义
-两种类型:1-n,父子
-自动保证数据完整性
-RelationShip解析为关系表中的外键
b)、父子关系的定义:
-定义方法
-存储
8.Class keywords:类关键字,指定整体类的行为
9.Class Parameters:类参数,自定义类通常需要使用的值
三、Caché的面向对象编程
(1)Caché对象的特点
1.一个强大的对象模型
-包括继承,属性,方法,集合,关系,用户定义的数据类型和流
2.一个灵活的对象持久化机制
3.控制数据库的持久化类的各个方面
-包括索引,约束和指向完整性
4.一个易于使用的事务和并发模型
5.自动集成与Caché缓存的SQL通过统一数据架构
6.与JAVA、C++、ActiveX的交互性
7.自动提供XML支持
8.一个强大的协同开发环境:Studio
(2)Caché对象的主要内容
1.Class Dictionary:类定义,描述每个特定的类库
2.Class Compiler:一组程序,将类定义转换成可执行代码
3.object Runtime System:支持对象运行时操作
4.Caché Class Library:一组Caché安装时先建立的类
5.Language Bindings:与各开发语言的绑定,Projection
6.Gateways:外部系统通过网关访问Caché对象
(3)面向对象的数据库开发
1.类和对象
2.抽象与建模
3.继承和多态
4.封装
5.可扩展性
6.对象持久化
7.对象绑定
(4)Caché对象模型支持以下功能
1.persistence:持久性
-对象可以被存储在Caché数据库或外部数据库。同时解析存储对象为关系表,可以使用标准的SQL查询
2.Properties:属性
-简单值、对象、嵌入对象、对象引用、数组、集合、流
3.Custom Data Types:自定义数据类型
-可以使用应用程序自定义的数据类型
4.Methods:方法
-类方法、实例方法
5.Polymorphism:多态
6.Inheritance:继承
(5)对象(Object)的:OREF、OID、ID
1.OREF:
-一个对象引用,是一个值
-set obj=##class(test.Person).%New()
2.OID:
-一个对象标识符,唯一标识一个持久化对象
-set obj=##class(test.Person).%OpenId(ID)
3.ID:
-一个值,唯一标识一个特定的范围内特定的实例
-set obj=##class(test.Person).%OpenId(ID)
(6)Caché的Class Type
1.Transient Object Classes
-临时类,注册类,in memory
-类型:%RegisteredObject
2.Persistent Object Classes
-持久类,in DB
-类型:%Persistent
3.Serial Object Classes
-序列化类,in memory,or embedded within a persistent object
-%SerialObject
4.Data Type Classes
-数据类型类,依附于某个对象
(7)继承与多重继承
1.继承
Class User.MyClass Extends %Persistent [Class Type = persistent] { }
-注意:对Class Type的要求,再不同版本之间有差异
2.多重继承
Class X Extends(A,B,C){ }
-属性:所有父类的集合
-优先级:后面的超类属性覆盖前面的超类属性
-关键字:来源于第一个超类
(8)使用Caché对象——1
a)、Excute Method
-Do oref.MethodName(arglist)
-Set value = oref.MethodName(arglist)
b)、Excute ClassMethod
-Do ##class(Classname).MethodName(arglist)
-Set value = ##class(Classname).MethodName(arglist)
c)、New Object
-Set oref = ##class(Classname).%New()
d)、Get Property
-Set value = oref.PropertyName
-Set value = oref.PropertyName.GetAt(n) //List property
-Set value = oref.PropertyNameGetAt(key) //Array property
(9)使用Caché对象——2
a)、Modify Properties
-Set oref.PropertyName = value //Set car.Owner = person
-Set oref.PropertyName.RefPropertyName = value
b)、Modify List Properties
-Do 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.SetObjectAt(ElementOid,key) //property is Array of Object
c)、Modifying Array Properties
-Do oref.PropertyName.SetAt(data,key) //Do palette.Colors.SetAt("255,0,0","red")
-Do oref.PropertyName.SetObjectAt(ElementOid,key) //property is Array of Objects
d)、Modifying Stream Properties
-Do oref.PropertyName.Write(data)
e)、Deleting Objects
-Do ##class(Classname).%Delete(id)Deleting Objects
f)、Rebuild Index
-Do ##class(Classname).%BuildIndices()
(10)使用Caché对象——3
a)、Save 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)
}
else{
TCommit
Set id=oref.%Id()
}
(10)练习
a)、了解Caché的面向知识。阅读Using Caché Objects
b)、熟悉持久类的定义
-属性
-索引
-存储结构和索引的global结构
-method、query
c)、用面向对象方式代码,实现一个课程管理功能,要求如下:
-数据:
i、课程:代码、课程名、授课教师
ii、授课教师:工号、姓名、性别、出生日期
iii、学生:学号、姓名、性别、出生日期
iv、成绩:学生、课程、成绩
-功能:
i、实现学生、课程、授课老师的维护,成绩维护(增删改查、事务)
-命名:test.姓名.ClassName
转载于:https://my.oschina.net/tobeexpertismydream/blog/2986219
最后
以上就是知性裙子为你收集整理的Caché 开发(二)~面向对象开发的全部内容,希望文章能够帮你解决Caché 开发(二)~面向对象开发所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复