classdef model < handle
    properties
        vector
        Slist
        Ilist
        Rlist
        Wlist
    end
    
    methods
        function obj=model(S, I, R, Waiting, N)
            if nargin > 4
                repeat = N;
            else
                repeat = 100;
            end
                
            obj.vector(1) = S;
            obj.vector(2) = I;
            obj.vector(3) = R;
            for i = 1:Waiting
                obj.vector(3+i) = 0;
            end
            obj.Slist = zeros(1, repeat);
            obj.Ilist = zeros(1, repeat);
            obj.Rlist = zeros(1, repeat);
            obj.Wlist = zeros(1, repeat);
        end
        
        function step(obj, i, coeffs, VaccinationVec)
            obj.Slist(i) = obj.vector(1);
            obj.Ilist(i) = obj.vector(2);
            obj.Rlist(i) = obj.vector(3);
            obj.Wlist(i) = sum(obj.vector(4:length(obj.vector)));
            obj.vector = step(obj.vector, coeffs, VaccinationVec(i));
        end
    end
end