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