首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确设计类(发送消息)

如何正确设计类(发送消息)
EN

Software Engineering用户
提问于 2012-02-12 15:41:53
回答 1查看 1.1K关注 0票数 -1

试图以正确的方式设计小项目,并在其中遇到麻烦:\

关于任务:需要使用fft实现大数乘法。

首先,我有课

代码语言:javascript
复制
class LargeNumber{};
class Field{}; -- abstract (maybe interface would be better)
class C_C:public virtual Field{};
class Z_p:public virtual Field{};

因此,LargeNumber可以使用Z_P (模P)或C_C (复杂)类(更正确:C_C和Z_P有Mul和Sum函数来乘LargeNumber对象)

但另一项更有趣和困难的任务。

我需要计算所有的操作和时间,每次‘大’的操作。还需要抛出消息和创建日志。

如何解决这个问题?(我该怎么办?)

如果你评论模式和你的最佳实践的话,那也是很棒的。所以这门课:

代码语言:javascript
复制
class LargeNumber {
  private:
  int length;
  vector <short int> number;
  public:
  //prototype
  LargeNumber clone(){            
        return (*this);
  }
  //get
  int Length() const;
  vector <short int> Number()const;      
  //static
  static LargeNumber& GenerateOne(int);// create new LargeNumber
  static void Print(const LargeNumber& print);
  //constructors
  LargeNumber();
  LargeNumber(const LargeNumber& obj);
  explicit LargeNumber(int len);      
  explicit LargeNumber(vector <short int>);
  LargeNumber(int,int);
  //destructors
  ~LargeNumber();    
  void Kill();
  //operators
  LargeNumber& operator= (const LargeNumber& );
  LargeNumber& operator--();    
  LargeNumber& operator++();
  bool operator<(const LargeNumber&)const;


  };


 class Field {
  private:
  inline int max(const int a, const int b){return (a>b?a:b);}       
  inline int min(const int a, const int b){return (a<b?a:b);}     
  int i;
  //need Mod and 2**P-1
  LargeNumber& Deux (const int );

  LargeNumber& Mod (LargeNumber&);
  public:
         virtual ~Field();
         virtual LargeNumber& Sum (const LargeNumber& , const LargeNumber& );
         virtual LargeNumber& Sub (const LargeNumber& , const LargeNumber& );
         virtual LargeNumber& Mul (const LargeNumber& , const LargeNumber& );        
         virtual LargeNumber& Pow (const LargeNumber& , const LargeNumber& );
         virtual bool Prime (LargeNumber& );


  }; 
EN

回答 1

Software Engineering用户

回答已采纳

发布于 2012-02-12 20:26:14

不要重新发明轮子,使用现有的任意精确算法的良好实现,比如Bruno的CLN (它部分基于GMP)。

票数 4
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/134652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档