Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]6241[/thread]

Perl und OOP

Tags: Ähnliche Threads

Leser: 1


<< |< 1 2 >| >> 18 Einträge, 2 Seiten
[E|B]
 2004-05-09 21:42
#82132 #82132
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Hallo!
Da ich noch nicht sonderlich viel mit OOP in Perl gemacht habe, bin ich dabei, mich etwas einzuarbeiten.
Mit sind folgende Funktionen nicht klar. Ich habe versucht etwas darüber zu finden, bekomme aber immer nur ungenaue Beschreibungen, die nicht sonderlich weiterhelfen. Vielleicht kann jemand mir zu jedem ein kleines Snippet geben... Das wäre nett.
Hier im einzelnen, was ich nicht genau verstehe:

1. @ISA
2. require Exporter;
3. @EXPORT bzw. @EXPORT_OK
4. use vars qw(...)
5. $VERSION
6. require 5.000;

Was machen die im einzelnen? So im groben weiß ich es ja (@ISA für Mehrfachvererbung, z.B.) Aber wie setzt man die richtig ein? Ein Snippet wäre schön.
Danke!
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
lichtkind
 2004-05-09 21:56
#82133 #82133
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
entschuldigt aber ich schreibe von einer tschechischen keylayout:

1.@ISA  ist fúr jede art von vererbung
6. ist wenn nur dafúr perlversionen zu pr&ůfen falls du neue features von perl verwendest oder genauso kannst du damit bestimmte versionen eines moduls(objektes)forder.
ist das vorhandene aelter als gefordert wird es ignoriert.
5. ist allegemein zum versioning, $VERSION ist eine variable wie jede andere, aber sie wird halt verwendet und die version dieses moduls, objekts, prozedur was auch immer zu speichern
4. um variablen dieses moduls oder objektes zu importieren
3. definiert die API zum modul

nur mit 2. bin ich úberfragt snippets hab ich zu hause in deutschland und in wirklichkeit hab ich noch nie ein objekt geschrieben, lese aber gerne anleitungen im vorraus\n\n

<!--EDIT|lichtkind|1084177868-->
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
sri
 2004-05-09 23:27
#82134 #82134
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
perldoc perltoot\n\n

<!--EDIT|sri|1084130886-->
ronald
 2004-05-10 12:16
#82135 #82135
User since
2003-08-15
76 Artikel
BenutzerIn
[default_avatar]
Exporter brauchst du bei OO nicht.
ISA legt die Vererbung fest.

Schnippet:
Code: (dl )
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
#!/usr/local/bin/perl -w


# Definition einer Klasse
package Klasse;

sub new {
my $class = shift;
my $self = {};
bless $self, $class;
$self->_init(@_);
$self;
}

# init-Methode, die in Unterklassen übersteuert werden kann
sub _init {
my $self = shift;
$self->{wert} = shift;
}

sub Wert {
my $self = shift;
print "Wert original: ", $self->{wert}, "\n";
}

sub Laenge {
my $self = shift;
print "Laenge original: ", length($self->{wert}), "\n";
}



# Definition einer Unterklasse
package Unterklasse;
@ISA = qw(Klasse); # Definition der Unterklasse

# die Methode "new" wird vererbt.
# auf keine Fall neu definieren.
# Stattdessen _init definieren.

# Uebersteuern einer Funktion
sub Print {
my $self = shift;
print "Print uebersteuert: ", $self->{wert}, "\n";
}


# Hauptprogramm
package main;

$o = Unterklasse->new('wert'); # Erzeugung eines neuen Objekts
$o->Print(); # Aufruf der uebersteuerten Methode
$o->Laenge(); # Aufruf einer Originalmethode
Taulmarill
 2004-05-10 12:41
#82136 #82136
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
was sind hier eigendlich die unterschiede zwischen @ISA = qw(Klasse); und use base qw(Klasse);?
Code: (dl )
use base qw(Klasse);

ist ein Synonym fuer

Code: (dl )
1
2
3
4
BEGIN {
require Klasse;
push(@ISA, Klasse);
}

ist IMHO viel sprechender als das laengere Konstrukt\n\n

<!--EDIT|Strat|1084231780-->
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
sri
 2004-05-10 12:47
#82137 #82137
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=Taulmarill,10.05.2004, 10:41]was sind hier eigendlich die unterschiede zwischen @ISA = qw(Klasse); und use base qw(Klasse);?[/quote]
perldoc base ;)
Gast Gast
 2004-05-10 16:13
#82138 #82138
Ich krieg immer die Krise wenn ich 'qw' im Zusammenhang mit gerade einmal einem nachfolgenden 'Bezeichner' sehe.
ptk
 2004-05-10 17:04
#82139 #82139
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=Dieter,10.May.2004, 14:13]Ich krieg immer die Krise wenn ich 'qw' im Zusammenhang mit gerade einmal einem nachfolgenden 'Bezeichner' sehe.[/quote]
Ich nicht. Ich finde es angemessen, aus stilistischen Gruenden in einigen Situationen (wie z.B. eine Inheritance- oder Import-Liste) *immer* qw() zu verwenden.
lichtkind
 2004-05-10 17:18
#82140 #82140
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
TIMTOWTDI
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
Gast Gast
 2004-05-10 17:23
#82141 #82141
[quote=ptk,10.05.2004, 15:04](wie z.B. eine Inheritance- oder Import-Liste) *immer* qw() zu verwenden.[/quote]
Ja, das meinte ich ... in jedem Fall von LISTE ist 'qw' völlig OK ;)
<< |< 1 2 >| >> 18 Einträge, 2 Seiten



View all threads created 2004-05-09 21:42.