<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[klassen? :(]]></title><description><![CDATA[<p>hallo,</p>
<p>am anfang lesen sich klassen ja wunderbar.<br />
man macht eine public klasse, füllt sie mit werten und greift dann später darauf zu.</p>
<p>doch, warum soll man nun seine klasse privat machen? laut meinen sehr schlauen buch wegen &quot;sicherheit&quot;. in ordnung.</p>
<p>nun geht es mit den klassen munter weiter: in die klasse wird in diesem schlauen buch nun immer eine funktion gesetzt (eine selbstdefinierte), um auf die privat - bereiche der klasse zugreifen zu können.</p>
<p>ab hier setzt es bei mir aus - kann mir jemand erklären, wie funtionen sinnvoll darauf zugreifen sollen und wie sie das tun?</p>
<p>*dankend*<br />
tuxinator</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/151496/klassen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 06 Sep 2026 12:09:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/151496.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 26 Jun 2006 19:45:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to klassen? :( on Mon, 26 Jun 2006 19:45:53 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>am anfang lesen sich klassen ja wunderbar.<br />
man macht eine public klasse, füllt sie mit werten und greift dann später darauf zu.</p>
<p>doch, warum soll man nun seine klasse privat machen? laut meinen sehr schlauen buch wegen &quot;sicherheit&quot;. in ordnung.</p>
<p>nun geht es mit den klassen munter weiter: in die klasse wird in diesem schlauen buch nun immer eine funktion gesetzt (eine selbstdefinierte), um auf die privat - bereiche der klasse zugreifen zu können.</p>
<p>ab hier setzt es bei mir aus - kann mir jemand erklären, wie funtionen sinnvoll darauf zugreifen sollen und wie sie das tun?</p>
<p>*dankend*<br />
tuxinator</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1086335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1086335</guid><dc:creator><![CDATA[Tuxinator]]></dc:creator><pubDate>Mon, 26 Jun 2006 19:45:53 GMT</pubDate></item><item><title><![CDATA[Reply to klassen? :( on Mon, 26 Jun 2006 20:21:23 GMT]]></title><description><![CDATA[<p>tuxinator schrieb:</p>
<blockquote>
<p>doch, warum soll man nun seine klasse privat machen? laut meinen sehr schlauen buch wegen &quot;sicherheit&quot;. in ordnung.</p>
</blockquote>
<p>Nunja, Sicherheit ist vielleicht nicht der wirklich relevante Ausdruck dafür -&gt; Datenkapselung.</p>
<p>Ein einfaches Beispiel:</p>
<pre><code class="language-cpp">class point {

    private:

        int x;
        int y;

    public:

        // Standard c-tor:
        point( );

        // Standard d-tor:
        ~point( );

        void set_x( int x_to_set );
        void set_y( int y_to_set );
        void set_xy( int x_to_set, int y_to_set );

        int get_x( );
        int get_y( );
};

point::point( ) : x( 0 ), y( 0 )
{
}

point::point( int x_to_set, int y_to_set ) : x( x_to_set ), y( y_to_set )
{
}

point::~point( )
{
}

void point::set_x( int x_to_set )
{
    x = x_to_set;
}

void point::set_y( int y_to_set )
{
    y = y_to_set;
}

void point::set_xy( int x_to_set, int y_to_set )
{
    set_x( x_to_set );
    set_y( y_to_set );
}

int point::get_x( )
{
    return x;
}

int point::get_y( )
{
    return y;
}
</code></pre>
<p>...aber sollte das nicht in deinem Buch stehen?</p>
<p>Greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1086359</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1086359</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Mon, 26 Jun 2006 20:21:23 GMT</pubDate></item><item><title><![CDATA[Reply to klassen? :( on Mon, 26 Jun 2006 20:18:09 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>eigentlich macht man nicht (jedenfalls nicht hauptsächlich) Klassen public oder private, sondern die Mitglieder der Klassen, das wiederum können Methoden, Variablen oder weitere Klassen sein.</p>
<p>Also gut, warum macht man Variablen private und schreibt Zugriffsmethoden? Hm, das nennt sich Datenkapselung. Wozu? Der Benutzer sieht nur die Schnittstelle (also die Methoden). Was innen drin vorgeht, geht ihn nix an. Die Innereien können dann auch ausgetauscht werden, ohne dass die Schnittstelle geändert werden muss.</p>
<p>Zusätzlich bieten Zugriffsmethoden natürlich eine gewisse Sicherheit, denn man kann Abfragen einbauen, ob der neue Wert für Variable x wirklich gut ist, oder ob der Benutzer gerade Mist eingegeben hat. Außerdem erhöht es die Übersichtlichkeit, da der Benutzer der Klasse nur die öffentliche Schnittstelle kennen und benutzen muss.</p>
<p>All das ermöglicht Datenkapselung.</p>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1086360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1086360</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Mon, 26 Jun 2006 20:18:09 GMT</pubDate></item><item><title><![CDATA[Reply to klassen? :( on Mon, 26 Jun 2006 20:30:07 GMT]]></title><description><![CDATA[<p>Mal ein Beispiel das auch Sinn macht, damit du den Vorteil verstehst:</p>
<pre><code class="language-cpp">class String
{
 private:
  char* str;
 public:
  String( const char* str_ )
  {
     unsigned len = strlen( str_ );
     str = new char[ len + 1 ];
     strcpy( str, str_ );
  }

  unsigned length() const //liefert die Länge des Strings zurück
  {
     return strlen( str );
  }  
};
</code></pre>
<p>Das ganze ist so jetzt nicht optimal, deshalb beschließen wir (die Autoren der Klasse) die Länge intern zu speichern, wodurch length die Länge nicht mehr berechnen muss</p>
<pre><code class="language-cpp">class String
{
 private:
  char* str;
  unsigned len;
 public:
  String( const char* str_ )
  {
     len = strlen( str_ );
     str = new char[ len + 1 ];
     strcpy( str, str_ );
  }

  ~String()
  {
     delete[] str;
  }

  unsigned length() const //liefert die Länge des Strings zurück
  {
     return len;
  }  
};
</code></pre>
<p>Das ist jetzt nur nen Minimalbeispiel aber die <strong>Kapselung</strong> ist alles worum es sich in der Objektorientierten Programmierung dreht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1086373</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1086373</guid><dc:creator><![CDATA[Dr. Prof]]></dc:creator><pubDate>Mon, 26 Jun 2006 20:30:07 GMT</pubDate></item></channel></rss>