d. 操作のポイント

1.ビジュアル・パート

ビジュアル・パーツ

Mainパーツの機能設定

クラス名

Main

説明

Main Frame

ファイル名

moreTwo

パーツタイプ

ビジュアル・パーツ

基底クラス

IFrameWindow

.hpvファイル

なし

.cpvファイル

なし

インクルード・ファイル

なし

 

 

 

2.非ビジュアル・パーツ

非ビジュアル・パーツ

Quadパーツの機能設定

クラス名

Quad

説明

二次方程式の解(Quadratic formula)

ファイル名

moreTwo

パーツタイプ

非ビジュアル・パーツ

基底クラス

IStanderdNotifier

.hpvファイル

"Quad.hpv"

.cpvファイル

"Quad.cpv"

インクルード・ファイル

<istring.hpp>

<math.h>

 

Quadパーツ

属性

タイプ

説明

優先

num1

double

 

O

num2

double

 

O

num3

double

 

 

 

result1

double

 

 

 

result2

double

 

 

 

アクション

タイプ

パラメータ

説明

O

calc

IString

なし

二次方程式の解

O

 

プログラムの修正部分
IString Quad::calc()
{
  double delta=iNumB*iNumB-4.0*iNumA*iNumC;// 解の公式の平方根の中
  
IString R;
 
  
if( iNumA==0.0 )
  {
    
if( iNumB==0.0 )  // c = 0 の場合
    {
      
setResult1( 0.0 );
      notifyObservers(INotificationEvent(Quad::result1Id, *this));
      setResult2( 0.0 );
      R = "";
    }
    
else        // bx + c = 0 の場合
    {
      
setResult1( -iNumC/iNumB );
      setResult2( 0.0 );
      R = "";
    }
  }
  
else
  {
    
if( delta>=0.0 ) // 実数根の場合
    {
      
setResult1( ( iNumB - sqrt(delta) )/2.0/iNumA );
      setResult2( ( iNumB + sqrt(delta) )/2.0/iNumA );
      R = ",";
    }
    
else      // 虚数根の場合
    {
      
setResult1( iNumB/2.0/iNumA );
      setResult2( sqrt(-delta)/2.0/iNumA );
      R = "±i";
    }
  }
  
return R;
}

3.接続

No.

接続元

接続先

コメント

1

EntryField1

(valueAsDouble, 属性)

Quad1

(num1, 属性)

a

2

EntryField2

(valueAsDouble, 属性)

Quad1

(num2, 属性)

b

3

EntryField3

(valueAsDouble, 属性)

Quad1

(num3, 属性)

c

4

EntryField4

(valueAsDouble, 属性)

Quad1

(result1, 属性)

xの左端の項

5

EntryField6

(valueAsDouble, 属性)

Quad1

(result2, 属性)

xの右端の項

6

PushButton1

(buttonClickEvent, イベント)

Quad1

(calc, アクション)

計算ボタン

7

結線6

(actionResult, 属性)

EntryField5

(text, 属性)

xの中央の項

8

Quad1

(result1, イベント)

EntryField4

(カスタム・ロジック)

"解なし"

"解不定"

9

Quad1

(result2, イベント)

EntryField6

(カスタム・ロジック)

""

10

PushButton2

(buttonClickEvent, イベント)

FrameWindow

(close, アクション)

終了ボタン