Leser: 18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!perl -w
use strict;
package initialize;
sub new() {
my $IsFulfilled = 0;
my $self=shift;
my $newInst={};
bless($newInst,$self);
}
package Method;
use base 'initialize';
sub new(){
my $name;
}
sub checkFulfilled()
{
return $initialize::IsFulfilled ;
}
my $method = Method -> new();
$method::IsFulfilled = 0;
print $method::IsFulfilled;
$method->checkFulfilled(); # hier taucht der Err auf, obwohl IsFulfilled direkt oben drüber gesetzt wird und in der Konsole auch 0 erscheint...
print $method::IsFulfilled;
1 2 3 4 5 6 7 8 9 10 11 12
package initialize; our $IsFullfilled; sub new { # ... } package main; $initialize::IsFullfilled = 3; print $initialize::IsFullfilled;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package initialize;
use base qw(Class:Accessor);
initialize->mk_acessors(qw(IsFulfilled));
sub new() {
my $self=shift;
my $newInst={};
bless($newInst,$self);
}
package Method;
use base 'initialize';
use base qw(Class:Acessor);
Method->mk_acessors(qw(name));
sub checkFulfilled()
{
IsFulfilled=1;
}
Guest KarakashUnd oop Tutorial hatte ich gar keins. Wir haben bisher in der Schule ein halbes Jahr in C# gelernt und sollen nun innerhalb einer Woche ein Projekt in Perl verwirklichen - ohne jegliche Perl Kentnisse zu besitzen.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!perl -w
use strict;
package initialize;
sub new {
my $class = shift;
my $name = shift;
bless \$name,$class;
}
sub IsFulfilled{
my $IsFulfilled = shift;
$$IsFulfilled ;
}
package Method;
use base qw(initialize);
sub checkIsFulfilled {
}
package main;
my $method = Method->new("First Method");
print $method->IsFulfilled("0");
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!perl -w
use strict;
package initialize;
sub new {
my $class = shift;
my $name = shift;
bless \$name,$class;
}
sub IsFulfilled{
my $IsFulfilled = $_[1];
return $IsFulfilled ;
}
sub name {
my $name = shift;
$$name;
}
package Method;
use base qw(initialize);
sub checkIsFulfilled {
}
package NotMethod;
use base qw(initialize);
package ANDArray;
use base qw(initialize);
package ORArray;
use base qw(initialize);
package main;
my $method = Method->new("First Method");
print $method->name();
print $method->IsFulfilled(0);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!perl -w
use strict;
package initialize;
sub new {
my $class = shift;
my $name = shift;
bless \$name,$class;
}
sub IsFulfilled{
my $name = $_[1]; #Boolean ob etwas stattgefunden hat
return $name ;
}
package Method;
use base qw(initialize);
sub checkIsFulfilled {
print $_[0]->IsFulfilled($_[1]);
}
package NotMethod;
use base qw(initialize);
sub checkIsFulfilled() {
print $_[0]->IsFulfilled($_[1]*(-1)+1); # Umkehrung Method
}
package ANDArray;
use base qw(initialize);
sub checkIsFulfilled() {
foreach my $k (keys %{$_[1]}) # hier werden alle Values durchgelaufen und ihre Methode checkIsFulfilled aufgerufen.Liefern alle Methoden ein true ist alles in Ordnung
{
$_[1]{$k}->checkIsFulfilled($_[1]{$k}->IsFulfilled(1)); # An dieser Stelle hänge ich - Ich möchte ja auf den Wert zugreifen, den ich in der main bereits gesetzt habe mit: $method->IsFulfilled(1);
# Ich möchte quasi auf $_[1]{k}->IsFulfilled zugreifen - den Wert, den ich in der Main bereits gesetzt habe - und ihn hier nicht erst deklarieren. Wie realisiere ich das, bzw was hab ich übersehn?
#derzeitige Ausgabe: 10 - somit haben wir bei der NotMethod eine erfolgreiche Umkehrung.
}
}
package ORArray; #zukünftige Implementation: Liefert eine Methode ein true ist alles in Ordnung
use base qw(initialize);
package main;
my $method = Method->new("First Method");
my $notmethod = NotMethod->new("Second Method");
$method->IsFulfilled(1);# Irgendwann im Programm werden zu allen Methoden ihr Status "IsFulfilled" gesetzt
$notmethod->IsFulfilled(0);
#Zum Schluss gibt es einen Hash, in welchem alle Methoden stehen. Als Value wird eine Instanz übergeben und überprüft, ob der Hash true oder False zurückliefert.
my %hash = ('method' => $method,'notmethod'=>$notmethod);
my $ANDArray = ANDArray -> new ("AndArray");
$ANDArray -> checkIsFulfilled(\%hash);