123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #ifndef COMPONENTS
- #define COMPONENTS
-
- #include <string>
-
- /*
- Lab 4 - TDDE18 - Components - Header file
- */
-
- /// Link class, represents a node between different components
- class Link {
- public:
- Link();
- ~Link();
- double charge;
- };
-
- /// Base component class
- class Component {
- public:
- Component(std::string const _name, Link& _a, Link& _b);
- virtual ~Component() = default;
-
- std::string get_name() const;
- virtual void simulate(double const _dt) = 0;
- virtual double voltage() const;
- virtual double current() const = 0;
-
- protected:
- std::string name{};
- Link& a;
- Link& b;
- };
-
- /// Derived (from component) class resistor
- class Resistor : public Component {
- public:
- Resistor(std::string const _name, Link& _a, Link& _b, double const _resistance);
-
- virtual void simulate(double const _dt) override;
- using Component::voltage;
- virtual double current() const override;
-
- private:
- double resistance;
- };
-
- /// Derived (from component) class capacitor
- class Capacitor : public Component {
- public:
- Capacitor(std::string const _name, Link& _a, Link& _b, double const _farad);
-
- virtual void simulate(double const _dt) override;
- using Component::voltage;
- virtual double current() const override;
-
- private:
- double farad;
- double charge;
- };
-
- /// Derived (from component) class battery
- class Battery : public Component {
- public:
- Battery(std::string const _name, Link& _a, Link& _b, double const _potential);
-
- virtual void simulate(double const) override;
- virtual double voltage() const override;
- virtual double current() const override;
-
- private:
- double potential;
- };
-
- #endif
|