How do I separate classes into multiple files? Here is my understanding so far:
#include classname.h
in your main source file to import its contents.Classname::Classname
at the beginning of the source file is a Scope Resolution Operator.main
by using the objects that you have declared.I'm just confused about how to implement this in practice. I have created a working calculator program with all the classes in one source file:
#include <iostream>
using namespace std;
class Addition {
public:
float add(float x, float y) {
float sum;
sum = x + y;
return sum;
}
};
class Subtraction {
public:
float subtract(float x, float y) {
float dif;
dif = x - y;
return dif;
}
};
class Multiplication {
public:
float multiply(float x, float y) {
float prod;
prod = x * y;
return prod;
}
};
class Division {
public:
float divide(float x, float y) {
float quot;
quot = x / y;
return quot;
}
};
int op;
char cont;
int main() {
do {
cout << "Welcome to C++ Calculator v2!" << endl;
cout << "Select the number for which operation you want to use: " << endl;
cout << "1-Addition" << endl;
cout << "2-Subtraction" << endl;
cout << "3-Mutliplication" << endl;
cout << "4-Division" << endl;
cin >> op;
if (op == 1) {
float num1;
float num2;
Addition addObj;
cout << "You have chosen Addition!" << endl;
cout << "Enter the first number you want to add: " << endl;
cin >> num1;
cout << "Enter the second number you wat to add: " << endl;
cin >> num2;
float ans = addObj.add(num1, num2);
cout << "The sum is " << ans << endl;
cout << "Do you wish to continue? Y/N" << endl;
cin >> cont;
}
if (op == 2) {
float num1;
float num2;
Subtraction subObj;
cout << "You have chosen Subtraction!" << endl;
cout << "Enter the first number you want to subtract: " << endl;
cin >> num1;
cout << "Enter the second number you want to subtract: " << endl;
cin >> num2;
float ans = subObj.subtract(num1, num2);
cout << "The difference is " << ans << endl;
cout << "Do you wish to continue? Y/N" << endl;
cin >> cont;
}
if (op == 3) {
float num1;
float num2;
Multiplication multObj;
cout << "You have chosen Multiplication!" << endl;
cout << "Enter the first number you want to multiply: " << endl;
cin >> num1;
cout << "Enter the second number you want to multiply: " << endl;
cin >> num2;
float ans = multObj.multiply(num1, num2);
cout << "The product is " << ans << endl;
cout << "Do you wish to continue? Y/N" << endl;
cin >> cont;
}
if (op == 4) {
float num1;
float num2;
Division divObj;
cout << "You have chosen Division!" << endl;
cout << "Enter the first number you want to divide: " << endl;
cin >> num1;
cout << "Enter the second number you want to divide: " << endl;
cin >> num2;
float ans = divObj.divide(num1, num2);
cout << "The quotient is " << ans << endl;
cout << "Do you wish to continue? Y/N" << endl;
cin >> cont;
}
} while (cont == 'Y' || cont == 'y');
if (cont == 'N' || 'n') {
cout << "Thanks for using my program, goodbye!" << endl;
}
return 0;
}
I know there is a lot easier way to make something like this, but I've used classes and objects instead for the sole purpose of practice.
Ok, I will show you by doing your example:
subtraction.h
class Subtraction
{
public:
float subtract (float x, float y);
};
subtraction.cxx
#include "subtraction.h"
float Subtraction::subtract (float x, float y)
{
float dif;
dif=x-y;
return dif;
}
multiplication.h
class Multiplication
{
public:
float multiply (float x, float y);
};
multiplication.cxx
#include "multiplication.h"
float Multiplication::multiply (float x, float y)
{
float prod;
prod=x*y;
return prod;
}
and so on...
main.cxx
#include "subtraction.h"
#include "multiplication.h"
int main()
{
//use the classes just as before.
}
Also, I didn't put it in the code here, for simplicity, but go ahead and get into the habit of ensuring that your declarations are only included once. On a large project, this can get very nasty if you don't put these safeguards in.
#ifndef SUBTRACTION_H
#define SUBTRACTION_H
class Subtraction
{
....
};
#endif /*SUBTRACTION_H*/