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