PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : sind klassen in c auch implementiert worden ?



doomcalyptica
20-11-2004, 12:32
hallo,
ich habe ein frage:
in meiner schule wird, mit C++ programmiert, die leherer sagtn mir ich darf weiter mit C programmieren aber wen es um das thema klassen geht, muss ich mit C++ prgrammieren. ich glaube aber es gibt einen ANSI standart, bei dem klassen mit implementiert wurden. (so um 1990 rum, sonst währe C langsam aber sicher in richtung datenbanken ausgestorben). so nun meine frage:
1. gibt es diesem standart in C mit klassen oder gibt es klassen nur in C++ und wie nennt man diesem standart ?
2. mal ne andere frage, ist gcc unter linux ein standart c compiler ?

Lin728
20-11-2004, 13:35
zu 1.): Ja, Klassen gibts nur in C++ und Objective-C, beide sind C-kompatibel.

doomcalyptica
20-11-2004, 13:58
danke ;)
wird irgendein mensch was dagegen sagen, wenn ich in der prüfung, mit C alles schreibe zum beispiel mir printf, scanf, fscanf, fprintf .... usw und auf ne C++ klasse zureife ?

ich denk mal man kann doch die vorteile beider system daraus nehmen und nutzen

locus vivendi
20-11-2004, 14:54
wird irgendein mensch was dagegen sagen, wenn ich in der prüfung, mit C alles schreibe zum beispiel mir printf, scanf, fscanf, fprintf .... usw und auf ne C++ klasse zureife ?
Kommt auf die Aufgabenstellung an. Wenn die Benutzung dieser Funktionen nicht ausgeschlossen wird, darfst du sie sicher benutzen. Aber du solltest auch Berücksichtigen das dein Lehrer vielleicht Punkte abzieht wenn die Lösung nicht "elegant" ist. Also wenn du dir nicht sicher bist, würde ich vielleicht den Lehrer selber darauf ansprechen.

doomcalyptica
20-11-2004, 15:04
ok danke für die gute erklärung :)

peschmae
20-11-2004, 16:47
ich denk mal man kann doch die vorteile beider system daraus nehmen und nutzen

Kann man schon. Aber du tönst eher etwas konservativ à la "ich will unbedingt weiter das benutzen was ich schon seit immer benutze"... ;)

Ausserdem: Wenn du schon C kannst dürfte C++ lernen (und auch die dazu gehörigen typischen STL-Konstrukte) ja nicht all zu schwer sein - je mehr du kannst desto besser :)

MfG Peschmä

panzi
20-11-2004, 18:54
Also bei mir war's umgekehrt: Hab mir selbst C++ angeschaut, bevor ich noch auf's EDV Kolleg ging und hab mich dann "geweigert" auf OOP zu verzichten. Ich hab zwar in ANSI C programmiert, aber ich hab trotzdem wenn möglich objektorientiert programmiert. Also immer eine struct und namentlich erkennbar nach einen einheitlichen Schema dazugehörige klassen und so. Macht ein Programm einfach VIEL übersichtlicher.

SeeksTheMoon
21-11-2004, 09:07
danke ;)
wird irgendein mensch was dagegen sagen, wenn ich in der prüfung, mit C alles schreibe zum beispiel mir printf, scanf, fscanf, fprintf .... usw und auf ne C++ klasse zureife ?

ich denk mal man kann doch die vorteile beider system daraus nehmen und nutzen

Und damit benutzt Du C++ und kein C mehr (anderer Compiler, andere Bibliotheken und Klassen; kein Stoff des Unterrichts) und ich würde Dir als Prüfer eine 6 geben weil Du was anderes gemacht hast als vorgesehen war. Natürlich ist die Aufgabenstellung in der Beziehung wasserdicht ("Entwickeln Sie in ANSI-C...") und die 6 somit gerechtfertigt, weil die Aufgabe nicht erfüllt ist ;).
Ganz besonders wenn Du z.B. bestimmte string-Funktionen bauen sollst und dann die String-Klasse verwendest.

Für Prüfungen also keine gute Idee.
Auf der Arbeit wird sicher auch im Pflichtenheft stehen, dass die Aufgabe in C gelöst wird. Wenn Du C++ verwendest, kann der Auftraggeber die Arbeit ebenfalls als nicht erfüllt betrachten und Du würdest dafür ggf kein Geld sehen und Du könntest sogar zu Schadensersatz herangezogen werden, weil der Auftraggeber nicht wie geplant das fertige Produkt bekommt.
Fürs Real-Life also auch keine gute Idee...

peschmae
21-11-2004, 09:44
Und damit benutzt Du C++ und kein C mehr (anderer Compiler, andere Bibliotheken und Klassen; kein Stoff des Unterrichts) und ich würde Dir als Prüfer eine 6 geben weil Du was anderes gemacht hast als vorgesehen war. Natürlich ist die Aufgabenstellung in der Beziehung wasserdicht ("Entwickeln Sie in ANSI-C...") und die 6 somit gerechtfertigt, weil die Aufgabe nicht erfüllt ist ;).
Ganz besonders wenn Du z.B. bestimmte string-Funktionen bauen sollst und dann die String-Klasse verwendest.


Das Problem stellt sich hier gerade andersrum. Und da ist die Frage schon berechtigt aber nicht wirklich beantwortbar.

MfG Peschmä

panzi
21-11-2004, 15:31
Das Problem stellt sich hier gerade andersrum. Und da ist die Frage schon berechtigt aber nicht wirklich beantwortbar.

MfG Peschmä
Und auch umgekehrt, also wenn C++ gefragt ist, und jemand C, und somit keine Klassen dafür aber printf(), str*() usw. verwendet, würde ich ne 5 geben (in Österreich gibt's keine 6 als Note). Denn auch da ist die Aufgabe nicht erfüllt. C und C++ sind einfach zu verschieden, als das man ungeschoren das eine verwenden kann, auch wenn das andere gefragt war.
Soll ich beispiele nennen warum?
Also:
Fehlerbehandlung
in C mit Returnwerten und errno
in C++ mit Exceptions

Stringbearbeitung
in C mit den str*() funktionen und einen char-Array
in C++ mit der Klasse std::string

Gennerelles Konzept (schwehrwiegenster Punkt)
C ist eine prozedurale Sprache (siehe: http://de.wikipedia.org/wiki/Prozedurale_Programmiersprache)
C++ ist eine objektorienteirte Sprache (siehe: http://de.wikipedia.org/wiki/Objektorientierte_Programmiersprache)

Datei-I/O
in C mit FILE* und printf()/scanf() etc. oder gleich gar filedescriptoren und read()/write()
in C++ mit iostreams

usw.

peschmae
21-11-2004, 17:50
Ja sicher, aber das Programm läuft auch mit C++-Compilern und entspricht auch den Standards. Was willste da schon sagen?
Ich meine, da kannst ja keine klare Grenze zwischen das ist C++ und das nicht ziehen.
Auch mit Java kann man prozedurale Programme schreiben, klar leitest du gezwungenermassen eine Klasse ab, aber der Rest ist Stilfrage. Oder ist das dann nicht mehr Java wenn ich einen Prozeduralen Programmierstil habe und mich um OOP foutiere? Wäre ja mit derselben Argumentation auch zu behaupten...

Naja, wie man sieht ist am besten:
- C++ lernen und programmieren
und am zweitbesten:
- Lehrer fragen

MfG Peschmä

Alex_K
21-11-2004, 19:20
also ich denke wenn hier spekuliert wird bringt das gar nichts, denn der einzige der eine antwort daruf geben kann ist der prüfer.

technischt gesehen ist es möglich C-konstrukte in einem C++ programm zu verwenden, und es mit einem c++ kompiler zu kompilieren.

wenn aber im unterricht z.b. speziell auf strings mit c++ eingegangen wurde, und der prüfer will prüfen ob das auch verstanden wurde, aber man dann was komplett anders verwendet wird es ihm wohl nicht zufriedenstellen.

panzi
21-11-2004, 20:35
Ich denk mir halt, wenn C++ gelehrt wird, dann wird's vor allem um OOP, sosnt würde man doch gleich C verwenden. Und wenn eben wirklich C++ das Thema ist, dann wird wohl sicher auf C++ Features wie Exceptions, IO-Streams usw. eingegangen werden. Und das gibt's eben in C nicht.