SOG-Helpcenter Logo SOG Business - Software

Design von objektorientierten Anwendungen


Objektorientierte Anwendungen sollten grundsätzlich so entwickelt werden, dass Applikationslogik und Präsentationslogik voneinander vollkommen getrennt sind.

Das bedeutet im Klartext: Die eigentliche Anwendungslogik sollte in einer eigenen Klassenbibliothek entwickelt werden, ohne das diese über die Art ihrer Darstellung informiert ist. Dadurch ergibt sich später automatisch, dass solche Bibliotheken entweder in Web-Anwendungen (ASP.NET), in Windows-Anwendungen (Windows Forms .NET), in Consolanwendungen (.NET Console) oder aber innerhalb von Formulargeneratoren (SOGForms) verwendet werden können.

Um den Einstieg in die jeweilige Anwendung zu finden, ist dann natürlich eine Applikation zu erstellen, die den Zugriff auf die Anwendungslogik initiiert, und die Ergebnisse darstellt.

Die SOG C# Bibliotheken bieten dafür Basisklassen, die es erlauben in Form von Klassenableitungen eigene Anwendungen mit vordefinierten Funktionalitäten zu erstellen.

Consolanwendungen


Zur Erstellung von Consolanwendungen kann die Basisklasse "SOGMainConsole" verwendet werden:


using System;
using System.Collections.Generic;

using SOG.Base;
using SOG.Base.Database;
using SOG.Base.Attributes;
using SOG.Base.Helper;
using SOG.ERP.Modules.Sysfun.GenerateAwl;
using SOG.Base.Call;

namespace IhrNameSpace
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    class Class1 : SOGMainConsole
    {
        [STAThread]
        static int Main( string[] args )
        {
            Class1 theApp = new Class1();
            return theApp.RunProg( args );
        }

        protected override int Run()
        {
            // Ihr Programmcode
        }
    }
}

Über die Funktion GetCallContextInitParms kann die automatische Initalisierung des SOGCallContextes beeinflusst werden:

        protected override SOGCallContextInitParms GetCallContextInitParms()
        {
            return new SOGCallContextInitParms
            {
                EnableDbMask = true,
                EnableProjObjectFactory = true
            };
        }

Die Klasse SOGMainConsole bietet dabei automatisch die objektorientierte Unterstützung für Kommandozeilenoptionen (SOGOption-Attribute) sowie die Versorgung mit einer Variablen der Klasse "AppHelper" namens "Aph", die den Zugriff auf Umgebung und Datenbanken bietet. Innerhalb der "Run()" Funktion werden auftretenede Exceptions automatisch aufgefangen und standardmäßig protokolliert.

Folgende Kommandozeilenoptionen werden von der Klasse selbst unterstützt:

 

-nodbcheck

Keine Überprüfung der Datenbank.

-scriptdebug

Scripte sollen im DeveloperStudio gedebugged werden. (Übersetzung erfolgt in eine Temp-Datei)

-scriptnodll

Scipte nicht aus einer Dll im TempVerzeichnis laden, sondern neu übersetzn.

-scriptdll Dll

Scripte aus der angegebenen Dll laden.

-SetCurDir Dir

Einstellen des aktuellen Verzeichnisses, sehr früh während der Programmausführen

-SetCurAppLog AppLog

Einstellen der AppLog-Datei (Statusmeldungen in einer Datei)

-SetUtf8

Console auf UTF8 einstellen.

-NoSetUtf8

Console nicht auf UTF8 einstellen.

-NoSetEncoding

Console nicht auf ein Encoding einstellen.

-RunSTA

Programm soll im STA Modus laufen.

-RunMTA

Programm soll im MTA Modus laufen.

-rtmlog Dateiname

Name einer Protokolldatei für Fehlermeldungsausgabe.

Eigene Kommandozeilenoptionen können innerhalb der Klasse "Class1" in der Form

    [SOGOption("opt1")]
    public string TextOption;

    [SOGOption("opt2")]
    public bool BoolOption;

    [SOGOption("opt3")]
    public int IntOption;

    public enum MyEnum { Auspraegung1, Auspraegung2 };
    [SOGOption("p1",MyEnum.Auspraegung1)]
    [SOGOption("p2",MyEnum.Auspraegung2)]
    public MyEnum EnumOpt;

definiert werden.

Die Optionen werden dann mit den Kommandozeilenparametern


-opt1 Text
-opt2
-opt3 Wert
-p1
-p2

gesetzt.

Positionsparameter können in der Form


    [SOGPosOption(1)]
    public string TextOption;

    [SOGPosOption(2)]
    public int IntOption;

    [SOGDefaultOption]
    public ArrayList WeiterOptionen;

vereinbart werden. Diese werden mit folgendem Aufruf gesetzt:

Programmname Text1 4711 WeitereOption1 "Weitere Option 2"
Windowsanwendungen
Zur Erstellung von Windowsanwendungen kann die Basisklasse "SOGMainWinForm" verwendet werden:


using System;
using System.Windows.Forms;
using SOG.Base.WinSupport;

namespace hhcrfi
{
    public class Program : SOGMainWinForm
    {
        /// <summary>
        /// Der Haupteinstiegspunkt für die Anwendung.
        /// </summary>
        [STAThread]
        public static int Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            Program myprog = new Program();
            hhcrfiForm frm = new hhcrfiForm();
            myprog.RunProg(frm, args);

            return frm.MainRc;
        }
    }
}

Kommandozeilenparameter können genau wie bei Consolanwendungen in der Klasse "Form1" definiert werden.

Die eigentlichen Masken sollten von der Klassen "SOGWinForm" abgeleitet werden. Dadurch steht auch innerhalb eines Windows-Forms automatisch ein Objekt "Aph" der Klasse "AppHelper" zur Verfügung, über das auf Umgebung und Datenbank zugegriffen werden kann.