<?xml version="1.0" encoding="utf-8"?>
<!-- generator="FeedCreator 1.7.2-ppt DokuWiki" -->
<?xml-stylesheet href="http://gsys.info/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="http://gsys.info/feed.php">
        <title>Genesys notes:class</title>
        <description></description>
        <link>http://gsys.info/</link>
        <image rdf:resource="http://gsys.info/lib/tpl/genesys/images/favicon.ico" />
       <dc:date>2026-05-01T22:44:27+02:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:class:abstractconstruct&amp;rev=1432920408&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:class:array&amp;rev=1432920408&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:class:construct&amp;rev=1551261849&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:class:override&amp;rev=1581962877&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:class:sets&amp;rev=1432920408&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:class:typelist&amp;rev=1432920408&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:class:view&amp;rev=1490456165&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="http://gsys.info/lib/tpl/genesys/images/favicon.ico">
        <title>Genesys</title>
        <link>http://gsys.info/</link>
        <url>http://gsys.info/lib/tpl/genesys/images/favicon.ico</url>
    </image>
    <item rdf:about="http://gsys.info/doku.php?id=notes:class:abstractconstruct&amp;rev=1432920408&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-29T19:26:48+02:00</dc:date>
        <title>notes:class:abstractconstruct</title>
        <link>http://gsys.info/doku.php?id=notes:class:abstractconstruct&amp;rev=1432920408&amp;do=diff</link>
        <description>abstract construct

Vergleiche Java:


public abstract class Person {
    protected Person(){}

    public abstract String getName();

    public static Person printName(){
        return ONEPERSON;
    }

    private static final Person ONEPERSON = new Person(){
       @Override
        public String getName() {
              return &quot;My name is Mike.&quot;;
        }
    };
}﻿</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:class:array&amp;rev=1432920408&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-29T19:26:48+02:00</dc:date>
        <title>notes:class:array</title>
        <link>http://gsys.info/doku.php?id=notes:class:array&amp;rev=1432920408&amp;do=diff</link>
        <description>array classes

Unter einer Arrayklasse verstehe ich einen Datentyp, der parallel verlaufende Arrays managed.
Dabei ist Segments die Array-Klasse und Segment ein Handle, dass lediglich Referenzen (ref) enthält.


Segment contains
{
  public parallel ref:               
    StartPoint  has Point;
    TargetPoint has Point;
  public copy:
    Color;
     
  bool isInvalid() { return StartPoint == TargetPoint; }
  
  construct( StartPoint );
};

Segments parallels Segment {} // hier handelt es sich …</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:class:construct&amp;rev=1551261849&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-02-27T11:04:09+02:00</dc:date>
        <title>notes:class:construct</title>
        <link>http://gsys.info/doku.php?id=notes:class:construct&amp;rev=1551261849&amp;do=diff</link>
        <description>construct

Kurzconstructor


Point contains
{
  x, y is int;
  
  construct( x, y ); 
}

x und y sind bekannt, sie sind vom Typ her int, also ist das ein Point(int, int)-Konstruktor.
Die Übergaben werden direkt ins neue Objekt kopiert. Im Idealfall läuft die Konstruktion so inline ab.</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:class:override&amp;rev=1581962877&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-02-17T19:07:57+02:00</dc:date>
        <title>notes:class:override</title>
        <link>http://gsys.info/doku.php?id=notes:class:override&amp;rev=1581962877&amp;do=diff</link>
        <description>overrides bei Mehrfachvererbung

Wird ein Methode überladen, so muss der Klassenname vorangesetzt werden:


bitmap contains
{
  update is public virtual code := print &quot;bitmap update&quot;;
};

signal contains
{
  update is public virtual code := print &quot;signal update&quot;;;
};

test is implicit bitmap, signal
{
  override bitmap
  {
    update is code := print &quot;overriden bitmap update&quot;;
  };
  
  override signal
  {
    /* implicit sagt aus, dass diese Funktion im Namensraum test auffindbar ist */
      
…</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:class:sets&amp;rev=1432920408&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-29T19:26:48+02:00</dc:date>
        <title>notes:class:sets</title>
        <link>http://gsys.info/doku.php?id=notes:class:sets&amp;rev=1432920408&amp;do=diff</link>
        <description>Sets

Sets können über Arrays oder Listen erstellt werden. Sie unterscheiden sich von normalen Arrays oder Listen darüber, dass Elemente nur einfach enthalten sein dürfen.

Diese Arrays werden mit unique gekennzeichnet, ähnlich wie const.


seta is int{} unique;
setl is int[] unique;</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:class:typelist&amp;rev=1432920408&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-29T19:26:48+02:00</dc:date>
        <title>notes:class:typelist</title>
        <link>http://gsys.info/doku.php?id=notes:class:typelist&amp;rev=1432920408&amp;do=diff</link>
        <description>Typelists

Eine Typelist erlaubt eine Funktion mit unterschiedlichen Datentypen zu rufen.
Die Auswertung erfolgt zur Laufzeit!
Jedes Element der Liste ist eine Referenz.


length is code( parameters of( char const ptr, string )[] )
{
  unsigned int result = 0;

  foreach( parameter in parameters )
  {
    verify parameter as char const ptr
    {
      result += strlen( paramter )
    }
    else verify parameter as string
    {
      result += parameter.length();
    }
  }
  
  return result;
};</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:class:view&amp;rev=1490456165&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2017-03-25T16:36:05+02:00</dc:date>
        <title>notes:class:view</title>
        <link>http://gsys.info/doku.php?id=notes:class:view&amp;rev=1490456165&amp;do=diff</link>
        <description>View

Ein View ist ein Objekt, das nur zum Lesen erzeugen.
Ein Objekt wird also nicht kopiert, sondern erhält lediglich die Referenzen der Quelle. Dabei wird ein konstantes Objekt erzeugt.

Ein View erzeugt eine Flat-Copy.


Bitmap contains
{
  data is byte{};
  
  copy()
  {
    data : copy value.data;  // Neues array wird angelegt und kopiert
  }
  
  view()
  {
    data : view value.data;  // Es werden nur die Pointer kopiert
  }
};</description>
    </item>
</rdf:RDF>
