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

Sum00 Final Exam Review: Tools for Space Scientists

Edit Sum00 Final Exam Review: Tools for Space Scientists here.

a. - Design Patern - MVC (Model View Control)

example classes for each aspect:

Model - Satellite

View - SatellitePicture, 2DSatellitePicture, 3DSatellitePicture

Control - SensorDataProcessor, SensorDataReceiver


UML:

Since I don't feel like doing this in BOOST, I'm just going to try to explain it...

The Satellite class collaborates with the SensorDataProcessor and the SensorDataReceiver classes. The data is received by the SensorDataReceiver, and then it's sent to the Satellite class. Once the Satellite class receives new data, it updates the SensorDataProcessor class, so that the SensorDataProcessor class can process the data, and then send the data along to anyone who cares. The SatellitePicture class collaborates with the SensorDataProcessor class to obtain any new processed data so that it can be displayed, in either a 2D or 3D picture.


b. - Benefits of OO:
Scallability - multiple satellites or satellite pictures.
Polymorphism - 2D and 3D picturess can share some common
functionality through SatellitePicture.
SensorData can be processed or received by other
devices than just satellites.
Easily Modifiable - we can easily add new devices to an OO
system. IE - a computer that gathers data
from several satellites and displays the
data in one graph.



MVC is not a design pattern, and Processor/Receivers are not controllers. Mark Guzdial


Hmmm.. I could have sworn Mr. Leblanc said that MVC was a type of design pattern... not that the design pattern was called by the name MVC, but that one of the patterns basically described what MVC was. As for Processor/Receivers not being controllers, I'm not surprised. I was reaching.. :)

I beg to differ with the answer posted to part B.

"Scalability": What the heck does OO have to do with multiple satellites or pictures? The sats are going to be beaming their data in, and as long as its formatted correctly a bloody textfile would do the job without the squeakVM overhead.
Someone wasn't reading along... Because when you have two satellites, you add a second text file, and then a third, and then... As opposed to "just another object". OO does lead to more scalability. SqueakVM overhead is pretty minimal, or did you skip those days in class? Mark Guzdial

"Polymorphism": Possibly useful for the graphing, yes. But for the raw data and processing?

SensorData: If you're outputting the data properly formatted, it doesn't matter where it's processed.
Have you ever done any data formatting? The same data can be processed in lots of ways – I regularly take ADC data and either graph or send them to a speaker or pipe them through a filter. Mark Guzdial

EasilyModifiable: Device drivers in squeak? God those are gonna be some slow devices...
Yup, you definitely skipped class at the end. Device drivers in Squeak or Java ARE possible for, yes, slow devices, and you gain portability. Tablets (for marking up data) are one good example of slow devices whose drivers can be written on top of the VM. Mark Guzdial

This is clearly a problem demanding a Fortran or C solution; Fortran and C both good number crunching languages, Fortran in particular; Fortran and C are both supported in most MPI-style packages meaning you can clusterize the computations; all areas where Squeak doesn't cut it.
Did you attend ANY of class? Does the word "primitive" mean anything to you? A way of combining number crunching with the flexibility of a VM? Mark Guzdial

The only thing to use squeak for in this instance would be to take the processed Data and put it graphs.
Warren Stramiello
stramiello@WhiteRabbit.resnet.gatech.edu

PS: And that's my rant for the day. :-)


And here's my rant... learn to underline in HTML without making links to pages unless you intend to put a link to a page.

The proposed answer never mentioned using Polymorphism for anything other than the graphing, and I never said that I'd add device drivers. Take a look at my answer and read it closer. It clearly states that you could add more devices. Do you see drivers mentioned anywhere in my answer?

That's not underlining. It's a use of a '*' character at the beginning and end of a word without the realization it links things :-)

I see 'easily add more devices to an OO system'. I presumed that you meant plugging in and controlling new devices in the system. The misinterpretation results from the fact that the context of device that I am used to using doesn't include adding in a whole new computer for processing.

Disagreement with the rest of the rant?
Just wonderin'.

~Warren Stramiello
PS: The Character is supposed to be an *
* shrug *



a. Observer because Data Visualization documents are dependent on Data Collection documents. A change to a Data Collection document requires a change to all Data Visualization documents dependent on it. Also (not sure about this), Data Collection documents and Data Visualization documents are both dependent on Data Planning documents.
Christine Navalta

a) Could you also use a Factory, that would decide which type of Document object to create?
Mike Maniscalco
a.) i was thinking the factory might be useful as well for creating the documents... and Adapter pattern for the way the visualization doc is implemented. The Data Planning Doc could use the Adapter pattern for instance by asking for particular implementations of the Data Collection Docs for sending to the Data Vis Docs to be drawn as graphs. I'm not so certain I'm 100% clear on the Adapter pattern but isn't that basically what it's for?
alX

MVC is an INSTANCE of an Observer patter, but the pattern's name is Observer. You'll have to be able to describe the pattern if I ask you about it on the final. Mark Guzdial


a)
The Observer pattern - it's intent is to define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically. We want graphs and processor to update whenever receiver gets new data. So I'd set up Subject-Observer pattern as follows:

Missing File (/cs2340/uploads/satUML.gif)

b)
Encapsulation of OOD/OOP provides

Kathy Gray

Nice, Kathy! Mark Guzdial




Link to this Page