Reference no: EM132304221
Specifications
Your task is to complete various exercises in BlueJ, using the Java language.
Marking criteria includes:
• Use of correct coding style, including the use of comments;
• Accuracy of coding;
• Use of suitable coding structures;
• Correct submission and naming conventions of assessment items as required.
Part I:
Set up your assignment
To set up your assignment you will need to do the following:
• Create a folder called username-A2. For example, mine would be ahendr10-A2.
• Copy the zuul-bad project in chapter 8 of the book projects to your username-A2 folder.
• Create a word document called username-A2-documentation. For example, mine would be ahendr10-A2- documentation. Add your full name and student id to the footer. You will lose marks if you do not do this. Save this word document to your username-A2 folder.
After you have set up your assignment open the zuul-bad project In BlueJ, create a new instance of the Game class, run the play method and familiarize yourself with the game.
You should also:
• Review the code style guide in topic 7 as this is the style you will be required to use in your assignment.
• Download chapter 6 of the text book from topic 7 on mySCU as you will need this for the assignment.
NOTE: When you submit your assignment, you will need to zip up your username-A2 folder and upload onto mySCU
Design your game
Using the given zuul game as a starting point, you must design your own game.
Some possible game scenarios are described in Exercise 6.3 of the text. If you find it difficult to visualize this sort of game scenario, try modelling your game on some familiar real-world location. If you need additional inspiration, you can try playing the original Colossal Cave Adventure game.
You must have the following in your game:
• Your game scenario must have at least six (6) different rooms.
• Your game scenario must have at least six (6) types of exits - north, south, east, west, up, down and any other you require. This requirement does NOT mean that each room must have 6 exits.
• Your game scenario must include at least four (4) items that the player could find, pick up and potentially use.
• Your game must have some way for the player to win. Most likely, this will be by achieving some goal such as finding a particular item, surviving for some specified number of moves... whatever makes sense for your game.
Written Exercise 1
Write a brief description of your game in your word document. You must:
• Describe your game including the back story and the setting
• List the items in the game
• Explain how the player wins
Written Exercise 2
Draw a map for your game scenario. You must:
• Label the rooms
• Label the exits (connections between rooms)
• Specify the locations of the items
The map can be hand-drawn. You do not need to use a drawing program but your map must be clearly readable. This map must also be placed in the Word doc.
Part 2:
Written Exercise 3
Your game has 6 exits however the zuul-bad game only has 4 exits. Your will also have more rooms than zuul-bad and they will have different names. Copy the following template into your word document and replace the text for each of the methods. You must identify and describe the changes you would need to make to the zuul-bad project to convert it into your game. You need to consider the additional exits and rooms you have in your game. DO NOT WRITE THE CODE...YOU WILL NOT GET ANY MARKS you must identify and describe the changes. I have completed the Room class, so you can see what is required.
Part 3:
Written Exercise 4
The printWelcome method and the goRoom methods contain code duplication and both print a description of the current room and a list of the exits. This is not a good design. Explain why.
Programming exercise 1
Correct the problem of repeated functionality in the printWelcome and goRoom methods by refactoring the repeated functionality out of these methods into a method of its own called getRoomExitsAndDescription. Then call this new method in each place the description and exits need to be displayed.
Written Exercise 5
In the previous exercise you created the getRoomExitsAndDescription method that prints a description of the current room and a list of the exits. This code is contained in the Game class. This is not a good design. Explain why.
Programming exercise 2
• Refactor the code that generates the list of the exits into a method named getExitString in the Room class. This method should return a String listing the exits from the room. For example, if the room has exits to the north and west, this method should return a String containing: "north west".
• Add a method called getLongDescription to the Room class that returns a String containing the description of the current room and a list of the exits of a room (hint: call the getExitString method you just created
• Now that each Room has a method that can print information about a Room refactor the code in the Game class to take advantage of this functionality. i.e. anywhere the Game class uses the getRoomExitsAndDescription method, change it to use your getLongDescription method.
Written Exercise 6
Now that we have made some changes to our code create a template similar to the template I provided for written exercise 3 for the Game and Room class (note that it will be different as you now have new methods and have refactored code into different classes).
Then identify and describe the changes you would need to make to the zuul-bad project to convert it into your game, just like you did in written exercise 3. You need to consider the additional exits and rooms you have in your game. DO NOT WRITE THE CODE...YOU WILL NOT GET ANY MARKS you must identify and describe the changes.
Written Exercise 7
Answer the following question. Has the design improved? You must explain why or why not.
Programming exercise 3
• Update the comments at the beginning of the Game class, the Room class and the message displayed by the printWelcome method so that they describe your game.
• Update the Game and Room class so that it creates the rooms and exits that you invented for your game. You do not need to add any items to your game yet. You will add items later.
Part 4
Programming exercise 4
Even with the improvements we have made to our code there are a lot of places that need to be changed to add a new exit. It would be better if it were possible for an exit to have any arbitrary name and that when given the name of an exit we could find the associated Room that lies beyond. This should sound like a good job for a HashMap where the name of an exit is the key and the Room lying beyond the exit is the value. Improve the design of the Room class by refactoring it so that it uses a HashMap to store the exits instead of an individual field for each exit.
Play the game to check that it still works.
Part 5
Programming exercise 5
Your game scenario requires that there be items positioned throughout the world that the player can pick up and possibly use. An item sounds like something that should be represented by an object! So create an Item class to represent the items in your game. You will need to decide what fields your Item class needs to have, what parameters the constructor will require and what methods the class will have. At a minimum, items will have a name and a description. However, items may have any other attributes that make sense for your game (e.g. weight, colour, value, destructive power ..)
Programming exercise 6
Now that there is a class for representing Items we need a way to allow the rooms to contain an item. Modify the Room class so that one item can be added to or removed from the room. You will need to think about what fields and methods to add to the Room class. Also think about what the methods that you add should do when an attempt is made to add an item to a room that already contains an item, or an attempt is made to remove an item from a room that does not contain an item.
Programming exercise 7
Now that a room can contain an item, when the player enters a room he/she should be told about the item in that room (if there is one). Modify the appropriate code so that if the player enters a room containing an item, the name and description of the item are displayed along with the description of the room and the list of exits.
Programming exercise 8
Edit the code in the Game class so that the items for your game are created and added to the appropriate rooms at the start of the game. Recall that your game must include at least four items. Be sure to test any methods that you add or modify.
Play the game to ensure that your items are appearing in the rooms.
Part 6
Now that rooms can contain items and a player will know when they enter a room with an item, it would be nice if the player could pick up and carry items. Add functionality to the Player class that will allow the player to pick up and drop items. The player should be able to carry any number (i.e. a collection) of items.
Programming exercise 9
Modify the Game class so that it will recognize the command take. When the user enters the "take" command, the item in the current room, if there is one, should be added to the items that the player is carrying and a message should be printed indicating that the player has taken the item. If there is no item in the current room the take command should print an error message. Be sure to test any methods that you add or modify. (Hint: Remember that one task of the Game constructor is to "teach" the CommandReader what words are valid commands. Thus, you will need to make a change in Game's constructor if you want to introduce a new command.)
Play the game to be sure the take command works!
Programming exercise 10
Modify the Game class so that it will recognize the command inventory. When the user types "inventory" the game prints the names of the items that the player is currently
carrying. You should think carefully about where the list of item names should be generated. (Consider the fact that the player is carrying the items and think about how the list of exits for a room is generated and displayed.)
Play the game to be sure the inventory command works!
Programming exercise 11
Add support to the game for a drop command so that the player can drop an item by name (e.g. "drop book"). The dropped item should appear in the current room. If the current room already contains an item, the drop command should print an error message indicating that the room is full and the player should continue to carry the item.
Play the game to be sure the drop command works!
Programming exercise 12
Notice that when you use the help command take, inventory and drop do not appear as command words. Modify the printHelp method of the Game class so that it automatically displays any new command words that are added to the game. Do not hard code the words in the printHelp method. Hint: you should modify the CommandWords class to do this.
Play the game to be sure the modified help command works - celebrate!
Data Communications and Networks
Assignment - Network Design for a Modern Software development company
Background:
Advanced Medicos Limited (AML) is a digital health company, which sells healthcare products. Their main product is system (hardware) which provides a variety of health services. AML now intends to provide the health services through the web in addition to the system they sell so customers do not necessarily have to buy the system. In view of this, AML needs to upgrade their network. The company needs your expertise to upgrade their existing network. Their current network is old and will need to be replaced. The managing director has asked for a "software development company of the future, using the latest technologies with a network which can accommodate the load now and for another five years and leaves room for further expansion".
Current
AML's headquarter (HQ) is located in two adjacent three-story buildings (Buildings A and B). The distance between the buildings is 20m. AML has currently 200 employees. The organization has four departments:
Software Development and Marketing are in Building A with the other two departments are in Building B. The network is a simple switched network with no wireless support. All the workstations, printers and other devices are connected through the wired network. There is no support for Bring Your Own Device (BYOD). The server farm in located in Building B. Currently, there is no direct connection between the two buildings and the two buildings access each other's networks through a web portal. The edge router (router that is connected to the internet and provides internet access to the organization) is located in Building A.
Future
The future aspiration is to change the culture of the workplace. The employees and management particularly want to enable working from home for the software development team. In this regard, it is expected that all software developers (65) will be issued with Laptops/MacBook Pro which they can take home. AML will also need to increase their resources to support the new online services. The production process will also be updated. The production team will need 60 new computers to control the 3D printers. The administration department will be adding 8 more workstation and 2 printers to handle the extra workload. AML also wants to be more open and allow BYOD but it does not want to compromise on security.
AML also needs to connect with a WAN at a branch office which has just been opened in another city. The new branch has only two departments: software development (25 hosts) and marketing (6 hosts). This branch is located approximately 100 km from the HQ of the company. They need to be linked to the existing software development company's HQ network.
Important objectives of the Future Network:
The main objectives for the proposed solution are:
• A modern network for the company
• More accessibility without compromising on security
• Support for online services
• To ensure that these company has videoconferencing between the main office and their branch.
The network is proposed to achieve the above objectives considering the company's following business and technical goals.
Business goals:
• Improved communications, wireless, videoconferencing, etc.
• Spare no expense,
• Protect company information,
• The company of the future will have over 400 employees,
• Be excellent in technology.
Technical goals:
• The current network, computer rooms are to be upgraded to a modern network (campus design) to meet developers and employee's needs,
• Scalability - remember they want to expand for next five years,
• Availability - Wireless network access is available in all employees as well as some outdoor areas for software developers and employees,
• Employees have access to company resources from both company and home (different servers),
• Performance - network performance must be high,
• Reliability - no single point of failure,
• Security - protection of company information and other IT assets,
Part 2
For PART 2 report, you are required to design a recommended network for AML's HQ (main branch) LAN based on the findings of PART 1 on the following:
• Analyse user network requirements
• Describe and analyse the current network
What you need to do
You are required to design the network you would recommend. Remember the goal of building a new network is that it will support the company needs for the next five years. Your recommendations are to be submitted as a formal report containing your analysis of the present situation (i.e., PART 1), and your recommended network solution. You are free to make any further assumptions you wish.
In PART 2 of your report, you are required to:
i. Suggest a type of network architecture that is suitable for the organisation. You will need to identify all the media (circuits), network hardware necessary to build the network(s) you are proposing and to justify your choice, i.e., you will need to explain the function of the hardware and network choice in your solution and to justify your choice by value for money, Quality of Service (QoS), security, etc.
ii. Explain IP address plan for the proposed network
iii. Explain logical network design with diagram(s) for the proposed network.
iv. Draw physical network(s) diagram that shows how you connect the hardware you have chosen in (i).
The company was assigned the following IP address range to use for their networks:
IP: 172.16.1XY.0/23
XY is the last 2 digits of your student ID.
You are expected to provide an optimum address allocation solution with the following details:
• IP address requirement for each sub-network
• IP address allocation plan for each network/sub-network including network address, subnet mask, broadcast address, default gateway address and valid host address range.
• IP address allocation plan for key network device and interfaces e.g., servers, printers, router interfaces, etc.
As part of your report, you are required to write an executive summary explaining why your design meets the business and technical goals. Presentation and referencing are important.
Remember that it is a company, and access to the internet will need to be controlled and some sites blocked. Your report must include explanations justifying the design decisions you have made. To help with these assumptions the following information is available:
IT Platform: Windows Server 2019 Switches/routers (Cisco/Huawei)
As the HQ needs to connected to the branch office, you will need to show how the HQ is connected to the branch office. Your textbook has this information shown as Best Practice Design for LAN (campus).
There are two ways of presenting a network, the logical view and the physical view. Please read the CCNA chapter 3 in Resources which describes these two viewpoints. You will need to make both a logical and a physical diagram of the HQ networks.
Format and Presentation
You are recommended to present the assignment in a standard report format with the title page that details your name, student-id, unit, course and date/time information. There is no report template to be used in this assignment, so you can make your own template or refer to online resources. However, the report should be well presented with clear headings, titles, subtitles, etc.
Attachment:- Data Communications and Networks.rar