classdef Rucksack < matlab.mixin.Copyable
    
    properties
        inhalt = Gegenstand.empty
        kapazitaet
    end

    properties (Dependent)
        gesamtgewicht
        gesamtnutzen
    end
    
    methods
        
        function obj = Rucksack(k)
            obj.kapazitaet = k;
        end
        
        function gg = get.gesamtgewicht(obj)
            gg = 0;
            for i = obj.inhalt
                gg = gg + i.gewicht;
            end
        end
                
        function gn = get.gesamtnutzen(obj)
            gn = 0;
            for i = obj.inhalt
                gn = gn + i.nutzen;
            end
        end

        function gegenstandEinpacken(obj, g)
            if (~ismember(g,obj.inhalt)) && obj.gesamtgewicht()+g.gewicht <= obj.kapazitaet
                obj.inhalt = [obj.inhalt g];
            end
        end
        
        function ausgabe(obj)
            fprintf('Rucksack mit Gewicht %g und Gesamtnutzen %g \n',obj.gesamtgewicht(), obj.gesamtnutzen());
        end
    end
end

