実装を分けるには?

解決


LXH  2004-07-06 05:02:46  No: 53926

はじめまして。VCの初心者です。皆様よろしくお願いいたします。

VCで大量の関数(100個ぐらい)扱う処理をしようとします。

そして、下記の二つの方法があるかと思っていますが、その処理能力の違いがよく分かりません。また、別の方法はないでしょうか?

方法1、ヘッダファイルには宣言のみを書き、関数の実装は複数のcppファイルに分散して書く。
class A{
  //初期処理:データ読み込み処理の関数
  getData();

  //ある処理(例:Date)の関数郡
  f_Date1();
  f_Date2();
    :
  f_Daten();

  //ある処理(例:Time)の関数郡
  f_Teim1();
  f_Teim2();
    :
  f_Teimn();

  //後処理:データ出力処理の関数
  setData();
}

方法2、クラスを分ける(ヘッダファイルを分けて関数を宣言する)。
class A0{
  //データ読み込み処理の関数郡
  getData();
  //データ出力処理の関数郡
  setData();
}

class A1{
  //ある処理(Date)の関数郡
  f_Date1();
  f_Date2();
    :
  f_Daten();
}

class A2{
  //ある処理(Date)の関数郡
  f_Date1();
  f_Date2();
    :
  f_Daten();
}


通りすがり  2004-07-06 20:23:22  No: 53927

前者も後者も処理能力としては変わらないです。
ただ、後者は1つのファイルが小さくまとまる為見通しはよくなるけれど、
プログラムの作成は面倒になるかもしれませんね。

結局は、100個の関数の利用法によると思いますが……
クラスはある機能のカプセル化だと私は認識しているので、
その機能を実現するのに100個の関数が必要だったら前者でいいし、
その機能はさらにA0, A1, ... ,An まで細分化できるのだったら
後者でもいいですし。

クラスの見通しをよくする為だったら、
細分化した機能ごとに A0, ... , An のクラスを定義して、
それを統合するクラス A というのを作る、という手もあると思います。

あと、定義は1つのクラスだけど、実装の実体は複数のファイル、
というのもあるかも。

A.h の内容
-------------------------------
class A {
   // ある処理の関数100個宣言
};
-------------------------------

A1.cpp の内容
-------------------------------
#include "A.h"
// ある処理の関数50個の実体
A::f_Date_1() { ... }
       ....
A::f_Date_n() { ... }
-------------------------------

A2.cpp の内容
-------------------------------
#include "A.h"
// ある処理の残り関数50個の実体
A::f_trim_1() { ... }
       ....
A::f_trim_n() { ... }
-------------------------------


LXH  2004-07-06 22:36:15  No: 53928

TO:通りすがり  様

いろいろ教えてくださってありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加