Einzelnen Beitrag anzeigen

hansklok

Registriert seit: 14. Apr 2004
Ort: Karlsruhe
318 Beiträge
 
Delphi 2010 Architect
 
#16

AW: Komponente ableiten

  Alt 2. Sep 2010, 00:45
Lieber Christian,

das ist ja ne Menge.

Was die Verwandtschaftsverhältnisse betrifft, so hast du meines Wissens nach alle Eventualitäten genannt. Das ist für den Anfang ganz schön viel.
Den Vorschlag einer Adoption eine eigene Klasse zu widmen finde ich sehr gut, auch, wenn die gängigen Genealogieprogramme Adoptiveltern zulassen. Es wird eine neue Familie (TPartnership) erzeugt und das Kind hinzugefügt. Diesem wird dann der Status "adoptiert" zugeordnet. Im Gedcom-Standard ist diese Eigenschaft unter "PEDIGREE_LINKAGE_TYPE" definiert. Siekann folgende Werte annehmen:
  • adopted - zeigt Adoptiveltern an
  • birth - zeigt biologische Eltern an
  • foster - zeigt an, dass das Kind in einer Pflegefamilie oder Vormundschaft war
  • sealing - zeigt an, dass das Kind an andere als seine leibliche Eltern gesiegelt wurde (speziell bei Mormonen)
Erklär mir deine Überlegung mit "TAdoption" bitte nochmal genauer.

Zu TVagueDate Auch diese Überlegung ist richtig. Aber die Sache verkompliziert sich noch, da hier der Gedcom-Standard ebenfalls detailliertere Optionen bietet:
  • DATE_APPROXIMATED - Datum, genähert
  • ABT = “um” oder “circa”
  • CAL = das Datum ist nicht exakt
  • EST = mathematisch errechnet, z. B. durch ein Ereignis und ein Alter. auf der Basis eines Algorithmus und eines anderen Datums geschätzt.
  • DATE_EXACT - exaktes Datum (z.B. 01.01.2000)
  • DATE_PERIOD - Datum, Zeitspanne
    • FROM = kennzeichnet den Beginn eines Ereignisses oder Status
    • TO = kennzeichnet das Ende eines Ereignisses oder Status
    • FROM Datum TO Datum
  • DATE_PHRASE - beliebige Aussage zum Datum, sozusagen benutzerdefiniert
  • DATE_RANGE - Datum, zeitlich eingegrenzt
    • AFT = Das Ereignis fand nach dem angegebenen Datum statt
    • BEF = Das Ereignis fand vor dem angegebenen Datum statt
    • BET Datum AND Datum = Das Ereignis fand irgendwann zwischen dem 1. und dem 2. Datum statt
  • Da muss also TVagueDate noch überarbeitet werden

    Das Beispiel, das eine Person eine weitere Person heiratet ist auch super verständlich. Warum kompliziert, wenns auch einfach geht

    Was eine Exception ist weiß ich, aber was ist das: Exception: EMarriageImpossibleException; bzw. was hast du Dir darunter vorgestellt?

    Selbst wenn eine Person bereits ein Vater zugewiesen ist, so muss ein erneuter Aufruf von AddFather nicht zwangsläufig zu einem Fehler führen, dann wird der vorhandene Vater einfach durch einen Anderen ersetzt!

    Alle genannten Invarianten leuchten mir ein, stimme Dir zu!

    Eine zusätzliche Invariante wäre z.B. noch
    • Sterbedatum der Ehepartner muss nach dem Heiratsdatum liegen!
    So das sind erstmal meine Anmerkungen zu deinem letzten Beitrag.

    Eine ganz blöde Frage noch. Ich implementiere die Klasse TPerson und vorher TPartnership, da diese ja innerhalb der Klasse TPerson verwendet wird. Nun ruft aber die Klasse TPartnership innerhalb eventuell auch einmal TPerson auf. Beim Kompilieren kommt es zu einem Abbruch, logisch, woher soll TPartnership TPerson kennen, wenn es erst danach implementiert ist. Verstehst du? Gibts da ne Lösung für, bestimmt, nur ist sie mir nicht geläufig!

    VG

    hansklok
      Mit Zitat antworten Zitat