<?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[Objektorientierung]]></title><description><![CDATA[<p>in meiner schule sollen wir ein programm schreiben, das primzahlen ausgibt (aufsteigend u. absteigend)</p>
<p>mein programm läuft soweit doch mein lehrer sagt, dass ich die Objektorientierung nicht richtig umsetze, allerdings weiß ich nicht was ich anders machen sollt.</p>
<p>hier mein code:</p>
<p>#include &lt;iostream&gt;<br />
using namespace std;</p>
<p>//Klasse<br />
class PRIMZAHL<br />
{<br />
private:<br />
int Zahl1;<br />
int Zahl2;<br />
public:<br />
void vorherige(int, int);<br />
void istPrim(int, int);<br />
};</p>
<p>//Funktionsaufruf für Primzahlen absteigend<br />
void PRIMZAHL::vorherige(int z1, int z2) //Outline-Funktion<br />
{<br />
cout &lt;&lt; &quot;-------------------------------------------------------------&quot;&lt;&lt;endl;<br />
cout &lt;&lt;&quot;Die Primzahlen lauten absteigend: &quot; &lt;&lt;endl;</p>
<p>PRIMZAHL p1;</p>
<p>p1.Zahl1 = z1;<br />
p1.Zahl2 = z2;</p>
<p>int Divisor;<br />
bool prim;<br />
for (z2; z2&gt;=z1; z2--)<br />
{<br />
prim = true;<br />
// Pruefe, ob Primzahl wirklich eine Primzahl ist<br />
for (Divisor = 2; prim &amp;&amp; Divisor &lt; z2;<br />
Divisor++)<br />
{<br />
// Ist das restlos teilbar?<br />
if (0==z2 % Divisor)<br />
{<br />
// Zahl ist teilbar, ist also keine Primzahl!<br />
prim = false;<br />
}<br />
}<br />
// Pruefung ist beendet.<br />
// Wenn es eine Primzahl ist, ausgeben!<br />
if (prim)<br />
{<br />
cout &lt;&lt; z2 &lt;&lt; &quot;, &quot; ;<br />
}<br />
}<br />
cout &lt;&lt; endl &lt;&lt;endl;<br />
}</p>
<p>//Funktionsaufruf für Primzahlen aufsteigend<br />
void PRIMZAHL::istPrim(int z1, int z2) //Outline-Funktion<br />
{<br />
cout &lt;&lt; &quot;-------------------------------------------------------------&quot;&lt;&lt;endl;<br />
cout &lt;&lt;&quot;Die Primzahlen lauten aufeinander folgend: &quot; &lt;&lt;endl;</p>
<p>PRIMZAHL p1;</p>
<p>p1.Zahl1 = z1;<br />
p1.Zahl2 = z2;</p>
<p>int Divisor;<br />
bool prim;<br />
for (z1; z1&lt;=z2; z1++)<br />
{<br />
prim = true;<br />
// Pruefe, ob Primzahl wirklich eine Primzahl ist<br />
for (Divisor = 2; prim &amp;&amp; Divisor &lt; z1;<br />
Divisor++)<br />
{<br />
// Ist das restlos teilbar?<br />
if (0==z1 % Divisor)<br />
{<br />
// Zahl ist teilbar, ist also keine Primzahl!<br />
prim = false;<br />
}<br />
}<br />
// Pruefung ist beendet.<br />
// Wenn es eine Primzahl ist, ausgeben!<br />
if (prim)<br />
{<br />
cout &lt;&lt; z1 &lt;&lt; &quot;, &quot; ;<br />
}<br />
}<br />
cout &lt;&lt; endl &lt;&lt;endl;<br />
}</p>
<p>//Main-Funktion<br />
void main()<br />
{</p>
<p>int Zahl1;<br />
int Zahl2;</p>
<p>//Instanzzierung<br />
PRIMZAHL p1;</p>
<p>cout &lt;&lt;&quot;Herzlich Willkommen zur Primzahl-Achterbahn!&quot; &lt;&lt; endl &lt;&lt; endl;<br />
cout &lt;&lt;&quot;Bitte tragen sie den Bereich ein: &quot; &lt;&lt; endl;<br />
cout &lt;&lt;&quot;von: &quot;;<br />
cin &gt;&gt; Zahl1;<br />
cout &lt;&lt;&quot;bis: &quot;;<br />
cin &gt;&gt; Zahl2;<br />
cout &lt;&lt; endl &lt;&lt;endl;<br />
p1.vorherige(Zahl1, Zahl2);<br />
p1.istPrim(Zahl1, Zahl2);<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/174411/objektorientierung</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 15:38:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/174411.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 26 Feb 2007 16:37:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Objektorientierung on Mon, 26 Feb 2007 16:37:47 GMT]]></title><description><![CDATA[<p>in meiner schule sollen wir ein programm schreiben, das primzahlen ausgibt (aufsteigend u. absteigend)</p>
<p>mein programm läuft soweit doch mein lehrer sagt, dass ich die Objektorientierung nicht richtig umsetze, allerdings weiß ich nicht was ich anders machen sollt.</p>
<p>hier mein code:</p>
<p>#include &lt;iostream&gt;<br />
using namespace std;</p>
<p>//Klasse<br />
class PRIMZAHL<br />
{<br />
private:<br />
int Zahl1;<br />
int Zahl2;<br />
public:<br />
void vorherige(int, int);<br />
void istPrim(int, int);<br />
};</p>
<p>//Funktionsaufruf für Primzahlen absteigend<br />
void PRIMZAHL::vorherige(int z1, int z2) //Outline-Funktion<br />
{<br />
cout &lt;&lt; &quot;-------------------------------------------------------------&quot;&lt;&lt;endl;<br />
cout &lt;&lt;&quot;Die Primzahlen lauten absteigend: &quot; &lt;&lt;endl;</p>
<p>PRIMZAHL p1;</p>
<p>p1.Zahl1 = z1;<br />
p1.Zahl2 = z2;</p>
<p>int Divisor;<br />
bool prim;<br />
for (z2; z2&gt;=z1; z2--)<br />
{<br />
prim = true;<br />
// Pruefe, ob Primzahl wirklich eine Primzahl ist<br />
for (Divisor = 2; prim &amp;&amp; Divisor &lt; z2;<br />
Divisor++)<br />
{<br />
// Ist das restlos teilbar?<br />
if (0==z2 % Divisor)<br />
{<br />
// Zahl ist teilbar, ist also keine Primzahl!<br />
prim = false;<br />
}<br />
}<br />
// Pruefung ist beendet.<br />
// Wenn es eine Primzahl ist, ausgeben!<br />
if (prim)<br />
{<br />
cout &lt;&lt; z2 &lt;&lt; &quot;, &quot; ;<br />
}<br />
}<br />
cout &lt;&lt; endl &lt;&lt;endl;<br />
}</p>
<p>//Funktionsaufruf für Primzahlen aufsteigend<br />
void PRIMZAHL::istPrim(int z1, int z2) //Outline-Funktion<br />
{<br />
cout &lt;&lt; &quot;-------------------------------------------------------------&quot;&lt;&lt;endl;<br />
cout &lt;&lt;&quot;Die Primzahlen lauten aufeinander folgend: &quot; &lt;&lt;endl;</p>
<p>PRIMZAHL p1;</p>
<p>p1.Zahl1 = z1;<br />
p1.Zahl2 = z2;</p>
<p>int Divisor;<br />
bool prim;<br />
for (z1; z1&lt;=z2; z1++)<br />
{<br />
prim = true;<br />
// Pruefe, ob Primzahl wirklich eine Primzahl ist<br />
for (Divisor = 2; prim &amp;&amp; Divisor &lt; z1;<br />
Divisor++)<br />
{<br />
// Ist das restlos teilbar?<br />
if (0==z1 % Divisor)<br />
{<br />
// Zahl ist teilbar, ist also keine Primzahl!<br />
prim = false;<br />
}<br />
}<br />
// Pruefung ist beendet.<br />
// Wenn es eine Primzahl ist, ausgeben!<br />
if (prim)<br />
{<br />
cout &lt;&lt; z1 &lt;&lt; &quot;, &quot; ;<br />
}<br />
}<br />
cout &lt;&lt; endl &lt;&lt;endl;<br />
}</p>
<p>//Main-Funktion<br />
void main()<br />
{</p>
<p>int Zahl1;<br />
int Zahl2;</p>
<p>//Instanzzierung<br />
PRIMZAHL p1;</p>
<p>cout &lt;&lt;&quot;Herzlich Willkommen zur Primzahl-Achterbahn!&quot; &lt;&lt; endl &lt;&lt; endl;<br />
cout &lt;&lt;&quot;Bitte tragen sie den Bereich ein: &quot; &lt;&lt; endl;<br />
cout &lt;&lt;&quot;von: &quot;;<br />
cin &gt;&gt; Zahl1;<br />
cout &lt;&lt;&quot;bis: &quot;;<br />
cin &gt;&gt; Zahl2;<br />
cout &lt;&lt; endl &lt;&lt;endl;<br />
p1.vorherige(Zahl1, Zahl2);<br />
p1.istPrim(Zahl1, Zahl2);<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1235880</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1235880</guid><dc:creator><![CDATA[Blutiger Anfänger]]></dc:creator><pubDate>Mon, 26 Feb 2007 16:37:47 GMT</pubDate></item><item><title><![CDATA[Reply to Objektorientierung on Mon, 26 Feb 2007 17:01:32 GMT]]></title><description><![CDATA[<p>Tja, da kann ich deinem Lehrer nur Recht geben.</p>
<p>[code]<br />
//Funktionsaufruf für Primzahlen absteigend<br />
void vorherige(int z1, int z2) //Outline-Funktion<br />
{<br />
...<br />
}</p>
<p>void istPrim(int z1, int z2) //Outline-Funktion<br />
{<br />
...<br />
}</p>
<p>//Main-Funktion<br />
void main()<br />
{<br />
int Zahl1;<br />
int Zahl2;</p>
<p>cout &lt;&lt;&quot;Herzlich Willkommen zur Primzahl-Achterbahn!&quot; &lt;&lt; endl &lt;&lt; endl;<br />
cout &lt;&lt;&quot;Bitte tragen sie den Bereich ein: &quot; &lt;&lt; endl;<br />
cout &lt;&lt;&quot;von: &quot;;<br />
cin &gt;&gt; Zahl1;<br />
cout &lt;&lt;&quot;bis: &quot;;<br />
cin &gt;&gt; Zahl2;<br />
cout &lt;&lt; endl &lt;&lt;endl;<br />
vorherige(Zahl1, Zahl2);<br />
istPrim(Zahl1, Zahl2);<br />
}<br />
[code]</p>
<p>Das ist alles was Dein Code macht, die Klasse benutzt Du eigendlich nur um die beiden Funktionen aufzurufen. Wie Du siehst kann man die Klasse auch einfach ganz weglassen und dein Programm läuft genauso wie vorher. Du hast zwar innerhalb deiner Klasse Variablen für die Werte Deklariert (richtiger Ansatz), benutzt dann aber die Variablen aus dem main.</p>
<p>Damit ist das was Du machst nichts anderes als ein normaler prozeduraler Ablauf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1235895</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1235895</guid><dc:creator><![CDATA[teachme]]></dc:creator><pubDate>Mon, 26 Feb 2007 17:01:32 GMT</pubDate></item><item><title><![CDATA[Reply to Objektorientierung on Mon, 26 Feb 2007 17:08:34 GMT]]></title><description><![CDATA[<p>ja genau das hat mein lehrer auch gesagt aber was muss ich denn dann ändern?<br />
bin noch nicht so wirklich fit wenn es um objektorientierung geht.</p>
<p>wäre nett wenn jemand den code berichtigen würde.</p>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1235899</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1235899</guid><dc:creator><![CDATA[Blutiger Anfänger]]></dc:creator><pubDate>Mon, 26 Feb 2007 17:08:34 GMT</pubDate></item><item><title><![CDATA[Reply to Objektorientierung on Mon, 26 Feb 2007 21:42:19 GMT]]></title><description><![CDATA[<p>Das Thema Primzahlen-Generierung ist denkbar schlecht als Beispiel für Objektorientierung geeignet.</p>
<p>Du solltest vielleicht den Code zur Prüfung einer Zahl auf Primzahl in eine Funktion fassen.<br />
Dann brauchst Du die Schleife, die alle Primzahlen in einem Bereich sucht nur einmal laufen lassen, merkst Dir die Zahlen (z.B. in einem std::vector&lt;int&gt;) und gibst sie in umgekehrter Reihenfolge wieder aus.</p>
<p>Aber das ist alles prozedural und das ist auch ok so.</p>
<p>Es gibt natürlich auch die Möglichkeit einen Primzahl-Iterator zu bauen; das wäre dann zumindest eine Klasse, die vielleicht Sinn macht, aber als Anfänger-Beispiel für Objektorientierung taugt das nicht.</p>
<p>Wie stellt sich denn Dein Lehrer das vor?</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236065</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Mon, 26 Feb 2007 21:42:19 GMT</pubDate></item><item><title><![CDATA[Reply to Objektorientierung on Mon, 26 Feb 2007 22:01:27 GMT]]></title><description><![CDATA[<p>Anstatt Zahl1 und Zahl2 will dein Lehrer wahrscheinlich lieber sehen, dass du die Variablen aus der Klasse benutzt, anstatt relativ unnötiger weise nochmal neue Variablen in main () deklarierst.</p>
<p>Mfg Ominion</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236078</guid><dc:creator><![CDATA[Ominion]]></dc:creator><pubDate>Mon, 26 Feb 2007 22:01:27 GMT</pubDate></item><item><title><![CDATA[Reply to Objektorientierung on Mon, 26 Feb 2007 22:39:50 GMT]]></title><description><![CDATA[<p>ob eine zahl vom typ int eine primzahl ist oder nicht, ist eine eigenschaft von int. int ist aber ein eingebauter typ und an dem kannste relativ wenig rumpopeln. die normale implementierung beinhaltet bool istPrimzahl(int n); und sonst nix.<br />
manche zahlentheoretische füxe bauen auch int naechstePrimzahl(int n), das ist dann durchaus merklich schneller, wenn man zum beispiel von einer gegebenen zahl aus alle folgenden primzahlen angucken will und die erste mit einer besonderen eigenschaft angucken will.<br />
nie habe ich von einer funktion vorherigePrimzahl(int n) gehört.</p>
<p>wenn man primzahlen mit bestimmeten eigenschaften sucht, die nicht gerade wie sand am strand rumliegen, ist es nett, einen PrimzahlGenerator zu schreiben. innendrin liegt normalerweise ein sieb. aber egal, total objektorientert können wir auch innendrin nur einen int haben oder einen int und dessen rest bei dicision durch 30 oder wasauchimmer gefallen mag. nehmen wir mal nur einen int.</p>
<pre><code class="language-cpp">class Primzahl
{ 
private: 
int zahl;
public: 
Primzahl(int x){
   zahl=x;
}
Primzahl vorherige(){
   do{
      --zahl;
   }while(istPrimzahl(zahl));
   return Primzahl(zahl);
}
Primzahl naechste();
};
</code></pre>
<p>so ergibt es fast schon sinn. nur was machen wir, wenn der benutzer in der main() sowas wie Primzahl p(100) verlangt? 100 ist keine Primzahl!</p>
<p>vielleicht so:</p>
<pre><code class="language-cpp">Primzahl(int x,bool suchAufwärtsWennNichtPrim=true){
   zahl=x;
   while(!istPrimzahl(zahl)){
      if(suchAufwärtsWennNichtPrim)
         ++zahl;
      else
         --zahl;
   }
}
</code></pre>
<p>jo, dieser schnittstelle kann ich bescheinigen, daß sie verdammt praktisch ist und monatelang stabil bleibt, selbst bei einem spielkind wie mir.</p>
<pre><code class="language-cpp">int main(){
   if(aufwärts){
      cin&lt;&lt;start&lt;&lt;ende;
      for(Primzahl p(start);p&lt;=ende;p=p.naechste())
         cout&lt;&lt;p.zahl&lt;&lt;' ';
   }
   else
      cin&lt;&lt;start&lt;&lt;ende;
      for(Primzahl p(start,false);p&gt;=ende;p=p.vorige())
         cout&lt;&lt;p.zahl&lt;&lt;' ';
   }
}
</code></pre>
<p>alles ungetestet und nur so als befruchtung gedacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236096</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 26 Feb 2007 22:39:50 GMT</pubDate></item><item><title><![CDATA[Reply to Objektorientierung on Mon, 26 Feb 2007 23:05:52 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>nur was machen wir, wenn der benutzer in der main() sowas wie Primzahl p(100) verlangt? 100 ist keine Primzahl!</p>
<p>vielleicht so:</p>
<pre><code class="language-cpp">Primzahl(int x,bool suchAufwärtsWennNichtPrim=true){
   zahl=x;
   while(!istPrimzahl(zahl)){
      if(suchAufwärtsWennNichtPrim)
         ++zahl;
      else
         --zahl;
   }
}
</code></pre>
</blockquote>
<p>Ich würd ne exception schmeißen, ist ja schon fast wie durch 0 teilen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236104</guid><dc:creator><![CDATA[Werfer]]></dc:creator><pubDate>Mon, 26 Feb 2007 23:05:52 GMT</pubDate></item><item><title><![CDATA[Reply to Objektorientierung on Tue, 27 Feb 2007 13:55:38 GMT]]></title><description><![CDATA[<p>Erstmal vielen dank für eure Hilfe.<br />
Ich werde mich jetzt mal vor mein programm setzen und versuchen eure änderungs vorschläge einzuarbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236204</guid><dc:creator><![CDATA[Blutiger Anfänger]]></dc:creator><pubDate>Tue, 27 Feb 2007 13:55:38 GMT</pubDate></item></channel></rss>