SIR Computer Science Investigation Abstract
EXPLORING SOFTWARE DEVELOPMENT THROUGH THE PROGRAMMING OF JAVA APPLICATIONS
Presenter:
Puskar Naha, Illinois Mathematics and Science Academy, 1500 W. Sullivan Road, Aurora, IL 60506
Advisor:
Dr. Robert Flemming, Illinois Mathematics and Science Academy, 1500 W. Sullivan Road, Aurora, IL 60506
Abstract:
After exploring software development by programming a calculator, brick bounce game, and network chatting program, it became obvious that design patterns and the theories behind them are essential to designing efficient and expandable programs. Design patterns are various patterns that appear among objects in object-oriented programming languages like Java. The programming ideal of low-coupling (few dependencies) between objects and high-cohesion (closely related tasks) within objects is an important part of software development as well. Refactoring (redesigning) programs with design patterns can make code simpler. For example, the brick bounce game had one object that handled all objects. The facade pattern allowed for the separation and simplification of code segments, which facilitated better collision detection. The theories behind design patterns that were invaluable are encapsulating variation (data hiding) and making objects responsible for themselves. Encapsulating variation made it possible for a console-based calculator and a graphical user interface-based calculator to share one engine. Data hiding made the network chatting program easier to modify, by allowing it to send any object rather than just objects with text. Design concepts also made it easier to use multithreading (doing multiple tasks concurrently). The brick bounce game became easier to expand by making objects responsible for displaying themselves instead of modifying a display object for each additional object. Making programs with design patterns in mind results in clear-coded programs that are easy to expand.