2.修正方法2
全てのフィーチャー・ソース・コードを再び生成し、コーディングする。
古いソース・コードはすべて削除する。
(見た目がきれいなソース・コードの作成)
a. パーツAmpereの修正
第8章で作成したパーツAmpereでは、アクションcalc(int n)の引数によって、
下記のように求められる値を指定していた。
n=1の場合、currentが求められる。
n=2の場合、magneticFieldが求められる。
n=3の場合、distanceが求められる。
しかし、n値とそれぞれとの関係が直感的に分からないため、下記のように
変更する。
c='I'の場合、currentが求められる。
c='H'の場合、magneticFieldが求められる。
c='R'の場合、distanceが求められる。
1.WorkFrame IDEのアイコンをダブルクリック後、
「既存のオブジェクトをオープンします」をクリックする。
ElectMag.IWPをダブルクリックする。
2.WorkFrameのElectMag.vbbをダブルクリックし、ビジュアル。ビルダーを起動する。
3.非ビジュアル・パーツのAmpereをダブルクリックする。
4.「パーツ・インターフェース・エディター」のアクションを選び、calcを削除する。
5.calcと入力し、「デフォルト」をクリックする。
6.アクション・メンバー関数の引数にcha cと入力する。
[ virtual int calc(char c)とする。 ]
7.優先のページで、アクションcalcを追加する。
8.「ファイル」->「保管および生成」->「フィーチャー・ソース」をクリックする。
9.「Ampere−フィーチャー・ソース・コードを作成します」ダイアログにおいて、
「すべて生成」をクリックする。
10.「プロジェクト」->「編集」をクリックし、Ampere.hpvを開く。
下記のようなコードが書かれている。
// Feature source code generation begins here...
古いコードが書かれている。
// Feature source code generation ends here.
// Feature source code generation begins here...
新しく生成されたコードが書かれている。
// Feature source code ends here.
11.古いコードをすべて削除する。
12.セーブする。
13.Ampere.cpvを開く。
14.新しく生成されたコードのうち、修正するのはcalc(char c)だけである。
15.古いコードのint Ampere::calc(int n)の{ }内をコピーし、
下記のように修正する。
int Ampere::calc(char c)
{
double pi=3.1415627;
switch (c) // cは整数であること。 修正個所
{ // 文字(char)は整数で表わせる。 修正個所
case 'I': // Iは73である。 修正個所
setCurrent( 2.0*pi*iDistance*iMagneticField );
break;
case 'H': // Hは72である。 修正個所
if( iDistance==0.0 )
{
IString errorText = IString( "距離がゼロです" );
IException exc( errorText, 0, IException::unrecoverable );
ITHROW( exc );
}
setMagneticField( iCurrent/2.0/pi/iDistance );
break;
case 'R': // Rは82である。 修正個所
if( iMagneticField==0.0 )
{
IString errorText = IString( "磁界がゼロです" );
IException exc( errorText, 0, IException::unrecoverable );
ITHROW( exc );
}
setDistance( iCurrent/2.0/pi/iMagneticField );
break;
}
return 0;
}
16.古いコードをすべて削除する。
17.セーブする。
18.今後パーツAmpereを利用できるように、覚え書きAmpere.htmlを下記のように
修正する。
パーツ Ampereの説明
アンペアの法則
current=2.0*pi*distance*magneticField
変数
電流:current [A]
磁界:magneticField [A/m]
距離:distance [m]
定数
円周率:pi=3.1415927
三つの変数のうち、二つを与え、残りの一つが求められる。
Coulombパーツ | |||
属性 |
タイプ |
コメント |
優先 |
current |
double |
電流 |
O |
magneticField |
double |
磁界 |
O |
distance |
double |
距離 |
O |
アクション |
タイプ |
パラメータ |
|
calc |
int |
char c |
O |
calc(int n)について
c='I'の場合、currentが求められる。
c='H'の場合、magneticFieldが求められる。
c='R'の場合、distanceが求められる。
n=1の場合、分母がゼロになるとき、例外処理を行う。
計算に成功すると0を戻す。
例外処理のメッセージが含まれている。
必要なファイル |
||
ElectMag.vbb |
Ampere.cpv |
Ampere.hpv |