This lab requires you to use C++ class composition to implement a single pole-fi
ID: 3534597 • Letter: T
Question
This lab requires you to use C++ class composition to implement a single pole-filter design program. The program will allow the user to specify resistor and capacitor values and filter type. Once all the user parameters are specified, the program will return the cutoff frequency values for the filter.
Composition may be thought of as a has-a relationship for objects, as compared to inheritance, which may be described as an is-arelationship for objects.
You are required to use two component classes: one for a resistor object and one for a capacitor object. You are then to define and implement a filter class that will contain one object of each the resistor and the capacitor classes in order to create the filter and its characteristics.
The Resistor class created in the Week 2 iLab may be used both as the class definition for the resistor object and as a template or a guide for the capacitor-class definition.
The lab also requires you to implement your program in a multiple-file project and create both cpp and h files for each class defined. In addition, the program will have the capacity to save all filter parameters to a text file and read previously designed filter parameters from a text file.
Create a Multifile Project for the Composition Lab
1. Add three classes to the project: a Filter class, a Capacitor class, and a Resistor class.
2. You may use the Resistor class files from the Week 2 lab for this lab.
3. The Capacitor class should be modeled after the Resistor class for class members and operation.
Filter-Class Definition
The Filter class should have, at a minimum, the following capabilities.
Explanation / Answer
#include "Capacitor.h"
#include <conio.h>
#include "Filter.h"
#include <iostream>
#include "Resistor.h"
#include <windows.h>
#include <iomanip>
using namespace std;
void clear_screen(void);
void main(void)
{
// Local variable for text data entry
char tempName[16];
// Local variable for component value data entry
double tempValue;
cout << "Instantiate one object of class Filter" << endl << endl;
cout << "Enter a name for the new filter object: ";
cin.getline(tempName,15,' ');
Filter filt1;
// Display filter values
cout << setiosflags(ios::fixed)
<< setiosflags(ios::right)
<< setiosflags(ios::showpoint)
<< setprecision(3);
cout << endl << endl;
cout << "Nominal Filter Frequency = " << setw(10) << filt1.getFilter() << " Hertz" << endl;
cout << "Minimum Filter Frequency = " << setw(10) << filt1.getMaxFilter() << " Hertz" << endl;
cout << "Maximum Filter Frequency = " << setw(10) << filt1.getMinFilter() << " Hertz" << endl;
cout << "Filter Bandwidth Frequency = " << setw(10) << filt1.getFilterTol() << " Hertz" << endl;
// Display resistor values
cout << setiosflags(ios::fixed)
<< setiosflags(ios::right)
<< setiosflags(ios::showpoint)
<< setprecision(3);
cout << endl << endl;
cout << "Nominal Resistance Value = " << setw(10) << filt1.getResistance() << " ohms" << endl;
cout << "Resistor Tolerance Value = " << setw(10) << filt1.getResTolerance()*100 << " Percent" << endl;
cout << "Maximum Resistance Value = " << setw(10) << filt1.getMaxResistance() << " ohms" << endl;
cout << "Minimum Resistance Value = " << setw(10) << filt1.getMinResistance() << " ohms" << endl;
cout << endl << endl;
// Display capacitor values
cout << setiosflags(ios::fixed)
<< setiosflags(ios::showpoint)
<< setiosflags(ios::left)
<< setprecision(3);
cout << "Nominal Capacitance Value = " << setw(10) << filt1.getCapacitance() *1000000<< " micro Farads" << endl;
cout << "Capacitor Tolerance Value = " << setw(10) << filt1.getCapTolerance()*100 << " Percent" << endl;
cout << "Maximum Capacitance Value = " << setw(10) << filt1.getMaxCapacitance() * XXXXXXX << " micro Farads" << endl;
cout << "Minimum Capacitance Value = " << setw(10) << filt1.getMinCapacitance() * XXXXXXX<< " micro Farads" << endl;
cout << endl << endl;
//filt1.FilterSave();
cout << "Enter new nominal resistance value for filter: ";
cin >> tempValue;
filt1.setResistance(tempValue);
cout << "Enter new resistance tolerance value for filter: ";
cin >> tempValue;
filt1.setResTolerance(tempValue/100.0);
cout << "Enter new nominal micro Farad capacitance value for filter: ";
cin >> tempValue;
filt1.setCapacitance(tempValue/1000000.0);
cout << "Enter new capacitance tolerance value for filter: ";
cin >> tempValue;
filt1.setResTolerance(tempValue/100.0);
// Calculate filter values based on new resistance and capacitance values
filt1.calculateFilter();
// Display filter values
cout << setiosflags(ios::fixed)
<< setiosflags(ios::right)
<< setiosflags(ios::showpoint)
<< setprecision(3);
cout << endl << endl;
cout << "Nominal Filter Frequency = " << setw(10) << filt1.getFilter() << " Hertz" << endl;
cout << "Minimum Filter Frequency = " << setw(10) << filt1.getMaxFilter() << " Hertz" << endl;
cout << "Maximum Filter Frequency = " << setw(10) << filt1.getMinFilter() << " Hertz" << endl;
cout << "Filter Bandwidth Frequency = " << setw(10) << filt1.getFilterTol() << " Hertz" << endl;
// Display resistor values
cout << setiosflags(ios::fixed)
<< resetiosflags(ios::left)
<< setiosflags(ios::right)
<< setiosflags(ios::showpoint)
<< setprecision(3);
cout << endl << endl;
cout << "Nominal Resistance Value = " << setw(10) << filt1.getResistance() << " ohms" << endl;
cout << "Resistor Tolerance Value = " << setw(10) << filt1.getResTolerance()*100 << " Percent" << endl;
cout << "Maximum Resistance Value = " << setw(10) << filt1.getMaxResistance() << " ohms" << endl;
cout << "Minimum Resistance Value = " << setw(10) << filt1.getMinResistance() << " ohms" << endl;
cout << endl << endl;
cout << setiosflags(ios::fixed)
<< setiosflags(ios::showpoint)
<< setiosflags(ios::left)
<< setprecision(3);
cout << "Nominal Capacitance Value = " << setw(10) << filt1.getCapacitance() *1000000<< " micro Farads" << endl;
cout << "Capacitor Tolerance Value = " << setw(10) << filt1.getCapTolerance()*100 << " Percent" << endl;
cout << "Maximum Capacitance Value = " << setw(10) << filt1.getMaxCapacitance() * XXXXXXX << " micro Farads" << endl;
cout << "Minimum Capacitance Value = " << setw(10) << filt1.getMinCapacitance() * XXXXXXX<< " micro Farads" << endl;
cout << endl << endl;
filt1.FilterRead();
//filt1.calculateFilter();
// Display filter values
cout << setiosflags(ios::fixed)
<< setiosflags(ios::right)
<< setiosflags(ios::showpoint)
<< setprecision(3);
cout << endl << endl;
cout << "Nominal Filter Frequency = " << setw(10) << filt1.getFilter() << " Hertz" << endl;
cout << "Minimum Filter Frequency = " << setw(10) << filt1.getMaxFilter() << " Hertz" << endl;
cout << "Maximum Filter Frequency = " << setw(10) << filt1.getMinFilter() << " Hertz" << endl;
cout << "Filter Bandwidth Frequency = " << setw(10) << filt1.getFilterTol() << " Hertz" << endl;
// Display resistor values
cout << setiosflags(ios::fixed)
<< resetiosflags(ios::left)
<< setiosflags(ios::right)
<< setiosflags(ios::showpoint)
<< setprecision(3);
cout << endl << endl;
cout << "Nominal Resistance Value = " << setw(10) << filt1.getResistance() << " ohms" << endl;
cout << "Resistor Tolerance Value = " << setw(10) << filt1.getResTolerance()*100 << " Percent" << endl;
cout << "Maximum Resistance Value = " << setw(10) << filt1.getMaxResistance() << " ohms" << endl;
cout << "Minimum Resistance Value = " << setw(10) << filt1.getMinResistance() << " ohms" << endl;
cout << endl << endl;
cout << setiosflags(ios::fixed)
<< setiosflags(ios::showpoint)
<< setiosflags(ios::left)
<< setprecision(3);
cout << "Nominal Capacitance Value = " << setw(10) << filt1.getCapacitance() *1000000<< " micro Farads" << endl;
cout << "Capacitor Tolerance Value = " << setw(10) << filt1.getCapTolerance()*100 << " Percent" << endl;
cout << "Maximum Capacitance Value = " << setw(10) << filt1.getMaxCapacitance() * XXXXXXX << " micro Farads" << endl;
cout << "Minimum Capacitance Value = " << setw(10) << filt1.getMinCapacitance() * XXXXXXX<< " micro Farads" << endl;
cout << endl << endl;
}
The headers that go in the files are:
===
Capacitor.h
#pragma once
===
Capacitor.cpp
#include "Capacitor.h"
#include "Capacitor.h"
#include <conio.h>
#include <iostream>
#include <iomanip>
#include <windows.h>
using namespace std;
===
Filter.h
#pragma once
#include "Resistor.h"
#include "Capacitor.h"
===
Filter.cpp
#define PI 3.141592654
#include "Capacitor.h"
#include <conio.h>
#include "Filter.h"
#include <iomanip>
#include <iostream>
#include "Resistor.h"
#include <stdio.h>
#include <windows.h>
#include <fstream>
using namespace std;
===
Resistor.h
#pragma once
===
Resistor.cpp
#include "Resistor.h"
#include <conio.h>
#include <iostream>
#include <iomanip>
#include "Resistor.h"
#include <windows.h>
using namespace std;
===
FilterMain.cpp (driver file - only place where main function is used)
#include "Capacitor.h"
#include <conio.h>
#include "Filter.h"
#include <iostream>
#include "Resistor.h"
#include <windows.h>
#include <iomanip>
using namespace std;
#include "Capacitor.h"
#include <conio.h>
#include "Filter.h"
#include <iostream>
#include "Resistor.h"
#include <windows.h>
#include <iomanip>
using namespace std;
void clear_screen(void);
void main(void)
{
// Local variable for text data entry
char tempName[16];
// Local variable for component value data entry
double tempValue;
cout << "Instantiate one object of class Filter" << endl << endl;
cout << "Enter a name for the new filter object: ";
cin.getline(tempName,15,' ');
Filter filt1;
// Display filter values
cout << setiosflags(ios::fixed)
<< setiosflags(ios::right)
<< setiosflags(ios::showpoint)
<< setprecision(3);
cout << endl << endl;
cout << "Nominal Filter Frequency = " << setw(10) << filt1.getFilter() << " Hertz" << endl;
cout << "Minimum Filter Frequency = " << setw(10) << filt1.getMaxFilter() << " Hertz" << endl;
cout << "Maximum Filter Frequency = " << setw(10) << filt1.getMinFilter() << " Hertz" << endl;
cout << "Filter Bandwidth Frequency = " << setw(10) << filt1.getFilterTol() << " Hertz" << endl;
// Display resistor values
cout << setiosflags(ios::fixed)
<< setiosflags(ios::right)
<< setiosflags(ios::showpoint)
<< setprecision(3);
cout << endl << endl;
cout << "Nominal Resistance Value = " << setw(10) << filt1.getResistance() << " ohms" << endl;
cout << "Resistor Tolerance Value = " << setw(10) << filt1.getResTolerance()*100 << " Percent" << endl;
cout << "Maximum Resistance Value = " << setw(10) << filt1.getMaxResistance() << " ohms" << endl;
cout << "Minimum Resistance Value = " << setw(10) << filt1.getMinResistance() << " ohms" << endl;
cout << endl << endl;
// Display capacitor values
cout << setiosflags(ios::fixed)
<< setiosflags(ios::showpoint)
<< setiosflags(ios::left)
<< setprecision(3);
cout << "Nominal Capacitance Value = " << setw(10) << filt1.getCapacitance() *1000000<< " micro Farads" << endl;
cout << "Capacitor Tolerance Value = " << setw(10) << filt1.getCapTolerance()*100 << " Percent" << endl;
cout << "Maximum Capacitance Value = " << setw(10) << filt1.getMaxCapacitance() * XXXXXXX << " micro Farads" << endl;
cout << "Minimum Capacitance Value = " << setw(10) << filt1.getMinCapacitance() * XXXXXXX<< " micro Farads" << endl;
cout << endl << endl;
//filt1.FilterSave();
cout << "Enter new nominal resistance value for filter: ";
cin >> tempValue;
filt1.setResistance(tempValue);
cout << "Enter new resistance tolerance value for filter: ";
cin >> tempValue;
filt1.setResTolerance(tempValue/100.0);
cout << "Enter new nominal micro Farad capacitance value for filter: ";
cin >> tempValue;
filt1.setCapacitance(tempValue/1000000.0);
cout << "Enter new capacitance tolerance value for filter: ";
cin >> tempValue;
filt1.setResTolerance(tempValue/100.0);
// Calculate filter values based on new resistance and capacitance values
filt1.calculateFilter();
// Display filter values
cout << setiosflags(ios::fixed)
<< setiosflags(ios::right)
<< setiosflags(ios::showpoint)
<< setprecision(3);
cout << endl << endl;
cout << "Nominal Filter Frequency = " << setw(10) << filt1.getFilter() << " Hertz" << endl;
cout << "Minimum Filter Frequency = " << setw(10) << filt1.getMaxFilter() << " Hertz" << endl;
cout << "Maximum Filter Frequency = " << setw(10) << filt1.getMinFilter() << " Hertz" << endl;
cout << "Filter Bandwidth Frequency = " << setw(10) << filt1.getFilterTol() << " Hertz" << endl;
// Display resistor values
cout << setiosflags(ios::fixed)
<< resetiosflags(ios::left)
<< setiosflags(ios::right)
<< setiosflags(ios::showpoint)
<< setprecision(3);
cout << endl << endl;
cout << "Nominal Resistance Value = " << setw(10) << filt1.getResistance() << " ohms" << endl;
cout << "Resistor Tolerance Value = " << setw(10) << filt1.getResTolerance()*100 << " Percent" << endl;
cout << "Maximum Resistance Value = " << setw(10) << filt1.getMaxResistance() << " ohms" << endl;
cout << "Minimum Resistance Value = " << setw(10) << filt1.getMinResistance() << " ohms" << endl;
cout << endl << endl;
cout << setiosflags(ios::fixed)
<< setiosflags(ios::showpoint)
<< setiosflags(ios::left)
<< setprecision(3);
cout << "Nominal Capacitance Value = " << setw(10) << filt1.getCapacitance() *1000000<< " micro Farads" << endl;
cout << "Capacitor Tolerance Value = " << setw(10) << filt1.getCapTolerance()*100 << " Percent" << endl;
cout << "Maximum Capacitance Value = " << setw(10) << filt1.getMaxCapacitance() * XXXXXXX << " micro Farads" << endl;
cout << "Minimum Capacitance Value = " << setw(10) << filt1.getMinCapacitance() * XXXXXXX<< " micro Farads" << endl;
cout << endl << endl;
filt1.FilterRead();
//filt1.calculateFilter();
// Display filter values
cout << setiosflags(ios::fixed)
<< setiosflags(ios::right)
<< setiosflags(ios::showpoint)
<< setprecision(3);
cout << endl << endl;
cout << "Nominal Filter Frequency = " << setw(10) << filt1.getFilter() << " Hertz" << endl;
cout << "Minimum Filter Frequency = " << setw(10) << filt1.getMaxFilter() << " Hertz" << endl;
cout << "Maximum Filter Frequency = " << setw(10) << filt1.getMinFilter() << " Hertz" << endl;
cout << "Filter Bandwidth Frequency = " << setw(10) << filt1.getFilterTol() << " Hertz" << endl;
// Display resistor values
cout << setiosflags(ios::fixed)
<< resetiosflags(ios::left)
<< setiosflags(ios::right)
<< setiosflags(ios::showpoint)
<< setprecision(3);
cout << endl << endl;
cout << "Nominal Resistance Value = " << setw(10) << filt1.getResistance() << " ohms" << endl;
cout << "Resistor Tolerance Value = " << setw(10) << filt1.getResTolerance()*100 << " Percent" << endl;
cout << "Maximum Resistance Value = " << setw(10) << filt1.getMaxResistance() << " ohms" << endl;
cout << "Minimum Resistance Value = " << setw(10) << filt1.getMinResistance() << " ohms" << endl;
cout << endl << endl;
cout << setiosflags(ios::fixed)
<< setiosflags(ios::showpoint)
<< setiosflags(ios::left)
<< setprecision(3);
cout << "Nominal Capacitance Value = " << setw(10) << filt1.getCapacitance() *1000000<< " micro Farads" << endl;
cout << "Capacitor Tolerance Value = " << setw(10) << filt1.getCapTolerance()*100 << " Percent" << endl;
cout << "Maximum Capacitance Value = " << setw(10) << filt1.getMaxCapacitance() * XXXXXXX << " micro Farads" << endl;
cout << "Minimum Capacitance Value = " << setw(10) << filt1.getMinCapacitance() * XXXXXXX<< " micro Farads" << endl;
cout << endl << endl;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.