 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Jürgen Herz Guest
|
Posted: Fri Jan 12, 2007 5:27 pm Post subject: Buchempfehlung zur C++-Nutzung gesucht |
|
|
Hallo,
mit den Features der Sprache C++, d.h. wie Klassen deklariert werden, was
Zugriffschutz ist, wie eine Ableitung funktioniert und was Polymorphismus
ist usw. kenne ich mich mittlerweile aus. Allerdings fehlt mir das
Wissen/Verständnis wann was warum in der Praxis einzusetzen ist.
Also vielleicht etwas mehr Gewicht auf Konzepte als auf die Sprache, aber
bitte doch anhand von C++.
Vielleicht hat der eine oder andere von euch in dieser Hinsicht eine
Empfehlung für mich.
Grüße,
Jürgen |
|
| Back to top |
|
 |
Stefan Ram Guest
|
|
| Back to top |
|
 |
Torsten Robitzki Guest
|
Posted: Fri Jan 12, 2007 11:41 pm Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
Jürgen Herz wrote:
| Quote: | Vielleicht hat der eine oder andere von euch in dieser Hinsicht eine
Empfehlung für mich.
|
Ich habe vor Jahren mal "Pattern Hatching, Design Pattern Applied" (ISBN
0-201-43293-5) gelesen. Das Buch adressiert eigentlich die Anwendung von
Pattern, alle Beispiel sind aber in C++.
mfg Torsten |
|
| Back to top |
|
 |
Stefan Ram Guest
|
Posted: Sat Jan 13, 2007 4:24 am Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
Torsten Robitzki <MyFirstname (AT) Robitzki (DOT) de> writes:
| Quote: | Das Buch adressiert eigentlich die Anwendung von
Pattern, alle Beispiel sind aber in C++.
|
Im Englischen sagt man »The book addresses ...«,
auf deutsch »Das Buch behandelt ...«. |
|
| Back to top |
|
 |
Jürgen Herz Guest
|
Posted: Sat Jan 13, 2007 5:30 pm Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
Stefan Ram wrote:
Tja, entweder habe ich mich unverständlich ausgedrückt, oder verstehe nicht
was Du mir sagen möchtest. Jedenfalls bin ich jetzt keinen Schritt weiter
als vor meinem Post.
Ich möchte kein Buch schreiben oder ein Buch bewerten, sondern lesen und
lernen. Auch nach dem Lesen was in dem PDF zum Wort steht bin ich der
Meinung, "Konzept zu meinen".
Mein Satz war vielleicht nur etwas hingeworfen, was ich sagen wollte ist,
daß sich das Buch eher auf die Objektorientierte Programmierung als auf die
Sprache beziehen sollte. Also nicht wie eine Klasse codiert und abgeleitet
wird, sondern wann und warum.
Vielleicht hast Du doch noch eine konkrete Empfehlung für mich.
Danke,
Jürgen |
|
| Back to top |
|
 |
Jürgen Herz Guest
|
Posted: Sat Jan 13, 2007 5:53 pm Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
Torsten Robitzki wrote:
| Quote: | Jürgen Herz wrote:
Vielleicht hat der eine oder andere von euch in dieser Hinsicht eine
Empfehlung für mich.
Ich habe vor Jahren mal "Pattern Hatching, Design Pattern Applied" (ISBN
0-201-43293-5) gelesen. Das Buch adressiert eigentlich die Anwendung von
Pattern, alle Beispiel sind aber in C++.
|
Ich glaube Design Patterns werden für mich auch mal interessant werden. Aber
ich weiß nicht ob ich das jetzt schon brauchen kann.
Vielleicht zur Verdeutlichung: Wo kann ich lesen, nach welchen Kriterien
eine Klasse entworfen wird, wann wird nach welchen Kriterien eine Ableitung
gemacht und wie lässt sich Polymorphismus in der Praxis einsetzen?
Gruß,
Jürgen |
|
| Back to top |
|
 |
Stefan Reuther Guest
|
Posted: Sat Jan 13, 2007 7:19 pm Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
Jürgen Herz wrote:
| Quote: | Torsten Robitzki wrote:
Ich habe vor Jahren mal "Pattern Hatching, Design Pattern Applied" (ISBN
0-201-43293-5) gelesen. Das Buch adressiert eigentlich die Anwendung von
Pattern, alle Beispiel sind aber in C++.
Ich glaube Design Patterns werden für mich auch mal interessant werden. Aber
ich weiß nicht ob ich das jetzt schon brauchen kann.
Vielleicht zur Verdeutlichung: Wo kann ich lesen, nach welchen Kriterien
eine Klasse entworfen wird, wann wird nach welchen Kriterien eine Ableitung
gemacht und wie lässt sich Polymorphismus in der Praxis einsetzen?
|
Design Patterns sind aber ein wichtiger Anwendungsfall von Klassen.
Ich würde mal die Behauptung aufstellen, dass man Klassen in C++ für
drei große Anwendungsfälle einsetzt:
- um "Dinge" zu modellieren ("Customer", "Window", "File",
"std::istream", "std::vector"). Wie man das richtig macht, lernt man
durch Erfahrung, Lesen von Fremdcode, Fragen in dieser GABELN, etc.
- für Entwurfsmuster (z.B. "Visitor", "Iterator"). Die modellieren ja
eher abstrakte Sachverhalte, keine Dinge. Wenn man sie aber kennt, hat
man viel öfter Gelegenheit, hübsche kleine Klassen anzuwenden
Letztenendes sind Entwurfsmuster nur Namen für Banalitäten, aber auf
die Idee, eine Banalität mit einer Klasse zu lösen, muss man auch
erstmal kommen.
- für Dinge, "wo man in C++ halt eine Klasse braucht". Zum Beispiel
Exceptions, RAII, Template-Metaprogrammierung, etc. Exceptions gehen
auch ohne Klassen (-> Lisp, Ada), RAII geht auch mit try/finally,
Template-Metaprogrammierung ginge sicher auch anders als mit partiell
spezialisierten Klassen, aber C++ hat halt beschlossen, das mit
Klassen zu machen.
Eventuell schau auch mal in ein Softwaretechnik-Script einer Universität
deiner Wahl rein. Da wird sowas gerne erklärt. Wobei ich sagen muss,
dass ich unsere SWT-Vorlesung ziemlich langweilig fand (weil ich den
Stroustrup vorher durch hatte), nur bei den Entwurfsmustern gab's das
eine oder andere "Aha"-Erlebnis.
Stefan |
|
| Back to top |
|
 |
Torsten Robitzki Guest
|
Posted: Sat Jan 13, 2007 7:35 pm Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
Jürgen Herz wrote:
| Quote: | Torsten Robitzki wrote:
Jürgen Herz wrote:
Vielleicht hat der eine oder andere von euch in dieser Hinsicht eine
Empfehlung für mich.
Ich habe vor Jahren mal "Pattern Hatching, Design Pattern Applied" (ISBN
0-201-43293-5) gelesen. Das Buch adressiert eigentlich die Anwendung von
Pattern, alle Beispiel sind aber in C++.
Ich glaube Design Patterns werden für mich auch mal interessant werden. Aber
ich weiß nicht ob ich das jetzt schon brauchen kann.
|
Bei Design Pattern geht es ja darum, häufig wiederkehrende Problemmuster
als solche zu erkennen und wiederrum geleichartig mit bewerten Lösungen
zu lösen.
| Quote: | Vielleicht zur Verdeutlichung: Wo kann ich lesen, nach welchen Kriterien
eine Klasse entworfen wird, wann wird nach welchen Kriterien eine Ableitung
gemacht und wie lässt sich Polymorphismus in der Praxis einsetzen?
|
Aus dem Studium kann ich mich noch dunkel an Verfahren erinnern, bei dem
man Texte nach Kandidaten für Objekte und Funktionen durchsuchte (google
mal nach Termen wie "object candidate" [oder für Stefan "Klassenexemplar
Kandidat" ;-]).
Im Großen und Ganzen hat man für die Lösung eines Problems meist mehrere
Möglichkeiten, diese Möglichkeiten muß man kennen. Jede Möglichkeit hat
nach bestimmten Kriterien dann Vor- und Nachteile. Dabei muß man
aufpassen, das man nicht nach Pseudokriterien wie "Objektorientiert",
"sauber", "inovativ" etc. bewertet und das Kriterium Performanz nicht zu
hoch wertet.
mfg Torsten |
|
| Back to top |
|
 |
Carsten Breuer Guest
|
Posted: Sat Jan 13, 2007 9:36 pm Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
Stefan Reuther schrieb:
| Quote: | - für Dinge, "wo man in C++ halt eine Klasse braucht". Zum Beispiel
Exceptions,
[...] |
Kann man ich C++ nicht beliebige Datentypen als Exceptions werfen? Ist
das neu?
Carsten |
|
| Back to top |
|
 |
Stefan Reuther Guest
|
Posted: Sat Jan 13, 2007 10:43 pm Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
Carsten Breuer wrote:
| Quote: | Stefan Reuther schrieb:
- für Dinge, "wo man in C++ halt eine Klasse braucht". Zum Beispiel
Exceptions,
[...]
Kann man ich C++ nicht beliebige Datentypen als Exceptions werfen?
|
Kann man, ja. Aber im Allgemeinen wirft man halt Klassenobjekte. Ada hat
wohl, wenn ich mich richtig erinnere, besondere Exception-Objekte.
Stefan |
|
| Back to top |
|
 |
Georg Maaß Guest
|
Posted: Sat Jan 13, 2007 11:07 pm Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
Carsten Breuer wrote:
| Quote: | Kann man ich C++ nicht beliebige Datentypen als Exceptions werfen? Ist
das neu?
|
Doch natürlich kannst Du das. Du darfst, immer wenn Dir was stinkt, 4711
werfen. Das ist völlig korrekt. Aber wenn Du Deine eigenen 4711er und
auch von der STL geworfene Exceptions fangen willst, dann brauchst Du
mit 4711ern schon mal mindestes zwei Handler, wohingegen Du mit
Ableitungen von der std::exception als eigenem Exception-Typ Du mit
einem Handler auskommst, wenn sich die Behandlung nicht unterscheidet.
Sobald Du die STL oder überhaupt Klassen verwendest, sind automatisch
(soweit Du nicht die Exceptions tot gemacht hast) std::exceptions im
Spiel. Mehr wollte Stefan nicht sagen, zumal er auch ausdrücklich
erwähnt, daß Exceptions (eigene) auch ohne Klassen gehen. Aber die
vordefinierten Exception-Typen von C++ sind Klassen. |
|
| Back to top |
|
 |
Stefan Ram Guest
|
Posted: Sat Jan 13, 2007 11:55 pm Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
Jürgen Herz <juergen (AT) jherz (DOT) redirectme.net> writes:
| Quote: | Mein Satz war vielleicht nur etwas hingeworfen, was ich sagen
wollte ist, daß sich das Buch eher auf die Objektorientierte
Programmierung als auf die Sprache beziehen sollte. Also nicht
wie eine Klasse codiert und abgeleitet wird, sondern wann und
warum.
Vielleicht hast Du doch noch eine konkrete Empfehlung für mich.
|
Tatsächlich wird so etwas in Büchern zum Entwurf behandelt,
wobei auch Entwurfsmuster vorkommen. Da gibt es etwa das Buch
»Applying UML and Patterns« von Craig Larman, das aber
Beispiele mit Java behandelt.
Allerdings ist weder Java noch C++ eine objektorientierte
Programmiersprache - in beiden Sprachen stehen ja weder
numerische Literale noch Blöcke für Objekte, wie in
objektorientierten Programmiersprachen.
Der Begriff »objektorientierte Programmierung« wurde 1967 von
Alan Kay geprägt - aber es war bis 2003 nicht sicher bekannt,
was er damit meint. Er war dann aber so freundlich, mir diese
Frage in einer E-Mail zu beantworten:
»OOP to me means only messaging, local retention and
protection and hiding of state-process, and extreme
late-binding of all things. It can be done in Smalltalk
and in LISP. There are possibly other systems in which
this is possible, but I'm not aware of them.«
http://www.purl.org/stefan_ram/pub/doc_kay_oop_en
In bezug auf C++ geht das auch noch deutlicher:
»I invented the term Object-Oriented, and I can tell you I
did not have C++ in mind.«
»Java and C++ make you think that the new ideas are like
the old ones. Java is the most distressing thing to hit
computing since MS-DOS.«
http://en.wikiquote.org/wiki/Alan_Kay
Wenn Du also objektorientierte Programmierung erlernen willst,
dann wäre Smalltalk oder Squeak geiegnet.
Klassen gehören übrigens nicht zur objektorientierten
Programmierung - bis vor kurzem gab es in JavaScript zwar
Objekte, aber keine Klassen, und auch noch andere Sprachen mit
Objekten kommen enthalten keine Klassen.
Das soll nicht heißen, daß C++ für bestimmte Anwendungen
schlecht geeignet wäre. Nur soll man eben nicht glauben, daß
man mit dieser Sprache objektorientiert programmieren würde.
Einerseits gibt es objektorientierte Techniken, die so in C++
nicht möglich sind (parametrisierte Blöcke als Objekte),
andererseits wird in modernem C++ viel generisch Programmiert,
was nicht zur objektorientierten Programmierung gehört.
Die Standard-Buchempfehlung in dieser Runde für Anfänger
ist übrigens das Buch »Intensivkurs C++« (»Accelerated C++«
auf englisch). |
|
| Back to top |
|
 |
Stefan Ram Guest
|
Posted: Sun Jan 14, 2007 12:18 am Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
Stefan Reuther <stefan.news (AT) arcor (DOT) de> writes:
| Quote: | Design Patterns sind aber ein wichtiger Anwendungsfall von Klassen.
|
In einigen Methodiken zur Softwareherstellung gibt es eine
Aktivität, die man »Gestaltung« nennt. Gestaltungssmuster
geben Erfahrungen aus gleich oder ähnlich wiederkehrenden
Gestaltungssituationen wieder.
Schon im 18. Jahrhundert gab es in England »pattern books«,
die Gestaltungsmuster von Gebäuden und Möbeln enthielten.
http://www.metmuseum.org/toah/hd/enpb/hd_enpb.htm
Klassen können in C++ zur Implementation von Entwürfen
eingesetzt werden, und die Entwürfe berücksichtigen umgekehrt
teilweise schon die Möglichkeiten, welche die Zielsprache
bietet.
Das Wort »Anwendungsfall« hat in der Programmentwicklung
allerdings eine spezielle terminologische Bedeutung hat, mit
der Deine Aussage nicht vereinbar ist:
http://de.wikipedia.org/wiki/Anwendungsfall |
|
| Back to top |
|
 |
Stefan Ram Guest
|
Posted: Sun Jan 14, 2007 12:40 am Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
ram (AT) zedat (DOT) fu-berlin.de (Stefan Ram) writes:
| Quote: | Einerseits gibt es objektorientierte Techniken, die so in C++
nicht möglich sind (parametrisierte Blöcke als Objekte),
andererseits wird in modernem C++ viel generisch Programmiert,
was nicht zur objektorientierten Programmierung gehört.
|
Man will in der objektorientierten Programmierung möglichst
viel dynamisch (also zur Laufzeit) entscheiden und in C++ und
der generischen Programmierung möglichst viel statisch (also
beim Übersetzen). Das Statische ist ja im allgemeinen auch
schneller (zur Laufzeit). Überspitzt gesagt ist die in
modernem C++ übliche generische Programmierung also das
Gegenteil der objektorientierten Programmierung.
Wenn man einmal voraussetzt, daß man in C++ programmieren
will, dann sollte man auch spezielle Gestaltungsmuster
heranziehen, welche die generische Programmierung von Anfang
an mitberücksichtigen, um der Sprache gerecht zu werden. |
|
| Back to top |
|
 |
Tibor Pausz Guest
|
Posted: Sun Jan 14, 2007 12:52 am Post subject: Re: Buchempfehlung zur C++-Nutzung gesucht |
|
|
Jürgen Herz schrieb:
| Quote: | Vielleicht zur Verdeutlichung: Wo kann ich lesen, nach welchen Kriterien
eine Klasse entworfen wird, wann wird nach welchen Kriterien eine Ableitung
gemacht und wie lässt sich Polymorphismus in der Praxis einsetzen?
|
zwei Bücher zum Thema
Heide Balzert; Lehrbuch der Objektmodellierung; Analyse und Entwurf
Grady Booch; Objektorientierte Analyse und Design |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|