【问题标题】:C++ Write in OOP... where to get started?C++ 用 OOP 编写...从哪里开始?
【发布时间】:2014-04-19 20:30:41
【问题描述】:

我真的是 C++ 新手,现在我遇到了这个问题,我真的不知道如何以及从哪里开始。

它是关于使用类和对象重写现有的简单程序。我阅读了很多关于 OOP 的书籍和在线资源,我了解了基本概念,但我真的不知道如何以各种不同的方式使用它。

我真的很抱歉我的问题没有被澄清......基本上我的问题是,我如何在面向对象编程中重写这段代码? (我希望这有助于澄清...)
-添加于 2014 年 4 月 19 日下午 5:29

我已经走到了死胡同,挣扎着……有人可以帮我开始吗?即使只是给我一个提示或建议,我将不胜感激!

这只是我写的一段程序,我只是想知道把它变成OOP的步骤。

#include "stdafx.h"
#include <iostream>
#include <vector>
using namespace std;

int main()
{
    vector < float > num;
    float sum = 0;
    float average = 0;
    int totalCount = 0; // total number count

    // Loop for read in total number count
    cout << "Please enter total number count\n";
    cin >> totalCount;

    sum = 0;
    // Loop for read in numbers
    for (int i = 0; i < totalCount; ++i)
    {
        num.push_back(0); // creates a space, must use this when vector is used
        cout << "\nPlease enter the number\n" << "Number " << i + 1 << ": ";
        cin >> num[i];

        sum += num[i]; // calculate the sum
    }

    // Calculate the average
    average = sum / totalCount;
    cout << "\n\nAverage: " << average << "\n";

    system("PAUSE");
    return 0;
}

【问题讨论】:

  • '我只是想知道使它变成 OOP 的步骤' 抱歉!要么我不明白你的要求,要么你的问题太宽泛了......
  • 对不起,我的意思是我不明白如何将我编写的代码重写为 OOP 风格。我不知道从哪里开始。
  • 也许你应该首先弄清楚 OOP 如何改进你的代码?!?
  • 感谢您的建议,但问题是...我真的不知道如何开始使用 OOP 重写我的代码。我试过了,但后来我发现自己没有使用任何 setter/getter、构造函数/析构函数……等等。

标签: c++ function class oop object


【解决方案1】:

我不确定我是否完全理解你的问题,但如果你只需要为它写一个类。你可以用不同的方式做到这一点。

1) 如果你想要一个特定于浮点值的类,你可以做这样的事情,这很简单,但只是给你一个例子..

class MyFloat{
    float _num;
public:
    MyFloat(float f = float()) : _num(f){}
    float getMyFloat() const{ return _num; }
    void setMyFloat(float b) { _num = b;}
};

2) 如果您想要一个可以解决或处理任何数据类型的类,那么您将在一个看起来像这样的模板类中查找..

template <typename T>
class MyFloat{
    T _num;
public:
    MyFloat(T f = T()) : _num(f){}
    T getMyFloat() const{ return _num; }
    void setMyFloat(T b) { _num = b;}
};

然后在您的实现中,您只需使用您的类创建一个对象,在本例中为 MyFloat..

vector <MyFloat> num; // this will be an object that could handle float values or any type     depending which class you choose to use

我希望它有所帮助,即使你的问题不太清楚.. :)

【讨论】:

  • 展示 OOP 是多么无意义的好方法。在浮点数周围写一个包装器。
  • @DDrmmr '为浮点数写一个包装器' 或者更好的是AverageCalculator 或类似...
【解决方案2】:

在这种情况下,没有具体需要创建一个对象。实际上,您为数字序列 (num) 实例化了一个对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多