Following the principles seen in Chapter 2 of the book, design and write the code necessary to support
a camera drone.
1. Create a class to represent the moves of the drone. It can take-off, land, move forward some
distance, move backwards some distance, move up some distance, and move down some
distance. In addition, the drone can also focus on an object, and capture a picture if an object is in
focus. This picture can be saved as only one of JPG, PNG, RAW, or PDF, and the filename and
format is provided by the client. You may choose how to simulate picture capture and saving
behavior. Ensure the drone is in focus when it is about to capture a photo. 
To simulate the move being executed, you can print statements to the console. For e.g.,
Using the console is only to simulate actual behavior of the application that is out of scope of this
assignment (such as some functionality or for obtaining input that would normally require a
GUI). In general, printing to the console is not a means to interact with the client and should be
used internally for development only.
2. Create a remote control that allows someone to pre-program the sequence of moves the drone
should make. It should be possible for the client to edit the sequence of moves and then execute
the program. The sequence must begin with taking off, and end with landing. It should also be
possible for a client to access all the moves in the pre-programmed sequence. 
3. Create a separate RunDrone file to test the working of your pre-programmed drone. Configure
the moves using the remote control, and then execute it on the drone. Demonstrate that the
requirements in 1 and 2 are fulfilled. 
1. The submission include a zip file of your source code folder and a pdf file of a short description
(max. 200 words) of the design of your solution. For example, include the major design
decisions, what design techniques you used, and some of the trade-offs. The description should
also include at least one UML object diagram created with JetUML.
2. Submit your work on MyCourses -> Assignments -> Assignment1
Rules of Carrying Out Assignment
The focus of the assignment is to evaluate your application of design techniques while respecting
all the requirements in the problem statement. To this end, you are expected to come up with an
original design when the requirements don’t specify a particular design.
The goal of this assignment is to arrive at a solution having explored the design space and to
understand the trade-offs.
Remember that there’s no single optimal solution. However, you should be able to justify the
design choices you made during the assignment both by your code and your description file.
Try to think of different use cases for your code, and how your solution could accommodate
them. Writing your own client code can help identify design issues. For example, you can use
real world scenarios to approach the problem statements. However, you don’t need to implement
features other than those in the problem statement, and you are not expected to implement a
perfect solution for all real world scenarios.
The evaluation of your solution will focus on three aspects:
1. How well does the delivered code satisfy the requirements in the problem statement?
2. How well are the design concepts, principles, and techniques are applied and explained in the
description file (including the trade-offs of different options)?
3. How readable is the source code (through its style and documentation)?
本网站支持 Alipay WeChatPay PayPal等支付方式
E-mail: firstname.lastname@example.org 微信号:vipnxx