2013-08-16 10 views
5

Kann jemand bitte Klassenattribute und Methoden für C++ disambiguieren? Ich hatte den Eindruck, dass Attribut eine beliebige Mitgliedsvariable bedeutet und Methode jede Mitgliedsfunktion.C++ Ist es richtig, Klassenmitgliedsvariablen "Attribute" aufzurufen?

Dank

+1

Attribute = etwas gebrauchte aber informelle Terminologie. – Jon

+1

Ich würde den Begriff 'Attribute' in C++ nicht so verwenden, da sich der Name' attributes' nun auf einen 100% vollständig nicht verwandten Teil der Sprache bezieht. –

+1

Ich glaube nicht, dass es falsch ist, wie in "man darf diese Worte nicht verwenden", oder wie in "sie halten diese Bedeutung in C++ nicht". Das Wort _attribute_ wird jedoch seit C++ 11 für [etwas anderes] (http://en.cppreference.com/w/cpp/language/attributes) verwendet. Solange Sie in Ihrer Terminologie klar genug sind und Sie nicht zu weit von bestehenden Terminologien entfernt sind, sollte das kein Problem sein. – didierc

Antwort

6

Definieren Sie "korrekt".

Bezug auf Datenelemente und Elementfunktionen als "Attribute/Eigenschaften" bzw. "Methoden", ist gängige Praxis - es ist die allgemeine OO-Formulierung. („Attribute“ sind in C++ für something else verwendet, obwohl, so dass dies sehr gut eine Quelle der Verwirrung sein kann.)

Die C++ Standard wird jedoch die nicht diese Begriffe verwenden (abgesehen von Attributen natürlich, wie oben erläutert). Wenn Sie nichts riskieren und immer korrekt sein möchten, verwenden Sie "Datenelemente" und "Elementfunktionen".

Aber wenn Sie nur C++ einem Java-Programmierer erklären möchten, kommen Sie vielleicht am Anfang mit "property" und "method" durch.

+3

Ich würde es ** falsch ** nennen. Dies ist nicht der gleiche Fall wie * method * und * member function *, da es im C++ - Standard ein Konzept gibt, das als * attribute * bezeichnet wird. Das heißt, wenn Sie in C++ über * method * sprechen, wissen die Leute, dass * method * in C++ keine Bedeutung hat und sie standardmäßig auf den OO-Term verweisen.Wenn Sie in einer C++ - Konversation * attribute * verwenden, werden viele Leute interpretieren, dass Sie über * Attribute * nach dem Standard sprechen. –

+0

@ DavidRodríguez-dribeas Also, im Grunde [diese] (http://stackoverflow.com/questions/18282330/c-is-it-correct-to-call-class-member-variables-attributes/18282421?noredirect=1 # comment26820325_18282330). (Ich wiederhole nicht, dass die Verwendung der allgemeinen Begriffe denen im Standard überlegen wäre, vielleicht hätte ich das besser betonen sollen.) –

+0

Ja, ich hatte diesen Kommentar nicht gelesen. –

0

Eine Klasse Attribute an ihre Mitglieder übersetzen würde. Eine Methode ist im Allgemeinen nicht mit einer Elementfunktion identisch. Aber "In der objektorientierten Programmierung ist eine Methode eine Subroutine (oder Prozedur), die einer Klasse zugeordnet ist." - Wikipedia.

+3

Eine Methode ist immer mit einer Klasse verbunden (obwohl in C++ häufiger die Wortelementfunktion verwendet wird). –

+0

Sie haben Recht, wenn wir in OO sprechen. –

+0

@ Pierre-AntoineLaFayette: Kennst du ein "sprechen" (im Kontext von compsci langauges) wo "Methode" etwas anderes bedeutet? –

0

In allgemeinen Worten beschreibt ein Attribut etwas, "Eines der Attribute dieses Autos ist, dass es ziemlich lang ist", oder "eines der Attribute des riesigen Panda ist es ist auffällig schwarz und weiß Farben".

I XML, werden Attribute verwendet zusätzliche Informationen in einem Tag hinzuzufügen, z <species id=3212>Ailuropoda melanoleuca<common_name>Giant Panda</common_name></species> - id ist ein Attribut, Ailuropoda melanoleuca ist ein Wert, common_name einen Tag innerhalb species.

Aber ich rufe die Variablen in einer Klasse "Member-Variablen" und Funktionen in einer Klasse "Member-Funktion" oder "Methode".

+0

true, "attribute", wird im Englischen häufig mit "characteristic" oder "trait" (ein anderes Wort mit einer bestimmten Bedeutung in C++) assoziiert. – didierc

2

Ich würde das nicht tun. Während es im allgemeinen Kontext von OO verstanden werden kann, wird es in C++ verwirrend sein, da Attribut eine genaue Definition in dem Standard hat, das ist nicht das von Datenelement.

Verwandte Themen