C#, mieszanka podstaw, program zaliczeniowy

0

Witam
Muszę napisać program zaliczeniowy z C#. Jako, że nie kierowałem się nigdy ku programowaniu mam sporo problemów. Treść zadania brzmi następująco:

Pierwsza część przewiduje następujące czynności:

  1. Utwórz klasę o nazwie NaturalnaTablica , która zawiera statyczne pole iloscTablic (przechowuje informacje o ilość utworzonych obiektów na podstawie klasy i zwiększa się o jeden w chwili powstawania obiektu, czyli w konstruktorze).
  2. Tablicę o nazwie tab, która początków ma pusty rozmiar (zakładamy, że będzie przechowywać liczby ale w drugiej części zadania jest mowa, że powinna być typu generycznego).
  3. Indeksator this pomagający obsługiwać prywatną tablicę z punktu poprzedniego (ale w sposób naturalny - tzn. odwołanie do indeksatora jest zawsze od liczby 1 a nie od 0 ).
  4. Właściwość automatyczną wymiar, która przechowuje w sobie informację o wymiarze tablicy tab (wymiar jest podawany w chwili tworzenia obiektu poprzez konstruktor). Właściwość poza klasą jest tylko do odczytu.
  5. Konstruktor, który może przyjąć do siebie wymiar tablicy (i tworzy tablicę) podany przez użytkownika (może także mieć wartość domyślną 5 jeśli użytkownik wymiaru nie poda w trakcie tworzenia obiektu).
  6. Destruktor, który wypisze na ekranie informacje o chwili niszczenia obiektu (np. System.Windows.Forms.MessageBox.Show("Obiekt jest niszczony") ) i oczywiście zmniejszy pole iloscTablic.
  7. Utworzyć metodę PrzedstawSie, która zwróci łańcuch znaków np. "Jestem obiektem klasy NaturalnaTablica".
  8. Utworzyć klasę pochodną o nazwie NT2.
  9. W programie głównym należy (np. pod przyciskiem) utworzyć zmienną typy klasy bazowej ale przypisać obiekt klasy pochodnej. Wyświetlić wymiar tablicy i wywołać metodę PrzedstawSie.
    Druga część przewiduje następujące czynności:
  10. Do klasy bazowej dodać operator + , który zwróci łańcuch znaków będący połączeniem elementów tablicy (czyli mając tablicę o 3 elementach i wartościach np. 3;4;7 zwróci łańcuch znaków "347") - jeśli się nie uda to niech wywołanie operatora zwróci łańcuch znaków "123".
  11. Nadpisać w klasie bazowej metodę ToString aby zwracała jako łańcuch znaków pole iloscTablic.
  12. Dodatkowo wywołanie metody ToString powinno sprawdzać ile jest już obiektów - jeśli więcej niż dwa, to powinno być wywołane zdarzenie o nazwie Iwencik, które zakładamy, że w programie głównym będzie obsłużone przez funkcję, która wyświetli stosowny komunikat.
  13. Tak klasa bazowa jak i pochodna powinna zostać przerobiona na generyczną - po to aby tablica tab była dowolnego typu.
  14. Metodę PrzedstawSie zrobić wirtualną i nadpisać w klasie pochodnej tak aby zwracała łańcuch np. "Jestem obiektem klasy NT2".
  15. W programie głównym należy (np. pod przyciskiem) utworzyć zmienną typy klasy bazowej ale przypisać obiekt klasy pochodnej. Wyświetlić wymiar tablicy. Wywołać metodę PrzedstawSie (proszę zauważyć, że zadziała mechanizm polimorficzny), operator+, metodę ToString.
  16. Dodatkowo utworzyć jeszcze 2 dodatkowe obiekty i przy trzecim wywołać metodę ToString (powinno być obsłużone zdarzenie Iwencik).

Próbowałem przebrnąć przez pierwszą część i udało mi się dojść do takiego efektu:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication1
{
    public class NaturalnaTablica
    {
        private static int iloscTablic;
        public NaturalnaTablica(int x)//konstruktor w którym wartość pola iloscTablic zwiększa się o jeden
        {
            iloscTablic = x + 1;
        }
        private int tab;

        public int this[int y]
        {
            get { }
            set { }
        }

        public event EventHandler Iwencik;

        public NaturalnaTablica()
        {
            throw new System.NotImplementedException();
        }

        ~NaturalnaTablica()
        {
            throw new System.NotImplementedException();
        }

        public int wymiar //właściwość wymiar która przechowuje wartość tab
        {
            get
            {
                return tab;
            }
            set
            {
                tab = value;
            }
        }

        ~NaturalnaTablica() //destruktor
        {
            System.Windows.Forms.MessageBox.Show("Obiekt jest niszczony");
            iloscTablic--;
        }

        public void przedstawSie()
        {
            System.Windows.Forms.MessageBox.Show("Jestem obiektem klasy NaturalnaTablica");
        }

        public class NT2 : NaturalnaTablica //klasa pochodna
        {

        }

        public void ToString()
        {
            throw new System.NotImplementedException();
        }
    }
}

Gdyby ktoś zechciał spojrzeć, napisać co robię źle i dlaczego, naprowadzić, pomóc. Tak jak mówiłem programowanie to zupełnie nie moja bajka, no a niestety przedmiot muszę zaliczyć. Z góry dziękuję za pomoc.

0

autor zadania niezbyt zna c#, uzywanie destruktorow w tym kontekscie to kretynizm. poza niedorzeczna trescia, zadanie wyglada na bardzo latwe, przerob sobie tutorial do c# i bez problemu dasz sobie rade. albo zadaj konkretne pytania.

0

No na zajęciach przerabialiśmy jakąś książkę z Microsoftu. Wszystko jest dosyć ciężko napisane i trudno to ogarnąć. I właśnie wszystkie programy są tak jakby bez sensu, wymyślane przykłady totalnie abstrakcyjne. A zależy mi na tym, żeby to zaliczyć i szukam jakiejś pomocy w napisaniu tego.

0

google Ci sluzy pomoca. Wpisz tam sobie kurs c# albo C# tutorial. Problemy ktore masz beda wyjasnione w internecie

Albo zadaj KONKRETNE pytanie

Chcesz gotowca to zaplac

1 użytkowników online, w tym zalogowanych: 0, gości: 1