joi, 7 iunie 2012

Coada

public class ArrayCoada implements Coada {

    // declaratie campuri
    /**
     * TODO// de modificat dimensiunea la 5; De facut un program care testeaza
     * funtiile push pop si peek atat cazurile corecte cat si cele exceptionale.
     * In caz de exceptie se vor prinde exceptiile si se vor afisa la consola.
     */
    private T[] elemente = (T[])new Object[100];

    private int start = 0;// pozitia ultimului element adaugat
    private int end = 0;
    // declaratie metode
    public boolean isEmpty()
    {
        if (start == 0 && end == 0)
        {
            return true;// todo
        }
        else
        {
            return false;
        }
    }

    public boolean isFull()
    {
        return (end == 99);

    }

    /**
     * introduce elementul a in stiva. returneaza true daca introducerea a
     * reusit sau false daca stiva este plina
     */
    public boolean offer(T a)
    {
        if (isFull())
        {
            return false;
        }
        else
        if(isEmpty())
        {
            elemente[start] = a;
            elemente[end]= elemente[start];
            end++;
            return true;
        }
        else
        {
           
            elemente[end]=a;
            end++;
            return true;
        }
    }

    public void add(T a) throws CoadaFullException, CoadaInvalidArgumentException
    {

        if (isFull())
        {
            throw new CoadaFullException("Stiva plina");
        }
        else
        {
            if (a == null)
            {
                throw new CoadaInvalidArgumentException();
            }
            if(isEmpty())
            {
                elemente[start] = a;
                elemente[end]= elemente[start];
                end++;
            }   
            else
            {
               
                elemente[end]=a;
                end++;
            }
        }
    }

    /**
     * se extrage un element din stiva si se retruneaza. Daca stiva este goala
     * va returna valoarea null
     */
    public T poll()
    {
        if (isEmpty())
        {
            return null;
        }
        else
        {
            T b;
            b = elemente[start];
            for(int i=start;i                elemente[i]=elemente[i+1];
            end--;
            return b;
        }
    }

    public T pop() throws CoadaEmptyException
    {
        if (isEmpty())
        {
            throw new CoadaEmptyException();
        }
        else
        {
            T b;
            b = elemente[start];
            for(int i=start;i                elemente[i]=elemente[i+1];
            end--;
            return b;
        }
    }

    /**
     * se obtine valoarea din varful stivei fara ca aceasta sa fie stearsa din
     * stiva sau se returneaza null daca stiva ii goala.
     */
    public T element()
    {
        if (isEmpty())
        {
            return null;
        }
        else
        {
            return elemente[start];
        }
    }

    /**
     * se obtine valoarea din varful stivei fara ca aceasta sa fie stearsa din
     * stiva. In mod similar se genereaza StackEmptyException sau se returneaza
     * null
     */
    public T peek() throws CoadaEmptyException {

        if (isEmpty())
        {
            throw new CoadaEmptyException();
        }
        else
        {
            return elemente[start];
        }
    }

    public String toString() {
        String s = "{";
        for (int i = start; i < end; i++) {
            s += elemente[i] + ",";
        }
        /*if (!isEmpty()) {
            s += elemente[start];
        }*/
        s += "}";
        return s;
    }

}
......exceptii....
package packq;

public class CoadaEmptyException extends CoadaException{

    public CoadaEmptyException() {
        super();
        // TODO Auto-generated constructor stub
    }

    public CoadaEmptyException(String arg0, Throwable arg1) {
        super(arg0, arg1);
        // TODO Auto-generated constructor stub
    }

    public CoadaEmptyException(String arg0) {
        super(arg0);
        // TODO Auto-generated constructor stub
    }

    public CoadaEmptyException(Throwable arg0) {
        super(arg0);
        // TODO Auto-generated constructor stub
    }

   
}
............
package packq;

public class CoadaException extends Exception {

    public CoadaException() {
        super();
        // TODO Auto-generated constructor stub
    }

    public CoadaException(String arg0, Throwable arg1) {
        super(arg0, arg1);
        // TODO Auto-generated constructor stub
    }

    public CoadaException(String arg0) {
        super(arg0);
        // TODO Auto-generated constructor stub
    }

    public CoadaException(Throwable arg0) {
        super(arg0);
        // TODO Auto-generated constructor stub
    }
   
   

}
.................
package packq;

public class CoadaFullException extends CoadaException{

    public CoadaFullException() {
        super();
        // TODO Auto-generated constructor stub
    }

    public CoadaFullException(String arg0, Throwable arg1) {
        super(arg0, arg1);
        // TODO Auto-generated constructor stub
    }

    public CoadaFullException(String arg0) {
        super(arg0);
        // TODO Auto-generated constructor stub
    }

    public CoadaFullException(Throwable arg0) {
        super(arg0);
        // TODO Auto-generated constructor stub
    }
   
   

}
............
package packq;

public class CoadaInvalidArgumentException extends CoadaException{

    public CoadaInvalidArgumentException() {
        super();
        // TODO Auto-generated constructor stub
    }

    public CoadaInvalidArgumentException(String arg0, Throwable arg1) {
        super(arg0, arg1);
        // TODO Auto-generated constructor stub
    }

    public CoadaInvalidArgumentException(String arg0) {
        super(arg0);
        // TODO Auto-generated constructor stub
    }

    public CoadaInvalidArgumentException(Throwable arg0) {
        super(arg0);
        // TODO Auto-generated constructor stub
    }
       
   

}
.............
package packq;

public interface Coada
{
    boolean isEmpty();
    boolean isFull();
    boolean offer(T a);   
    void add(T a) throws CoadaFullException, CoadaInvalidArgumentException;
    T poll();
    T pop() throws CoadaEmptyException;
    T element();
    T peek() throws CoadaEmptyException;
}
.............
package packq;


import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JPanel;
public class GUIMain
{
    Coada queue = new ArrayCoada ();
    JTextField textField;
    JLabel labelContinut;
    JLabel labelExtrase;
    JLabel labelVarf;
   
    public void init()
    {
        JFrame fereastra = new JFrame("Coada");
        fereastra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container conteintPain = fereastra.getContentPane();
        conteintPain.setLayout(new GridLayout(8,1));
       
        JLabel label1 = new JLabel("Introduceti numarul: ");
        conteintPain.add(label1);
       
        textField = new JTextField();
        conteintPain.add(textField);
       
        JPanel panel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
        conteintPain.add(panel);
       
        JButton adauga = new JButton("Adauga");
        panel.add(adauga);
        adauga.addActionListener(new AdaugaAction());
       
        JButton extrage = new JButton("Extrage");
        panel.add(extrage);
        extrage.addActionListener(new ExtrageAction());
       
        JButton varf = new JButton("Varf");
        panel.add(varf);
        varf.addActionListener(new VarfAction());
       
        JButton golire = new JButton("Golire");
        panel.add(golire);
        golire.addActionListener(new GolireAction());
       
       
       
       
        JLabel label2 = new JLabel("Continutul Stivei: ");
        conteintPain.add(label2);
       
        labelContinut = new JLabel();
        labelContinut.setText(queue.toString());
        conteintPain.add(labelContinut);
       
        labelExtrase = new JLabel();
        labelExtrase.setText("Nu s-a extras inca");
        conteintPain.add(labelExtrase);
       
        labelVarf = new JLabel();
        labelVarf.setText("Varf");
        conteintPain.add(labelVarf);
       
        fereastra.pack();
        fereastra.setVisible(true);
    }
   
   
   
    public static void main(String[] args)
    {
        GUIMain gui = new GUIMain();
        gui.init();
    }
   
    private class AdaugaAction implements ActionListener
    {
       
        public void actionPerformed(ActionEvent arg0)
        {
            System.out.println("Buton Adauga");   
            String a = textField.getText();
            //Integer b = Integer.parseInt(a);
            try {
                queue.add(a);
            } catch (CoadaFullException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (CoadaInvalidArgumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }    // sau offer
           
            labelContinut.setText(queue.toString());
        }
       
    }
   
    private class ExtrageAction implements ActionListener
    {
       
        public void actionPerformed(ActionEvent arg0)
        {
            System.out.println("Buton Extrage ");
            try {
                    // sau poll
                labelExtrase.setText("" + queue.pop());
            } catch (CoadaEmptyException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            labelContinut.setText(queue.toString());
        }
       
    }
   
   
   
    private class VarfAction implements ActionListener
    {
       
        public void actionPerformed(ActionEvent arg0)// throws StackEmptyException
        {
            System.out.println("Buton varf");   
                // sau peek
            labelVarf.setText("Varful este: "+queue.element());
           
        }
       
    }
   
    private class GolireAction implements ActionListener
    {
       
        public void actionPerformed(ActionEvent arg0)// throws StackEmptyException
        {
            System.out.println("Buton varf");   
            while(queue.isEmpty() == false)
            {
                try {
                    queue.pop();
                } catch (CoadaEmptyException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            labelContinut.setText(queue.toString());
           
        }
       
    }
}

Niciun comentariu:

Trimiteți un comentariu