Referenční typy - třída
5. Datové složky
5.1. Nestatické datové složky
Obecná syntaxe nestatické datové složky může vypadat následovně:
modifikátorPřístupu modifConstRead datovýTyp identifikátor;
modifikátorPřístupu modifConstRead datovýTyp identifikátor = inicializace;
kde:
- modifikátorPřístupu - specifikuje přístupová práva k datové složce pomocí některé z modifikátoru přístupu
- modifConstRead - značí buď použití klíčového slova const nebo readonly
- Identifikátor - značí identifikátor datové složky. Lze také využít druhou variantu, kde použijeme inicializaci datové složky přiřazením počáteční hodnoty. inicializace proběhne bezprostředně po vytvoření instance třídy, ještě před voláním konstruktoru. Pokud ji neuvedeme, bude inicializovaná hodnota datové složky záviset na jejím datovém typu – viz Tabulka 1.
|
Datový typ |
Výchozí hodnota |
|
sbyte, byte, short, ushort, int, uint, long, ulong |
0 |
|
char |
'\x0000' |
|
float |
0.0f |
|
double |
0.0d |
|
decimal |
0.0m |
|
bool |
false |
|
object |
null |
|
string |
null |
Tabulka 1: Výchozí hodnoty podle datového typu datové složky [12]
Ilustrativní příklad AutoNestatickeDatoveSlozky
Program AutoNestatickeDatoveSlozky
- Popis: Deklarace nestatické třídy, nestatických datových složek, zpřehlednění kódu - oblasti
- Zadání: Deklarujte nestatickou třídu Auto v rámci jmenného prostoru Trida, která bude obsahovat následující datové složky:
- pocetKol – počet kol auta (konstantní volně přístupný atribut)
- kapacitaNadrze – kapacita nádrže auta (pouze pro čtení)
- sPZ – státní poznávací značka auta
- stavNadrze – aktuální stav objemu paliva v nádrži auta
- ujetoKm – aktuální stav počtu ujetých kilometrů
- spotreba – průměrná spotřeba litrů paliva na 100 km
Pro zpřehlednění kódu využijte značku oblasti (region), abyste oddělili datové složky od zbývajícího kódu - Řešení: Bude postupně probráno v následujícím textu (zdrojový kód tohoto příkladu bude využit pro sestavení konečné podoby třídy Auto)
Pojďme si zkusit deklarovat třídu Auto v rámci jmenného prostoru Trida – viz Kód 1. V této třídě využijeme rozdělení kódu do jednotlivých oblastí, abychom kód ve Visual Studio zpřehlednili. K tomu využijeme značku pro specifikace začátku oblasti #region a značku #endregion k označení konce oblasti. Tuto oblast pak můžeme v kódu sbalit (značka – nalevo od zdrojového kódu), nebo následně rozbalit (značka +) – viz kapitola Přehlednost kódu. Pokud máme delší zdrojový kód, použití oblastí může kód velmi zpřehlednit.
U datových složek
neuvádíme klíčové slovo private,
protože to je implicitně přednastaveno u každé datové složky, pokud není uveden
její modifikátor přístupu. K takovým složkám lze tedy přistoupit uvnitř
třídy. Tato třída bude obsahovat pro začátek pouze pár datových složek. pocetKol – počet kol auta je uveden pro ilustraci použití klíčového slova const,
tzn., že počet kol nesmí být změněn. Inicializace musí být provedena v rámci deklarace. kapacitaNadrze – kapacita nádrže
auta je datová složka pouze pro čtení, tzn. použití klíčového slova readonly. Tuto složku jsme inicializovali v deklaraci. Složka však nemusí být inicializována přímo v deklaraci. Tuto hodnotu lze změnit i v rámci konstruktoru.
using System; //Deklarace třídy namespace Trida { //Deklarace třídy 'Auto' class Auto { //Značka začátku oblasti s datovými složkami #region Deklarace datových složek třídy //Deklarace konstantní datové složky public const int pocetKol = 4; //Deklarace datové složky pouze pro čtení readonly double kapacitaNadrze = 60; //Deklarace privátních datových složek string sPZ; double stavNadrze; double ujetoKm; double spotreba; //Značka konce oblasti s datovými složkami #endregion //Deklarace hlavní metody static void Main(string[] args) { } } }
Kód 1: Příklad deklarace nestatických datových složek uvnitř třídy Auto včetně využití rozdělení kódu do oblasti