MyQueue CS 313 Smalltalk example Class MyQueue ============= Object subclass:#MyQueue instanceVariableNames:'data' classVariableNames:'' poolDictionaries:'' category:'DanielsClasses' Class method ------------ new "create new instance and send it the 'init' message" ^ super new init Instance methods ---------------- init "initialize data (called by 'new')" data := OrderedCollection new first "return first element in queue without removing it" ^ data first enqueue: anObject "add anObject to end of queue" data add: anObject dequeue "remove element from front of queue and return it" ^ data removeFirst Testing and sample output ========================= |q| q := MyQueue new. 'enqueue: 1' printCR. q enqueue: 1 . 'first = ' print. q first printCR. 'enqueue: 2.0' printCR. q enqueue: 2.0 . 'first = ' print. q first printCR. 'enqueue: ''drei''' printCR. q enqueue: 'drei'. 'first = ' print. q first printCR. 'dequeue = ' print. q dequeue printCR. 'dequeue = ' print. q dequeue printCR. 'enqueue: #four' printCR. q enqueue: #four. 'first = ' print. q first printCR. 'dequeue = ' print. q dequeue printCR. 'dequeue = ' print. q dequeue printCR. output (produced using "doIt" on the code above): ------------------------------------------------- enqueue: 1 first = 1 enqueue: 2.0 first = 1 enqueue: 'drei' first = 1 dequeue = 1 dequeue = 2.0 enqueue: #four first = drei dequeue = drei dequeue = four