www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

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
Dt. Schulen im Ausland: Mathe-Seiten:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
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.vorhilfe.de