PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
11710 00/06/12 14:26:37 RE(10):PB6.5: ユーザオブジェクトのコピーを別名で - グローバル関数の思想 By MIYAHARA
11705 00/06/12 13:26:03 RE(9):PB6.5: ユーザオブジェクトのコピーを別名で - グローバル関数の思想 By てとらぽっと
11704 00/06/12 13:20:42 RE(8):PB6.5: ユーザオブジェクトのコピーを別名で - グローバル関数の思想 By てとらぽっと
11690 00/06/09 18:56:35 RE(7):PB6.5: ユーザオブジェクトのコピーを別名で - グローバル関数の思想 By MIYAHARA
11666 00/06/09 11:57:16 RE(6):PB6.5: ユーザオブジェクトのコピーを別名で - グローバル関数の思想 By てとらぽっと
11661 00/06/09 11:03:07 RE(5):PB6.5: ユーザオブジェクトのコピーを別名でつけるスクリプト By M.M
11659 00/06/09 10:33:04 RE(4):PB6.5: ユーザオブジェクトのコピーを別名でつけるスクリプト By MIYAHARA
11657 00/06/09 09:58:10 RE(3):PB6.5: ユーザオブジェクトのコピーを別名でつけるスクリプト By MIYAHARA
11645 00/06/08 15:05:01 RE(2):PB6.5: ユーザオブジェクトのコピーを別名でつけるスクリプト By てとらぽっと
11644 00/06/08 14:41:39 RE(1):PB6.5: ユーザオブジェクトのコピーを別名でつけるスクリプト By こてちゅ
11643 00/06/08 14:14:10 PB6.5: ユーザオブジェクトのコピーを別名でつけるスクリプト By MIYAHARA

カテゴリ:ユーザオブジェクト
日付:2000年06月12日 13:26 発信者:てとらぽっと
題名:RE(9):PB6.5: ユーザオブジェクトのコピーを別名で - グローバル関数の思想

これを書いているうちに、No.11702 のご質問をされていたので
MIYAHARAさんは自力で解法に至られるかと思いますけれども、
他の方の参考になればと、意見を続けさせてもらいます。


>2、今回の場合どのように引数を定義したらいいのか?

確実に uo_A か uo_B のみを引数に取るようにするには、
ちょっとした下準備が必要です。

uo_A か uo_B というのは、共通するプロパティ、関数、イベントが多く存在しますね。
そして関数やイベントは、処理結果そこ違えど、
プログラミング上のインターフェース(関数宣言)は同じように作ってあるはずです。
そうでなければ、どちらかを引数とする関数を作る意味がありません。

この共通部分、特にPublic関数を、
あらかじめ先祖クラス(uo_x とします)を作成し宣言しておきます。
これを継承して uo_A, uo_B を作り、同名の関数・イベントを上書きして
それぞれ独自の処理記述します。

片方(たとえば uo_Bのみ)でしかサポートされない関数は、
uo_x として利用される場合があれば、
uo_x には関数宣言だけして(何もしないで抜ける)、uo_B で本来の働きを持たせます。
uo_B という型でしか利用しないと判っていれば uo_x で宣言をしておく必要はありません。
uo_B しか必要の無い Private関数は、当然 uo_B で宣言します。

そして、グローバル関数の引数には、uo_x型 と宣言します。
こうすると uo_x型かその子孫のユーザーオブジェクトしか引数にとりませんし、
uo_x型 の持つ共通のインターフェースでコンパイル時のエラーチェックが出来ます。

業務の拡大で別処理を行う uo_C を作っても、
グローバル関数はそのまま利用できる確率がグンとあがります。

先祖クラスを設計するという面倒さと、
不慣れな開発者にはスクリプト処理の追跡のし難さ、というデメリットもありますが、
わたしは得られる信頼と柔軟性のほうが大きいと考えています。


下手な先祖クラスを設計すると、
それが制約となって柔軟性を失う結果にもなりかねません。
クラスの設計には、実際時間をかけるべきです。
その間に簡単なシステムなら完成してしまいます…。
その辺は【慣れ】かも。(^-^;


付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows95
DBMS Sybase SQL Anywhere Client
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.