background image

Przestrzenie 

nazw. Tablice

background image

Przegląd zagadnień

Przestrzenie nazw

Tablice

Podsumowanie

Pytania sprawdzające

Laboratorium 

background image

Przestrzenie nazw (1)

Język C# jest przykładem języka wykorzystującego wiele 
klas. W każdej z nich istnieje wiele różnych elementów o 
różnych nazwach, których z oczywistych względów 
ilościowych nie można zapamiętać

Prędzej, czy później przy nazywaniu jakiegoś elementu 
wykorzysta się użytą już w innej klasie przez kogoś
nazwę

Rozwiązanie – przestrzenie nazw – ograniczają one 
zasięg ważności nazwy elementu

background image

Przestrzenie nazw (2)

Przy pomocy dyrektywy using możliwe jest skrócenie 
nieco zapisu pełnej nazwy klasy wraz z przestrzeniami 
nazw

Załóżmy, że potrzebujemy doświadczonego programisty. 
Musimy jednak wiedzieć, w jaki sposób pisze on 
programy, bowiem inaczej pracuje programista piszący 
struturalnie (struktura.programista), a inaczej piszący 
obiektowo (obiekty.programista). W obu przypadkach 
słowo programista ma inny wydźwięk

Ważną rolę pełni operator kropki, pozwalający na 
uzyskanie dostępu do metody i danych klasy, a zarazem 
ograniczający zasięg ważności nazwy

background image

Przestrzenie nazw – przykład

Kod C#

using System;

namespace

PrzestrzenZewnetrzna {

namespace

PrzestrzenWewnetrzna {

class Owoc {

public static void Jablko() {

Console.WriteLine("Jablko - element 

wywołany w innej przestrzeni nazw");

}

}

}

class PrzestrzenWywolujaca {

public static void Main() {

PrzestrzenWewnetrzna.Owoc.Jablko();

}

}

}

background image

Przestrzeń nazw – podsumowanie

Przestrzenie nazw pomagają w podziale hierarchii 
obiektów oraz w przezwyciężeniu jest jej złożoności

Używanie dyrektywy using umożliwia wielokrotnie 
skrócenie zapisu, jednak ceną może być zmniejszenie 
czytelności kodu. Problem może pojawić się także, gdy 
pracujemy w dwóch przestrzeniach zawierających 
elementy o identycznej nazwie

background image

Tablice

Najprostszym przykładem kolekcji elementów tego 
samego typu jest tablica

Tablice posiadają wbudowany mechanizm 
indeksowania, dzięki czemu można natychmiast uzyskać
dostęp do dowolnego elementu

Elementy tablicy numerowane są od 0, zatem ostatnim 
elementem tablicy k-elementowej będzie element o 
indeksie k-1

background image

Tablice – przykład obiektów

Tablice w języku C# są obiektami, co pozwala 
udostępniać użyteczne metody i właściwości

Deklaracja tablicy ma postać:

Mimo zwyczajnego wyglądu deklaracji, w programie 
rzeczywistości powstaje obiekt typu System.Array (lub 
pochodnego typu)

Tablice są jedynym typem kolekcji posiadającym 
wbudowaną obsługę w języku C#

typ[] nazwa_tablicy

background image

Tablice - przykład

Kod C#:

namespace PrzykladTablicy {

public class Samochod {

public Samochod (int Lp) {

this.Lp = Lp;
}

public override string ToString() {

return Lp.ToString();
}

private int Lp;
}

public class Tester {

static void Main() {

int[]

TablicaCalkowitych;

Samochod[] TablicaLp;
TablicaCalkowitych = 

new int[5]

;

TablicaLp = new Samochod[3];
for (int i = 0; i<TablicaLp.

Length

; i++) {

TablicaLp[i] = Samochod[i+5]

;

}

}

}

}

background image

Tablice - dalsze informacje

Do pracy z kolekcjami przygotowana została nowa 
instrukcja foreach, umożliwiająca kolejne użycie 
wszystkich elementów kolekcji

Składnia:

Możliwa jest inicjalizacja elementów tablicy w czasie 
tworzenia egzemplarza, co można uczynić przy pomocy 
dwojakiej składni, przykładowo:

foreach(typ nazwa_elementu in wyrazenie) instrukcja

int[] TablicaCalkowitych = new int[3] {2, 5, 9}
int[] TablicaCalkowitych = {2, 5, 9}

background image

Tablice wielowymiarowe (1)

Tablice prostokątne - mają przynajmniej dwa wymiary. 
Aby zadeklarować na przykład prostokątną tablicę
trójwymiarową, używamy składni

Możliwe jest jednoczesne zadeklarowanie i utworzenie 
egzemplarza tablicy trójwymiarowej:

Dopuszczalne jest także inicjalizowanie bezpośrednie 
elementów tablicy - na przykład dla tablicy o wymiarach 
2x4 miałoby to postać:

typ[ , , ] TablicaProstokatna3D

int[ , , ] TablicaProstokatna3D = new int[2,3,5];

int[,] TablicaProstokatna2D = { {1, 2, 3, 4}, {2, 3, 4, 5} };

background image

Tablice wielowymiarowe (2)

Tablice nieregularne - poszczególne rzędy nie muszą
być tej samej długości

Tworząc tablicę typu nieregularnego należy podać liczbę
rzędów każdej tablicy. Każda z tablic musi zostać
zadeklarowana

Do deklaracji tablicy tego typu służy składnia:

Przykładowo dostęp do czwartego elementu drugiego 
rzędu powyższej tablicy możemy uzyskać dzięki składni

typ[][] NazwaTablicy

NazwaTablicy[1][3]

background image

Podsumowanie

Przestrzenie nazw są ważnym elementem pracy 
programisty – umożliwiają ograniczenie zasięgu 
ważności nazwy

Podstawowym rodzajem kolekcji identycznych 
elementów jest tablica 

W języku C# wyróżniamy dwa rodzaje tablic 
wielowymiarowych – prostokątne i nieregularne