Okay, ich will euch erklären wofür das Programm gut ist:
Die Klasse Method enthält einen Namen sowie einen boolean der angibt, ob eine Methode der Klasse ausgeführt wurde oder nicht.
In meiner Main hab ich eine Hash in welcher als Key immer eine Instanz von Method liegt, und als Value eine Instanz einer Method oder erneut eine Hashtable.
Der Value der Hashtable gibt dabei logisch an, welche Abhängigkeiten die Instanz(key) besitzt und ob diese true(also erfüllt) oder false(nicht erfüllt) sind.
Somit kommen wir zu dem Schluss, dass wir folgendes brauchen:
package Method {
my name;
my Isfulfilled;
sub irgendeinemethode()
{
}
}
package main;
my %hashtable;
my $method1= Method -> new();
my $method2= Method -> new();
my $method3= Method ->new();
my $method4= Method ->new();
my %hashtable2;
%hashtable={$method1=>$method2,$method2=>$hashtable2);
%hashtable2={method3=>$method4,$method4=>$method1};
Oder in Klartext:
Eine Klasse welche eine Variable für einen Bool und einen String hat.
Mehrere Instanzen einer Klasse(Method).
Eine Hashtable in welche alle Instanzen von Method reinkommen bzw weitere Hashtables für die Baumhirarchie.
»»»» $combinatorics::%hashtable = ($Method=>$2Method)
»»Was soll das werden?
»»Wenn Du auf die (per our oder use vars deklarierte) Variable %hashtable im Package Combinatorics zugreifen willst, geht das so:
Wir haben wohl ein etwas größeres Missverständnis:
Mit dem Code:
my $combinatorics = Combinatorics ->new();
hält für mich die Variable $combinatorics die Instanz des Packages Combinatorics.
somit hält
my $method1= Method -> new();
$method1 die Instanz von Method.
mit $method1::name || $method1::IsFulfilled möchte ich auf die Werte meiner Instanz zurückgreifen.
Ergo soll mein Code für
print $method1::name = "method1";
method1 zurückliefern
während print $method2::name = "method2";
method2 zurückliefern soll.