Aquariophile: OOP und HTML::Template und Programmier-Stil

Hallo

Bitte um eine ganz generelle Meinung.

  1. Und zwar würde ich gerne mit ein bisschen OOP arbeiten,
    doch ist die Frage wo es hier überhaupt - unter welchem Umstaenden - sinnvoll ist OOP einzusetzen,
    und -> was es machen soll im Script

  2. Weiters waere interessant ob ich HTML::Template besser nutzen kann

  3. Ausserdem:
    Was kann ich am Programmier-Stil generell verbessern?

Danke =)
Aquariophile

PS.: Bitte einfach herumschachteln an dem ganzen Script,
und in richtung OOP leiten bitte,
und HTML::Template sinnvoll und gut einsetzen!

DANKEEEE!

=============================================================
Das Script:

#!/usr/bin/perl

use CGI;
use strict;
use HTML::Template;

my $cgi = CGI->new();
print "Content-type: text/html\n\n";

my $template = HTML::Template->new( filename => 'guestbook.tpl');

my $ausgabe='<div>Name: *<input type="text" size="40" name="name" value=""></div><div>Age: *<input type="text" size="40" name="age" value=""></div><div>Country: <input type="text" size="40" name="country" value=""></div><div><input type="submit" name="button" value="Submit"></div>';

if($cgi->param("button") eq "Submit")
{

if(($cgi->param("name") ne "") && ($cgi->param("age") ne ""))
        {
        $ausgabe='<h2>THANK YOU!</h2>Name: '.$cgi->param("name").'<br>Age: '.$cgi->param("age").'<br>Country: '.$cgi->param("country").'<br>';
        }

else
        {
        $ausgabe='<h2>ERROR</h2><div>Name: *<input type="text" size="40" name="name" value="'.$cgi->param("name").'"></div><div>Age: *<input type="text" size="40" name="age" value="'.$cgi->param("age").'"></div><div>Country: <input type="text" size="40" name="country" value="'.$cgi->param("country").'"></div><div><input type="submit" name="button" value="Submit"></div>';
        }

}

$template->param(GUESTBOOK => $ausgabe);

print '<form action="guestbook.pl" method="post">';
print $template->output;
print '</form>';

=============================================================
Das Template:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">

<html>
<head>
<title></title>
</head>

<body style="background-color:#FFFFFF;">
<h2>Our Guestbook</h2>

<TMPL_VAR NAME=GUESTBOOK>

</body>
</html>

  1. Halihallo Aqua

    1. Und zwar würde ich gerne mit ein bisschen OOP arbeiten,
      doch ist die Frage wo es hier überhaupt - unter welchem Umstaenden - sinnvoll ist OOP einzusetzen,
      und -> was es machen soll im Script

    OOP macht da Sinn, wo man irgendetwas wiederverwenden kann. Am besten sieht man das auf
    CPAN; jedes Modul/Klasse hat seinen "Aufgabenbereich", ist beliebig durch Vererbung
    erweiterbar, jedoch in sich geschlossen.
    Es macht keinen Sinn, etwas in OOP abzubilden, was mehreren Zwecken dient (also der
    Versuch mehrere _verschiedene/andersartige_ Punkte der Aufgabenstellung in ein Modul
    zu packen), denn dieses Modul wäre für keine andere Software und für kein neues Projekt
    verwendbar.
    Nehmen wir z. B. ein Design-Output-Modul. Es bringt nicht's, wenn dieses Design-
    Sturkturen und HTML-Generierung in einem macht, denn beim nächsten Projekt ist das Design
    anders und man darf das ganze Modul neu programmieren. Es macht jedoch Sinn, wenn man
    das Design von der HTML-Generierung trennt, denn dann kann man ggf. das eine oder andere
    Modul weiterverwenden.

    1. Ausserdem:
      Was kann ich am Programmier-Stil generell verbessern?

    Bzgl. OOP? - Nun, deine Aufgabenstellungen, an denen du dich in OOP übst, sind
    sehr beschränkt; ich meine, du lernst die Vor- und Nachzüge von OOP gar nicht kennen.
    Z. B. habe ich bei dir noch nie eine Vererbung gesehen und _da_ beginnt OOP erst, das
    was ich bei dir sehe ist ein OOP Modul, das 1:1 in ein "normales" Modul abgebildet
    werden kann. Vielleicht denkst du dir eine Aufgabenstellung aus, die etwas
    anspruchsvoller ist, wie z. B. das OOP-Modellieren eines Online-Shoppingsystems; du
    brauchst es auch gar nicht umzusetzen, aber denk nach, wie du dieses Modellieren willst,
    dann kommst du etwas mehr mit OOP zu tun.

    Viele Grüsse

    Philipp

    PS: Hast du mir keine Antwort geschrieben, oder ist die Mail schon wieder nicht an-
    gekommen?

    1. Servus Philipp!

      Danke für deine Mail sowie deine Antwort,
      habe sie eh bekommen werde dir noch antworten!

      Danke!
      Aquariophile

      PS.: Im ICQ schaust Du nie nach Nachrichten oder?