www.matheraum.de
Das Matheforum.
Das Matheforum des MatheRaum.

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Mathe
  Status Schulmathe
    Status Primarstufe
    Status Mathe Klassen 5-7
    Status Mathe Klassen 8-10
    Status Oberstufenmathe
    Status Mathe-Wettbewerbe
    Status Sonstiges
  Status Hochschulmathe
    Status Uni-Analysis
    Status Uni-Lin. Algebra
    Status Algebra+Zahlentheo.
    Status Diskrete Mathematik
    Status Fachdidaktik
    Status Finanz+Versicherung
    Status Logik+Mengenlehre
    Status Numerik
    Status Uni-Stochastik
    Status Topologie+Geometrie
    Status Uni-Sonstiges
  Status Mathe-Vorkurse
    Status Organisatorisches
    Status Schule
    Status Universität
  Status Mathe-Software
    Status Derive
    Status DynaGeo
    Status FunkyPlot
    Status GeoGebra
    Status LaTeX
    Status Maple
    Status MathCad
    Status Mathematica
    Status Matlab
    Status Maxima
    Status MuPad
    Status Taschenrechner

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Mathe-Seiten:Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenSoftwaretechnik und ProgrammierungVerständnisfrage zu KLassen
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Deutsch • Englisch • Französisch • Latein • Spanisch • Russisch • Griechisch
Forum "Softwaretechnik und Programmierung" - Verständnisfrage zu KLassen
Verständnisfrage zu KLassen < Softwaretechnik+Pro < Praktische Inform. < Hochschule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Softwaretechnik und Programmierung"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Verständnisfrage zu KLassen: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 11:15 Do 05.05.2011
Autor: egal

Aufgabe
#include <iostream>
using namespace std;

class kreis
{
private:
double xMP;
double yMP;
double radius;
public:
double gibFlaeche (void);
void setzeMP (double xMP, double yMP);
void setzeRadius (double r);

};

double kreis :: gibFlaeche (void)
{
return 3.14159*radius*radius;
}

void kreis :: setzeMP (double xMP, double yMP)
{
this->xMP = xMP;
this->yMP = yMP;
}

void kreis :: setzeRadius (double r)
{

radius=r;
cout<<"Radius wurde gesetzt auf: "<<r<<endl;
}

int main ()

{
double x1=0.0, y1=0.0, r1=1.0, x2=2.0, y2=3.0, r2=2.0;
kreis kreis1;
kreis kreis2;

kreis1.setzeMP(x1,y1);
kreis2.setzeMP (x2, y2);

kreis1.setzeRadius (r1);
kreis2.setzeRadius (r2);

cout<<"Flaeche kreis1: "<<kreis1.gibFlaeche ()<<endl;
cout<<"Flaeche kreis2: "<<kreis2.gibFlaeche ()<<endl;

return 0;
}

Hallo Freunde!

Ich möchte euch ein paar Verständnisfragen stellen um sicher zu gehen, dass ich diese "Klassen-Geschichte" auch einigermaßen verstanden habe.

Die Ausgabe des obigen Codes ist folgende;

Radius wurde gesetzt auf:1
Radius wurde gesetzt auf:2
Flaeche kreis1:3.14...
Flaeche kreis2: 12.5...

so weit, so gut!!

Ich wollte nun ausprobieren, dass die Ausgabe zusätzlich sagt, welche Mittelpunkte gesetzt wurden.

Dies muss ich doch dort ausspucken lassen, wo die Methode "setzeMP" definiert wurde, richtig?
Also so hier:

void kreis :: setzeMP (double xMP, double yMP)
{
this->xMP = xMP;
this->yMP = yMP;
                
cout<<"Mittelpunkt wurde gesetzt auf: "<<....

}

was aber soll ich denn eingeben nach dem letzten "<<"??

zweite Frage wäre das this->xMP=xMP

Das "this" steht doch dafür, dass es keine Missverständnise gibt. Denn das erste xMP ist die Adresse eines Objekts und das zweite xMP ist das Klassenattribut

Nun das ist eine schöne Umschreibung, die ich abgeschrieben habe, nur verstehe ich das nicht, was genau dort passiert!

dritte Frage bezieht sich auf das Hauptprogramm!

ganz unten steht ja:

cout<<"Flaeche kreis1: "<<kreis1.gibFlaeche ()<<endl;
cout<<"Flaeche kreis2: "<<kreis2.gibFlaeche ()<<endl;

wieso sind denn dort zum Schluss Klammern, die vor allem leer sind???


Ziemlich viele Fragen. Hoffe ihr könnt mir helfen, auch wenn die Länge des Textes einige zum Antworten demotiviert :-)

Gruß





        
Bezug
Verständnisfrage zu KLassen: Antwort
Status: (Antwort) fertig Status 
Datum: 13:05 Do 05.05.2011
Autor: Event_Horizon

Hallo!

Das

void kreis :: setzeMP (double xMP, double yMP)
{
this->xMP = xMP;
this->yMP = yMP;
}

ist ein wenig problematisch, weil xMP sowohl eine Membervariable der Klasse selbst bezeichnet, als auch einen Übergabeparameter.

'this' ist ein Zeiger auf die eigene Instanz der Klasse, und damit meint this->xMP die eigene Membervariable.

Übersichtlicher wäre es, die Übergabeparameter anders zunennen, z.B. so:


void kreis :: setzeMP (double xCenter, double yCenter)
{
xMP = xCenter;
yMP = yCenter;
}

Dennoch solltest du den Trick mit dem this kennen, weil sowas an anderer Stelle vorkommen kann.

Dann mußt du natürlich auch schreiben

cout << "Mittelpunkt wurde gesetzt auf: " << this->xMP ....

weil du ja prüfen willst, ob die Variable selbst gesetzt wurde.




Zu dem kreis1.gibFlaeche() :

gibFlaeche() ist eine Methode der Klasse, also sowas wie eine Funktion. Und die werden immer mit Klammern aufgerufen, auch wenn nix drin steht!



Theoretisch kannst du auch direkt auf die Variablen der Klasse zugreifen und ein

cout << kreis1.radius <<endl;

machen, dann müßte radius aber als public, und nicht ans private deklariert sein.
Weil das eine Variable und keine Funktion ist, geht das ohne Klammern.

Aber das ist ein schlechter Stil, auch wenn es schön einfach ist. Du solltest immer mit "Gettern" und "Settern" arbeiten, also Methoden, die die internen Variablen rausgeben oder setzen.

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Softwaretechnik und Programmierung"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.matheforum.net
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]