/***************************************************************************
                          dokument.h  -  Interface Klasse CDokument
                             -------------------                                         
    begin                : Wed Aug 4 1999                                           
    copyright            : (C) 1999 by Stephan Uhlmann                         
    email                : suhlmann@gmx.de                                     
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   * 
 *                                                                         *
 ***************************************************************************/


#ifndef __DOKUMENT_H__
#define __DOKUMENT_H__

#include <qdatetime.h>
#include <qdatastream.h>

#include "resource.h"


/**
 * Die Klasse CDokument stellt die Daten und Methoden zur
 * Verfuegung um ein Dokument zu verwalten.
 * Dies ist die Basisklasse aller anderen Dokumenttypen
 */


class CDokument
{
 private:
  /** Verfasser des Dokuments */
  QString Verfasser;
  /**  Titel des Dokuments */
  QString Titel;
  /** Schluessel des Dokuments */
  QString Schluessel;
  /** Erstellungsdatum des Dokuments */
  QDateTime Erstellungsdatum;
  /** Klassentyp des Objektes */
  TClassID ClassID;

 public:  
  /** Konstruktor */
  /* pre: this existiert nicht */
  /* post: this existiert und ist gueltig */
  CDokument();
  
  /** Destruktor */
  /* pre: this existiert */
  /* post: this existiert nicht */
  virtual ~CDokument();
  
  /** generiert ein neues Dokument und gibt einen Zeiger darauf zurueck */
  /* pre: CDokument existiert nicht */
  /* post: CDokument existiert und ist gueltig */
  virtual CDokument* Generate() const;
  
  /** loescht ein Objekt vom Typ CDokument wieder */
  /* pre: this existiert */
  /* post: this ist ungueltig */
  virtual void Free();
  
  /** prueft die Klasseninvarianz eines Dokuments */
  /* pre: this existiert */
  /* post: TRUE wenn this gueltig, sonst FALSE */
  virtual bool ClassInvariant() const;
  
  /** kopiert das Objet src in das aktuelle Objekt */
  /* pre: this existiert; src ist gueltig */
  /* post: this ist gueltig; this ist gleich src */
  virtual bool Copy(CDokument* src);
  
  /** vergleicht das aktuelle Objekt mir src */
  /* pre: this und src existieren und sind gueltig */
  /* post: TRUE wenn Inhalt von this gleich Inhalt von src, sonst FALSE */
  virtual bool EqualValue(CDokument* src) const;

  /** initialisiert ein instanziiertes Objekt mit gegebenen Werten */
  /* pre: this existiert und ist gueltig */
  /* post: this enthaelt die gewuenschten Werte */
  bool InitDokument(QString NVerfasser, QString NTitel, QString NSchluessel);
  
  /** gibt den Verfasser des Dokuments zurueck */
  /* pre: this existiert und ist gueltig */
  /* post:  */
  QString LiefereVerfasser() const;
  
  /** gibt den Titel des Dokumentes zurueck */
  /* pre: this existiert und ist gueltig */
  /* post:  */
  QString LiefereTitel() const;
  
  /** gibt den Schluessel des Dokumentes zurueck */
  /* pre: this existiert und ist gueltig */
  /* post:  */
  QString LiefereSchluessel() const;
  
  /** gibt das Erstellungsdatum des Dokumentes zurueck */
  /* pre: this existiert und ist gueltig */
  /* post: */
  QDateTime LiefereErstellungsdatum() const;
  
  /** aendert das Erstellungsdatum des Dokumentes in NDatum */
  /* pre: this existiert und ist gueltig */
  /* post: */
  void AendereErstellungsdatum(QDateTime NDatum);
  
  
  /** gibt das aktuelle Systemdatum zurueck */
  /* pre:  */
  /* post:  */
  QDateTime LiefereSystemdatum() const;

  
  /** liefert den Klassentyp des Objektes */
  /* pre: this existiert */
  /* post:  */
  TClassID LiefereClassID() const;
  
  /** aendert den Klassentyp des Objektes in NClassID */
  /* pre: this existiert */
  /* post:  */
  void AendereClassID(TClassID NClassID);

  /** schreibt den Inhalt des Dokuments in den angegebenen stream */
  /* pre: this existiert und ist gueltig */
  /* post: TRUE wenn das CDokument geschrieben werden konnte, sonst FALSE */
  bool readData(QDataStream* stream);

  /** laedt den Inhalt des Dokuments aus dem angegebenen stream */
  /* pre: this existiert und ist gueltig */
  /* post: TRUE wenn das CDokument geladen werden konnte, sonst FALSE */
  bool writeData(QDataStream* stream) const;


};


#endif /* __DOKUMENT_H__ */
























Documentation generated by uhlmann@fara2 on Mon Aug 30 20:37:52 MEST 1999