Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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;
}