Thread Perl +OOP (26 answers)
Opened by [HR]Doomrunner at 2003-10-01 14:23

DS
 2003-10-01 23:33
#59450 #59450
User since
2003-08-04
247 Artikel
BenutzerIn
[default_avatar]
Ich hab' das Ding spaßhalber mal ein bisserl umgeschreiben:

Code (perl): (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
package crs;

my @wochentage = qw/Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag/;

*new = *neu; # *unauffälligpfeif*
sub neu {
  my $klasse = shift;
  return bless(&jetzt,ref($klasse) || $klasse || _ _PACKAGE_ _);
}

sub AUTOLOAD {
  my $ich = ref($_[0]) ? shift : &jetzt;
  $AUTOLOAD =~ s/^.+\:\://;
  defined($ich->{$AUTOLOAD}) || die "Eigenschaft '$AUTOLOAD' nicht definiert!";
  return $ich->{$AUTOLOAD};
}

sub jetzt {
  my @z = localtime(time);
  my $ich = {
   sekunden      => $z[0],
   minuten       => $z[1],
   stunden       => $z[2],
   tag           => $z[3],
   monat         => $z[4]+1,
   jahr          => $z[5]+1900,
   wochentag     => $wochentage[$z[6]]
  };
  $ich->{uhrzeit} = $ich->{stunden}.':'.$ich->{minuten}.':'.$ich->{sekunden};
  $ich->{datum} = $ich->{tag}.'.'.$ich->{monat}.'.'.$ich->{jahr};
  return $ich;
}

1;

So wird's aufgerufen:

Code (perl): (dl )
1
2
3
4
5
6
7
#!perl

use crs;

my $blablabla = new crs;
print $blablabla->datum."
".crs->uhrzeit;

Naja, ich finde die OOP (u.a.) praktisch, weil (u.a.) die Funktionen (dann Methoden), die zu einem bestimmten meist komplexeren Datengebilde gehören, direkt bei diesem dabei sind, was das Ganze einfacher zu schreiben und zu lesen macht (oder zumindest machen sollte ;)). Daß es (wie bei einigen anderen Programmiersprachen ja auch) auf Kosten der Geschwindigkeit geht, ist natürlich ned so schön; da muß man halt abwägen, wo man optimieren muß/sollte/kann, bzw. sogar auf OOP verzichten sollte.

Edit: Das Forum mag mich Mit-Einem-Leerzeichen-Einrücker ned...
Edit die 4.: *irgendwanngehtes...ganzsicher...ichmußnurganzfestdaranglauben*
Edit die 6.: Warum mag er _ _PACKAGE_ _ ned?
Edit die 7.: Warum mag er es auch im normalen Text nicht?
Hinweis der 1.: Überall wo _ _PACKAGE_ _ steht bitte die beiden Leezeichen zwischen den Unterstrichen rausdenken...\n\n

<!--EDIT|DS|1065037326-->

View full thread Perl +OOP