I need to make a c++ program that involves herritance: -Create a Cipher class th
ID: 3736584 • Letter: I
Question
I need to make a c++ program that involves herritance:
-Create a Cipher class that contains:
protected:
string alphabet;
public:
parameter constructor
setter for alphabet
getter for alphabet
encrypt(message)=0 function
decrypt(ciphertext)=0 function
-Create CaesarCipher class with Cipher heritance:
private:
variable shift int type
public:
parameter constructor
Setter for shift
getter for shift
encrypt(message) function definition
decrypt(ciphertext) function definition
-Create AtbashCipher with Cipher heritance:
encrypt(message) function definition
decrypt(ciphertext) function definition
-Create Message class:
private:
variable message and encryptionMethod type string
Variable caeser type CeasarCipher
Variable atbash type AtbashCipher
public:
Parameter constructor
message setters
message getters
sendMessage()
sendMessage(int)
recieveMessage(ciphertext, int)
Explanation / Answer
#include <cstdlib>
#include <iostream>
using namespace std;
class Cipher {
protected:
string alphabet;
public:
Cipher() = default;
Cipher(string alphabet) : alphabet(alphabet){}
void setter(string alpha){
alphabet = alpha;
}
string getter()const{
return alphabet;
}
virtual void encrypt(string message)=0;
virtual void decrypt(string ciphertext)=0;
};
class CaesarCipher : public Cipher{
private:
int shift;
public:
CaesarCipher() = default;
CaesarCipher(int shift) : shift(shift){}
void Setter(int sh) {shift = sh;}
int getter()const{return shift;}
void encrypt(string message){
string result = "";
// traverse message
for (int i=0;i<message.length();i++)
{
// Apply transformation to each character
// Encrypt Uppercase letters
if (isupper(message[i]))
result += char(int(message[i]+shift-65)%26 +65);
// Encrypt Lowercase letters
else
result += char(int(message[i]+shift-97)%26 +97);
}
// Replace the resulting string
message = result;
cout<<message<<endl;
}
void decrypt(string ciphertext) {
string result = "";
// traverse message
for (int i=0;i<ciphertext.length();i++)
{
// Apply transformation to each character
// Decrypt Uppercase letters
if (isupper(ciphertext[i]))
result += char(int(ciphertext[i]-shift-65)%26 +65);
// Decrypt Lowercase letters
else
result += char(int(ciphertext[i]-shift-97)%26 +97);
}
// Replace the resulting string
ciphertext = result;
cout<<ciphertext<<endl;
}
};
class AtbashCipher : public Cipher{
public:
void encrypt(string message){
string result = "";
// traverse message
for (int i=0;i<message.length();i++)
{
// Apply transformation to each character
// Encrypt Uppercase letters
if (isupper(message[i]))
result += char(int('Z') - int(message[i]) + int('A') );
// Encrypt Lowercase letters
else
result += char(int('z')-int(message[i]) + int('a') );
}
// Replace the resulting string
message = result;
cout<<message<<endl;
}
void decrypt(string ciphertext){
string result = "";
// traverse message
for (int i=0;i<ciphertext.length();i++)
{
// Apply transformation to each character
// Decrypt Uppercase letters
if (isupper(ciphertext[i]))
result += char(int('Z') - int(ciphertext[i]) + int('A'));
// Decrypt Lowercase letters
else
result += char(int('z') - int(ciphertext[i]) + int('a'));
}
// Replace the resulting string
ciphertext = result;
cout<<ciphertext<<endl;
}
};
class Message {
private:
string message,encryptionMethod;
CaesarCipher caeser;
AtbashCipher atbash;
public:
Message(string message) : message(message){}
void setter (string msg){message = msg;}
string getter()const {return message;}
/*Below functions were not implemented as the details of what to be performed was not given*/
void sendMessage(){
}
void sendMessage(int num){
}
void recieveMessage(string ciphertext, int num){
}
};
int main(int argc, char** argv) {
return 0;
}