<?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:attr</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:45:27+02:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:attr:attribute&amp;rev=1614521577&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:attr:constrains&amp;rev=1567515830&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:attr:deprecated&amp;rev=1432920408&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:attr:replaces&amp;rev=1432920408&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:attr:uninitialized&amp;rev=1432920408&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:attr:attribute&amp;rev=1614521577&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-28T15:12:57+02:00</dc:date>
        <title>notes:attr:attribute</title>
        <link>http://gsys.info/doku.php?id=notes:attr:attribute&amp;rev=1614521577&amp;do=diff</link>
        <description>attribute

Ein Attribute ist eine Einschränkung, dass das Objekt nur akzeptiert wird, wenn es für diese Einschränkung gültig ist.


Integer contains
{
  valid is constraint;   // is attribute, dass das gegenteil nicht ausschließt. Wird ein nicht valides Integer 
                         // verlangt, ist ein valides auch okay.
  invalid is valid~;
  
  data  is int;
public:
  construct () := data : 0;
  construct valid( int to data );

  getValue2 is code() as int valid : data;
  
verify valid:
 …</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:attr:constrains&amp;rev=1567515830&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-09-03T15:03:50+02:00</dc:date>
        <title>notes:attr:constrains</title>
        <link>http://gsys.info/doku.php?id=notes:attr:constrains&amp;rev=1567515830&amp;do=diff</link>
        <description>Constrain/Necessity

Ein Constrain definiert eine Fähigkeit oder eine Unfähigkeit einer Funktion, einer Klasse oder eines Namensraums. Ein Constrain wird in den unterliegenden Scope vererbt. Ein Constrain selbst kann Teil eines Namensraums sein.
Funktionen mit contrains können überladen werden und werden durch das constrain unterschieden. Ähnlich const.
Eine Funktion mit einem Contrain kann nur Funktionen und Methoden aufrufen, die den gleichen Constrain beinhalten.</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:attr:deprecated&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:attr:deprecated</title>
        <link>http://gsys.info/doku.php?id=notes:attr:deprecated&amp;rev=1432920408&amp;do=diff</link>
        <description>deprecated

&lt;http://josephmansfield.uk/articles/marking-deprecated-c++14.html&gt;

Abstrakte Programmierung

Witzig finde ich die Idee, dass man einen String übergeben kann, der bei Aufruf der Funktion ausgegeben wird.

Im Prinzip müsste man deprecated nicht als Keyword einführen, sondern als „abstract“.


abstract deprecated( string str = null )
{
  switch this
  code
  {
    interprete:
      str
      then warning( &quot;'foo' is deprecated: %s [-Wdeprecated-declarations]&quot; % str )
      else warning(…</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:attr:replaces&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:attr:replaces</title>
        <link>http://gsys.info/doku.php?id=notes:attr:replaces&amp;rev=1432920408&amp;do=diff</link>
        <description>replaces

replace erstellt eine neue Klasse, die von einer anderen Klasse abgeleitet wird und verbietet anschließend die Verwendung der zu ersetzenden Klasse.
Fremde Funktionen Autos als Parameter verlangen, aber man selbst darf keine Cars mehr anlegen (oder als Rückgabeparameter erhalten).
Erlaubt ist aus einem Car über einen expliziten Construktor ein Auto zu machen.</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:attr:uninitialized&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:attr:uninitialized</title>
        <link>http://gsys.info/doku.php?id=notes:attr:uninitialized&amp;rev=1432920408&amp;do=diff</link>
        <description>Deklaration uninitialisierter Objekte

Dies vermeidet den Aufruf des Standard-Konstruktors.


hund is uninitialized Hund;

if( foo == 1 )
{
  ...
  construct hund( &quot;Bello&quot; );
}
else
{
  ...
  construct hund( &quot;Wauzi&quot; ); 
}

print hund.Name;


Würde ein Pfad die Variable</description>
    </item>
</rdf:RDF>
