Przestrzenie
nazw. Tablice
Przegląd zagadnień
Przestrzenie nazw
Tablice
Podsumowanie
Pytania sprawdzające
Laboratorium
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
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
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();
}
}
}
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
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
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
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]
;
}
}
}
}
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}
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} };
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]
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