Schrift
[thread]8913[/thread]

eine Frage zu objektorientertem Perl



<< |< 1 2 3 4 ... 15 >| >> 150 Einträge, 15 Seiten
ASDS
 2007-04-10 15:14
#75797 #75797
User since
2007-01-29
115 Artikel
BenutzerIn
[default_avatar]
Hallo ihr Lieben,

mit Perl kenn ich mich jetzt schon ein bisserle aus.
Nun würde ich gerne, ein bisschen Objektorientiert mich herumspielen.

Ich hab mir gedacht, ich versuch einen Binären Baum...
Jetzt hab ich da aber einige Fragen:

Ich bilde mir ein ich hab was von einem PerlModul gelesen in Verbindung mit objektorientiertem Perl.
Was würde da drinnen stehen, oder was sollte da drinnen stehen, im Falle meines binary treees.

ich hab mir folgende Methoden überlegt

- neu ==> hier soll eine Liste von Zahlen aufgerufen werden ( vielleicht sogar ZufallsZahlen ) und der Baum soll auch gleich erzeugt werden Dabei wird in $self ein anonymer Hash gespeichert, der einen key "wurzel" hat. Dieser Key hat einen value, der auf einen Knoten zeigt, den NeuerAst() zurückgegeben hat.

- einfügen ==> Liste von Zahlen wird eingefügt, eben in den Hash und das ganze der Reihe nach.

- Ausgabe ==> die muss es freilich auch geben, und am besten rekusiv dargetellt.

Die Krönung, da weiß ich haber noch nicht wie ich das mache, wäre das löschen von einzelnen Ästen.

Hat noch wer Ideen die mir das Starten ermöglichen können?
oder gibt es vielleicht schon Methoden die ich verwenden kann um mir die Sache zu vereinfachen?

vielen DAnk

ASDS
MisterL
 2007-04-10 17:50
#75798 #75798
User since
2006-07-05
334 Artikel
BenutzerIn
[default_avatar]
Sind Module im CPAN nicht grundsätzlich objektorientiert programmiert ? (Zumindest die meisten...)
Diese kleine Recherche im CPAN könnte nutzen: [cpan=Binary Tree]Binary Tree[/cpan]
Oder auch http://www.computerbase.de/lexikon/Bin%C3%A4rer_Suchbaum

Gruss MisterL
“Perl is the only language that looks the same before and after RSA encryption.”
renee
 2007-04-10 17:53
#75799 #75799
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Jein, ältere Module und Testmodule sind meistens _nicht_ OO. Die neueren Module sind überwiegend OO oder können sowohl OO als auch auf "herkömmliche" Weise benutzt werden.

Ein Baum ist für den Einstieg in OO-Perl vielleicht nicht gerade das beste Beispiel, weil hier mehrere Klassen geschrieben werden müssen (wenn man es sauber machen will). Ich würde eher zu einfachen Beispielen raten...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
ASDS
 2007-04-10 17:59
#75800 #75800
User since
2007-01-29
115 Artikel
BenutzerIn
[default_avatar]
naja so schlimm wäre es nicht.....
ich hätte folgendes vor gehabt:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/perl
package PerlModul;

sub new {}


sub hinzufuegen {}


sub ausgabe{}


1;


und dann eben:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/perl

use PerlModul;

# erstell Objekt vom Typ PerlModul
my $x = PerlModul->new();

# ruft funktion hinzufuegen aus PerlModul für die Instanz $x auf
$x->hinzufuegen('irgendwas--- wahrscheinlich eine Liste oder über die STDIN, das weiß ich noch nicht');

# ruf funktion ausgabe aus PerlModul f|r die Instanz $x auf
$x->ausgabe (Baum)
sid burn
 2007-04-10 18:46
#75801 #75801
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Ich denke mal du meinst das Modul Moose das erspart dir viel Tipparbeit. Habe mich damit aber noch nicht auseinander gesetzt. Aber in der Doku findest du ja genug Sachen die es Erklären.

Ansonsten brauchst du das "#!/usr/bin/perl" nicht bei einem Modul hinschreiben, und würde es auch definitiv weg lassen. Das macht ersichtlicher das es ein Modul ist, und eben nicht direkt ausführbar ist.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
ASDS
 2007-04-11 11:53
#75802 #75802
User since
2007-01-29
115 Artikel
BenutzerIn
[default_avatar]
[quote=sid burn,10.04.2007, 16:46]Ich denke mal du meinst das Modul Moose das erspart dir viel Tipparbeit. Habe mich damit aber noch nicht auseinander gesetzt. Aber in der Doku findest du ja genug Sachen die es Erklären.[/quote]
HM, soganz weiß ich nicht was ich damit anfangen soll.

Ich weiß nicht, ob ich heute dazu komm, so wie ich es gerne hätte, aber momentan bin ich am überlegen was gescheiter wäre - auch vom Aufwand her-
Da es ja die Möglichkeit geben soll Äste dazuzufügen, überleg ich mir ob ich es interaktiv machen soll, sprich eben, dass ich dem User frag: Möchten sie weitere Zahlen verzweigen JA/Nein oder ob ich den User einfach am Beginn zahlen eingeben lassen soll - am besten eine Beschränke Anzahl, ich hätte so an 10 gedacht und dann einfach eine festgelegte Liste später einfügen lassen soll. Sprich diesen Teil hardgecodet machen soll. Bzw. diese besagte Liste über Zufallszahlen von 1 bis 100 Laufen lasse.
Gibt es für diese Zufallszahlen bestimmung eine vorgegebene Methode? In Java wüsst ich wie es geht, aber in Perl?

LG
nepos
 2007-04-11 12:16
#75803 #75803
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
rand ist die Funktion für Zufallszahlen.

Fürs erste würd ich dir raten, die erstmal die Grundlagen von OO in Perl anzueignen, bevor du mit Modulen wie Moose anfängst.
ASDS
 2007-04-11 12:23
#75804 #75804
User since
2007-01-29
115 Artikel
BenutzerIn
[default_avatar]
Ja hm die Grundlagen, also die perl doc hab ich mir schon angeguckt, wo das steht mit die Kuh macht muuh und so weiter.
Auf das möcht ich eh aufbauen, mal gucken ob ich das zusammenbring. Ich glaub das Moose lass ich eh aus - mein Hirn möchte das glaub ich nicht verstehen, aber lieben Dank für den Vorschlag.

danke für die Info bezüglich des funktionsnamens.
ASDS
 2007-04-11 12:57
#75805 #75805
User since
2007-01-29
115 Artikel
BenutzerIn
[default_avatar]
Ich hab jetzt gach mal begonnen, obwohl ich gleich weg muss:
natürlich gibt er mir jetzt fehler aus, seltsamerweiße heißt dieser: Global symbol "%liste1" requires explicit package name ...
ich hab doch gar keinen Hash...

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!c:/perl
use strict;
use warnings;


my @liste1 = ();
my @liste2 = 4, 28, 9, 100, 12, 84, 10, 11;

sub new{
print "Bitte geben Sie 10 Zahlen ein: \n";
my $eingabe = <STDIN>;
chomp($eingabe);
$liste1{$eingabe}()
if defined $liste{$eingabe};
print "Sie haben folgende Zahlen eingegeben: ($eingabe) \n";
}


oder doch?
Ronnie
 2007-04-11 13:07
#75806 #75806
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
[quote=ASDS,11.04.2007, 10:57]Global symbol "%liste1" requires explicit package name ...
ich hab doch gar keinen Hash...
Code: (dl )
1
2
3
4
5
my @liste1 = ();
# ....
sub new{
$liste1{$eingabe}()
}

oder doch?[/quote]
doch, du verwendest geschweifte Klammern - diese sind aber für den Zugriff auf einen Hash gedacht. Was erwartest du denn das an dieser Stelle passieren soll?
<< |< 1 2 3 4 ... 15 >| >> 150 Einträge, 15 Seiten



View all threads created 2007-04-10 15:14.