Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007
Squeak Assassins Milestone 4 Case Study
Milestone 4 required us to extend our map to include all the buildings on campus, as well as support three levels of zoom (including the original level). There are approximately 190 or so buildings on campus, and so this milestone was obviously going to require a lot of data.
Approaching the problem
Given the vast amount of data we would need to include, on several occasions our group discussed not including all of the buildings! There was a 15% penalty for not including every building, which meant that'd you earn the same grade if you only had one building as you would if you were only missing one! In the end, we did include all the buildings, but this meant that we had to parse the data on the campus map, which was a significant amount of work. We used their campus map as a large image in our project, and took the data from their HTML page to determine the coordinates of all the buildings.
How'd it work?
In a nutshell, GTCampusMap – a subclass of CampusMap – retrieved data from GTCampusData, which held a bunch of buildings and the forms containing images of the entire map. Control would be handed over to CampusMap, which would open a window and draw the images to screen. MapClickLayer would handle any clicking the user might do on the map, and handle it appropriately. InfoWindow, when called, would either create a new window or replace data in the old window, as appropriate.
How'd the design hold up?
This milestone was obviously the first test of how well our design from milestone 3 would hold up. However, there were some changes in the end, but overall, the design held up fairly well.
- After the whole fiasco where we lost points for separating the view and the control, BuildingView and RoadView were eliminated.
- The need for MapClickLayer was entirely unanticipated, but this is really more of an implementation issue than a design issue. This might not be necessary in other programming languages.
- CampusMap did not have a relation to Road in our previous design, but we added one in this milestone. Here, as well as in all our later milestones, GTCampusData acts as a container/initializer of data. GTCampusMap retrieves that data, and then sets various variables in its parent class, CampusMap.
- The classes were more fleshed out in this version. More methods and variables had to be added here and there. But again, some of these new additions may not have been necessary in other program languages. We tried to keep our design for Milestone 3 completely independent of programming language.
- Road, ImaginaryCampusMap, ImaginaryCampusMap, Tour, and TourStop were not required for the completion of this milestone.
The program in action:
UML for Milestone 4:
Other notes and random things:
- Data mining is not fun at all.
- Squeak only supports 256 literals in a function. This is rather annoying... I hope somebody fixes this.
- Burriots are good.
Links to this Page