Chat Transript - June 1, 1997
[Don] joins at Sun Jun 01 19:52:59 1997 from 206.173.45.52
[David] joins at Sun Jun 01 19:56:54 1997 from 151.198.127.17
| David=> hello |
[wachsmut] joins at Sun Jun 01 19:57:28 1997 from 153.35.6.46
| 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 128.122.175.22
| 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 module..it 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=> | |
| 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 199.174.180.155
| 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 149.150.180.135
| 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 ? | |
| aisha=> | |
| Don=> a method that gets done automatically | |
| wachsmut=> exactly when ? | |
| aisha=> | |
| 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 149.150.180.135
| 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=> | |
| 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. | |
| aisha=> | |
| 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 149.150.180.135
| 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=> | |
| wachsmut=> | |
| 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=> | |
| 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 149.150.180.135
| 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=> | |
| 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\test1.java and i had problems | |
| wachsmut=> AHA ! | |
| Don=> but when i moved test.java 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=> |
[wachsmut] leaves at Sun Jun 01 21:06:58 1997
[Don] joins at Sun Jun 01 21:07:32 1997 from 206.173.45.52
[Don] leaves at Sun Jun 01 21:07:41 1997
[aisha] leaves at Sun Jun 01 21:07:48 1997