Slashdot Mirror


Good Textbooks for Object Oriented Programming?

Captain_Frisk asks: "My buddy and I have recently received approval to teach a programming course at our Alma Mater. We have pretty much free reign over what we teach, so we've elected to teach 'An Introduction to Object Oriented Programming,' to fill a void at a school where the only programming languages taught are C and Matlab. Can anyone out there recommend some good books for the course, not just for the students, but for us to read as preparation material? We've never taught a class before, and as graduates of this school, we've never had any formal training in OOP. I read a few books at work a few years back, but I don't remember their names, nor did they strike me as particularly memorable. So far I've looked at An Introduction to Object-Oriented Programming and Object-Oriented Software Construction, 2nd Edition (a book reviewed at Slashdot 3 years ago), but have not invested in either."

11 of 38 comments (clear)

  1. Booch, Gamma (GoF) by Ars-Fartsica · · Score: 2
    Grady Booch has written excellent books on object-oriented design. Design Patterns by Gamma, et al is widely recognized as an excellent Patterns book. Some people also like Bertrand Meyer's "Object Oriented Software Construction" but this seems to have migrated to an Eiffel tutorial in later editions.

    Best place to start is the comp.object FAQ. Don't underestimate the power of some of the better FAQ's out there - you can get a good grasp of basics and an excellent review of literature, all gratis.

  2. Depends on the level..... by pjdepasq · · Score: 2

    One key point you neglected to state is the level of instruction you are participating in. Are you getting involved in high school programming or college? There are texts for both areas, and you might get a better reponse by telling us.

    Secondly, if you are going to be doing high school instruction, you might want to consider broading your research. The AP test (for high school students to get college credit) will be in Java starting in '02 or '03 (I forget), so that might impact your decision, since you *might* be helping your students by getting them acclimated to Java and OOP from the start.

    1. Re:Depends on the level..... by Captain_Frisk · · Score: 2

      This is a college course. It is assumed that all students taking the class will know C.

    2. Re:Depends on the level..... by pjdepasq · · Score: 4, Informative
      Ah, ok.

      Well, I've done a Java for juniors and seniors who already know OOP here at VT. In the past we have used the Core Java Volume 1 book, but that's not appropriate to your audience, since they don't already know OOP.

      Take a look at Java Software Solutions (Addison-Wesley, author=John Lewis), if you are looking for a book tied directly to a language that the students will be working with. (Shameless plug: John was my Master's advisor, and I contributed to the text). It's been very well received at the collegiate level and is well supported. Since your students know C, they may be able to skip a few intro chapters on programming, data types, etc... or at least get through them quickly.

      Deitel and Dietel's Java texts are also popular.

      If you are looking for only a discussion of OOP topics and not bound to a particular language, I can't be of too much help there, I've not perused any of those recently.

      One final point. Please consider attending SIGCSE (http://www.cs.cofc.edu/sigcse2002) in February. It's an invaluable resource for computer science instruction for both new (novice) and old (er, experienced) instructors. SIGCSE is a great place to make contacts, get help on related issues, check out the texts, etc....

    3. Re:Depends on the level..... by heliocentric · · Score: 2

      Deitel and Dietel's Java texts are also popular.

      I recently took a Java class and the prof complained and complained about the lack of "good" java texts and how he might just have to resort to writing his own. The course had used Deitel and Dietel the semester before I took it, but was stopped due to the overwhelming number of errata in the text. When I took it we used Kalin's Object Oriented Programming in Java however the two or three times I used the text I saw errors on a few pages.

      If you are looking for only a discussion of OOP topics and not bound to a particular language...

      I kinda think that's the topic the person was really looking for, but I'm not sure since he does list the few languages taught. Maybe the person hasn't decided what track they wish to take (OO SE or coding), but I can throw in my $0.02 on this subject. I've taken several OO design and SE classes. This one has changed since I took it, it now uses the Booch book referenced in an earlier post as well as a UML book. Back in my day (man I'm feeling old here) we had a really bad small talk book, but it did drive home selecting a good hirarchy of classes. This other one has also changed since I took it, it now uses a UML book as well. When I had the second class we used Schach's Classical and Object-Oriented Software Engineering (I later used that text in some silly MSIS Grad class I took for giggles). There are a few editions I beleive of that book, we used the one with Java and UML and included a CD with Popkin's System Architech 2001. The Schrach book is an OK book from the SE standpoint, but I think the ordering is a little out of order.

      Maybe they'd like to toss all of this out and teach formal software design techniques and include methodologies for proving source code meets the design and things like DFD-SPECS and SPECS-C++, nah, maybe you're right, they probably just want to teach Java's objects to the kids who know C structs.

      --
      Wheeeee
    4. Re:Depends on the level..... by FortKnox · · Score: 2

      Hopefully you are still looking.

      The best two books that taught me OOD would be "Thinking in C++" and "Thinking in Java" by Bruce Eckel. Easily teaches the ideas extremely well. Also try "Design Patterns" after the basic idea of OOD is learned.

      --
      Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
  3. Books and Languages by randombit · · Score: 2, Informative

    One book that I would really recommend is Design Patterns (to just about anyone doing program design, really). It's excellent. The Gang of Four (as the authors are usually refered to because nobody can ever remember all their names :P) did one or two other books on a simliar line ("More Design Patterns", I think?).

    Since you didn't say what kind of language you're going to use, and you mention the only stuff there is C and Matlab, I'll throw out some languages suggestions as well:

    It kind of depends on the experiences of the people you're teaching. If they already know C, C++, or Java, maybe doing the course in C++ or Java is the way to go. However, they may have too many preconcieved notions in those languages (like old C programmers moving to C++, and basically still writing C, ignoring the OO stuff when they can) to be effective object oriented programmers in those languages without some other experience.

    So you may want to look into something like Python. I can't think of any other major OO scripting languages (Perl doesn't really count too much), and ML/O'Caml/Lisp/Scheme aren't really OO langauges in that sense.

    Oh, maybe Smalltalk would work I don't know of any free implementations, hopefully there is in fact at least one good one. Objective-C is C plus Smalltalk-style OO and as it's built into GCC, it would be available for everyone, so that might be another option. Since it's much less complicated than C++ (I like C++ but even I think it's a huge language), it would be relatively easy to learn in short order.

    1. Re:Books and Languages by StandardDeviant · · Score: 3, Informative

      for a free smalltalk implementation, check out Squeak. But if they know C, throw Java at them. Free tools that work on most any platform, plenty of good books (c.f. Thinking in Java by Bruce Eckel, which you can read online in a variety of formats (scroll down some on that page)), and not a huge syntactic leap to get in the way of the OO concepts, yet enough of one that they can't just code "C in C++". I've always been fascinated by Obj-C but I've had little luck finding good intro material.

      HTH :-)

    2. Re:Books and Languages by Matthew+Weigel · · Score: 2
      I've always been fascinated by Obj-C but I've had little luck finding good intro material.

      Apple has published, through Fatbrain, Object-Oriented Programming and the Objective-C Language - it looks like it addresses Obj-C separately from Cocoa, which is a good thing (remember, everyone, gcc supports Obj-C too :).

      --
      --Matthew
  4. at my school.... by jeffy124 · · Score: 2

    The OO course came after a C++ course and a course on elementary data structures and algorithms. Chances are good that because your students know C, they probably have some familarity with the DS/A stuff.

    The books I had to get for my OOP course was Intro to Software Design by Steve Reiss, the Gamma et al Design Patterns book pointed out by others, and a reference book on UML.

    The software design book is a good intro for OOP. It teaches OO using C++ and also introduces UML. The later chapters aren't really necessary, IMHO. They go into designing GUIs, distributed systems, large systems, project management, and other things that are better left to a course on software engineering. If you do use Reiss's book, do what my prof did: ignore those chapters.

    The book did say it could be used for students with no C++ experience, and assumes to previous experience with classes, inheritance, etc. IIRC, there were was a chapter introducing the syntax of a class and stuff like that. It recommends a C++ reference to supplement the book if the students have had no C++ previously. I recommend Bjarne Stroustrup (sp??) The C++ Programming Language, a 1000+ page reference and specification on the entire language and the STL.

    --
    The One Rule Of Chess You'll Ever Need: Don't play someone who carries a kit in their bookbag.
  5. good book, but out of print by dutky · · Score: 2

    If you can find a copy of it, C+C++: Programming with Objects in C and C++ by Allen Holub. The book gives a solid overview of object orientation, as well as examples of how to implement object oriented programming in ostensibly non-object oriented languages (in this case, standard C). Once it has introduced the basic OO concepts, and how you might implement them in a non-OO language, it goes on to show you how C++ delivers the same language features with much less hassle. As with other books by Allen Holub, this one is written with clarity and humor: it is both informative and enjoyable to read.