1 C# Typy danych: • Wartości (stos, pełne kopiowanie) o Logiczne o

Transkrypt

1 C# Typy danych: • Wartości (stos, pełne kopiowanie) o Logiczne o
C#
Typy danych:
 Wartości (stos, pełne kopiowanie)
o Logiczne
o Numeryczne
o Pełne egzemplarze struktur
 Referencje (sterta, kopiowanie referencji)
o Obiekty klas
o Tablice
o Ciągi znaków (string)
Konsola:
System.Console
 Read()
 ReadLine()
 Write(string) / Write(format, p1, p2,...)
 WriteLine(string) / WriteLine(format, p1,…)
 Console.CursorVisible = false;
 Console.ForegroundColor = ConsoleColor.Red;
 Console.BackgroundColor = ConsoleColor.White;
 Console.CursorLeft = X;
// od lewej
 Console.CursorTop = Y;
// od góry
 Console.SetCursorPosition( X, Y );
 Console.Clear();
 Console.Beep( 3000, 1000 ); // 3000 Hz, 1000 ms
 można
stosowad
znaki
formatujące
{K:Zs} lub {K,P:Zs}
o K numer pozycji
o Z znak formatujący
o P szerokośd pola
o s liczba cyfr po kropce
Deklaracja stałej: const typ nazwa = wartośd;
Do stałej dostęp: nazwaKlasy.nazwaStalej;
Typy implikowane: var nazwa = wartośd;
Tylko zmienne lokalne w funkcjach!
Rzutowanie:
 Automatyczne
o Rozszerzające (bez ostrzeżenia)
o Zawężające (błąd kompilacji)
 Wymuszone
o Możliwa błędna wartośd
Typy rozszerzone  np. double? Nazwa; - mogą byd
nullem.
Opakowanie - Rozpakowanie
long aaa = 1234567890 , bbb ;
object objLong = aaa ; // stos  sterta
bbb = (long) objLong ; // sterta  stos
Typy wyliczeniowe
enum Wyliczanka
{
Eme,
Due,
Fake = 10,
Drake
}
enum Maly : byte
{ mini , mikro }
Konwersja znakowo – binarna (kultura - ustawienia
narodowe)  SystemType.Parse(string)
bool SystemType.TryParse(string, out SystemType);
// int
// == 0
// == 1
// == 10
// == 11
klasa Convert
ToByte, ToSByte, ToChar, ToDecimal, ToDouble, ToSingle,
ToInt16, ToInt32, ToInt64, ToUInt16, ToUInt32, ToUInt64,
ToString
// byte
kultura (ustawienia narodowe)
 związana z każdym procesem obliczeniowym
(wątkiem)
 klasa CultureInfo
using System.Threading;
using System.Globalization;
CultureInfo ci = new CultureInfo("de-DE");
Thread.CurrentThread.CurrentCulture = ci;
string  typ referencyjny
 zawartośd łaocucha niezmienna
 dziedziczy z typu System.String
Metody:
Length, Concat, CompareTo, Copy, Insert, PadLeft,
PadRight, Remove, Replace, ToLower, ToUpper, Format
Operatory: = , + , == , != , [ ]
string Nap1 , Nap2 = "dobry napis" ;
Nap1 = Nap2 ;
// nowa referencja
Nap1 = Nap2.ToUpper( );
// nowy łaocuch
ConsoleKeyInfo znak;
znak = Console.ReadKey();
if(ConsoleKey.UpArrow.CompareTo(znak.Key) == 0) {...} //
Backspace, Home, End, Enter, Escape, Arrows, Fxx,
//klawiatura numeryczna, Play, Volume, ...
@ wyłącza przetwarzanie w stringach
1
int a1 = 2000000000;
a1 = a1 + 2000000000; // -294967296
a1 = checked ( a1 + 2000000000 ); // wyjątek
long l1 = 5000000000;
a1 = l1;
// błąd kompilacji
a1 = ( int ) l1;
// -294967296
a1 = checked ( ( int ) l1 );
// wyjątek
odczytywad tej wartości przed wewnętrznym ustaleniem
wartości p2 */
Modyfikatory dostępu (dla klas i dla składowych)
Struktury
· są zawsze wartościami (na stosie, kopiowanie)
· mogą zawierad interfejsy, funkcje składowe
i konstruktory z argumentami
· są zawsze zapieczętowane
· modyfikatory dostępu do pól
Klasy wieloplikowe (partial classes)
 ta sama przestrzeo nazw
 niekonfliktowe modyfikatory typu klasy ( nie trzeba
powtarzad )
 public private protected internal abstract sealed
 niekonfliktowa klasa bazowa i lista interfejsów ( nie
trzeba powtarzad )
Klasy statyczne :
 nie wolno tworzyd obiektu
 wszystkie składowe statyczne
Pakowanie i rozpakowanie
object Agent = Emeryt; // sterta, brak dostępu do pól
long kto = Agent.Pesel; // błąd
Osoba X_007 = ( Osoba ) Agent ; // stos, jest dostęp do pól
kto = X_007.Pesel;
// OK
Hermetyzacja
 składowe prywatne i funkcje dostępu ( jak C++ )
 właściwości
 właściwości automatyczne (3.0)
public int X { get; set; }
public int Y { get; set; }
// nazwy zmiennym nadaje kompilator
Dziedziczenie z System.Array
właściwości
Length, Range
funkcje
BinarySearch, Clear, Clone, CopyTo, GetLength,
GetLowerBound, GetUpperBound, GetValue, SetValue,
Reverse, Sort
Składowe tylko do odczytu
public readonly decimal Currency ;
public static readonly string AccType = "A1";
// nadawanie wartości tylko w deklaracji lub
// w konstruktorze klasy
Metody
·
tylko funkcje składowe klas
·
niepotrzebne deklaracje ( zapowiedzi )
·
modyfikatory argumentów
Przeciążanie operatorów:
public static int operator * (Line L1, int x)
{
return L1.Low * x;
}
//musi byd funkcja statyczna
Dziedziczenie:
- klasa może dziedziczyd tylko po jednej klasie
- klasa może dziedziczyd po wielu interfejsach
- składowe public są dziedziczone jako public
- składowe protected są dziedziczone jako private
- składowe private nie są dziedziczone
- klasy zapieczętowane (sealed): nie można po nich
dziedziczyd
wynik = F (a1 , out rezultat , ref zmiana);
/* nawet gdyby zmienna rezultat miała nadaną wartośd
przed wywołaniem F, to i tak w funkcji F nie wolno
2
Funkcje wirtualne:
- klasa nadrzędna: public virtual void funkcja();
- klasa dziedzicząca : public override void funkcja();
//przesłonienie funkcji
- klasa dziedzicząca: public new void funkcja();
//zadeklarowanie nowej funkcji w miejsce
dziedziczonej
- wywołanie funkcji wirtualnej z klasy bazowej:
base.funkcja();
[NonSerialized] – nad polem klasy = nieserializowane gdy
klasa zapisywana
Klasy kolekcji:
Klasa
Opis
ArrayList Tablica
dowolnych
obiektów
Funkcje abstrakcyjne:
- modyfikator abstrakt
- metody abstrakcyjne mogą byd deklarowanie
wyłącznie wewnątrz klas abstrakcyjnych, chociaż
klasy abstrakcyjne mogą zawierad również metody
nieabstrakcyjne
- nie ma ciała metody -> jest średnik
- nie można deklarowad metod abstrakcyjnych z
modyfikatorem wirtual
- metoda wirtualna może byd przykrywana przez
metody abstrakcyjne
Metody
Add,
BinarySearch,
Clear, Clone,
Contains,
CopyTo,
IndexOf,
Insert,
Remove,
Reverse, Sort
Enqueue,
Dequeue,
Peek,
Clear,
Contains
Push,
Pop,
Peek,
Clear,
Contains
Właściwości
Capacity,
Count
Add,
Clear,
ContainsKey,
ContainsValue,
GetByIndex,
IndexOfKey,
IndexOfValue,
Remove,
SetByIndex
Hashtable Tablica par Add,
Clear,
<klucz,
ContainsKey,
wartośd>,
ContainsValue,
kodowanie
Remove
mieszające
Capacity,
Count, Item
Queue
Kolejka FIFO
Stack
Stos LIFO
SortedList Lista
par
<klucz,
wartośd>
posortowana
Operacje na systemie plików:
- przestrzeo nazw Syste.IO
- informacje o plikach i katalogach:
o abstrakcyjna klasa bazowa FileSystemInfo
o klasy pochodne:
 DirectoryInfo – przetwarzanie
katalogów *Create(), Delete(),
GetFiles(),
GetDirectories(),
MoveTo()]
 FileInfo – przetwarzanie plików
[Create(),
Open(),
Delete(),
MoveTo(),
OpenRead(),
OpenWrite()]
o Parametry otwarcia pliku:
 FileMode: Append Create Open
OpenOrCreate Truncate
 FileAccess: Read ReadWrite Write
 FileShare: None Read ReadWrite
Write
o Wynikiem funkcji Open() jest referencja
obiektu klasy FileStream umożliwiającego
zapis/odczyt do/z pliku bez formatowania
(ciąg bajtów)
o Właściwości i funkcje klasy FileStream:
CanReed CanWrite CanSeek Length
Position Read() ReadByte() Write()
WriteByte() Seek () Flush() Close()
Count
Count
Capacity,
Count, Item
Generyki (wzorce klas kolekcji):
Generyk
Odpowiednik kolekcji
Dictionary <K, T>
Hashtable
List<T>
ArrayList
Queue<T>
Queue
SortedDictionary<K,T>
SortedList
Stack<T>
Stack
LinkedList<T>
--------------------------------Paczki z kolekcjami:
System.Collections, System.Collections.Generics,
System.Collections.Specialized
(z ostatniej są: OrderedDictionary, StringDictionary,
ListDictionary, HybridDictionary, NameValueCollection)
Serializacja = automatyczne zapisywanie/odczytywanie
obiektów klas do/z pliku
using System.Runtime.Serialization.
Formatters.Binary ;
using System.IO ;
[Serializable] – nad klasą = klasa serializowalna
Interfejsy:
 Określają operacje realizowane przez klasę lub jej
cechy charakterystyczne
 Nie można tworzyd instancji interfejsu
3










Nie mogą zawierad danych określających stan
obiektu ani metod nieabstrakcyjnych
Nie mogą dziedziczyd po klasie
Mogę dziedziczyd po wielu interfejsach
Klasa może dziedziczyd po wielu interfejsach, ale
tylko po co najwyżej 1 klasie
Klasa
dziedzicząca
po
interfejsie
musi
implementowad wszystkie metody zdefiniowane
przez interfejs (oraz interfejsy, które on
implementuje itd.)
Składowe interfejsu mogą byd jedynie metodami,
właściwościami, zdarzeniami i indeks erami
Wszystkie składowe interfejsu muszą byd public
(domyślnym modyfikatorem dostępu jest public)
Zgodnie z konwencją nazwa powinna zaczynad się
od I.
Zmienne reprezentujące interfejsy (referencje)
mogą byd parametrami metod
Interfejs jako typ może byd zwracany przez metodę
Kiedy używad delegata?
 Kiedy używany jest wzorzec zdarzeniowy
 Wywołujący metodę nie musi mied dostępu do
właściwości, metod i interfejsów w obiekcie
implementującym metodę
 Chcemy prostej kompozycji (?)
 Klasa może potrzebowad więcej niż jednej
implementacji metody
Obsługa wyjątków:
throw wyjatek; // obiekt dziedziczący z System.Exception
try {…}
catch (typWyjatku) {…}
…
catch {…} //wszystkie wyjątki
finally {…} //zawsze się wykona
Współbieżnośd:
 przestrzeo nazw System.Threading
 klasa Thread  tworzenie ścieżek i zarządzanie ich
wykonywaniem
 Thread job = new Thread( new ThreadStart(
ww.DoWork )); // delegacja ThreadStart
 job.Start(); job.Suspend(); job.Resume();
 Thread.Sleep(ms)
 synchronizacja
dostępu
do
obiektów
współużytkowanych
o lock (słowo kluczowe)
o System.Threading.Monitor
o System.Threading.Interlocked
Interfejsy standardowe:
ICollection
IDictionary
IDictionaryEnumerator
IHashCodeProvider IList IComparer
IEnumerable IEnumerator - przeglądanie kolekcji
IClonable - pełne kopiowanie
IComparable – sortowanie
Delegacje:
 Obiektowa wersja wskaźników funkcji i tablic
wskaźników funkcji
 Klasy pochodne System.MulticastDelegate
 Odpowiada za łączenie zdarzeo z odpowiednią
metodą lub metodami obsługującymi
 Zajście odpowiedniego zdarzenia powoduje
wywołanie
kolejno
wszystkich
metod
zarejestrowanych w delegacie. Jeśli metody te
miały coś zwracad, to delegat zwraca wartośd
zwróconą tylko przez ostatnią z metod.
Przestrzeo nazw (namespace):
 Łączy zdefiniowane typy (klasy i struktury)
 Gdy definicja klasy w kilku plikach należy
powtórzyd deklarację namespace
 Korzystanie z przestrzeni nazw w innej przestrzeni
 using przestzen;
Programowanie wizualne:
 metoda tworzenia programu za pomocą narzędzi
umożliwiających wybór standardowych elementów
z menu i automatyczną generację kodu źródłowego
Zdarzenia związane z myszą:
 MouseClick
MouseDoubleClick
MouseDown
MouseEnter MouseHover MouseMove MouseUp
MouseLeave
 Składowe klasy MouseEventArgs:
o Button (left, middle, right)
o Clicks (liczba naciśnięd)
o Delta (liczba obrotów rolki)
o X, Y (współrzędne w momencie kliknięcia)
Kiedy używad interfejsu?
 Istnieje grupa powiązanych metod, które mogą
zostad wywołane
 Klasa potrzebuje tylko jednej implementacji
metody
 Klasa korzystająca z interfejsu będzie rzutowała go
na inny interfejs lub klasę
 Implementowana metoda jest związana z typem
klasy (np. metody porównujące)
Obsługa klawiatury:
 KeyDown, KeyPress, KeyUp
4

Składowe klasy KeyEventArgs:
o Alt, Control, Shift, Modifiers, KeyCode,
KeyData, KeyValue
Urządzenia mobilne:
·
rodzaje urządzeo mobilnych
- telefony komórkowe, SmartPhone, iPhone
- Personal Digital Assistant ( palmtop )‫‏‬
- lokalizatory (GPS)‫‏‬
·
systemy operacyjne
- Windows : CE ; Mobile 2003, 5.0, 6.0
- PalmOS (Garnet OS)‫‏‬
- Symbian, EPOC (Psion)‫‏‬
·
zastosowania
- lokalizacja
- akwizycja
- pomiary
·
wyposażenie
- łącza komunikacyje
USB, GSM (GPRS), WiFi, IrDA, Bluetooth
- odbiornik GPS
- klawiatura
- aparat fotograficzny / kamera
- czytnik kodów kreskowych
Grupa 1zN RadioButtonów:
 aby uzyskad 1 z N należy najpierw umieścid
GroupBox, a potem wewnątrz same przyciski
 odczytanie stanu przycisku
Drag & Drop:
 źródło -> obsługa MouseDown
 cel -> obsługa DragEnter
 cel -> obsługa DragDrop
Timer:
 Interval, Tick, OnTick, Enabled, Start, Stop
ADO.NET:
 Przestrzeo nazw System.Data
 DataTable – tabela z danymi
 DataColumn – reprezentacja pojedynczej kolumny
tabeli DataTable
 DataRow – wiersz tabeli
 DataSet – zbiór tabel i powiązao (baza danych)
 DataGridView – kontrolka-grid na formatce
XmlTextReader/XmlTextWriter – wczytywanie/zapisywanie
pliku XML – nie można się cofad do już przetworzonych linii
XmlDocument:
 ChildNodes //węzły podrzędne I stopnia
 FirstChild // pierwszy węzeł podrzędny
 Name // nazwa węzła
 NodeType // typ węzła XmlNodeTypes
 Value // wartośd (test)
 Attributes // atrybuty
 InnerText //wartośd węzła i wszystkich węzłów
zagnieżdżonych
 InnerXml // XML : wszystkie zagnieżdżone
 OuterXml //XML : bieżący i wszystkie zagnieżdżone
GetElementByTagName - wyciąga z dokumentu XML listę
XmlNodeList z węzłami, których nazwa pokrywa się z
podanym argumentem
.NET Remoting:
 Serwer - udostępnia klasę (implementującą
interface'y z biblioteki)
 klient - pobiera klasę (implementującą interface'y z
biblioteki)
 biblioteka (serwer) - udostępnia interface’y dla
serwera i klienta
.NET Remoting - typy kanałów
- http: soap, binarny
- tcp: soap, binarny
- IPC: soap, binarny
5