Jednorozměrné pole - WPF
4. C#
V souboru MainWindow.xaml.cs obsahující kód na pozadí (Code Behind) byla vygenerována základní struktura našeho programu v C#. Vedle konstruktoru MainWindow této třídy byly také vygenerovány soukromé (private) metody bez návratu, které umístíme do oblasti Události:
- TxtPocetPrvku_LostFocus
- TxtMinHodnota_LostFocus
- TxtMaxHodnota_LostFocus
- TxtPrvekIndex_LostFocus
- TxtHodnota_LostFocus
- BtnNahodne_Click
- BtnJednotlive_Click
- BtnNulovat_Click
- BtnVektorJakoText_Click
- BtnDoMrizky_Click
- BtnMinimum_Click
- BtnMaximum_Click
- BtnPrumer_Click
- BtnSeradit_Click
- BtnKonec_Click
Protože zdrojový kód bude poměrně dlouhý, mohli bychom také zmínit možnost vložení komentáře // TODO . Díky vložení takového typu komentáře lze vytvářet seznam úkolů, např. které musíme dopracovat - viz Kód 1.
// TODO: Dopracovat metodu pro automatické plnění vektoru
Kód 1: Příklad použití komentáře pro seznam úkolů
Pro zobrazení seznamu úkolů si totiž můžeme zobrazit panel Task List pomocí hlavní horní nabídkové lišty VS: View → TaskList . V dolní části VS se zobrazí okno se seznamem úkolů, které chceme na základě komentářů příště řešit - viz Obrázek 1. Stačí pak jen v panelu poklepat na úkol a VS vás přepne do místa, kde jste daný komentář napsali.
Obrázek 1: VS - Task List - seznam úkolů
Vzhledem k tomu, že C# kód bude rozsáhlejší, bude vhodné použít značky regionů, kde pro větší přehlednost uvedeme název regionu jak za počáteční značkou regionu (#region), tak i za koncovou značkou (#endregion). Vytvoříme si následující regiony, které budou obsahovat další vnořené regiony. U již vygenerovaných metod si také uvedeme, do kterého regionu budou patřit:
- Datové složky třídy
- Pomocné metody
- Zobrazení pole
- Plnění pole
- Operace s polem
- Události
- Nastavení atributů pole - region bude obsahovat následující metody:
- TxtPocetPrvku_LostFocus
- TxtMinHodnota_LostFocus
- TxtMaxHodnota_LostFocus
- TxtPrvekIndex_LostFocus
- TxtHodnota_LostFocus
- Plnění pole - region bude obsahovat následující metody:
- BtnNahodne_Click
- BtnJednotlive_Click
- BtnNulovat_Click
- Zobrazení pole - region bude obsahovat následující metody:
- BtnVektorJakoText_Click
- BtnDoMrizky_Click
- Operace s polem - region bude obsahovat následující metody:
- BtnMinimum_Click
- BtnMaximum_Click
- BtnPrumer_Click
- BtnSeradit_Click
Takto vytvořené regiony lze sbalit, nebo rozbalit a přehledně si tak můžeme zobrazit pouze ty metody, které nás zajímají.
Do regionu Datové složky třídy si umístíme seznam jednotlivých datových složek třídy (atributů částečné třídy MainWindow), do nichž budeme ukládat a nebo načítat hodnoty. V podstatě se jedná o proměnné, které lze využívat v rámci celé třídy (globální proměnné) - viz Kód 2. Hodnoty v datových složkách využijeme pro specifikaci atributů vektoru - rozměru a intervalu přípustných hodnot prvků vektoru. Uveďme pro úplnost, že datové složky jsou přístupné pouze uvnitř třídy (modifikátor přístupu private). Jedna z datových složek s názvem Max je konstantní (klíčové slovo const), tzn. se nebude v průběhu programu měnit. V tomto regionu budeme také deklarovat samotné jednorozměrné pole (vektor) obsahující celá čísla.
namespace JednorozmernePoleWPF { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { #region Datové složky třídy (globální proměnné) // Specifikace konstanty a inicializace const int Max = 10; // Aktuální rozměr pole - počet prvků private int pocetPrvku; // Přípustná minimální hodnota (dolní mez) prvku - inicializace private int minHodnota = 1; // Přípustná maximální hodnota (horní mez) prvku - inicializace private int maxHodnota = 100; // Deklarace pole private int[] pole; #endregion Datové složky třídy public MainWindow() { InitializeComponent(); } } }
Kód 2: Deklarace datových složek třídy
Asi jste si všimli, že třída obsahuje vlastní konstruktor MainWindow (dá se říci metodu, která nese stejné jméno třídy a zajišťuje vygenerování instance třídy, tedy našeho formuláře). Konstruktor doplníme o jednotlivé příkazy, které nám zajistí vyplnění hodnot v příslušných objektech na formuláři na základě hodnot jednotlivých datových složek třídy. K přístupu k jednotlivým datovým složkám třídy využijeme klíčové slovo this spolu s tečkou za tímto slovem (tečková notace).
Budeme také muset vytvořit instanci třídy - objekt - jednorozměrného pole s definovanou délkou. Do tohoto jednorozměrného pole, tj. vektoru, pak budeme ukládat hodnoty, vypisovat hodnoty a nebo s ním budeme provádět další operace. Vytvoření pole provedeme pomocí implicitního konstruktoru (VS ho vytvořil za nás), který přijímá parametr (hodnotu v datové složce pocetPrvku) určující velikost našeho celočíselného (datový typ int) pole, tj. počet prvků pole. Konstruktor jednorozměrného pole voláme pomocí klíčového slova new. Vytvořenou instanci přiřadíme do datové složky pole v naší třídě.
public MainWindow() { InitializeComponent(); /* Přiřazení maximálního rozměru vektoru do datové složky určující * počet prvků vektoru */ this.pocetPrvku = Max; // Vytvoření instance (objektu) pole s definovanou délkou this.pole = new int[this.pocetPrvku]; /* Přiřazení počtu prvků vektoru do objektu na formuláři určujícího * velikost vektoru*/ this.TxtPocetPrvku.Text = this.pocetPrvku.ToString(); /* Přiřazení přípustné minimální hodnoty prvku ve vektoru do objektu * na formuláři určujícího mezní hodnotu */ this.TxtMinHodnota.Text = this.minHodnota.ToString(); /* přiřazení přípustné maximální hodnoty prvku ve vektoru do objektu (pole) * na formuláři určujícího mezní hodnotu */ this.TxtMaxHodnota.Text = this.maxHodnota.ToString(); }
Kód 3: Konstruktor částečné třídy formuláře