Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

JAVA HOMEWORK Process Heap Objective: Create a couple of classes that will simul

ID: 645722 • Letter: J

Question

JAVA HOMEWORK

Process Heap

Objective:

Create a couple of classes that will simulate a process heap. Download the DRIVER and follow the following instructions!

Create a class called Process

Instance variables:

Priority: which is an integer value that corresponds to where it will be in the heap. Needs to be greater than 0.

Time: A double value that corresponds to how long the process will take to run. Needs to be greater than 0.

Name: A string value that is the name of the process

Constructors: Default and Parameterized

Accessors and mutators for each instance variable

Make sure to check for valid values.

Other methods:

toString: a method that prints out the name, priority, and time

Create another class called ProcessHeap

Instance variables:

Heap: an array of type Process which represents the heap

Size: the number of elements in the heap

Constructors: Default and parameterized

Other methods:

insert: this method which returns nothing adds a new element to the heap. It always adds the next element as the next element in breadth order and then bubbles it up based on the priority of the Process.

peek: this returns the head of the heap

remove: This returns the root of the heap and then removes it from the heap. It must then move the last element in the heap (via breadth order) to the root and bubble that value down until it

Explanation / Answer

class Process{
   private int priority;
   private double time;
   private String name;
   public Process(){
       priority=0;
       time=0.0;
       name="";
   }
   public Process(int priority,double time,String name){
       this.priority=priority;
       this.time=time;
       this.name=name;
   }
   public int getPriority(){
       return priority;
   }
   public void setPriority(int p){
       priority=p;
   }
   public double getTime(){
       return time;
   }
   public void setTime(double t){
       time=t;
   }
   public String getName(){
       return name;
   }
   public void setName(String n){
       name=n;
   }
   public String toString(){
       String str=" Name: "+name;
       str+=" Priority: "+priority;
       str+=" Time: "+time;
       return str;
   }
}

class ProcessHeap{
   private Process[] heap;
   private   int size;
   private static int counter=0;
   public ProcessHeap(){
       heap=null;
       size=0;
   }
   public ProcessHeap(Process[] heap,int size){
       this.heap=heap;
       this.size=size;
   }
   public void insert(Process p){
       heap[counter++]=p;   //insert a process into the heap
   }
   public Process peek(){
       return heap[counter-1];   //returns the head of the heap
   }
   public Process remove(){
       Process temp=heap[0];
       for(int i=0;i<counter-1;i++){
           heap[counter]=heap[counter+1];
       }
       return temp;
   }
   public void printHeap(){
       for(int i=0;i<counter;i++){
           System.out.println(heap[i].toString());
       }
   }
   public bool isEmpty(){
       if(counter==0){
           return true;
       }else{
           return false;
       }
   }
   public void heapSort(){
       Process temp=null;
       for(int i=0;i<counter-1;i++){
           for(int j=0;j<counter-i-1;j++){
               if(heap[j].getPriority()>heap[j+1].getPriority()){   //sort the heap processes based on their priority
                   temp=heap[j];
                   heap[j]=heap[j+1];
                   heap[j+1]=temp;
               }
           }
       }
       printHeap();
   }
}