Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Funktionen für mehere classen

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Peter
Gast





BeitragVerfasst am: 18. Jan 2002 16:53   Titel: Funktionen für mehere classen

Hi,

angenommen, ich habe eine funktione, die z.B. so aussieht:
double quadrat_flaeche(double seite)
{
return seite * seite;
}

Gut, nun brauche ich diese Funktion in meheren (C++) Klassen... unter anderen (z.B.) in:
class geometrie{/*...*/};
class architektur{/*...*/};

So, es soll nun möglich sein in einer funktion der classe geametrie quadrat_flaeche() aufzurufen, auch aus der classe architektur. Des weiteren soll der Code von quadrat_flaeche natürlich nur _ein_ mal existieren (also nicht in jeder classe die sie brauch sein)

Wie ist obiger fall zu lösen ?

Peter
 

bakunin



Anmeldungsdatum: 16.08.1999
Beiträge: 597
Wohnort: Lorsch (Südhessen)

BeitragVerfasst am: 19. Jan 2002 2:25   Titel: Re: Funktionen für mehere classen

Hi!

Vielleicht verstehe ich ja das Problem nicht, aber was spricht gegen die Verwendung von Vererbung?

Cheers,
GNU/Wolfgang
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen

axeljaeger
Gast





BeitragVerfasst am: 19. Jan 2002 10:14   Titel: Re: Funktionen für mehere classen

Du nimmst eine Basisklasse, in der du deine Quadratfunktion implementierst, bspw. quadratmath

du schreibst also

class QuadratMath
{
public:
double quadrat_flaeche(double seite)
{
return seite * seite;
}
};

so und dann:

class geometrie:public QuadratMath
{

}
und

class architektur:public QuadratMath
{

}

PS:

Die Namen von den Klassen würde ich Großschreiben, die Namen der Instanzvariablen aber klein.
 

Peter
Gast





BeitragVerfasst am: 13. Feb 2002 1:58   Titel: Re: Funktionen für mehere classen

Ich bin mir nicht ganz sicher, ob vererbung das richtige ist...

Da hab ich einfach so ein paar funktionen, die ich immer wieder brauche, und die ich nützlich finde. Am Besten fände ich es, wenn man einfach per #include "meineutils.h" die Funktionen zur verfügung hätte... Am Besten ohne Makefile umschreiben Smile So wie das halt auch mit den mitgelieferten Funktionen wie pow() oder printf() geht....

Peter
 

Coredump
Gast





BeitragVerfasst am: 13. Feb 2002 11:19   Titel: Re: Funktionen für mehere classen

schreib dir eine klasse und deklarier die methoden darin als public static
 

arni



Anmeldungsdatum: 10.02.2002
Beiträge: 73
Wohnort: Berlin

BeitragVerfasst am: 13. Feb 2002 11:52   Titel: Re: Funktionen für mehere classen

static halte ich auch für diesen Fall als die beste Lösung. Das bläht die Klasse nicht unnötig auf.
Würde es dann aber als protected schützen.


protected:
static double quadrat_flaeche (double seite);
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

bakunin



Anmeldungsdatum: 16.08.1999
Beiträge: 597
Wohnort: Lorsch (Südhessen)

BeitragVerfasst am: 13. Feb 2002 21:36   Titel: Re: Funktionen für mehere classen

Hi!

Ich bin zwar kein C++ Guru (und will auch sicherlich keiner sein), aber wäre dafür nicht ein Namensraum (namespace) besser geeignet? Wenn es unbedingt in den Klassen sein soll, könnte man natürlich auch Mehrfachvererbung verwenden, denn diese wird ja AFAIK in C++ unterstützt.

Cheers,
GNU/Wolfgang
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen

arni



Anmeldungsdatum: 10.02.2002
Beiträge: 73
Wohnort: Berlin

BeitragVerfasst am: 13. Feb 2002 22:23   Titel: Re: Funktionen für mehere classen

Hi Wolfgang
Richtig. Aus OO-Designsicht würde man das als Utility-Klasse bezeichnen und in C++ in einen namespace packen.
Im statischen Strukturdiagramm bei UML gibt es dafür sogar eine Klasse mit dem Stereotype "utility", die man dann so implementieren würde.


namespace utility
{
static void blabla ();
}

unter C# würde das so aussehen:

public class utility
{
public static void blabla();
}




Aber um OO-Design ging es ja hier nicht sondern nur um C++


Zuletzt bearbeitet von arni am 13. Feb 2002 22:23, insgesamt 1-mal bearbeitet
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

Peter
Gast





BeitragVerfasst am: 14. Feb 2002 1:40   Titel: Re: Funktionen für mehere classen

Fuktionen gehen static (me verwendet das nur bei variablen)... Was ist bei static funktionen besonders ??

protected ? meint ihr vielleicht private ?? Wenn nicht, was bewirkt das protected ?

Peter <-- merkt grad das er schon seit nem Jahr mit C++ programmiert, und doch keine Ahnung hat Smile
 

arni



Anmeldungsdatum: 10.02.2002
Beiträge: 73
Wohnort: Berlin

BeitragVerfasst am: 14. Feb 2002 12:09   Titel: Re: Funktionen für mehere classen

Innerhalb einer Klasse ist eine statische Methode fast wie eine normale globale Funktion. Die Methode hat keinen Eintrag im vtable der Klasse (kann damit auch von jeder C-API aufgerufen werden bzw. als Callback-Funktion benutzt werden!!) und der Code wird nicht an abgeleitete Klassen vererbt. Zudem hat die Methode keine Zugriff auf Attribute oder andere nicht-statische Methoden der Klasse! ( Man kann so eine Methode deswegen auch über Class::foo () aufrufen)
Aber die Zugriffsrechte wie "protected, private, public" haben weiterhin Gültigkeit

Eine (globale) statische Funktion ist suzusagen "pivat" in diesem Module. Sie nur in diesem Module sichtbar.
(In einer Bibliothek wird so eine statische Funktion auch nicht in der "exportabelle" stehen (wozu auch? die Funktion gibt es ja nur
in diesem Modul)


public : öffentlich, überall sichtbar
proteced: geschützt, nur in der Klasse und davon abgeleiteten Klassen sichtbar
private: nur in der Klasse selbst sichtbar
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

bakunin



Anmeldungsdatum: 16.08.1999
Beiträge: 597
Wohnort: Lorsch (Südhessen)

BeitragVerfasst am: 14. Feb 2002 22:15   Titel: Re: Funktionen für mehere classen

Hi!

> Aber um OO-Design ging es ja hier nicht sondern nur um C++

Stimmt. Und beides vernünftig zu kombinieren ist auch kaum möglich.

Cheers,
GNU/Wolfgang
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy