Chat Transript - June 1, 1997

[Don] joins at Sun Jun 01 19:52:59 1997 from

[David] joins at Sun Jun 01 19:56:54 1997 from

David=> hello

[wachsmut] joins at Sun Jun 01 19:57:28 1997 from

wachsmut=> Hi - I am late, almost -:)
Don=> no problem
wachsmut=> Hi guys ....
David=> hello
Don=> Dr. w. remember the NBA finals are on right now
wachsmut=> let's wait a couple more minutes, see if anyone else joins,
wachsmut=> actually, the TV is in the background !
wachsmut=> sound only
wachsmut=> that's the beauty of virtual classes ....

[Rob] joins at Sun Jun 01 19:59:38 1997 from

wachsmut=> hi rob !
Rob=> Hi, I'm in.
Rob=> hi
wachsmut=> Great .... let's wait 2 more minutes, then
wachsmut=> I'll announce the gameplan for today
David=> I had a problem with PFE?
wachsmut=> yes ?
wachsmut=> what was the problem, david ?
David=> error: Can't start pfe0532 helper did work for me once!
wachsmut=> hmmmmm .....
wachsmut=> there's a new version of PFE ... versin 7.00??
wachsmut=> I'll change the link on my page, maybe reinstalling will help.
David=> I'm sorry..after f11 and enter
wachsmut=> Alright ... looks like attendence is kind of low today,
wachsmut=> perhaps competing with the NBA finals was not a good idea !
Don=> you can say that again!!!
wachsmut=> Anyway, let's start in any case (sorry -:)

[Jenn] joins at Sun Jun 01 20:03:15 1997 from

wachsmut=> Alright, here's what I have planned for today
wachsmut=> (hi Jenny)
Jenn=> HI!
wachsmut=> First, I ask some questions ...
wachsmut=> then you get to ask questions ...
wachsmut=> then some new stuff
wachsmut=> then - if there's still time - some general comments.....
wachsmut=> Alright, here are my questions.
wachsmut=> Anybody who wants to answer, go right ahead .....
wachsmut=> what three steps are needed to declare an array ?
Don=> the type the name and the size
Jenn=> you need to define it
wachsmut=> type and name goes together ....
wachsmut=> size, yes, and then to populate the array ...
wachsmut=> alright, what's the new return type for a method (other than double etc)
wachsmut=> nothing (pun intended) ?
wachsmut=> well ????
Don=> is it void??
wachsmut=> yes
wachsmut=> thanks !
wachsmut=> means: nothing to return, basically.
wachsmut=> Alright, if a method does NOT use void as return type, then
wachsmut=> what is a word that must show up in the method body?
Don=> return
wachsmut=> great !
wachsmut=> alright, moving on....
wachsmut=> what two different categories make up a class ?
Jenn=> data fields and methods
wachsmut=> great !
wachsmut=> what's the difference between a class and an object ?
David=> a class can be made up of many objects
wachsmut=> like when building a house .....

[aisha] joins at Sun Jun 01 20:09:12 1997 from

wachsmut=> sorry ...
Don=> the class is the idea and the object is the workins of that idea
Rob=> an object is an instance of a class
wachsmut=> yes, that's a good way of phrasing it, Don.
wachsmut=> Class is an abstract description,
wachsmut=> an object is a 'real' existing entity, modeled after the
wachsmut=> blueprint of a class.
wachsmut=> Often, the distinction is blured ....
wachsmut=> couple more: how do you instantiate an object ?
Don=> by making it a field in another object
wachsmut=> (hi aisha)
aisha=> hi
wachsmut=> yes, and by using what special keyword ?
Don=> new
wachsmut=> thanks !
wachsmut=> three more: what's a constructor ?
Don=> a method that gets done automatically
wachsmut=> exactly when ?
Don=> when the object is instatiated
wachsmut=> yes ... right on the money, as usual !
wachsmut=> What's the name of a constructor .... ?
Don=> the same as the class
wachsmut=> yes .... last one (maybe somebody else ?)
wachsmut=> How many constructors does the String class have ?
wachsmut=> well ?
wachsmut=> they are in the notes, named: String(???) - how many ?
Rob=> two
David=> 3
wachsmut=> well, both are right....
Rob=> do i hear four?
wachsmut=> I mentioned two in the notes, but there actually are more...
Don=> 16
wachsmut=> ha ha ... too many !
wachsmut=> more on that stuff a little later ....
wachsmut=> Now, do you have any questions ?
wachsmut=> other than: who's winning, bulls or what's their name ?
Rob=> Maybe, just a bureaucratic one...
wachsmut=> go ahead ...
aisha=> is anyone there? i am not getting any dialog on my screen.
Rob=> The assignments in the latter two lecture two notes... on classes, etc.
Rob=> and strings..
wachsmut=> yes ?
Rob=> Are those due today... that is, are we "up to" this material.
wachsmut=> ah ... great question.
wachsmut=> Alright, here's the deal:
wachsmut=> the 'assignments' *should* be completed to stay
wachsmut=> current with the 'flow' of the lecture
wachsmut=> and not to run out of time at the end of class.
wachsmut=> But, what I will grade at the end is
wachsmut=> the four portfolio pieces, the two non-programming
wachsmut=> pieces (to be explained Wed), and - for three credits -
wachsmut=> the 'larger' project at the end.
wachsmut=> BUT - if you don't do the assignments pretty close
wachsmut=> to when they are assigned, you won't have
wachsmut=> much of a chance to have a decent
wachsmut=> portfolio ......
Rob=> ok...
wachsmut=> in my opinion.

[aisha] leaves at Sun Jun 01 20:18:51 1997

wachsmut=> On Wed, we also will
wachsmut=> discuss how you think the class is going right now
wachsmut=> and whether we should continue this way.
wachsmut=> Any changes (more chat, less chat, more assignments,
wachsmut=> less assignments, actual grading of assignments etc) is
wachsmut=> possible, anything goes.
wachsmut=> Oh, I forgot ....
wachsmut=> every assignment you do put on Sciris,
wachsmut=> I will 'correct' if you want me to.

[aisha] joins at Sun Jun 01 20:20:09 1997 from

wachsmut=> I look at your homepages (all have one by now)
wachsmut=> and I check the links. If I see an assignment, I'll take a look
wachsmut=> at it, check it out, and I'll send comments ....
wachsmut=> starting tonight / tomorrow.
wachsmut=> If there are no assignments, well, good for me, and
wachsmut=> you have to do the 4 pieces anyway ....
wachsmut=> so ....
wachsmut=> What else ?
wachsmut=> Nothing ?
Don=> pretty clear so far
wachsmut=> Great .... let's get more difficult, then ....
wachsmut=> Here's some new stuff:
David=> is this the last chat before Wensday?
wachsmut=> the class String has two constructors, i.e.
wachsmut=> two methods with the same name. That is actually something
wachsmut=> very common, and it is called "overloading".
wachsmut=> Overlaoding means to have *one* method name, but define it
wachsmut=> more than once, with a *different* set of input parameters.
wachsmut=> Every method, constructor or otherwise, can be overloaded.
wachsmut=> As an example, recall the 'Rectaqngle' class:
wachsmut=> class Rectangle
wachsmut=> {
wachsmut=> Rectangle() // constructor
wachsmut=> void setDimenions(double _width, double _height);
wachsmut=> void computeArea();
wachsmut=> void computePerimeter();
wachsmut=> void display();
wachsmut=> }
wachsmut=> what would be a good second constructor to add to this class ?
wachsmut=> In other words, if you need a Rectangle, what do you really
wachsmut=> need to specify, often ?
wachsmut=> Well, you either create a rectangle of kind of undetermined
wachsmut=> dimenions, or you already know the width and height of the
wachsmut=> rectangle you need, and you therefore create that right away.
wachsmut=> What I mean is to add a second constructor to the
wachsmut=> Rectangle class that takes as input ?
wachsmut=> Well ? Anyone ?
wachsmut=> Hmmmm .... is this too tricky ?
wachsmut=> Is anyone still listening (please, all say 'aye')
Rob=> Still here.
Don=> aye
Jenn=> yes
wachsmut=> thanks ..
David=> input parms
wachsmut=> okay, let me ask again.
aisha=> i'm here(finally)
wachsmut=> If you were to ask me to give you a Rectangle, what
wachsmut=> exactly would you tell me ?
Don=> wht is the height and width
wachsmut=> Say I am a carpenter, speciallizing in creating REctangles.
wachsmut=> Yes, thanks.
wachsmut=> So, we add a constructor like this to the Rectangle class:
wachsmut=> Rectangle(double _width, double _height)
wachsmut=> {
wachsmut=> name = "Rectangle";
wachsmut=> width = _width;
wachsmut=> height = _height;
wachsmut=> }
wachsmut=> Then I can say, in the 'ShapeTest' class:
wachsmut=> either:
wachsmut=> Rectangle r = new Rectangle();
wachsmut=> or
wachsmut=> Rectangle r = new Rectangle(2, 4);
wachsmut=> The Java compiler will look at the input parameters,
wachsmut=> and automatically pick the correct constructor.
wachsmut=> Pretty cool !
wachsmut=> So, as your first 'next' assignment:
wachsmut=> Enhance the Rectangle *and Circle* class with an additional
wachsmut=> constructor each. Also, change the 'ShapeTest' class accordingly.
wachsmut=> And, make sure that none of the old functionality of the class
wachsmut=> disappears, i.e. do not take away the old constructors.
wachsmut=> Do you know what I mean ?

[aisha] leaves at Sun Jun 01 20:32:20 1997

Don=> so you can either enter them
Don=> or ask for them

[aisha] joins at Sun Jun 01 20:32:35 1997 from

wachsmut=> eactly !
wachsmut=> Exactly !
wachsmut=> Remember, the goal is to make a class as flexible as possible.
wachsmut=> Maybe you need a Rectangle, but don't know the dimenions:
wachsmut=> use Rectangle r = new Rectangle()
wachsmut=> then, when you know the dimensions later, use:
wachsmut=> r.setDimenions(2, 3);
wachsmut=> Or, if you know the dimenions right away, use:
wachsmut=> Rectangle r = new Rectangle(2, 3);
wachsmut=> our class accomodates both users !
wachsmut=> *Every* method can get overloaded !
wachsmut=> In fact, you already know at least two such methods that
wachsmut=> are overloaded:
wachsmut=> Strings() - because I listed two constructors !
wachsmut=> And
wachsmut=> System.out.println()
wachsmut=> because that works for integers, double, strings, anything .... so
wachsmut=> it's overloaded a lot, and *very* convenient for us to use !
wachsmut=> Instead of saying : String.out.printlnInteger(10); and
wachsmut=> String.out.printlnDouble(2.0);
wachsmut=> we simply say: System.out.println(whatever) and let the compiler
wachsmut=> pick the right method for us !
wachsmut=> Now better ?
wachsmut=> I maan: can you do it now, for the Rectangle and the Circle class ?
Don=> does that mean it will check to see if there
Don=> ARE values , and if not do the getvalue section?
wachsmut=> well, I am not sure what you mean with 'getvalue' section, but
wachsmut=> take a look at another example, quickly.
wachsmut=> Say I have a class that contains a 'String' field, an integer field,
wachsmut=> and a double field.
Don=> the part that we must add to get the values if not supplied by the program
wachsmut=> I also need a method 'doubleIt' for each field, that simply doubles the
wachsmut=> corresponding field. I could do this:
wachsmut=> void doubleItString(String newString)
wachsmut=> void doubleItInteger(integer x)
wachsmut=> void doubleItDouble(double z)
wachsmut=> and the corresponding fields would become twice the input.
wachsmut=> That means to the user of the class, they will have to
wachsmut=> remember those three names ... inconvenient.
wachsmut=> Instead, I declare one method three times :
wachsmut=> doubleIt(String s);
wachsmut=> doubleIt(integer x)
wachsmut=> doubleIt(double z)
wachsmut=> and then, the user simply says: 'doubleIt(10)', and the compile
wachsmut=> will pick the method for integers, or 'doubleIt("Bert")', and
wachsmut=> the compiler will pick the method for Strings .....
wachsmut=> That's good for the user of the class !
wachsmut=> As the designer, I still need to write three seperate methods, they
wachsmut=> simply have all the same method name, but different input
wachsmut=> parameters.
wachsmut=> long answer .... hope it helps.
wachsmut=> Oh, and no input parameter is also possible, and different from
wachsmut=> one integer parameter, or two double ones, and so on.
wachsmut=> Overloading is one of the 'staples' of OOP (object oriented programming)
wachsmut=> All with me ?
wachsmut=> (you can say 'no' if you like !)
wachsmut=> or yes ...
wachsmut=> or 'well, maybe, but ...'
Rob=> yes...
Jenn=> i think so....
David=> I will be
Don=> kind of shaky but will have to look at he print after we're done again
wachsmut=> Good. But, I hope you can see the 'good' of this concept,
Rob=> We don't really discuss overloading in the BMIS C/C++ course, but
wachsmut=> even if it might look surprising initially !
Rob=> for those of you who took either one of those courses, it's in the text
Rob=> and it's the same idea.
wachsmut=> And, in this lecture, as of tonight !
wachsmut=> I'll post extensive notes after the chat session.
wachsmut=> One more - perhaps even more puzzling thing:
wachsmut=> If you look at the Rectangle and the Circle class together,
wachsmut=> you - as good programmers - should be annoyed by something:
wachsmut=> repetition !
wachsmut=> No good programmer likes to 'write things twice',
wachsmut=> they rather do some kind of construction that
wachsmut=> executes twice, or something, but without typing it twice.
wachsmut=> In fact, *any* time you use 'cut-and-paste' when writing a program,
wachsmut=> there should be a better way to do it !
wachsmut=> So:
wachsmut=> is there a better way to do it with our Rectangle and Circle class ?
wachsmut=> Yes - and it's called 'inheritance' !
wachsmut=> Both Rectangle and Circle have in common that they both
wachsmut=> define a 'name', an 'area', and a 'perimeter' field, and they both have
wachsmut=> exactly the same 'display' method !
wachsmut=> That's a waste of typing, and should be avoided,
wachsmut=> and I will tell you how ....
wachsmut=> in the posted lecture !
wachsmut=> (after all, it's getting close to the end).
wachsmut=> Again, there will be a bunch of assignments in the lecture
wachsmut=> notes. PLEASE (!) do them before we meet on Wed !!!!!!!
wachsmut=> which leads me to my concluding remarks:
wachsmut=> We'll meet for real on Wed, 5:30, Fahy Hall 252. Please think
wachsmut=> about they way this course is working out:
wachsmut=> can we go on like this for another four weeks, or should
wachsmut=> we change anything ?
wachsmut=> Let me know what you think, and I'll ajust....
wachsmut=> in case you were wondering what I was planning:
wachsmut=> week 1: Intro to OOP (over on Wed.)
wachsmut=> week 2: applets, layout managers, awt, gui, graphics
wachsmut=> awt = abstract windows toolkit,
wachsmut=> gui = graphical user interface (buttons and such)
wachsmut=> week 3: thread of execution, exception handling
wachsmut=> week 4: network programming, client/server programming, etc
wachsmut=> week 5: SQL databases, if there's time for it.
wachsmut=> Class over: June 30th (we can keep on going longer,
wachsmut=> if that's what the 'group' wants to do).
wachsmut=> Alright .... I am gettin cramps ... anyone wants to add anything ?
wachsmut=> hmmm ....
wachsmut=> pretty quite bunch out there .....
wachsmut=> I wish I could see what you're really doing -:)
Rob=> I have a hunch that people haven't quite digested the material so far,
wachsmut=> we shall try 'video conferencing' next week !
Rob=> as of yet.
Don=> that's true
wachsmut=> oh, I see ....
Don=> i'm sure there will be questions
Don=> after I sit down and re-read this chat
wachsmut=> I see ... too much, too fast ?
Don=> no, it just is hard to take it all in woithout any real exapmles to sit next to
wachsmut=> yes ....
wachsmut=> but I looked at last time's chat, and I did not see
Don=> comparing your notes to the examples is the way i find it easy to learn
wachsmut=> that everybody was able to complete the examples, so
wachsmut=> I thought this time we'll do without 'real time' examples using
wachsmut=> telnet.....
wachsmut=> Alright .....
wachsmut=> It's just about time to quit, I guess .....
wachsmut=> David, Jenn, Aisha, are you sort of coming along ?
David=> yes, but I need to invest more time..
Jenn=> yeah... i just need to look at examples to help me understand whats going on
aisha=> sort of. i have a lot of catching up to do.
wachsmut=> Alright, then. Why don't we call it quits, for now, then.
wachsmut=> I will post the lecture notes (and a lot of it) in about one hour from now

[aisha] leaves at Sun Jun 01 20:58:46 1997

wachsmut=> i.e. at about 10pm (there's just a few more things to fix).

[aisha] joins at Sun Jun 01 20:58:52 1997 from

wachsmut=> It will cover, in details, overloading, inheritance, and our last new
wachsmut=> concept called 'polymorphism' (which we will not need much, so
wachsmut=> you can kind of skip it for now).
wachsmut=> I'll be handing around for another couple of minutes, but 'class'
wachsmut=> is officially over, then.
Don=> Rob and Dr w.
wachsmut=> Thanks for 'coming', hope it was - a little bit - worthwhile,
wachsmut=> and I see you and Wed !
wachsmut=> Yes?
Don=> seeing as how you helped me with my post about running
Don=> from home, just wanted to let you know how i fixed it.
Rob=> ok
wachsmut=> yes ?
Don=> I had the programs in a different dir form the jdk and that was
Don=> givibg me problems
Rob=> hmmm...
wachsmut=> hmmm ...
Don=> i moved the .java files to the same dir as the jdc and it workrd fine
Don=> thanks for your help>
Rob=> You don't mean that you put the pfe in the same dir as java
Rob=> Oh, i see, you put your progam files in the same dir as the jdk files...
wachsmut=> Actually, everything is supposed to work regardless of where your
Rob=> I don't see why you need to.
Rob=> right
wachsmut=> programs, or the JDK, or the PFE is .... but
Don=> yes thathats what i thought
wachsmut=> if that fixed your problem, than that's okay, whatever works, works.
Don=> i typed java c:\javapr\ and i had problems
wachsmut=> AHA !
Don=> but when i moved into c:\java\bin it worked fine
wachsmut=> Yes, you are right !
wachsmut=> First, switch to the directory where the class files are...
wachsmut=> then 'java filename'.
wachsmut=> You can't execute classes in different directories from the current one,
wachsmut=> unless
wachsmut=> these directory are known to the JDK.
Don=> OK
wachsmut=> Known directories to the JDK are:
wachsmut=> - the directory of the binaries
wachsmut=> - the current one
wachsmut=> - all those mentioned in a env. variable 'CLASSPATH'...
wachsmut=> we can go into details on a discussion post, if you want.....
Don=> ok thanks
Don=> bye

[Don] leaves at Sun Jun 01 21:05:16 1997

wachsmut=> It's 9:05, you are free to rejoin the bulls game !
wachsmut=> if you like,
wachsmut=> or to ask me more questions !
David=> Bye
wachsmut=> byew
Jenn=> good night

[Jenn] leaves at Sun Jun 01 21:05:50 1997

Rob=> bye... see you wednesday.

[Rob] leaves at Sun Jun 01 21:06:02 1997

[David] leaves at Sun Jun 01 21:06:06 1997

wachsmut=> perhaps not .....
wachsmut=> Alright, I got to leave .....

[wachsmut] leaves at Sun Jun 01 21:06:58 1997

[Don] joins at Sun Jun 01 21:07:32 1997 from

[Don] leaves at Sun Jun 01 21:07:41 1997

[aisha] leaves at Sun Jun 01 21:07:48 1997