Ist C++ objektorientiert?
-
Ist C++ objektorientiert? Ich finde nein im Vergleich mit Sprachen wie Java und C#.
In C++ kann ich Funktionen ausserhalb von Klassen definieren was streng genommen nicht objektorientiert ist. In Java definiere ich eine statische Klasse welche die statischen Funktionen Kapselt.
Kennt C++ eigentlich abstrakte und statische Klassen? Ich kann zwar in C++ pure virtual oder satische Methoden schreiben, aber geht das auch mit einer ganzen Klasse?
-
C++ selbst ist nicht Objekt Orientiert.
Man kann mit C++ Objekt Orientiert programmieren.Natürlich gibt es Abstrakte Klassen. Die pure virtual Klassen sind Abstrakte Klassen.
Was soll eine Statische Klasse sein? Ein Singleton?
MfG
-
C++ Einsteiger schrieb:
Ist C++ objektorientiert?
C++ ist insofern objektorietiert, als dass es einige Paradigmen der Objektorientierung bereits von Haus aus unterstützt.
-
eViLiSSiMo schrieb:
Natürlich gibt es Abstrakte Klassen. Die pure virtual Klassen sind Abstrakte Klassen.
Sowas wie "pure virtual Klassen" gibt es nicht. Es gibt virtuelle Basisklassen, also Basisklassen von denen virtuell geerbt wird, und auch abstrakte Klassen, also Klassen die mindestens eine rein virtuelle Methode enthalten.
Ist C++ objektorientiert? Ich finde nein im Vergleich mit Sprachen wie Java und C#.
Also wenn es dir um reine OOP geht, dann sind weder C++, Java noch C# der Weißheit letzter Schluss. Diesbezüglich sind alle drei gleich "holzbeinig".
-
Die Stärke (und auch Schwäche) von C++ ist, dass es immer mehrere Wege gibt eine Sache zu machen. OO ist einer davon, C style ein andere und oft geht es auch mit Templates.
Ein guter C++ Programmirer zeichnet sich dadurch aus, dass er weis wann er was nehmen soll.
-
Die Fähigkeit Funktionen außerhalb von Klassen zu definieren steht in keinem Widerspruch zur Objektorientierung. Das sind eher orthogonale Konzepte, wie es die Möglichkeit der objektorientierten Programmierung unter C zeigt.
Zu freistehenden Funktionen in Bezug auf Objekte kann man Folgendes sagen:
1. Alle freistehenden Funktionen, die eine Klasse als Parameter erhalten, gehören mit zum Interface einer Klasse. Diese Sichtweise gehört schon lange zum Verständnis von C++. Zu vielen Klassen wird zum Beispiel direkt ein std::ostream & operator<<(std::ostream &, Klasse const &) implementiert oder ein std::swap(Klasse &, Klasse &) spezialisiert.
2. Freistehende nicht-friend Funktionen erhöhen die Kapselung einer Klasse, da sie einerseits zum Interface gehören aber andererseits bei einer Änderung der Interna nicht überprüft werden müssen. Lagert man also so viel Funktionalität wie möglich in freistehende nicht-friend Funktionen, so erhöht sich die Wartbarkeit und Kapselung der Klasse.
-
hi!
also meiner meinung nach kann man in jeder programmiersprache objektorientiert
programmieren.objektorientiertes programmieren ist nur ein denkansatz, der hilft probleme zu
lösen.also meine bevorzugte sprache ist c, wobei ich meiner meinung nach auch objekt-
orientiert programmiere.manche sprachen wie Java, C++, C#, Ruby und Smalltalk unterstüzen diesen denk-
ansatz besser als andere.mfg bauerb
-
einige definitionen, was es heiß "objektorientiert" zu programmieren:
wikipedia schrieb:
...Die einzelnen Bausteine, aus denen ein objektorientiertes Programm während seiner Abarbeitung besteht, werden wie bereits erwähnt als Objekte bezeichnet. Diese Objekte werden zur Laufzeit aus Vorlagen, sogenannten Klassen erzeugt (instanziiert). Der Softwareentwickler definiert im Programm also nicht einzelne Objekte, sondern eine Klasse sich gleich verhaltender Objekte. Die Klasse entspricht in etwa einem komplexen Daten-Typ prozeduraler Programmierumgebungen, geht aber darüber hinaus: Sie definiert nicht nur die Eigenschaften oder Attribute, die die konkreten Instanzen der Klasse (Objekte) haben können, sie definiert zudem Verarbeitungsfunktionen (sogenannte Methoden) für diese Daten. Jedes Objekt kann über die Methoden, die für seine Klasse definiert wurden, manipuliert werden...
quelle: http://de.wikipedia.org/wiki/Objektorientiert#Programmiersprachen
fu-berlin schrieb:
...Der Begriff „objektorientierte Programmierung“ ist nicht geschützt, es gibt keine von allen akzeptierte Definition und so gibt es auch einen Wildwuchs verschiedener, mehr oder weniger präziser, Definitionen. Diese Seite greift zwei Definitionen heraus, die aus dem einen oder anderen Grund für sich beanspruchen dürfen, maßgeblich zu sein...
quelle: http://userpage.fu-berlin.de/~ram/pub/pub_w33d45lg/begriff_objektorientierte_programmierung_de
man kann noch einen ganzen sack hier finden:
http://www.google.de/search?hl=de&q=definition+"objektorientiert"&btnG=Suche&meta=
-
http://de.wikipedia.org/wiki/Cplusplus
C++ unterstützt die folgenden Programmiertechniken:
* Prozedurale Programmierung
* Modulare Programmierung
* Strukturierte Programmierung
* Programmierung mit selbstdefinierten Datentypen (abstrakte Datentypen)
* Objektorientierte Programmierung (siehe auch Polymorphie (Vielgestaltigkeit))
* Generische Programmierung mittels Templates.C++ ist somit eine so genannte "Multiparadigmen-Sprache", die dem Programmierer sehr viele Freiheiten lässt. (Siehe Stärken und Schwächen)
-
bauerb schrieb:
also meiner meinung nach kann man in jeder programmiersprache objektorientiert
programmieren.Darum geht es aber nicht. Man nennt eine Sprache objektorient (oder X, oder Y), wenn die Sprache von sich aus Sprachmittel liefert, die die Programmierung im objektorientierten (oder X, oder Y) Stil nicht nur ermöglichen sondern auch nahelegen. Dazu muss es in der Sprache Sprachmittel für alle wichtigen Konzepte des Paradigmas geben.
Natürlich kann man auch in C oo programmieren. Da man von der Sprache diesbezüglich aber keine direkte Unterstützung erhält, ist C eindeutig nicht objektorientiert.
Es macht schon einen Unterschied ob etwas nur durch Konventionen möglich oder aber z.B. von einem Compiler garantiert wird.objektorientiertes programmieren ist nur ein denkansatz, der hilft probleme zu lösen.
Nein. OOA (und mit Abstrichen auch OOD) sind vielleicht reine Denkansätze. Die Qualität (Verständlichkeit/Wartbarkeit/Erweiterbarkeit usw.) eines OO-Programms wird aber ganz entscheidend durch seine Implementation und damit auch durch die Sprachmittel der Programmiersprache bestimmt.
Natürlich kann man in jeder Sprache Fortran schreiben, aber in Fortran geht das einfach mal am Besten.also meine bevorzugte sprache ist c, wobei ich meiner meinung nach auch objekt- orientiert programmiere.
Nimmt man mal einen ganz kleinen Nenner, dann ist oop mindestens:
1. Objekte
2. Vererbung
3. PolymorphieC unterstützt von sich aus ADTs (mehr oder weniger). Vererbung und Polymorphie musst du selbst von Hand implementieren. Du kannst also nicht wirklich in Begriffen wie Vererbung und Polymorphie denken sondern musst auf konkrete Implementationsstrategien runter (z.B. Einbettung und explizite Funktionstabellen). Man kann in C oo programmieren, allerdings erst wenn man festgelegt hat, wie man die nötigen Konzepte implementiert. Letztlich ist es also nicht C das die oo ermöglicht sondern du bist es, der als Dolmetscher zwischen der Idee und der low-level-Implementation übersetzt.
-
HumeSikkins schrieb:
C unterstützt von sich aus ADTs (mehr oder weniger). Vererbung und Polymorphie musst du selbst von Hand implementieren. Du kannst also nicht wirklich in Begriffen wie Vererbung und Polymorphie denken sondern musst auf konkrete Implementationsstrategien runter (z.B. Einbettung und explizite Funktionstabellen). Man kann in C oo programmieren, allerdings erst wenn man festgelegt hat, wie man die nötigen Konzepte implementiert. Letztlich ist es also nicht C das die oo ermöglicht sondern du bist es, der als Dolmetscher zwischen der Idee und der low-level-Implementation übersetzt.
man kann auch bibliotheken benutzen, um C die OOP näher zu bringen. Hier gibt es z.B. die glib.
ich selbst präferiere Objective-C
auf bald
oenone
-
Meine Meinung ist keine Sprache OOP (weil OOP eine denkweise ist)
Ist gibt nur Sprachen die diese mehr oder weniger unterstützenSehr gute OOP unterstützung hat z.b. smaltalk
mfg
-
oenone schrieb:
man kann auch bibliotheken benutzen, um C die OOP näher zu bringen. Hier gibt es z.B. die glib.
Aber wirklich befriedigend ist es nicht...