Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Generika IMyStack
- namespace pj2_2015_cv1_v3
- {
- public interface IMyStack<T>
- {
- T Pop();
- void Push(T v);
- bool IsFull();
- bool IsEmpty();
- void Print();
- T[] Items { get; }
- }
- }
- // Generika MyStack
- namespace pj2_2015_cv1_v3
- {
- public class MyStack<T> : IMyStack<T>
- {
- private T[] elements;
- private int top;
- public MyStack(int size)
- {
- elements = new T[size];
- top = 0;
- }
- public T Pop()
- {
- if (IsEmpty())
- {
- throw new StackEmptyException(elements.Length, top);
- }
- top--;
- T ret = elements[top];
- elements[top] = default(T);
- return ret;
- }
- public void Push(T v)
- {
- if (IsFull())
- {
- throw new StackFullException(elements.Length, top);
- }
- elements[top] = v;
- top++;
- }
- public bool IsFull()
- {
- return top >= elements.Length;
- }
- public bool IsEmpty()
- {
- return top == 0;
- }
- }
- // Vyjimka
- namespace pj2_2015_cv2_StackLib_v3
- {
- public class StackEmptyException : ApplicationException
- {
- private int size;
- public int Top { get; private set; }
- public StackEmptyException(int size, int top) :
- base(String.Format("Zasobnik je prazdny! Velikost:{0}, vrchol: {1}", size, top))
- {
- this.size = size;
- Top = top;
- }
- }
- }
- // Použití vyjimky
- public void Push(T v)
- {
- if (IsFull())
- {
- throw new StackFullException(elements.Length, top);
- }
- elements[top] = v;
- top++;
- }
- // použítí Delegáta pro změnu formátu jména
- namespace pj2_2015_cv5_v2_Kompozit
- {
- public delegate String FormatName(String name);
- public interface IPrvek
- {
- void Tisk(int hloubka, FormatName nameFormatter); //jako eventa!!!!
- void Add(IPrvek prvek);
- void Remove(IPrvek prvek);
- void Sort();
- String GetStringForSort();
- }
- }
- // metoda ve třídě Kontakt
- public void Tisk(int hloubka, FormatName nameFormatter)
- {
- for (int i = 0; i < hloubka; i++)
- {
- Console.Write(" ");
- }
- Console.WriteLine("Kontakt {0} {2}, {1}", nameFormatter(Jmeno), Adresa, Telefon);
- }
- // v Mainu pak jen
- root.Tisk(0, BigName);
- // + ještě metoda
- public static String BigName(String name)
- {
- return name.ToUpper();
- }
- // Delegát s eventou
- public delegate void Vypujceno(String name, DateTime d);
- [Serializable]
- public class Film:IPolozka
- {
- public event Vypujceno vypujceno;
- private DateTime mVypujcenoDo;
- public DateTime VypujcenoDo
- {
- get
- {
- return mVypujcenoDo;
- }
- set
- {
- mVypujcenoDo = value;
- if (vypujceno != null)
- {
- vypujceno(Nazev, mVypujcenoDo);
- }
- }
- }
- // Třída Položka, aneb volám delegáta
- public void PridejPolozku(IPolozka p)
- {
- if (p is Film)
- {
- Film f = (Film)p;
- f.vypujceno += infoVypujcky;
- }
- polozky.Add(p);
- }
- public void infoVypujcky(String name, DateTime d)
- {
- Console.WriteLine("Info vypujcky: " + name + " " + d);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement