Programowanie Obiektowe – Wykład 1 dr Piotr Jastrzębski Wydział Matematyki i Informatyki
Sprawy administracyjne i organizacyjne Sylabus dostępny jest w systemie USOS: https://usosweb.uwm.edu.pl Regulamin zajęć (wykładu i ćwiczeń): http://wmii.uwm.edu.pl/~piojas/ Zakładka: Dydaktyka - Programowanie Obiektowe - zaoczne
Język C# Wymowa C-sharp (dosłownie cis). Stworzony w 2000 roku przez Andersa Hejlsberga dla Microsoftu. Aktualna wersja stabilna - 6.0. Na ćwiczeniach będziemy używać środowiska Visual Studio.
Zmienne Deklaracja zmiennych typ_zmiennej nazwa_zmiennej; Typy zmiennych: logiczne: bool. całkowitoliczbowe: sbyte, byte, char, short, ushort, int, uint, long, ulong. zmiennoprzecinkowe: float, double, decimal. łańcuchowe: string.
Tablice jednowymiarowa typ[] nazwa = new typ[rozmiar]; lub typ[] nazwa = {Lista inicjalizacyjna}; dwuwymiarowa typ[,] nazwa = new typ[rozmiar]; typ[,] nazwa = {Lista inicjalizacyjna};
Operatory arytmetyczne Wykonywane działanie + Dodawanie - Odejmowanie * Mnożenie / Dzielenie % Dzielenie modulo (reszta z dzielenia) ++ Inkrementacja (zwiększanie) -- Dekrementacja (zmniejszanie)
Operatory przypisania Argument1 Operator Argument2 Znaczenie x = y x = y += x = x + y -= x = x - y *= x = x * y /= x = x / y %= x = x % y
Operatory logiczne Operator Znaczenie ! Negacja && Koniunkcja || Alternatywa
Operatory relacji Operator Opis == równa się != różne (nie równa się) < <= mniejsze, mniejsze lub równe > >= większe, większe lub równe
Instrukcje warunkowe - if if (wyrażenie logiczne) instrukcja; instrukcja1; else instrukcja2;
Instrukcje warunkowe – operator () ? (wyrażenie logiczne) ? wyrażenie1 : wyrażenie2;
Instrukcje warunkowe – swith … case switch (x) { case 1: instrukcja1; break; case 2: instrukcja2; default: instrukcja3; }
Instrukcje iteracyjne (pętle) - for for (inicjalizacja; warunek; iteracja) { instrukcja; }
Instrukcje iteracyjne (pętle) - while while (wyrażenie warunkowe) { instrukcja; }
Instrukcje iteracyjne (pętle) - do while do { instrukcja; } while (warunek);
Instrukcje iteracyjne (pętle) - foreach foreach(typ indentyfikator in wyrażenie) { instrukcja; }
Paradygmat obiektowy - po co? Jeśli chcemy zbudować 5 identycznych domów, nie potrzeba nam 5 projektów. Jeśli chcemy wyprodukować 4 samochody, nie potrzebujemy oddzielnych projektów. Programowanie obiektowe stara się pogrupować podobne „byty” na pewnym poziomie abstrakcji.
Programowanie strukturalne a obiektowe Programowanie strukturalne dzieli kod na części, moduły, wykorzystuje sekwencje, iteracje, funkcje. Programowanie obiektowe wprowadza pojęcie obiektu, w którym dane i procedury są ze sobą ściśle powiązane.
Przykład Chcemy napisać program wyliczający wartość rynkową domu w zależności od ilości pokoi, posiadania garażu, ogrodu, ilości pięter, powierzchni, itp…
Pierwsza klasa - Dom Na pewnym poziomie abstrakcji opisuje kawałek rzeczywistości. Zawiera dane opisujące możliwe stany. Zawiera metody opisujące możliwe zachowania. Możemy ją zastosować do wielu budynków.
Pierwszy obiekt - domBasi Konkretny byt. Ma konkretne własności.
public class Dom { public int powierzchnia; public bool garaz; public int iloscPokoi; public bool ogrod; public int iloscPieter; public int podajCene() { return powierzchnia*3000; } }
Dom domBasi = new Dom(); domBasi. powierzchnia = 200; domBasi Dom domBasi = new Dom(); domBasi.powierzchnia = 200; domBasi.garaz = true; domBasi.iloscPokoi = 7; domBasi.ogrod = false; domBasi.iloscPieter = 1; Console.WriteLine(„Dom jest warty {0},domBasi.podajCene());
Po co? Zmniejszenie luki reprezentacji. Ułatwia podział pracy i współpracę między programistami. Lepsze grupowanie, czytelność kodu.