Create a class that extends the lab-simulator abstract class

Assignment Help Computer Engineering
Reference no: EM131984736

Assignment

In this lab, you will create a rudimentary "job simulator". This will be a time-based simulator which means each "step" in the simulation will represent a single time unit. A job is modeled simply by a number of instructions to be processed. A provided Processor class is used to "process" jobs. A Processor has a speed field; this field determines how many instructions it can process in a single time unit. A Job Simulator will maintain a Job queue and will have a set of Processor objects to process Jobs.

There are two primary methods used by clients of the Simulator. The enqueueJob method allows a new Job to be added to the Simulator's Job queue. The other primary method is the step which simulates job processing.

When the step method is called, the Simulator must do the following tasks, in order.

1. For each Processor it has, dequeue a Job. Assign the first dequeued Job to the first Processor, and so-on.

2. For each dequeued Job, use the assigned Processor to process the Job. This means reducing the number of remaining Job instructions by the Processor speed.

3. Add all Jobs that have no more instructions to be processed to the list of finished Job, in order that they were dequeued.

4. Enqueue the other Jobs back into the Job queue, in the order that they were dequeued.

A client may call enqueueJob on a Simulator whenever it likes; assume that that call does not take up any time units. Your Simulator must maintain the proper state of remaining Job instructions, queued Jobs, and finished Jobs, knowing that a series of calls to enqueueJob and step can be made in any order and any number of times.

Part 1 - Implementation

1. Create a class that extends the lab.Simulator abstract class.

2. Create a factory class that implements the lab.SimulatorFactory interface and that constructs new instances of your Simulator implementation.

Part 2 - Testing

1. Enable assertions in your Java execution environment.

2. Create a tester class in this package:

lab.test

3. In the main method of your tester class, pass an instance of your SimulatorFactory class to one of the static test methods in lab.test.SimulatorTester.

PROVIDED CLASSES:

*Implement class*

public class Implementation extends Simulator

{

public Implementation(LinkedHashSet processors) {

super(processors);

// TODO Auto-generated constructor stub

}

@Override

public Deque getJobQueue() {

// TODO Auto-generated method stub

return null;

}

@Override

public LinkedHashSet getFinishedJobs() {

// TODO Auto-generated method stub

return null;

}

@Override

public void enqueueJob(Job newJob) {

// TODO Auto-generated method stub

}

@Override

public void step() {

// TODO Auto-generated method stub

}

}

*Factory Class*

public class Factory implements SimulatorFactory{

@Override

public Simulator createSimulator(LinkedHashSet processors) {

// TODO Auto-generated method stub

return null;

}

}

**Simulator Class**

import java.util.Deque;

import java.util.LinkedHashSet;

/**

* Provides methods that support modeling simulations of {@link Job}s

* being processed with {@link Processor} objects, in an round-robin

* fashion controlled with a queue implemented with a {@link Deque}.

*

*

*/

public abstract class Simulator {

/**

* The set of Processors that will process {@link Job}s.

*/

protected final LinkedHashSet<Processor> processors;

/**

* Initializes the set of Processors.

* @param processors the set of Processors.

*/

public Simulator(final LinkedHashSet<Processor> processors) {

this.processors = processors;

}

/**

* Returns the set of processors.

* @return the set of processors.

*/

public LinkedHashSet<Processor> getProcessors() {

return processors;

}

/**

* Returns the {@link Job} queue.

* @return the {@link Job} queue.

*/

public abstract Deque<Job> getJobQueue();

/**

* Returns the set of {@link Job}s that have been

* fully processed.

* @return the set of {@link Job}s that have been

* fully processed.

*/

public abstract LinkedHashSet<Job> getFinishedJobs();

/**

* Enqueues a {@link Job} to the job queue. The new job must

* have a {@link Job#getId()} equal to {@code getJobQueue.size() + 1}.

* If that condition is not met, then this method must throw a

* {@link RuntimeException}.

* @param newJob the Job to enqueue.

* @throws RuntimeException If the new job does not have the proper

* job number.

*/

public abstract void enqueueJob(Job newJob);

/**

* Simulates a processing step.<br>

* <ol>

* <li>Dequeues a Job per Processor.</li>

* <li>Assigns the dequeued Jobs to Processors in iterator order. In other

* words, the first dequeued Job gets assigned to the first Processor.</li>

* <li>Uses each assigned Process to process the assigned Job, updating

* the number of instructions remaining to be processed in the Job

* according to the Processor speed.</li>

* <li>Add finished Jobs to {@link #getFinishedJobs()}.</li>

* <li>Enqueues the unfinished Jobs to {@link #getJobQueue()} in the order

* that they were dequeued.</li>

* </ol>

*/

public abstract void step();

}

**Factory Simulator Class**

import java.util.LinkedHashSet;

/**

* A factory for constructing {@link Simulator} objects.

*

*

*/

public interface SimulatorFactory {

/**

* Constructs a new Simulator object.

* @param processors the set of processors the Simulator will be

* initialized with.

* @return a newly constructed Simulator object.

*/

Simulator createSimulator(LinkedHashSet<Processor> processors);

}

Reference no: EM131984736

Questions Cloud

What is present value of the investment : What is the present value of the investment at a discount rate of 8%?
Why does chekov subtitle this play a comedy in four acts : With all that in mind, why does Chekov subtitle this play A Comedy in Four Acts?
How much will you have at the end of ten years : In Year 1, you plan to deposit $3000. In year 2 and Year 3, you plan to deposit $4000 and in Year 4 and 5, you plan to deposit $5000.
Withdrawn at the end of investment period : How much money can be withdrawn at the end of an investment period if:
Create a class that extends the lab-simulator abstract class : Create a class that extends the lab.Simulator abstract class. Create a factory class that implements the lab.SimulatorFactory interface and that constructs.
Compute the balance in your margin account : You are short 23 gasoline futures contracts, established at an initial settle price of $2.365 per gallon, where each contract represents 42,000 gallons.
Company gain or on the sale of the old building : What was the amount of Company A’s gain or (loss) on the sale of the old building on January 1, 2015?
What is a reverse mortgage : Compare & Contrast the Fixed Rate Mortgage with the Adjustable Rate Mortgage?
Agreements between the us and latin america : Discuss international trade agreements between the U.S. and Latin America and among Latin American countries.

Reviews

Write a Review

Computer Engineering Questions & Answers

  The vulnerability of nuclear facilities to cyber attacks

The Vulnerability of Nuclear Facilities to Cyber Attacks, With the knowledge gleaned from the course, create

  Determine whether version with or without sentinel is faster

Determine whether the version with or without a sentinel is faster. For what value of n is the extra time needed to insert a sentinel at the end of a list.

  Implement a version of the rabin-karp algorithm to search

Implement a version of the Rabin-Karp algorithm to search for patterns in two-. dimensional text. Assume both pattern and text are rectangles of characters.

  Determine all possible total orders of transactions

Let objects x and y be stored at site 1, and objects z and w be stored at site 2. Determine, for each of the following executions, whether the execution is serializable or not.

  Write a swing program to display the name of your school

Write Swing program to display name of your school in a variety of fonts and sizes. Interface should include JTextPane, Font combo box and Font Size combo box.

  Performance clause in the license agreement

Explain why is it significant to have the performance clause within the license agreement?

  What software development methodology would you follow

What Software Development methodology would you follow in developing the computer system for ASC?

  Create program that reads from the external file input.txt

create a program that reads from the external file input.txt

  Which of given trees will be quicker to build explain why

Which of these trees will be quicker to build? Explain why. [Try to answer this question without actually drawing the trees.]

  Write a script that accepts compressed filename as argument

Write a script that accepts a compressed filename as argument (which could be .gz, .bz2 or .zip).

  Write down a method definition to count

Write down a class declaration for a student that has String first, last, and middle names as data fields. Declare only the data members and a no-arg constructor.

  Plot astronomical distances and path of celestial objects

I think that one of the most interesting fields where conic sections are applied is astronomy. As a welder, I had to cut ellipse-shaped holes into the side of tanks routinely.

Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd