static void Main()
        {
            // Zufallszahlengenerator erstelltn
            RandomNumberGenerator numberGenerator = new RandomNumberGenerator(250);

            // Beobachter erstellen
            BaseObserver       baseObserver       = new BaseObserver(numberGenerator, 10);
            StatisticsObserver statisticsObserver = new StatisticsObserver(numberGenerator, 20);
            RangeObserver      rangeObserver      = new RangeObserver(numberGenerator, 5, 200, 300);
            QuickTippObserver  quickTippObserver  = new QuickTippObserver(numberGenerator);


            // Nummerngenerierung starten
            numberGenerator.StartNumberGeneration();
            // Resultat ausgeben
            Console.WriteLine("\n--------------------RESULT-----------------------");
            Console.ForegroundColor = ConsoleColor.DarkGreen;
            Console.WriteLine(statisticsObserver.ToString());
            Console.WriteLine(rangeObserver.ToString());
            Console.WriteLine(quickTippObserver.ToString());
            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine("-------------------------------------------------\n");
            Console.Write("Bitte drücken Sie Enter ...");
            Console.ReadLine();
        }
Example #2
0
        private void ObserverForm_Load(object sender, System.EventArgs e)
        {
            _subject = new Subject();
            _subject.SetElementColor(Color.Red);
            graphics = panel2.CreateGraphics();
            int      x        = 100;
            Assembly assembly = Assembly.GetExecutingAssembly();
            var      types    = assembly.GetTypes().Where(t => t.BaseType != null && t.BaseType.Equals(typeof(BaseObserver)) && !t.IsAbstract);
            int      y        = 20;

            foreach (var type in types)
            {
                var      descrAttr = Attribute.GetCustomAttributes(type, typeof(DescriptionAttribute)).FirstOrDefault();
                string   text      = (descrAttr as DescriptionAttribute).Description;
                CheckBox btn       = new CheckBox();
                btn.Text     = text;
                btn.Location = new Point(20, y);
                btn.Size     = new Size(100, 20);
                var          location       = new Point(x, panel2.Height / 2);
                var          rect           = new Rectangle(location, new Size(sideLength, sideLength));
                BaseObserver graphicElement = Activator.CreateInstance(type, graphics, rect, _subject) as BaseObserver;
                btn.Tag             = graphicElement;
                btn.CheckedChanged -= btn_CheckedChanged;
                btn.CheckedChanged += btn_CheckedChanged;
                groupBox1.Controls.Add(btn);
                y += 20;
                x += 100;
            }
        }
        public void NumberGenerator_ExplicitCallOfAttachASecondTime_ShouldThrowInvalidOperationException()
        {
            //Arrange
            RandomNumberGenerator numberGenerator = new RandomNumberGenerator();
            BaseObserver          baseObserver    = new BaseObserver(numberGenerator, 5);

            //Act
            numberGenerator.NextNumberHandlerChanged += baseObserver.OnNextNumber;

            //Assert
            Assert.Fail("InvalidOperationException was expected!");
        }
        public void NumberGenerator_DetachCalledTwiceWithIdenticalObserver_ShouldThrowInvalidOperationException()
        {
            //Arrange
            RandomNumberGenerator numberGenerator = new RandomNumberGenerator();
            BaseObserver          baseObserver    = new BaseObserver(numberGenerator, 5);

            //Act
            numberGenerator.NextNumberHandlerChanged -= baseObserver.OnNextNumber;
            numberGenerator.NextNumberHandlerChanged -= baseObserver.OnNextNumber;

            //Assert
            Assert.Fail("NullReferenceException was expected!");
        }
        public void NumberGenerator_DetachCalledTwiceWithIdenticalObserver_ShouldThrowInvalidOperationException()
        {
            //Arrange
            RandomNumberGenerator numberGenerator = new RandomNumberGenerator();
            BaseObserver          baseObserver    = new BaseObserver(numberGenerator, 5);

            //Act
            numberGenerator.Detach(baseObserver);
            numberGenerator.Detach(baseObserver);

            //Assert
            Assert.Fail("InvalidOperationException was expected!");
        }
Example #6
0
    //管理するオブジェクトの追加
    public void AddObserver(BaseObserver oo)
    {
        if (oo == null)
        {
            return;
        }

        if (baseObserver.Contains(oo))
        {
            return;
        }
        baseObserver.Add(oo);
        oo.Enter(gameObject);
    }
Example #7
0
    //管理するオブジェクトの削除
    public void RemoveObserver(BaseObserver oo)
    {
        if (oo == null)
        {
            return;
        }

        if (!baseObserver.Contains(oo))
        {
            return;
        }
        baseObserver.Remove(oo);
        oo.Exit(gameObject);
    }
        static void Main()
        {
            // Zufallszahlengenerator erstelltn
            RandomNumberGenerator numberGenerator = new RandomNumberGenerator(250);

            // Beobachter erstellen
            BaseObserver       baseObserver       = new BaseObserver(numberGenerator, 10);
            StatisticsObserver statisticsObserver = new StatisticsObserver(numberGenerator, 20);
            RangeObserver      rangeObserver      = new RangeObserver(numberGenerator, 5, 200, 300);
            QuickTippObserver  quickTippObserver  = new QuickTippObserver(numberGenerator);

            // Nummerngenerierung starten
            // Resultat ausgeben
            throw new NotImplementedException();
        }
Example #9
0
        void btn_CheckedChanged(object sender, EventArgs e)
        {
            CheckBox     box            = sender as CheckBox;
            BaseObserver graphicElement = box.Tag as BaseObserver;

            if (box.Checked)
            {
                _subject.RegistrerObserver(graphicElement);
            }
            else
            {
                _subject.UnRegistrerObserver(graphicElement);
            }
            Draw();
        }
        public void NumberGenerator_CallDetach_ShouldWork()
        {
            //Arrange
            RandomNumberGenerator numberGenerator = new RandomNumberGenerator();
            BaseObserver          baseObserver    = new BaseObserver(numberGenerator, 5);

            //Act
            try
            {
                numberGenerator.NextNumberHandlerChanged -= baseObserver.OnNextNumber;
            }
            catch (Exception ex)
            {
                //Assert
                Assert.Fail("Expected no exception, but got: " + ex.Message);
            }
        }
        static void Main()
        {
            // Zufallszahlengenerator erstelltn
            RandomNumberGenerator numberGenerator = new RandomNumberGenerator(250);

            // Beobachter erstellen
            BaseObserver       baseObserver       = new BaseObserver(numberGenerator, 10);
            StatisticsObserver statisticsObserver = new StatisticsObserver(numberGenerator, 20);
            RangeObserver      rangeObserver      = new RangeObserver(numberGenerator, 5, 200, 300);
            QuickTippObserver  quickTippObserver  = new QuickTippObserver(numberGenerator);


            // Nummerngenerierung starten
            // Resultat ausgeben
            numberGenerator.StartNumberGeneration();
            Console.WriteLine(statisticsObserver.ToString());
        }
Example #12
0
        static void Main()
        {
            // Zufallszahlengenerator erstelltn
            RandomNumberGenerator numberGenerator = new RandomNumberGenerator(250);

            // Beobachter erstellen
            BaseObserver       baseObserver       = new BaseObserver(numberGenerator, 10);
            StatisticsObserver statisticsObserver = new StatisticsObserver(numberGenerator, 20);
            RangeObserver      rangeObserver      = new RangeObserver(numberGenerator, 5, 200, 300);
            QuickTippObserver  quickTippObserver  = new QuickTippObserver(numberGenerator);

            Console.WriteLine("----------Result------------");
            Console.WriteLine($"{statisticsObserver.GetType().Name}: Received {statisticsObserver.CountOfNumbersReceived} numbers => Min='{statisticsObserver.Min}', Max='{statisticsObserver.Max}', Sum='{statisticsObserver.Sum}', Avg='{statisticsObserver.Avg}'.");
            Console.WriteLine($"{rangeObserver.GetType().Name}: Received {rangeObserver.CountOfNumbersReceived} numbers => There were '{rangeObserver.NumbersInRange}' numbers between '{rangeObserver.LowerRange}' and '{rangeObserver.UpperRange}'.");
            Console.WriteLine($"{quickTippObserver.GetType().Name}: Received {quickTippObserver.CountOfNumbersReceived} numbers => Quick-Tipp is {quickTippObserver.ToString()}.");
            Console.WriteLine("Drücken Sie eine beliebige Taste . . .");
            Console.ReadKey();;
        }
Example #13
0
        static void Main()
        {
            // Zufallszahlengenerator erstelltn
            RandomNumberGenerator numberGenerator = new RandomNumberGenerator(250);

            // Beobachter erstellen
            BaseObserver       baseObserver       = new BaseObserver(numberGenerator, 10);
            StatisticsObserver statisticsObserver = new StatisticsObserver(numberGenerator, 20);
            RangeObserver      rangeObserver      = new RangeObserver(numberGenerator, 5, 200, 300);
            QuickTippObserver  quickTippObserver  = new QuickTippObserver(numberGenerator);


            // Nummerngenerierung starten
            numberGenerator.StartNumberGeneration();

            // Resultat ausgeben

            Console.WriteLine("\n\n-------------------------------------------  RESULT  ---------------------------------------------\n");

            Console.WriteLine(statisticsObserver.PrintResult());
            Console.WriteLine(rangeObserver.PrintResult());
            Console.WriteLine(quickTippObserver.PrintResult());

            Console.WriteLine("\n--------------------------------------------------------------------------------------------------");
            Console.WriteLine("Drücken Sie eine beliebige Taste...");
            Console.ReadKey();


            //Console.WriteLine($" >> {statisticsObserver.GetType().Name+":",-20} Received {statisticsObserver.CountOfNumbersReceived:D5} numbers ===> Min='{statisticsObserver.Min}', Max='{statisticsObserver.Max}', Sum='{statisticsObserver.Sum}', Avg='{statisticsObserver.Avg}'.");

            //Console.WriteLine($" >> {rangeObserver.GetType().Name+":",-20} Received {rangeObserver.CountOfNumbersReceived:D5} numbers ===> There were '{rangeObserver.NumbersInRange}' numbers between '{rangeObserver.LowerRange}' and '{rangeObserver.UpperRange}'");

            //Console.WriteLine($" >> {quickTippObserver.GetType().Name+":",-20} Received {quickTippObserver.CountOfNumbersReceived:D5} numbers ===> Quick-Tip is {quickTippObserver.QuickTippNumbers[0]}, {quickTippObserver.QuickTippNumbers[1]}, {quickTippObserver.QuickTippNumbers[2]}, {quickTippObserver.QuickTippNumbers[3]}, {quickTippObserver.QuickTippNumbers[4]}, {quickTippObserver.QuickTippNumbers[5]}.");



            //Console.ReadKey();
            // Resultat ausgeben
        }
        static void Main()
        {
            // Zufallszahlengenerator erstelltn
            RandomNumberGenerator numberGenerator = new RandomNumberGenerator(250);

            // Beobachter erstellen
            BaseObserver       baseObserver       = new BaseObserver(numberGenerator, 10);
            StatisticsObserver statisticsObserver = new StatisticsObserver(numberGenerator, 20);
            RangeObserver      rangeObserver      = new RangeObserver(numberGenerator, 5, 200, 300);
            QuickTippObserver  quickTippObserver  = new QuickTippObserver(numberGenerator);

            // Nummerngenerierung starten
            numberGenerator.StartNumberGeneration();
            // Resultat ausgeben
            Console.WriteLine("------------------------------------------------------  RESULT  --------------------------------------------------------\n");
            Console.WriteLine($"{statisticsObserver.GetType().Name}: Received {statisticsObserver.CountOfNumbersReceived} numbers => Min='{statisticsObserver.Min}', Max='{statisticsObserver.Max}', Sum='{statisticsObserver.Sum}', Avg='{statisticsObserver.Avg}'.");
            Console.WriteLine($"{rangeObserver.GetType().Name}: Received {rangeObserver.CountOfNumbersReceived} numbers => There were '{rangeObserver.NumbersInRange}' numbers between '{rangeObserver.LowerRange}' and '{rangeObserver.UpperRange}'.");
            Console.WriteLine($"{quickTippObserver.GetType().Name}: Received {quickTippObserver.CountOfNumbersReceived} numbers => Quick-Tipp is {quickTippObserver.ConvertTippToString()}.");
            Console.WriteLine("------------------------------------------------------------------------------------------------------------------------\n");
            Console.WriteLine("Press any key...");
            Console.ReadKey();
        }
        static void Main()
        {
            // Zufallszahlengenerator erstelltn
            RandomNumberGenerator numberGenerator = new RandomNumberGenerator(250);

            // Beobachter erstellen
            BaseObserver       baseObserver       = new BaseObserver(numberGenerator, 10);
            StatisticsObserver statisticsObserver = new StatisticsObserver(numberGenerator, 20);
            RangeObserver      rangeObserver      = new RangeObserver(numberGenerator, 5, 200, 300);
            QuickTippObserver  quickTippObserver  = new QuickTippObserver(numberGenerator);

            // Nummerngenerierung starten
            numberGenerator.StartNumberGeneration();
            int[] tipps = quickTippObserver.QuickTippNumbers.OrderBy(_ => _).ToArray();
            // Resultat ausgeben

            Console.WriteLine("--------------------------------------- Result -----------------------------------------------");
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine($"{nameof(StatisticsObserver)}: Recevied {statisticsObserver.CountOfNumbersReceived:D5} numbers ===> {nameof(statisticsObserver.Min)}: '{statisticsObserver.Min}', {nameof(statisticsObserver.Max)}: '{statisticsObserver.Max}', {nameof(statisticsObserver.Sum)}: '{statisticsObserver.Sum}', {nameof(statisticsObserver.Avg)}: '{statisticsObserver.Avg}'");
            Console.WriteLine($"{nameof(RangeObserver)}:      Recevied {rangeObserver.CountOfNumbersReceived:D5} numbers ===> There were '{rangeObserver.NumbersInRange}' numbers between '{rangeObserver.LowerRange}' and '{rangeObserver.UpperRange}'.");
            Console.WriteLine($"{nameof(QuickTippObserver)}:  Recevied {quickTippObserver.CountOfNumbersReceived:D5} numbers ===> Quick-Tipp is {tipps[0]} {tipps[1]} {tipps[2]} {tipps[3]} {tipps[4]} {tipps[5]}.");
            Console.ResetColor();
        }
        static void Main()
        {
            // Zufallszahlengenerator erstelltn
            RandomNumberGenerator numberGenerator = new RandomNumberGenerator(250);

            // Beobachter erstellen
            BaseObserver       baseObserver       = new BaseObserver(numberGenerator, 10);
            StatisticsObserver statisticsObserver = new StatisticsObserver(numberGenerator, 20);
            RangeObserver      rangeObserver      = new RangeObserver(numberGenerator, 5, 200, 300);
            QuickTippObserver  quickTippObserver  = new QuickTippObserver(numberGenerator);

            numberGenerator.StartNumberGeneration();

            // Nummerngenerierung starten
            // Resultat ausgeben
            Console.WriteLine("----------Result------------");
            Console.WriteLine(statisticsObserver.GetInfo());
            Console.WriteLine(rangeObserver.GetInfo());
            Console.WriteLine(quickTippObserver.GetInfo());
            Console.WriteLine("----------------------------");
            Console.WriteLine("Drücken Sie eine beliebige Taste . . .");
            Console.ReadKey();
        }
        static void Main()
        {
            // Zufallszahlengenerator erstelltn
            RandomNumberGenerator numberGenerator = new RandomNumberGenerator(250);

            // Beobachter erstellen
            BaseObserver       baseObserver       = new BaseObserver(numberGenerator, 10);
            StatisticsObserver statisticsObserver = new StatisticsObserver(numberGenerator, 20);
            RangeObserver      rangeObserver      = new RangeObserver(numberGenerator, 5, 200, 300);
            QuickTippObserver  quickTippObserver  = new QuickTippObserver(numberGenerator);

            // Nummerngenerierung starten
            numberGenerator.StartNumberGeneration();

            // Resultat ausgeben
            Console.WriteLine("\n-------------------------------Result-------------------------------");
            Console.WriteLine($"   >> {statisticsObserver.GetType().Name}: Recieved {statisticsObserver.CountOfNumbersReceived} numbers " +
                              $"==> Min = '{statisticsObserver.Min}', Max = '{statisticsObserver.Max}', Sum = '{statisticsObserver.Sum}' Avg = '{statisticsObserver.Avg}'.");
            Console.WriteLine(rangeObserver.ToString());
            Console.WriteLine(quickTippObserver.ToString());
            Console.WriteLine("--------------------------------------------------------------------");

            Console.ReadKey();
        }
Example #18
0
 public void RegistrerObserver(BaseObserver observer)
 {
     observerList.Add(observer);
 }
 public void Detached(BaseObserver baseObserver)
 {
     _observers.Remove(baseObserver);
 }
Example #20
0
        private void button1_Click(object sender, EventArgs e)
        {
            bool errorCheck = Validation();

            if (errorCheck)
            {
                return;
            }
            else
            {
                string   classname   = comboBox1.Items[comboBox1.SelectedIndex].ToString();
                string   name        = textBox1.Text;
                string   author      = textBox2.Text;
                string   publisher   = textBox3.Text;
                DateTime publishDate = monthCalendar1.SelectionStart;
                int      stock       = 0;
                if (textBox5.Enabled)
                {
                    stock = Int16.Parse(textBox5.Text);
                }
                string type = "";
                if (textBox6.Enabled)
                {
                    type = textBox6.Text;
                }
                bool isDigital = false;
                switch (classname)
                {
                case "Book":
                    BookObject newBook = new BookObject(name, author, publisher, publishDate, stock);
                    returnItem = new BookObserver(newBook);
                    break;

                case "E-Book":
                    EBookObject newEBook = new EBookObject(name, author, publisher, publishDate);
                    returnItem = new EBookObserver(newEBook);
                    break;

                case "Video (Physical)":
                case "Video (Digital)":
                    if (classname.Contains("Digital"))
                    {
                        isDigital = true;
                    }
                    VideoObject newVideo = new VideoObject(name, type, author, publishDate, publisher, isDigital, stock);
                    returnItem = new VideoObserver(newVideo);
                    break;

                case "Audio (Physical)":
                case "Audio (Digital)":
                    if (classname.Contains("Digital"))
                    {
                        isDigital = true;
                    }
                    AudioObject newAudio = new AudioObject(name, type, author, publishDate, publisher, isDigital, stock);
                    returnItem = new AudioObserver(newAudio);
                    break;

                default:
                    break;
                }
                this.DialogResult = DialogResult.OK;
                this.Close();
                return;
            }
        }
Example #21
0
 public void addMaterial(BaseObserver newMaterial)
 {
     materialList.Add(newMaterial);
 }
 public void Dettached(BaseObserver observer) => observers.Remove(observer);
 public void Attached(BaseObserver observer) => observers.Add(observer);
Example #24
0
 public void UnRegistrerObserver(BaseObserver observer)
 {
     observerList.Remove(observer);
 }
 public void Attached(BaseObserver baseObserver)
 {
     _observers.Add(baseObserver);
 }
Example #26
0
 // Remove a certain observer
 public void Detach(BaseObserver observer)
 {
     observers.Remove(observer);
 }
Example #27
0
 // Add a new observer
 public void Attach(BaseObserver observer)
 {
     observers.Add(observer);
 }