• Represent the design of a program by using natural language or creating diagrams that indicate the classes in the program and the data and procedural abstractions found in each class by including all attributes and behaviors

Assignment


This first section touches on a lot of big ideas that will become clearer as you gain programming experience. Make sure you read this one all the way through. For a quick summary, here’s what it covers.

  1. Object-oriented design. A design philosophy where the focus is on building classes that best serve the program’s need. Java is an object-oriented language, so you’ve been doing this since the beginning. You’ll start building your own in this unit, so the shift will be to determining what should be a class.

  2. Abstraction. This is a broad topic and covers things like drawing diagrams to represent program design, and that programming languages allow you to skip having to know assembly code. If something cuts out the messy details, it’s an abstraction.

  3. Method decomposition. Taking an action and breaking it into smaller ones, and then writing methods for those instead. In the Magpie lab, you saw this with separate methods for receiving a statement, then searching for a particular phrase, and then transforming it. That technically could have been done in one big method, but the smaller ones make it easier to maintain and reuse in other situations.