Exercise Wednesday

Goal: During this last week of new content, review all the concepts we've learned thus far, and begin practicing new ones by creating several larger, polished Java projects for your growing coding portfolio.

Today and tomorrow, you'll work on a two day project that allows you to explore all of the concepts you have covered over the past weeks. On day one, you'll spend the first half of the day completing work on Jadle before you plan your application in detail, complete with Trello board. On Thursday, you will build out your API as much as possible.

Additionally, don't forget to brainstorm potential group projects for next week!

Code


Jadle

Begin by working through the Jadle lessons from last night and implementing them in your own project.

Additionally, work through the Custom Exceptions lesson:

Defining and using custom Exceptions

Planning

For all of the projects below, begin by gathering as many unique user stories as you can. Add them to a Trello board. Critically evaluate your list as a pair - what can you combine? What isn't central to creating an MVP? What can you backburner? Add those stories to the Icebox.

Then, use those stories to steer your choices on how you want to structure your data model. Take your time in sketching out which properties you will need, and which functionality you'll want to provide.

Then, make sure you list out all of the methods you will need. Which belong in the DAO, which in the class for the object? Which arguments do your methods need?

How can you use Exceptions and Inheritance creatively in your work to best effect? Don't forget to consider these aspects in your planning. Also, can you use constants? What about time and date?

You won't be creating a frontend for these applications - just the backend.

Community Business Tracker

A local nonprofit for Portland has approached you and asked you to create an API. The nonprofit organizes tours of businesses who donate a portion of their proceeds to local charities, as well as businesses that actively employ people with disabilities, people in recovery, people who served in the military, transgendered people, and people with felony convictions who have been rehabilitated.

Users can look up restaurants, stores and other business that fit the description above and support their efforts with their purchases. Tours use your API to create routes through the city.

This is an interesting project if you are interested in locations and mapping.

Salesify

You've been recruited by a local business to create api that tracks their sales. Your fictional business may sell items of any variety you choose, but keep in mind that you will be required to define several different categories of items (ie: an outdoor store may eventually contain products of both HikingGear and SurfingGear nature; or a store that sells pet goods may eventually sell CatItems, DogItems and SmallAnimalItems, etc.) Users of the API will want to know at what time of day an item sold, its price, whether it was on sale, etc.

This API is a good choice for those wanting to calculate prices, percentages, discounts, and work with data types such as floats, as well as tracking time.

CodeSchoolConf

You've volunteered for a local conference that caters mostly to code schools. You've suggested to create an API that tracks conference Attendees based on various metrics such as age range, salary before code school, interests, gender, etc. Your api will also serve data on Events that take place and Sponsors (name, representative, logo url?) who are helping support the conference financially.

This is an interesting API for those of you who want to model complex data that may contain arrays, subtypes, and more, as you'll be required to model different data types. You can make this as simple or complex.

Peer Code Review


  • At least two exceptions can be thrown and caught.
  • Routes are RESTful.
  • Constants are used in at least one class.
  • Application works as expected.
  • Databases are set up appropriately, and the application can successfully retrieve/save data into them.
  • Previous standards are met.