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