版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Caché開發(fā)培訓(xùn)課程之四
Caché面向?qū)ο箝_發(fā)東華軟件股份公司醫(yī)療事業(yè)部Caché開發(fā)培訓(xùn)課程之四
Caché面向?qū)?OOP前言1什么是Caché的面向?qū)ο?Caché的類定義3Caché的面向?qū)ο缶幊?:8972/csp/docbook/DocBook.UI.Page.clsCachéDevelopmentGuides->UsingCachéObjectsOOP前言1什么是Caché的面向?qū)ο?Caché的類定2OOP前言1什么是Caché的面向?qū)ο?Caché的類定義3Caché的面向?qū)ο缶幊?OOP前言1什么是Caché的面向?qū)ο?Caché的類定3OOP的基本特征封裝繼承(泛化、聚合)多態(tài)(覆蓋、重載)OOP的基本特征封裝4OOP前言1什么是Caché的面向?qū)ο?Caché的類定義3Caché的面向?qū)ο缶幊?OOP前言1什么是Caché的面向?qū)ο?Caché的類定5Caché對象的特點一個強(qiáng)大的對象模型包括繼承,屬性,方法,集合,關(guān)系,用戶定義的數(shù)據(jù)類型和流。一個靈活的對象持久化機(jī)制控制數(shù)據(jù)庫的持久化類的各個方面包括索引,約束和指向完整性。一個易于使用的事務(wù)和并發(fā)模型自動集成與Cache緩存的SQL通過統(tǒng)一數(shù)據(jù)架構(gòu)。與Java、C++、ActiveX的交互性。自動提供XML支持。一個強(qiáng)大的協(xié)同開發(fā)環(huán)境:Studio。Caché對象的特點一個強(qiáng)大的對象模型6Caché對象包括以下主要內(nèi)容
ClassDictionary:類定義,描述了每個特定的類庫
ClassCompiler:一組程序,將類定義轉(zhuǎn)換成可執(zhí)行代碼ObjectRuntimeSystem:支持對象運行時操作CachéClassLibrary:一組Caché安裝時預(yù)先建立的類LanguageBindings:與各開發(fā)語言的綁定,Projection
Gateways:外部系統(tǒng)通過網(wǎng)關(guān)訪問Caché對象Caché對象包括以下主要內(nèi)容ClassDictiona7面向?qū)ο蟮臄?shù)據(jù)庫開發(fā)類和對象抽象與建模繼承和多態(tài)封裝可擴(kuò)展性對象持久對象綁定面向?qū)ο蟮臄?shù)據(jù)庫開發(fā)類和對象8Caché對象模型支持以下功能Persistence:持久性對象可以被存儲在Caché數(shù)據(jù)庫或外部數(shù)據(jù)庫。同時解析存儲對象為關(guān)系表,可以使用標(biāo)準(zhǔn)的SQL查詢Properties:屬性簡單值、對象、嵌入對象、對象引用、數(shù)組、集合、流CustomDataTypes:自定義數(shù)據(jù)類型可以使用應(yīng)用程序自定義的數(shù)據(jù)類型Methods:方法類方法、實例方法Polymorphism:多態(tài)Inheritance:繼承Caché對象模型支持以下功能Persistence:持久性9Object的:OREF、OID和IDOREF一個對象引用,是一個值setobj=##class(test.Person).%New()OID一個對象標(biāo)識符,唯一標(biāo)識一個持久化對象。setobj=##class(test.Person).%Open(OID)ID一個值,唯一標(biāo)識一個特定的范圍內(nèi)特定的實例。setobj=##class(test.Person).%OpenId(ID)Object的:OREF、OID和IDOREF10Caché的ClassTypeTransientObjectClasses臨時類,注冊類,inmemory類型:%RegisteredObjectPersistentObjectClasses持久類,inDB類型:%PersistentSerialObjectClasses序列化類,inmemory,orembeddedwithinapersistentobject%SerialObjectDataTypeClasses數(shù)據(jù)類型類,依附于某個對象。Caché的ClassTypeTransientObjec11Caché的ClassTypeCaché的ClassType12繼承與多重繼承繼承ClassUser.MyClassExtends%Persistent[ClassType=persistent]{
}注意:對ClassType的要求,
在不同版本之間有差異多重繼承ClassXExtends(A,B,C){
}屬性:所有父類的集合優(yōu)先級:后面的超類的屬性覆蓋前面的超類屬性關(guān)鍵字:來源于第一個超類繼承與多重繼承繼承多重繼承13OOP前言1什么是Caché的面向?qū)ο?Caché的類定義3Caché的面向?qū)ο缶幊?OOP前言1什么是Caché的面向?qū)ο?Caché的類定14Caché的類成員
ClassName:唯一類名,包括所屬包。
Property:屬性,類實例的數(shù)據(jù)集合。
Method:類方法和實例方法。
Query
:查詢,輸出數(shù)據(jù)集。
Index:索引的存儲結(jié)構(gòu),用于優(yōu)化頻繁訪問數(shù)據(jù)模式。
ClassKeywords:類關(guān)鍵詞,指定整體類的行為。ClassParameters:類參數(shù),自定義類通常需要使用的值。Caché的類成員ClassName:唯一類名,包括所屬包15PropertyKeywordsCalculatedDescriptionFinalInitialExpressionPrivateRequiredTransientTypeAccessorsGet:writeobj.PropertyGet()Set:doobj.PropertySet(val)AttributeDataTypePropertiesObject-ValuedPropertiesCollectionPropertiesStreamPropertiesMultidimensionalpropertiesPropertyKeywordsAccessors16MethodArgumentsDefaultValuesByReferenceCallReturnValuesLanguageKeywordsClassMethodFinalSQLProcMethodArguments17QueryDefinethequeryNewQueryWizardSQLQuery&User-WrittenQuery4partsofUser-WrittenQueryKeyWordsSQLProcSqlNameInvokethequerydo##class(%ResultSet).RunQuery("className","queryName",arg,...)DynamicSQLQueryDefinethequery18Storage%CacheStorage持久對象的默認(rèn)存儲模式,可以自動創(chuàng)建CacheStorage的關(guān)鍵點DataNodesDataLocationIdLocationIndexNodesIndexLocationStreamLocation%CacheSQLStorage一種特殊的存儲類,通常用于映射老結(jié)構(gòu)的global過SQLGateway存儲外部關(guān)系數(shù)據(jù)庫的結(jié)構(gòu)Storage%CacheStorage19Index索引的特點索引為持久化類提供一個優(yōu)化的實例檢索機(jī)制定義一個特定的排序與一類相關(guān)的常用請求的數(shù)據(jù)子集索引可以定義為一個或多個屬性的排序排序規(guī)則EXACTSQLSTRINGSQLUPPERALPHAUPMINUSPLUSSPACESTRINGUPPERIndex索引的特點20RelationShipRelationShip的特點只有持久類能定義RelationShipRelationShip是雙向的,在兩個類中都要定義兩種類型:1-n;父子自動保證數(shù)據(jù)完整性RelationShip解析為關(guān)系表中的外鍵父子關(guān)系的定義定義方法存儲RelationShipRelationShip的特點21OOP前言1什么是Caché的面向?qū)ο?Caché的類定義3Caché的面向?qū)ο缶幊?OOP前言1什么是Caché的面向?qū)ο?Caché的類定22使用Caché對象-1ExcuteMethodDooref.MethodName(arglist)Setvalue=oref.MethodName(arglist)ExcuteClassMethodDo##class(Classname).MethodName(arglist)Setvalue=##class(Classname).MethodName(arglist)NewObject:Setoref=##class(Classname).%New()OpenObjectSetoref=##class(Classname).%OpenId(id)Setoref=##class(Classname).%Open(oid)GetPropertySetvalue=oref.PropertyNameSetvalue=oref.PropertyName.GetAt(n)//ListpropertySetvalue=oref.PropertyNameGetAt(key)//Arrayproperty使用Caché對象-1ExcuteMethod23使用Caché對象-2ModifyPropertiesSetoref.PropertyName=value//Setcar.Owner=personSetoref.PropertyName.RefPropertyName=valueModifyListPropertiesDooref.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)////whenpropertyisListObjectsModfiyingArrayPropertiesDooref.PropertyName.SetAt(data,key)//Dopalette.Colors.SetAt("255,0,0","red")Dooref.PropertyName.SetObjectAt(ElementOid,key)//propertyisArrayofObjectsModifyingStreamPropertiesDooref.PropertyName.Write(data)DeletingObjectsDo##class(Classname).%DeleteId(id)DeletingObjectsRebuildIndexdo##class(Classname).%BuildIndices()使用Caché對象-2ModifyProperties24使用Caché對象-3SaveObjectDooref.%Save()Setsc=oref.%Save()TStart//...Setsc=oref.%Save()If$$$ISERR(sc){///If($$$ISOK(sc)) TRollBackDo$System.Status.DisplayError(sc)}else{ TCommit Setid=oref.%Id()}使用Caché對象-3SaveObject25課程4練習(xí)了解Caché的面向?qū)ο笾R。閱讀UsingCachéObjects熟悉持久類的定義屬性索引存儲結(jié)構(gòu)和索引的global結(jié)構(gòu)method、query用面向?qū)ο蠓绞骄帉懘a,實現(xiàn)一個課程管理功能,要求如下:數(shù)據(jù)課程:代碼、課程名、授課教師授課教師:工號、姓名、性別、出生日期學(xué)生:學(xué)號、姓名、性別、出生日期成績:學(xué)生、課程、成績功能:實現(xiàn)學(xué)生、課程、授課老師的維護(hù),成績維護(hù)(增刪改查、事務(wù))命名:test.姓名.ClassName課程4練習(xí)了解Caché的面向?qū)ο笾R。閱讀UsingCa26Caché開發(fā)培訓(xùn)課程:Caché面向?qū)ο箝_發(fā)27演講完畢,謝謝觀看!演講完畢,謝謝觀看!28Caché開發(fā)培訓(xùn)課程之四
Caché面向?qū)ο箝_發(fā)東華軟件股份公司醫(yī)療事業(yè)部Caché開發(fā)培訓(xùn)課程之四
Caché面向?qū)?9OOP前言1什么是Caché的面向?qū)ο?Caché的類定義3Caché的面向?qū)ο缶幊?:8972/csp/docbook/DocBook.UI.Page.clsCachéDevelopmentGuides->UsingCachéObjectsOOP前言1什么是Caché的面向?qū)ο?Caché的類定30OOP前言1什么是Caché的面向?qū)ο?Caché的類定義3Caché的面向?qū)ο缶幊?OOP前言1什么是Caché的面向?qū)ο?Caché的類定31OOP的基本特征封裝繼承(泛化、聚合)多態(tài)(覆蓋、重載)OOP的基本特征封裝32OOP前言1什么是Caché的面向?qū)ο?Caché的類定義3Caché的面向?qū)ο缶幊?OOP前言1什么是Caché的面向?qū)ο?Caché的類定33Caché對象的特點一個強(qiáng)大的對象模型包括繼承,屬性,方法,集合,關(guān)系,用戶定義的數(shù)據(jù)類型和流。一個靈活的對象持久化機(jī)制控制數(shù)據(jù)庫的持久化類的各個方面包括索引,約束和指向完整性。一個易于使用的事務(wù)和并發(fā)模型自動集成與Cache緩存的SQL通過統(tǒng)一數(shù)據(jù)架構(gòu)。與Java、C++、ActiveX的交互性。自動提供XML支持。一個強(qiáng)大的協(xié)同開發(fā)環(huán)境:Studio。Caché對象的特點一個強(qiáng)大的對象模型34Caché對象包括以下主要內(nèi)容
ClassDictionary:類定義,描述了每個特定的類庫
ClassCompiler:一組程序,將類定義轉(zhuǎn)換成可執(zhí)行代碼ObjectRuntimeSystem:支持對象運行時操作CachéClassLibrary:一組Caché安裝時預(yù)先建立的類LanguageBindings:與各開發(fā)語言的綁定,Projection
Gateways:外部系統(tǒng)通過網(wǎng)關(guān)訪問Caché對象Caché對象包括以下主要內(nèi)容ClassDictiona35面向?qū)ο蟮臄?shù)據(jù)庫開發(fā)類和對象抽象與建模繼承和多態(tài)封裝可擴(kuò)展性對象持久對象綁定面向?qū)ο蟮臄?shù)據(jù)庫開發(fā)類和對象36Caché對象模型支持以下功能Persistence:持久性對象可以被存儲在Caché數(shù)據(jù)庫或外部數(shù)據(jù)庫。同時解析存儲對象為關(guān)系表,可以使用標(biāo)準(zhǔn)的SQL查詢Properties:屬性簡單值、對象、嵌入對象、對象引用、數(shù)組、集合、流CustomDataTypes:自定義數(shù)據(jù)類型可以使用應(yīng)用程序自定義的數(shù)據(jù)類型Methods:方法類方法、實例方法Polymorphism:多態(tài)Inheritance:繼承Caché對象模型支持以下功能Persistence:持久性37Object的:OREF、OID和IDOREF一個對象引用,是一個值setobj=##class(test.Person).%New()OID一個對象標(biāo)識符,唯一標(biāo)識一個持久化對象。setobj=##class(test.Person).%Open(OID)ID一個值,唯一標(biāo)識一個特定的范圍內(nèi)特定的實例。setobj=##class(test.Person).%OpenId(ID)Object的:OREF、OID和IDOREF38Caché的ClassTypeTransientObjectClasses臨時類,注冊類,inmemory類型:%RegisteredObjectPersistentObjectClasses持久類,inDB類型:%PersistentSerialObjectClasses序列化類,inmemory,orembeddedwithinapersistentobject%SerialObjectDataTypeClasses數(shù)據(jù)類型類,依附于某個對象。Caché的ClassTypeTransientObjec39Caché的ClassTypeCaché的ClassType40繼承與多重繼承繼承ClassUser.MyClassExtends%Persistent[ClassType=persistent]{
}注意:對ClassType的要求,
在不同版本之間有差異多重繼承ClassXExtends(A,B,C){
}屬性:所有父類的集合優(yōu)先級:后面的超類的屬性覆蓋前面的超類屬性關(guān)鍵字:來源于第一個超類繼承與多重繼承繼承多重繼承41OOP前言1什么是Caché的面向?qū)ο?Caché的類定義3Caché的面向?qū)ο缶幊?OOP前言1什么是Caché的面向?qū)ο?Caché的類定42Caché的類成員
ClassName:唯一類名,包括所屬包。
Property:屬性,類實例的數(shù)據(jù)集合。
Method:類方法和實例方法。
Query
:查詢,輸出數(shù)據(jù)集。
Index:索引的存儲結(jié)構(gòu),用于優(yōu)化頻繁訪問數(shù)據(jù)模式。
ClassKeywords:類關(guān)鍵詞,指定整體類的行為。ClassParameters:類參數(shù),自定義類通常需要使用的值。Caché的類成員ClassName:唯一類名,包括所屬包43PropertyKeywordsCalculatedDescriptionFinalInitialExpressionPrivateRequiredTransientTypeAccessorsGet:writeobj.PropertyGet()Set:doobj.PropertySet(val)AttributeDataTypePropertiesObject-ValuedPropertiesCollectionPropertiesStreamPropertiesMultidimensionalpropertiesPropertyKeywordsAccessors44MethodArgumentsDefaultValuesByReferenceCallReturnValuesLanguageKeywordsClassMethodFinalSQLProcMethodArguments45QueryDefinethequeryNewQueryWizardSQLQuery&User-WrittenQuery4partsofUser-WrittenQueryKeyWordsSQLProcSqlNameInvokethequerydo##class(%ResultSet).RunQuery("className","queryName",arg,...)DynamicSQLQueryDefinethequery46Storage%CacheStorage持久對象的默認(rèn)存儲模式,可以自動創(chuàng)建CacheStorage的關(guān)鍵點DataNodesDataLocationIdLocationIndexNodesIndexLocationStreamLocation%CacheSQLStorage一種特殊的存儲類,通常用于映射老結(jié)構(gòu)的global過SQLGateway存儲外部關(guān)系數(shù)據(jù)庫的結(jié)構(gòu)Storage%CacheStorage47Index索引的特點索引為持久化類提供一個優(yōu)化的實例檢索機(jī)制定義一個特定的排序與一類相關(guān)的常用請求的數(shù)據(jù)子集索引可以定義為一個或多個屬性的排序排序規(guī)則EXACTSQLSTRINGSQLUPPERALPHAUPMINUSPLUSSPACESTRINGUPPERIndex索引的特點48RelationShipRelationShip的特點只有持久類能定義RelationShipRelationShip是雙向的,在兩個類中都要定義兩種類型:1-n;父子自動保證數(shù)據(jù)完整性RelationShip解析為關(guān)系表中的外鍵父子關(guān)系的定義定義方法存儲RelationShipRelationShip的特點49OOP前言1什么是Caché的面向?qū)ο?Caché的類定義3Caché的面向?qū)ο缶幊?OOP前言1什么是Caché的面向?qū)ο?Caché的類定50使用Caché對象-1ExcuteMethodDooref.MethodName(arglist)Setvalue=oref.MethodName(arglist)ExcuteClassMethodDo##class(Classname).MethodName(arglist)Setvalue=##class(Classname).MethodName(arglist)NewObject:Setoref=##class(Classname).%New()OpenObjectSetoref=##class(Classname).%OpenId(id)Setoref=##class(Classname).%Open(oid)GetPropertySetvalue=oref.PropertyNameSetvalue=oref.PropertyName.GetAt(n)//ListpropertySetvalue=oref.PropertyNameGetAt(key)//Arrayproperty使用Caché對象-1ExcuteMethod51使用Caché對象-2ModifyPropertiesSetoref.PropertyName=value//Setcar.Owner=personSetoref.PropertyName.RefPropertyName=valueModifyListPropertiesDooref.PropertyName.Insert(data)//Doperson.FavoriteColors.Insert("yellow")Dooref.PropertyName.SetAt(data,n)//Doperson.FavoriteColors.SetAt("
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度社區(qū)門衛(wèi)用工保障合同
- 2025年度汽車貸款逾期罰金追償合同
- 二零二五版門窗行業(yè)市場拓展與渠道建設(shè)合同4篇
- 2025版寵物醫(yī)院害蟲防治與寵物健康服務(wù)合同4篇
- 2025年度鎳氫電池關(guān)鍵部件研發(fā)與制造合同4篇
- 二零二五年度智慧交通管理系統(tǒng)詢價合同協(xié)議書3篇
- 二零二五年度智能交通管理系統(tǒng)采購合同樣本3篇
- 二零二五年度奶業(yè)集團(tuán)奶制品品牌授權(quán)及銷售合同
- 2025年度路燈采購安裝及LED照明產(chǎn)品研發(fā)合同3篇
- 二零二五年度機(jī)關(guān)辦公樓物業(yè)智能化升級改造服務(wù)合同5篇
- 數(shù)學(xué)-山東省2025年1月濟(jì)南市高三期末學(xué)習(xí)質(zhì)量檢測濟(jì)南期末試題和答案
- 中儲糧黑龍江分公司社招2025年學(xué)習(xí)資料
- 河南退役軍人專升本計算機(jī)真題答案
- 湖南省長沙市2024-2025學(xué)年高一數(shù)學(xué)上學(xué)期期末考試試卷
- 船舶行業(yè)維修保養(yǎng)合同
- 駕駛證學(xué)法減分(學(xué)法免分)試題和答案(50題完整版)1650
- 2024年林地使用權(quán)轉(zhuǎn)讓協(xié)議書
- 物流有限公司安全生產(chǎn)專項整治三年行動實施方案全國安全生產(chǎn)專項整治三年行動計劃
- 2025屆江蘇省13市高三最后一卷生物試卷含解析
- 產(chǎn)鉗助產(chǎn)護(hù)理查房
- 招聘專員轉(zhuǎn)正述職報告
評論
0/150
提交評論