feat: add authors
This commit is contained in:
@@ -1,4 +1,8 @@
|
||||
|
||||
/**
|
||||
* @author Yadunand Prem
|
||||
* @version CS2030S AY22/23 Semester 2
|
||||
*/
|
||||
class ArrivalEvent extends BaseShopEvent {
|
||||
|
||||
double serviceTime;
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
* simulation. Your task is to replace this
|
||||
* class with new classes, following proper OOP principles.
|
||||
*
|
||||
* @author Wei Tsang
|
||||
* @version CS2030S AY21/22 Semester 2
|
||||
* @author Yadunand Prem
|
||||
* @version CS2030S AY22/23 Semester 2
|
||||
*/
|
||||
|
||||
abstract class BaseShopEvent extends Event {
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
/**
|
||||
* @author Yadunand Prem
|
||||
* @version CS2030S AY22/23 Semester 2
|
||||
*/
|
||||
public class Customer {
|
||||
final private int id;
|
||||
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
|
||||
/**
|
||||
* @author Yadunand Prem
|
||||
* @version CS2030S AY22/23 Semester 2
|
||||
*/
|
||||
class DepartureEvent extends BaseShopEvent {
|
||||
|
||||
public DepartureEvent(double time, Customer customer, Shop shop) {
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
* the Comparable interface so that a PriorityQueue can
|
||||
* arrange the events in the order of event time.
|
||||
*
|
||||
* @author Wei Tsang
|
||||
* @version CS2030S AY21/22 Semester 2
|
||||
* @author Yadunand Prem
|
||||
* @version CS2030S AY22/23 Semester 2
|
||||
*/
|
||||
abstract class Event implements Comparable<Event> {
|
||||
/** The time this event occurs in the simulation. */
|
||||
|
||||
@@ -3,8 +3,8 @@ import java.util.Scanner;
|
||||
/**
|
||||
* The main class for CS2030S Lab 1.
|
||||
*
|
||||
* @author Wei Tsang
|
||||
* @version CS2030S AY21/22 Semester 2
|
||||
* @author Yadunand Prem
|
||||
* @version CS2030S AY22/23 Semester 2
|
||||
*/
|
||||
class Lab1 {
|
||||
public static void main(String[] args) {
|
||||
@@ -12,7 +12,7 @@ class Lab1 {
|
||||
// Create a scanner to read from standard input.
|
||||
Scanner sc = new Scanner(System.in);
|
||||
|
||||
// Create a simulation. The ShopSimulation
|
||||
// Create a simulation. The ShopSimulation
|
||||
// constructor will read the simulation parameters
|
||||
// and initial events using the scanner.
|
||||
Simulation simulation = new ShopSimulation(sc);
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
|
||||
/**
|
||||
* @author Yadunand Prem
|
||||
* @version CS2030S AY22/23 Semester 2
|
||||
*/
|
||||
class ServiceBeginEvent extends BaseShopEvent {
|
||||
|
||||
double serviceTime;
|
||||
@@ -18,7 +21,7 @@ class ServiceBeginEvent extends BaseShopEvent {
|
||||
|
||||
@Override
|
||||
public Event[] simulate() {
|
||||
this.counter.setAvailable(false);
|
||||
this.counter.occupy();
|
||||
double endTime = this.getTime() + this.serviceTime;
|
||||
return new Event[] {
|
||||
new ServiceEndEvent(endTime, this.customer, this.shop, this.counter) };
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
|
||||
/**
|
||||
* @author Yadunand Prem
|
||||
* @version CS2030S AY22/23 Semester 2
|
||||
*/
|
||||
class ServiceEndEvent extends BaseShopEvent {
|
||||
|
||||
ShopCounter counter;
|
||||
@@ -16,7 +19,7 @@ class ServiceEndEvent extends BaseShopEvent {
|
||||
|
||||
@Override
|
||||
public Event[] simulate() {
|
||||
this.counter.setAvailable(true);
|
||||
this.counter.free();
|
||||
return new Event[] { new DepartureEvent(this.getTime(), customer, shop) };
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,7 @@
|
||||
/**
|
||||
* @author Yadunand Prem
|
||||
* @version CS2030S AY22/23 Semester 2
|
||||
*/
|
||||
public class Shop {
|
||||
private ShopCounter[] counters;
|
||||
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
/**
|
||||
* @author Yadunand Prem
|
||||
* @version CS2030S AY22/23 Semester 2
|
||||
*/
|
||||
public class ShopCounter {
|
||||
final private int id;
|
||||
private boolean available;
|
||||
@@ -6,8 +10,12 @@ public class ShopCounter {
|
||||
return available;
|
||||
}
|
||||
|
||||
public void setAvailable(boolean available) {
|
||||
this.available = available;
|
||||
public void occupy() {
|
||||
this.available = false;
|
||||
}
|
||||
|
||||
public void free() {
|
||||
this.available = true;
|
||||
}
|
||||
|
||||
public ShopCounter(int id) {
|
||||
|
||||
@@ -3,8 +3,8 @@ import java.util.Scanner;
|
||||
/**
|
||||
* This class implements a shop simulation.
|
||||
*
|
||||
* @author Wei Tsang
|
||||
* @version CS2030S AY21/22 Semester 2
|
||||
* @author Yadunand Prem
|
||||
* @version CS2030S AY22/23 Semester 2
|
||||
*/
|
||||
class ShopSimulation extends Simulation {
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
/**
|
||||
* This class is a general abstract class that
|
||||
* encapsulates a simulation. To implement a
|
||||
* encapsulates a simulation. To implement a
|
||||
* simulation, inherit from this class and implement
|
||||
* the `getInitialEvents` method.
|
||||
*
|
||||
* @author Wei Tsang
|
||||
* @version CS2030S AY21/22 Semester 2
|
||||
* @author Yadunand Prem
|
||||
* @version CS2030S AY22/23 Semester 2
|
||||
*/
|
||||
abstract class Simulation {
|
||||
/**
|
||||
|
||||
@@ -6,15 +6,15 @@ import java.util.PriorityQueue;
|
||||
* It runs through the events and simulates each one until
|
||||
* the queue is empty.
|
||||
*
|
||||
* @author Wei Tsang
|
||||
* @version CS2030S AY21/22 Semester 2
|
||||
* @author Yadunand Prem
|
||||
* @version CS2030S AY22/23 Semester 2
|
||||
*/
|
||||
public class Simulator {
|
||||
/** The event queue. */
|
||||
private final PriorityQueue<Event> events;
|
||||
|
||||
/**
|
||||
* The constructor for a simulator. It takes in
|
||||
* The constructor for a simulator. It takes in
|
||||
* a simulation as an argument, and calls the
|
||||
* getInitialEvents method of that simulation to
|
||||
* initialize the event queue.
|
||||
@@ -30,9 +30,9 @@ public class Simulator {
|
||||
|
||||
/**
|
||||
* Run the simulation until no more events is in
|
||||
* the queue. For each event in the queue (in
|
||||
* the queue. For each event in the queue (in
|
||||
* increasing order of time), print out its string
|
||||
* representation, then simulate it. If the
|
||||
* representation, then simulate it. If the
|
||||
* simulation returns one or more events, add them
|
||||
* to the queue, and repeat.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user