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:
- 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).
- 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).
- 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 ).
- 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.
- 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).
- 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.
- Utworzyć metodę PrzedstawSie, która zwróci łańcuch znaków np. "Jestem obiektem klasy NaturalnaTablica".
- Utworzyć klasę pochodną o nazwie NT2.
- 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: - 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".
- Nadpisać w klasie bazowej metodę ToString aby zwracała jako łańcuch znaków pole iloscTablic.
- 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.
- Tak klasa bazowa jak i pochodna powinna zostać przerobiona na generyczną - po to aby tablica tab była dowolnego typu.
- Metodę PrzedstawSie zrobić wirtualną i nadpisać w klasie pochodnej tak aby zwracała łańcuch np. "Jestem obiektem klasy NT2".
- 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.
- 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.