查看: 3944|回复: 0

Teamcenter SOA开发中关于变量声明,转换等代码的新处理方式

[复制链接]

4

主题

3

回帖

46

积分

管理员

积分
46
发表于 2015-2-3 09:18:14 | 显示全部楼层 |阅读模式

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

×
Teamcenter SOA开发中关于变量声明,转换等代码的新处理方式
/ w3 @/ t( Q( ~% x$ ?. y5 ]! Y, W& J
% L, J7 C: S4 I

) @2 t$ [  o5 [* H" g1 变量声明9 D: F! Z# m( f+ [" N) @9 |
; ^! Z* X, i, ]+ m" p1 c# B3 A
1 r' p" ^! h+ v6 b+ l
o Old way2 S3 A' f3 ]( l/ t
// Declare pointers for an Item, Form and vector of ModelObjects
& M( A3 S$ F9 {; Y; A// initialize to NULL
+ z/ ]* Z# w4 O$ ?, H4 A2 j/ VItem *theItem = NULL;) B4 c# ]$ S' D: C9 v
Form *theForm = NULL;
3 M  q- S5 M! U3 J0 b; r- }vector< ModelObject *> objects;1 U3 R0 c- z/ M" X6 H, X& O9 d
...
; _# |9 K/ {! |+ _% F9 W// Use the Item6 s( ^2 w: Y2 y6 ?3 U; M& T) I
theForm = theItem->get_item_master_tag();: e2 k: z; S  Y! u
objects = theItem->get_revision_list();  s/ I* h: x7 |1 |( B
o New way5 R! s+ P, V& ]- [9 ]
// Declare AutoPtr for an Item, Form and vector of ModelObjects
0 |! Q* C/ |$ M" }// all AutoPtrs are instantiated as NULL0 j/ x4 S  b: f5 V; c
Teamcenter::Soa::Common::AutoPtr<Item> theItem;' ?& k3 x% y( c' C/ B
Teamcenter::Soa::Common::AutoPtr<Form> theForm;
! B/ r2 |* P* evector< Teamcenter::Soa::Common::AutoPtr <ModelObject> > objects;
, ]7 \2 b! r- V5 r2 i& v6 K// Use of the ModelObject variables remains unchanged9 K4 @5 f4 @4 y. M
theForm = theItem->get_item_master_tag();. z$ g  L, H# Y; l) R
objects = theItem->get_revision_list();+ ]+ ?% i% ]) [+ B* o! E
; n3 U9 }2 C) y! f

4 Z3 S2 ~) T( V( g2 类型转换
( s- e' o0 B8 A) K/ F* S
* v4 x4 W* Z# y5 F1 x5 r3 {6 H! Po Old way2 G# T$ _; F* A" z& F
// Declare the variables
3 ~) j5 A. U% U  n3 `7 |6 u0 Z0 uUser *user;
. k# e1 I1 m# C* c% }ModelObject *anObj;
/ d9 P5 E3 l& m- \! S8 O, ?9 m9 TFolder *folder;( i( w) [" v, E4 ~7 F: z8 @
user = sessionService->login(name,pass, “”,””, descrim ).user;
9 w+ X/ z8 Y5 [( ~// Cast to the base ModelObject class  @5 h7 O* M: x* x6 ]+ h& E
anObj = (ModelObject*)user;
. Z" ?) m/ L0 H# P- x) k// Cast to a speicfic sub-type, if not NULL
+ h# W% q- M# Y' R// do something with the new pointer
& h+ n9 ]8 K# r( M9 o3 K/ `. uuser = dynamic_cast<User*>(anObj);! o5 I; M# {) o3 c' v4 a. g
if(user != NULL)+ z8 Q5 v) R( w
{' q5 N, X2 p( Q7 ^
folder = user->get_home_folder();
* o% l# W7 ^: Z" O}
  G4 E. w. x( m9 wo New way
  }- n% h( `9 Q1 @" g: C0 s// Declare the variables6 G8 a+ h% Y- P' b+ `! @
Teamcenter::Soa::Common::AutoPtr<User> user;) E% B4 q- ?4 C$ O' A8 v6 j& W# y5 W
Teamcenter::Soa::Common::AutoPtr<ModelObject> anObj;
! S; ^; J: l- A, gTeamcenter::Soa::Common::AutoPtr<Folder> folder;: b! ?5 h% ~7 y/ d
user = sessionService->login(name,pass, “”,””, descrim ).user;* N2 G7 d6 g1 v$ U
// Cast to the base ModelObject class) z- \( c: S% G3 A; _. j! {* P7 P4 z3 b
anObj = user.cast<ModelObject>();
6 v/ S# a/ C) {// Put the cast to a speicfic sub-type, in a try/caTCh block
6 @# I* S. t- ~, }1 ]. G// if std::bad_cast not thrown, then cast was successful
* g7 c$ y& c& f6 Gtry
- N4 l7 }$ T% O7 z% N{, t2 D( z& ?0 h, n, f2 [: t
user = anObj.dyn_cast< User >();
% e7 W1 J$ R( gfolder = user->get_home_folder();
3 W; A8 L7 W" ^/ d3 \  ~}
. @+ v# Y5 M2 [catch(std::bad_cast&){}# m& a0 l  t6 c! e" V4 t
% `+ |, ~; x+ h! R

+ n1 k- A, e  B4 c: f/ r" w3 关于NULL 赋值3 R& i. t) E7 Z3 e1 V" Q4 m# r

6 Y9 M& [5 v. No Old way
/ n8 s/ C2 |0 R$ V: O1 e9 B// Declare the variables0 }1 t6 _- a( J, B1 p+ f
LoginResponse response;% r# ?# D, @/ L/ p: \# L/ |2 B5 q
User * user;6 Q6 X! E, R  h2 Z2 c# j
// Call a service that returns a ModelObject (User)
! {! @  P1 }4 J1-28 Services Guide PLM00076 Jresponse = sessionService->login(name,pass, “”,””, descrim );% I, i7 O. i4 E; ], K
user = response.user;
* _0 Z9 y9 ]& P' g" h// Test that instnace against NULL
& _0 p/ w$ t* P, O. J. d& m& |if( user == NULL)
6 ]! b* f/ @! V+ Z; _) I1 Z5 D{
$ {$ V( |8 r# o' s2 I! f...
/ B% p8 X+ x. n& m+ g& ?! d8 c( k- ?}0 x1 X+ u: d" d8 u( r
else* j+ x' I& G" r7 u
{
: L- ^5 P# N0 ?7 V$ p/ ^3 W. X8 `; L// Assign NULL to the pointer
7 I0 I7 k7 N1 m% C+ yuser = NULL;
" ^9 h2 f7 B  t- h2 a4 b' F4 n}3 D# b/ H5 T) Q: `  C* K) o
o New way
$ _2 @2 F5 t% ?7 J# T7 F# E// Declare the variables
" C/ \9 ~8 B) A3 W- U! d// The service data structures do not change, only
/ \( ~% t5 W+ A: i; r9 ]2 C8 O// references to ModelObjects
+ V7 O1 z, A, R' BLoginResponse response;
+ E2 _7 o/ F# V" a9 J5 UTeamcenter::Soa::Common::AutoPtr<User> user;. Y1 V$ `+ g9 U* d7 I& l
// Call a service that returns a ModelObject (User)
. F5 d  j" I, Oresponse = sessionService->login(name,pass, “”,””, descrim );
/ P$ M# J- Q; r' }* y3 iuser = response.user;0 ?+ |+ U# ]  }. V( i0 U9 b
// Since we are not dealing directly with pointers,  `9 _* ?8 S# M
// NULL does not make sense here, use the isNull method from the; O! i$ T8 H; N6 C+ b  M5 _
// AutoPtr template class.1 k3 a8 t9 f8 j' o2 B$ {' Y
if( user.isNull())# P1 F1 U1 X0 d5 |" H
{
' a( v! c0 N% u. F7 d  ?' g0 O.../ o/ Q4 d& d3 \9 O/ Q. Q2 U: ]
}
; t# k( h: {2 T9 m; kelse& ]: e- b( q* O; w& e  g/ g5 M
{, f# e" h8 L: r6 ^$ S
// Release the instance and
- V  ^" v) V( I0 a  Duser.release();0 K7 J6 W) B8 ~7 x% F
}
9 I) x% J, m1 t  ^# r% j. \; n- a( p* y3 ^; b$ N/ P8 C  h+ ]# p
9 s! q, B+ H2 I5 ^# D
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

在本版发帖
关注公众号
QQ客服返回顶部