- Daniel
Allen
Originally posted by Allen Alchian:
[b]Jacquie,
You've pretty well described my experience to a "Tee". My programming background is Pascal...no OOP...with some dabbling in self-taught C and Visual Basic for Applications, and some fortran experience from decades ago. I figured I could teach myself Java because other than having different syntax, how difficult could another language be?
Surprise, surprise. Sure I could easily master the basic flow control of the language, but the idea of formulating the program for an object oriented solution really floored me.
Yes, I went out and bought an IDE right away (JBuilder) and bought a couple of books too. That was back in September. Now my Java self-help library has grown to seven books and will soon include an eighth because I decided to take a beginning Java course at the local university even though I'm now finally getting the hang of writing a basic Java program. (I wish I could say that your book is included in my library. Maybe it will be...I'll have to take a look at it.) And I never use the IDE...just TextPad (which I highly recommend...and yes, I'm a registered user).
The weakness of many Java books, from my perspective, is that the authors seem to think the reader easily grasps the concept of formulating the problems as objects. With my background, that just wasn't the case. In fact, I still wonder if I could REALLY put together a full program in an OOP language...something more than the simple exercises in the Teach-Yourself books that require only one or two classes. I think I could, but I just haven't tried yet...that'll happen in the class which starts in a couple of weeks.
I also agree with Daniel about books mixing applications and applets together. And I really get frustrated with the books that provide a prepared package of inputs and outputs so your first programs will look fancy. This has you learning the author's package and not Java...a beginner can't distinguish which is which. I prefer to just take command line arguments and send output to System.out.println() for starters. That's enough to allow me to learn quite a bit of the Java basics.
So, coming to the bottom line, and the short answer to your question: "No, I didn't get a good grounding in objects first." I guess your book does that. Right?[\b][\QUOTE]
Yes, that's what I attempt to do with my book. Here's an analogy that I use in the introduction to the book:
"Imagine that you have been asked to build a house, and that you know the basics of home construction. In fact, you are a world-renowned home builder whose services are in high demand! Your client tells you that all of the materials you will need for building this home are going to be delivered to you. On the day construction is to begin, a truck pulls up at the building site and unloads a large pile of strange, blue, star shaped blocks with holes in the middle. You are totally baffled! You have built countless homes using materials like lumber, brick, and stone, and know how to approach a building project using these familiar materials; but you haven't got a clue about how to assemble a house using blue stars.
Scratching your head, you pull out a hammer and some nails and try to nail the blue stars together as if you were working with lumber, but the stars don't fit together very well. You then try to fill in the gaps with the same mortar that you would use to adhere bricks to one another, but the mortar doesn't stick to these blue stars very well. Because you are working under tight cost and schedule constraints for building this home for your client, however (and because you are too embarrassed to admit that you, as an 'expert' builder, don't know how to work with these modern materials), you press on. Eventually, you wind up with something that looks (on the outside, at least) like a house.
Your client comes to inspect the work, and is terribly disappointed. One of reasons he had selected blue stars as a construction material was that they are extremely energy efficient; but, because you have used nails and mortar to assemble the stars, they have lost a great deal of their inherent ability to insulate the home. To compensate, your client asks you to replace all of the windows in the home with thermal glass windows so that they will allow less heat to escape. You are panicking at this point! Swapping out the windows will take as long, if not longer, than it has taken to build the house in the first place, not to mention the cost of replacing stars that will be damaged in the renovation process. When you tell your customer this, he goes ballistic! Another reason that he selected blue stars as the construction material was because of their recognized flexibility and ease of accommodating design changes; but, because of the ineffective way in which you assembled these stars, you are going to have to literally rip them apart and replace a great many of them.
This is, sad to say, the way many programmers wind up building an OO application when they don't have appropriate training in how to approach the project from the perspective of objects. Worse yet, the vast majority of would-be OO programmers are blissfully ignorant of the need to understand objects in order to program in an OO language. So, they take off programming with a language like Java and wind up with a far from ideal result: a program which lacks flexibility when an inevitable 'mid course correction' occurs in terms of a change in the requirements specification, as when new functionality needs to be introduced after an application has been deployed."
My book is organized into three parts. In Part 1 (Chapters 2 - 7), I explain object concepts in detail, using just a smattering of Java (which I introduce in Chapter 1). But, since object concepts are language neutral for the most part, I deemphasize Java complexities in Part 1. Part 2 teaches you how to produce a UML object model for a Student Registration System case study; then, in Part 3, I teach you how to render the object model as a fully functional Java application, including file I/O and a GUI.
------------------
author of:
Beginning Java Objects
[This message has been edited by Jacquie Barker (edited January 01, 2001).]
[This message has been edited by Jacquie Barker (edited January 01, 2001).]
[This message has been edited by Jacquie Barker (edited January 01, 2001).]
Originally posted by Allen Alchian:
[snip] While I've got your attention, let me just add one more point. Another area of learning Java in which I had a real struggle was interfaces. I had to read, re-read, and do more reading and studying before I finally could understand how interfaces and inheritance work together. Only after studying many examples from several books was I finally able to get a good handle on the proper role of these two concepts and how they differ and relate to each other. In short, I think this is an area that is treated too lightly by any one book.
Originally posted by Rakesh Sharma:
You have raised a very logical query. It will be very nice of you if you could guide us how to structure a software application from ground.
Allen
Originally posted by l haydu:
Before I started learning Java, I had experience with Borland's Delphi and also had a course in C++. I learned Delphi on the job because that was the development software of choice of the company I was working for at the time. It wasn't until I started learning Java that some of the unfamiliar keywords and concepts in Delphi became really clear; e.g., abstract, class methods, interfaces, overload and override. Until I learned Java, I never really knew what those things meant and how to use them. I am looking forward to using Java this year for some projects at work.
Originally posted by JC Cook:
Jacquie,
It seems with most efforts at teaching OOP, authors and teachers feel the need to be very basic with beginners, using simple analogies and starting the reader with easy coding exercises. This is good, in that it gives the new student a sense of accomplishment, but bad in that he never develops an understanding of how objects are actually used in real life, how to design with objects, etc. We read books and take classes, and all we really understand is that a "car is a vehicle".
Hooray for you showing us a real-world example with design preceding development! Learning how to pound a nail teaches us little about how to design and build a house. Knowing how to do the latter makes learning to pound nails almost trivial. I'm anxious to get your book.
Here's a java greenhorn question, prefaced by some rhetoric:
In my experience, implementing any kind of discipline, such as good object oriented design and development, depends heavily on upper level management buying into its benefits and mandating its implementation. For lowly coders to embrace OOP is fine, but do you find many top level people in business who really understand and appreciate the value of OOP, and who require correct practices?
Originally posted by Bob Young:
I also am in the steep learning curve phase of Java. I went out and purchased a beginning java book and now about 9 months latter I have 6 Java books. I am now getting more comfortable with the syntax and I realized the need to understand objects more throughly than what the beginning books described. The beginning books just describe it as sending messages to the objects and presto it happens! We all know that this is very simplistic. I was considering purchasing Timoth Budd's book but based on what I read, your book may be better for me.
Originally posted by Ed Lance:
Great point...I have to agree with most everyone else, not well grounded in OO concepts before learning Java. Which leads to another question. Is is possible to totally understand OO concepts without implementing them in some language/program? Seems as if one needs to keep reading/learning theory and then trying to implement the new knowledge in a program to really become a master!
Originally posted by Brian Tomlin:
Jacquie,
I also come from a non-OO programming background and I have been having somewhat of a difficult time grasping OO concepts. In fact, I posted a comment requesting guidance in this topic just last month on the Java College forum here at JavaRanch.
I too have bought a couple of Java Books and I feel fairly comforatable with the syntax of Java and most of the terms used in OO languages, but I still have a hard time Thinking in objects.
My goal is to get to the point where I could sit down and DESIGN an object oriented application and feel confident that I have utilized OO techniques adequately. I also have not had a lot of modeling experience and I am looking forward to reading part 2 of you book. I'm sure it's hard to include everything, but how much detail do you go into as far as the modeling part?
Thanks for your time,
Brian
"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning."
Originally posted by zulfiqar raza:
I came from a procedural programming background, and it took time and effort to learn object oriented programming techniques. The basic concepts are not hard, but applying those concepts when you are used to procedural programming is the harder part.
I think programming in Delphi has helped me grasp some of the concepts, in addition to good books, such as:
Bruce Eckel's "Thinking in Java",
Khalid Mughal's "A Programmer's Guide to Java Certification"
Craig Larman's "Applying UML and Patterns"
I also wasted a lot of money on books which claimed to cover Object Oriented Programming but did nothing of the sort. I have not yet seen a single book which can properly teach OOP concepts. If Jacquie's book can really do that, than it would indeed be a unique book.
Test 094, IBM WID 6.0 cert
SCJP 1.2
SCBCD 1.3 Beta
SCWCD 1.4 Beta
SCMAD Beta
SCDJWS Beta
KS
SCJP 1.5, SCEA, ICED (287,484,486)
Test 094, IBM WID 6.0 cert
SCJP 1.2
SCBCD 1.3 Beta
SCWCD 1.4 Beta
SCMAD Beta
SCDJWS Beta
KS
Originally posted by kalpesh soni:
I think for c++ or for java, bruce eckel gives you really good introduction of objects
I have been into programming for just one year, started with c then c++ and now java, i am presently preparing for new SCJP2. I think bruce eckel is just like a god to me
Originally posted by Anil Vupputuri:
Hi,
I would like to ask u a question in deciding to choose abstract class or Interface, as i read one book on Design Patterns which its given as
[b]Program to an interface and not to an implementation
purring this more succinctly,you should define the top of any class hierarchy with an abstract class which implements no method, but simply defines the methods that class will support. Then,in all of our derived classed u have more freedom to implement these methods as most suits our purpose.
The other major concept you should recognize is that of object composition.This is simply the construction of objects that contain others:encapsulation of several objects inside another one.
While many beginning OO programmers use inheritance to solve every problem,as you begin to write more elaborate programs, the merits of object composition become apparent.Your new object can have the interface that is best for what you want to accomplish without having all the methods of the parent classes .
Thus, the second major precept suggested by Design patterns is
Favor object composition over inheritance
so which approach would u suggest.
[/B]
Originally posted by Lokesh katta:
Hello jacquie,
Wish you a happy new year.
[snip] Now when i am trying to design a project(modeling it) i am finding lots of difficulties in the decision making process of how to design your objects so that they are flexible for future requirement changes and also as when to use which patterns,etc.
Do you explain all these intricacies of objects ?
I am planning to buy it if you are really doing it..
Lokesh
Originally posted by Sean Casey:
My experience was in an accelerated 10 week course which covered everything from language fundamentals all the way to networking with jdbc. I stress the word accelerated. The class met once a week for 6 hours and we crammed everything in. I felt slighted by the fact that I invested over 2000 dollars and I was never given a chance to fully grasp the fundamentals of inheritance and composition with objects. As I prepare for the SCJP2, I am finally grasping the importance of objects.
Originally posted by Steve Hayes:
About Java Nivana...
Bruce Eckel's books are v.good. I recently purchased his new CDROM which has some MP3 audio files that I load on my player as I while away the hours getting to work across London (takes hours at the moment). However, Jacquie, I really like your description of 'Interfaces' and also the earlier description of why it's essentially to understand 'why it is you're walking and where you're going' rather than thinking 'hey I can walk!' Another book in the collection is always useful 'cos there's always another way of delivering a complex idea so that in the end it sticks. The way you present things seems straightforward, intelligent without being too highbrow. Just the kind of book I can digest. I'm looking to take SCJP in the next three months and although I think I have many of the concepts, faced with putting together a large bit of software in Java I think I might end up scratching my head. I've been looking for a book that goes through a largish realworld example for sometime that also gets across many important concept I'm going to need to know. Yours sounds v.tempting. What does it cover that's important for the SCJP exam?) Steve
bacon. tiny ad:
Smokeless wood heat with a rocket mass heater
https://woodheat.net
|