View this PageEdit this PageAttachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide
Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007

Thomas Keaten

Class-Based Inheritance (1 point)
What is a class? What is an instance? How do the two relate? In Smalltalk, what is the difference between class variables and instance variables? In Smalltalk, what is the difference between class and instance methods.
A class is something which is created when there will be no objects of the code it holds. An instance is quite the opposite, and used when objects are to be created. Class variables are only available to the class they are created in, while instance variables are unique to each object of that instance. The main differences between class and instance methods are as follows. In Squeak, the class methods have definitive class responsibilities. They are usually used to create instance methods, hold example code, or initialize a class. Instance methods do most of the work. This is because, as stated above, instance methods are the methods which allow for objects to be made of them.


Message Passing (1 point)
What is message passing and how does it fit into the way you program in Smalltalk? How does message passing work together with the class-based inheritance? What are some of the advantages and disadvantages of message passing?
Message passing is simply telling an object what operation it is going to perform on a given set of data. Message passing is the main way the object oriented style of Smalltalk works, allowing objects to perform calculation on other objects or themselves. Message passing allows for both the sub and super classes to understand the events taking place in the objects. An advantage of message passing are the versitility of the system, allowing objects to recieve messages even if they are not recognized. Another advantage is the simple design it allows for object referencing. A disadvantage is that, in other languages such as C or Java, passing various methods will cause fatal program errors.



CoWeb 2
Monticello

Monticello is easily one of the most important features Squeak has to offer. One thing is for certain when coding in a group, all the work in the world is useless if it takes you months to combine and share your efforts with the rest of your team! Not only is it invaluable to a team project, it is also relatively easy to use. Just follow the steps below and prepare to reap the benefits!

1) First thing's first. To use Monticello, you must have a repository ready. For example, Mindspring.com allows for 10MB ftp locations which are compatible with Monticello. Set up a repository, and the rest will be done in Squeak.

2) Simply open the world menu and select Open -> Moticello Browser

Uploaded Image: Open.jpg
Uploaded Image: OpenMont.jpg

3) With the browser open, click the +Package button and create the name of the package which will store your repository path and data. This name must be exactly what your package list is called.

Uploaded Image: PName.jpg

4) With your new package selected, click the +Repository button and (If mindspring or other ftp sources are being used) select ftp.

Uploaded Image: RepName.jpg

5) Now make sure the data that is pulled up matches the data for your repository.
Host: Enter the URL of your repository here.
Directory: The directory that will be used by Monticello.
User: The username of your repository.
Password: The password of your repository.

Uploaded Image: RepInfo.jpg

Now that the repository is set up inside Monticello, there are a few options of what to do with the feature.

1) Adding code to the repository can be done without opening the repository. Simply select the package you wish to add, the repository you are going to add to, and click the Save button. A window will ask for your notes on your submission.

Uploaded Image: Note.jpg

2) Along with adding, there is the all important step of accessing code from the repository. Simply select the wanted repository and click the Open button. This will bring up a list of files that have been submitted. By selecting any of the files, you can read the submission note for that submission.

Uploaded Image: NoteSel.jpg

This is where the real options come into place. With a file selected, you have the following options:

1) Diff: This button is used to compare the selected submission with the previous one by the same writer. It will generate the differences in code and show them in a window.

2) History: Shows a list of all submission before the selected one, and allows you to view their submission notes.

3) Merge: Merges your code with the selected code, allowing you to adopt changes as you want them.

4) Changes: Click this, and a window will pop up and display all the changes from your version to the selected version. Select one of the shown classes to get the code displayed in the adjecent window. Black text implies the code is in both your file and theirs. A blue strike signifies code that has been deleted in the selected file. Red code is code that is new to the selected file.

5) Load: This button will completely overwrite your current fileset with the selected version. Note, by completely, I mean... completely. Your version will become the same as the selected version, and all current work will be lost.

That's pretty much all for Monticello, I hope it is as helpful to you as it was to me. One more thing, I'm not sure if this is a Squeak issue, a Monticello issue, or perhaps an issue with Mindspring.com, but every so often trying to open the repository would cause an error and we would be unable to access it. If this happens, just come back to it at a later time. The error somehow manages to magically fix itself over time.

CoWeb 3
Collection Classes

A) An OrderedCollection is, as the name states, ordered by an index number at each node of the collection. It is also able to carry more than one of the same item. A set has no order, and can contain no duplicate entries.
B) While an Array is restricted by a fixed number of entries, an OrderedCollection is dynamic, and can grow or shrink with the number of elements it contains.
C) A Dictionary is used much like a hashmap, in that when it is created and indexed, each element in the Dictionary has a reference that is called, instead of the specific value. It is because of this that the Dictionary is fast, allowing for very precise, narrow searches by providing the pointer to the elements wanted.

History of OO

A) Ivan Sutherland: created one of the first true GUIs with Sketchpad in 1963, pioneering the idea that GUIs were for both aesthetic and technical purposes.
B) Kent Beck: credited with the creation of JUnit testing, played a key role in CRC cards, and created the coding style Extreme Programming.

Usability
Heuristic vs Cognitive

Heuristic evaluations follow a set of small evaluation steps, designed to point out certain key problem areas in overall design. The evaluations are done on a large scale, using usability principles on the program in general, performing various tasks to see where the principles are hindered. This method is very good for determining usability issues that may arrise with the program, but is hindered by its tight constraints.

Cognitive evaluations require a specific set of instructions, a means to and end in the program, and are walked through like a new user, taking note of any errors or confusion along the way. This is a good evaluation for developing teams, due to the fact that they can monitor all the ins and outs of the program while they execute their instructions the way they know they a user may. The down side is that the system must me more or less completed, and that the jobs to test must be known in advance.

All in all, I believe Cognitive to be too specific and constraining to be of a large amount of use. Of course it is very beneficial, but I believe Heuristic evaluations are more apt in most situations, especially in a school setting.

Link to this Page