////////////////////////////////////////////////////////////////////
■青キップ１１０番ＦＣオーナーシステム

今、話題の新ビジネス！

５分後にはあなたはビジネスオーナーになる事が出来ます！（キッパリ）

その意味は・・・！？

http://af1.mag2.com/m/af/0000008658/001/s00000004635001/032
////////////////////////////////////////////////////////////////////
/*

    KAB-studio.h


    (C)KAB-studio 1999 - 2006 ALL RIGHTS RESERVED.
        http://www.kab-studio.biz/
        info@mail.kab-studio.biz

    送信日： 2006/09/04(Mon) No.372
    配信数： 1715
    発行元： まぐまぐ ( URL: http://www.mag2.com/  ID: 0000012198 )
*/
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
// NEW!!
http://www.kab-studio.biz/index.html

2006/09/04 (Mon)
　#pragma twice ホームページ版にアーカイブ追加！
16.20 オーバーロードの選択
16.21 演算子のオーバーロードの実例
[ #pragma twice ]
http://www.kab-studio.biz/Programing/PragmaTwice/index.html


////////////////////////////////////////////////////////////////////
// ちょお普通な日記
http://www.kab-studio.biz/nikki2/index.html

2006/08/27 (Sun)
　１０時起き。午前中は定期更新。午後はぐだー。夕方からほとはー外伝３
描き。

2006/08/28 (Mon)
　体が重い。午前中はお絵描き。夕方までぐだー。明日おしごとの準備に。
そのための準備に時間掛かる。こういう事前作業を「どこまでやるか」。

2006/08/29 (Tue)
　午前中は明日からの準備。午後に客先でセットアップ。万全体制だったの
に午後７時まで掛かった。帰りに秋葉原へ。

2006/08/30 (Wed)
　今日から３日間おしごと。以前と同じ所だから気楽。お昼が出た。教壇に
立つと体が勝手に動く。疲れたけど。

2006/08/31 (Thu)
　おしごと２日目。ネタ切れ。レスポンス悪。優秀は優秀。帰りに新宿に
寄ってビジネスキャリー購入。８時に帰ってきてぐだー。

2006/09/01 (Fri)
　あまかいトップセラーが更新できてない。おしごと最終日。講義後に飲み会
参加。荷物が盗まれたっぽい。そして講義を受けてみたい。

2006/09/02 (Sat)
　テンパり気味。体力的に限界。お昼に用事。マジアカファンブックとか
購入。WILLCOMから電話。貯まってたアニメを観たりとか。


////////////////////////////////////////////////////////////////////
// かぶろぐ。
http://d.hatena.ne.jp/kab_studio/

2006/08/27 (Sun)
http://d.hatena.ne.jp/kab_studio/20060827
起きた……。
[KAB-studio]ぷらとわ追加。
[KAB-studio]KAB-studio.h縮刷版更新
[KAB-studio][ほとはー]ほとはー外伝３ P.69
[アニメ]「牙」 第22話「記憶の迷路」
[アニメ]おねがいマイメロディ〜くるくるシャッフル！〜 
　第22話「ウサミミだったらイイナ！」
[アニメ]ひぐらしのなく頃に 第21話「目明し編　其の六　断罪」

2006/08/28 (Mon)
http://d.hatena.ne.jp/kab_studio/20060828
起きた……。
[絵]メイド喫茶
[絵]パターン化……
[アニメ]ARIA The NATURAL 第22話Aパート「その　ふしぎワールドで…」
[アニメ]ARIA The NATURAL 第22話Bパート「その　アクアを守る者は…」
[アニメ]ゼロの使い魔 第9話「ルイズの変心」
[アニメ]うたわれるもの 第21話「大封印」

2006/08/29 (Tue)
http://d.hatena.ne.jp/kab_studio/20060829
起きた。
帰ってきた。
[きらら]まんがタイムきららCarat 2006年10月号
[買]メロブで買ったもの。
[アニメ]N・H・Kにようこそ！ 第8話「中華街にようこそ！」

2006/08/30 (Wed)
http://d.hatena.ne.jp/kab_studio/20060830
起きました。
帰ってきた。
きらら感想追加。
[アニメ]桜蘭高校ホスト部 第22話「モリ先輩に弟子入り志願」

2006/08/31 (Thu)
http://d.hatena.ne.jp/kab_studio/20060831
起きた
帰ってきた
[買]メタセコイアはじめます
[買][装備]ACE GENE アーマ 62132 4輪トローリー
sakusaku・♪小平と東村山のうた
[アニメ]ゼーガペイン 第22話「ジフェイタス」

2006/09/01 (Fri)
http://d.hatena.ne.jp/kab_studio/20060901
起きた。
帰ってきた……んだけど……。
[アニメ]無敵看板娘 第17話「堕ちかけた巨星」
[アニメ]無敵看板娘 第18話「考える母」

2006/09/02 (Sat)
http://d.hatena.ne.jp/kab_studio/20060902
起きた
帰ってきた
なんつーかもうね。
[装備]サポートコインサービスで機種変更料金をキャッシュバック
　……できなかった……
荷物が盗まれた……かも。
[買]本屋で買ってきたもの
[link]「お手紙商法」
[アニメ]風人物語 第12話「桜のころ」
[アニメ]彩雲国物語 第18話「頭隠して尻隠さず」
[アニメ]おとぎ銃士 赤ずきん 第10話「千年の友達」
[アニメ]ふしぎ星の☆ふたご姫 Gyu! 
　第23話「やるっきゃない！☆ポイントアップ大作戦」
[アニメ]ウィッチブレイド 第21話「誓」


////////////////////////////////////////////////////////////////////
// Ajaxでエロゲーを作るブログ
http://d.hatena.ne.jp/AjaxEroge/

（今週はお休みです）


////////////////////////////////////////////////////////////////////
// 風雅、舞い
http://www.kab-studio.biz/Novel/Fuga/index.html

■　第十四章　混乱の我家　−１５−

　母親は腕に刺さる赤い槍を折る。
　同時に背後から飛んできた椅子が頭に当たる。振り向く間もなく畳一畳は
あるかという長テーブルが叩き付けられ、母親の体は床を跳ねる。
　床を跳ねながらも体制を立て直すが、間髪入れずリシュネが詰めさらに椅
子を叩き付ける。リシュネは顔の右半分が砕け金髪が赤色に染まっていた
が、それでもひるむことなく攻撃を続ける。
「マイ！」
　フィオの声に舞は立ち上がり腕を振るう。
　それを見て取った母親は、壁側へと跳ねてリシュネとの距離を取り、腕を
上げ、
『ヴァ、バ！』
　腕を壁へと叩き付ける。衝撃で壁に大穴が空き、光が差し込む。
「！　だめ！」
『蒼き水よ刃と――』
　リシュネと舞が追いすがる中、母親は外へと飛び出し、一瞬で空へと消え
た。
「……言っちゃった」
「何言ってるの、追わないと！！　……ッ」
　危機が去り気の抜けた舞とは対照的に、リシュネはそれを追って飛び出す
勢いだったが、崩れた顔面を押さえて崩れ落ちた。
「！　リシュネ！　フィオごめん、水はもういいから先生呼んできて」
「駄目！　もしかしたら……父親の方も、同じ状態かもしれない」
「ち、父親もって……わかった、フィオ、ここにいた方が安全みたい」
　フィオは声もなくうなずく。だがそれ以前に、厨房から出る気力もなく、
その場にしゃがみ込む。
「……舞、彼は？」
　壁沿いに、体をよろめかせながらリシュネが舞へと近づく。舞の懐では、
少年がふいごのように呼吸を荒げていた。だが、首の傷は回復しているよう
に見えた。
「……くっ！」
　リシュネは壁を叩き、自らの不甲斐なさを呪った。
                                                              (続く)

////////////////////////////////////////////////////////////////////
// JavaA2Z
http://www.kab-studio.biz/Programing/JavaA2Z/index.html

■追加・更新単語

（今週の追加はありません）


////////////////////////////////////////////////////////////////////
■青キップ１１０番ＦＣオーナーシステム

今、話題の新ビジネス！

５分後にはあなたはビジネスオーナーになる事が出来ます！（キッパリ）

その意味は・・・！？

http://af1.mag2.com/m/af/0000008658/001/s00000004635001/032
////////////////////////////////////////////////////////////////////
// #pragma twice
http://www.kab-studio.biz/Programing/PragmaTwice/index.html

　Version 17.17
関数ポインタの代わりとしてのポリモーフィズム

「前回は純粋仮想関数と抽象クラスについて説明しました」
『んーでもやっぱり目的がいまいちわかんないかも？』
「というわけで、抽象クラス、というかポリモーフィズムの具体的な使用例
を今回は説明します。比較的分かりやすいのが、関数ポインタとして使うこ
とかな」
『関数ポインタって、関数のアドレスを入れる変数だよね』
「そう、 Version 13.01 ( No.237 ) や Version 13.17 ( No.253 ) で説明
した、関数のアドレスを格納する変数のこと」
『あれと同じような使い方ができるの？』
「そう。ちょうど Version 13.17 ( No.253 ) で使用している qsort() 関数
の比較用関数みたいにね。実際に今回は、ソートの比較用関数を抽象クラス
で実現してみます」
『おー、なんか今回は実践的』
「まず、ベースは Version 13.09 ( No.245 ) の、 CompareTo() 関数と
DoBubbleSortUseComapre() 関数の組み合わせを利用します」
『これをポリモーフィズムに置き換える、と』
「そういうこと。今回は、まず完成品のプログラムから」

// Main.cpp
#include <Windows.h>
#include <stdio.h>

// 比較用クラスの基本クラス。
class CComparetor
{
public:
    // 比較用メンバ関数。純粋仮想関数です。
    virtual bool CompareTo( int p_iL, int p_iR ) = 0;
};

// 実際の比較用クラスです。
// 整数値を昇順でソートするよう比較します。
class CIntComparetor : public CComparetor
{
public:
    // 比較用メンバ関数。
    // p_iL > p_iR なら true を、
    // それ以外は false を返すようにしてください。
    bool CompareTo( int p_iL, int p_iR )
    {
        if( p_iL > p_iR )
        {
            return true;
        }

        return false;
    }
};

// 実際の比較用クラスです。
// 整数値を降順でソートするよう比較します。
class CIntDescComparetor : public CComparetor
{
public:
    // 比較用メンバ関数。
    // p_iL < p_iR なら true を、
    // それ以外は false を返すようにしてください。
    bool CompareTo( int p_iL, int p_iR )
    {
        if( p_iL < p_iR )
        {
            return true;
        }

        return false;
    }
};

// ソートを行う関数です。
void DoBubbleSortUseComapre
    ( int *p_piAry, int p_iSize, CComparetor *p_pcComparetor )
{
    // 「入れ替え先」のループです。
    for( int iOut = 0; iOut < p_iSize - 1; iOut++ )
    {
        // 最後から先頭方向へのループです。
        // ただし「入れ替え先」までです。
        for( int iIn = p_iSize - 1; iOut < iIn; iIn-- )
        {
            if( p_pcComparetor->CompareTo
                    ( p_piAry[iIn - 1], p_piAry[iIn] ) == true )
            {
                // 前の方が大きいので入れ替えます。
                int iTemp = p_piAry[iIn];
                p_piAry[iIn] = p_piAry[iIn - 1];
                p_piAry[iIn - 1] = iTemp;
            }
        }
    }
}

int WINAPI WinMain
    ( HINSTANCE p_hInstance
    , HINSTANCE p_hPrevInstance
    , LPSTR p_pchCmdLine
    , int p_iCmdShow
    )
{
    int iAry[5];
    iAry[0] = 4;
    iAry[1] = 9;
    iAry[2] = 3;
    iAry[3] = 5;
    iAry[4] = 8;

    // 比較用クラスの変数を用意します（昇順）。
    CIntComparetor cIntComparetor;

    // ソートします。
    DoBubbleSortUseComapre( iAry, 5, &cIntComparetor );

    for( int iF1 = 0; iF1 < 5; ++iF1 )
    {
        char pch[256];
        sprintf( pch, "%d ", iAry[iF1] );
        OutputDebugString( pch );
    }
    OutputDebugString( "\n" );
    // 3 4 5 8 9 

    // 比較用クラスの変数を用意します（降順）。
    CIntDescComparetor cIntDescComparetor;

    // ソートします。
    DoBubbleSortUseComapre( iAry, 5, &cIntDescComparetor );

    for( iF1 = 0; iF1 < 5; ++iF1 )
    {
        char pch[256];
        sprintf( pch, "%d ", iAry[iF1] );
        OutputDebugString( pch );
    }
    OutputDebugString( "\n" );
    // 9 8 5 4 3 

    return 0;
}

『長！』
「新しいクラス使うこともあって複雑になりそうだったから、 Main.cpp に
まとめてあります」
『おー、メンバ関数もインラインになっててちょっと見やすいかも』
「まずクラス構造は以下のようになっています」

                ┌───────────┐
                │CComparetor クラス    │
                └───────────┘
                            △
                            │
            ┌───────┴───────┐
            │                              │
┌─────┴─────┐    ┌──────┴──────┐
│CIntComparetor クラス │    │CIntDescComparetor クラス │
└───────────┘    └─────────────┘

「 CComparetor クラスには純粋仮想関数 CompareTo() メンバ関数がありま
す。ソートを行う DoBubbleSortUseComapre() では、このメンバ関数を呼び
出して比較を行います」

// ソートを行う関数です。
void DoBubbleSortUseComapre
    ( int *p_piAry, int p_iSize, CComparetor *p_pcComparetor )
{                                                  ↓
// ...                                             ↓
            if( p_pcComparetor->CompareTo ←←←←←
                    ( p_piAry[iIn - 1], p_piAry[iIn] ) == true )
// ...
}

「この DoBubbleSortUseComapre() 関数は、元のプログラムのこの比較箇所
だけ変更してあります。それ以外は同じということを確認してください」
『前回と同じ、基本クラスのポインタを使って純粋仮想関数を呼び出すわけ
ね。で、実際に呼び出されるのは、オーバーライドして定義を作っている、
派生クラスの方ってことね』
「そういうこと。実際に呼び出されるのは CIntComparetor クラスと
CIntDescComparetor クラスの CompareTo() メンバ関数です」
『このメンバ関数の中身も、元のプログラムの CompareTo() 関数と同じね。
CIntComparetor クラスと CIntDescComparetor クラスの違いは？』
「昇順と降順。 CIntDescComparetor クラスの方は【<】が【>】になってる
から」
『 Version 13.08 ( No.244 ) の話ね』
「で、こうすることで、どちらのクラスを渡すかによって昇順と降順が切り
替わるようになります」

    // 比較用クラスの変数を用意します（昇順）。
    CIntComparetor cIntComparetor; →→→→→
                                            ↓
    // ソートします。                       ↓
    DoBubbleSortUseComapre( iAry, 5, &cIntComparetor );
    // 3 4 5 8 9 ←昇順
// ...
    // 比較用クラスの変数を用意します（降順）。
    CIntDescComparetor cIntDescComparetor;  →→→
                                                 ↓
    // ソートします。                            ↓
    DoBubbleSortUseComapre( iAry, 5, &cIntDescComparetor );
    // 9 8 5 4 3 ←降順

『おお、ちゃんと切り替わってる！』
「と、ちょっと早足すぎたから次回も引き続き」

/*
    Preview Next Story!
*/
「この辺が良く使われる方法かな」
『なんかやっと見えてきたかも』
「ま、それも基本的な仕組みが解っているからなんだけどね」
『む、そういうもの？』
「そういうもの」
『というわけで次回』
＜ Version 17.18 「インターフェイス」という考え方 ＞
「につづく！」
『いつも通り具体例先の方が良かった気がするけど』
「ポリモーフィズムだけは逆がいいかな、って」


////////////////////////////////////////////////////////////////////
/*                          ご注意！！                            */

・このメールを返信しないでください。
・ご意見・ご希望・ご感想は[チョー普通な日記]よりお送りください。
http://www.kab-studio.biz/nikki2/index.html
・購読登録を解除したいときにはこのページで行なってください。
http://www.mag2.com/m/0000012198.htm
・解除は自分で行なってください。
・バックナンバーはこれらのページにあります。
http://backno.mag2.com/reader/Back?id=0000012198
http://www.kab-studio.biz/Freeware/index.html#MailMagazine


////////////////////////////////////////////////////////////////////
/*
    KAB-studio.h
      Weekly Mail Magazine.
      Written by Kaburaya Seiden.
      http://www.kab-studio.biz/Info/MailMagazine/

    (C)KAB-studio 1999 - 2006 ALL RIGHTS RESERVED.
        http://www.kab-studio.biz/
        info@mail.kab-studio.biz
*/
////////////////////////////////////////////////////////////////////

