Programowanie w środowiskach graficznych. Wykład 3 Język C#

Podobne dokumenty
Języki i metodyka programowania. Język C# pętle, sterowanie, wyjątki

Microsoft IT Academy kurs programowania

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Programowanie Komputerów

Programowanie Komputerów

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

MATERIAŁY DO ZAJĘĆ II

Programowanie obiektowe

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Programowanie aplikacji okienkowych Windows

Programowanie obiektowe

Platformy Programistyczne Podstawy języka Java

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Programowanie obiektowe i zdarzeniowe

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

KOTLIN. Język programowania dla Androida

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Klasy cd. Struktury Interfejsy Wyjątki

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

SWIFT. Zaawansowane Programowanie Obiektowe

Podstawy programowania skrót z wykładów:

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Wykład 4: Klasy i Metody

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Java Język programowania

C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Wykład 5 Okna MDI i SDI, dziedziczenie

Programowanie obiektowe

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Metodyka programowania. Podstawy C#

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Programowanie w Internecie. Java

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Wprowadzenie do języka Java

Język C++ Różnice między C a C++

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

C# - innowacja czy plagiat?

Programowanie obiektowe

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Plan wykładu. Tworzenie programów dla platformy.net. Predefiniowane typy C# Pierwszy program. Typy wartości i typy referencyjne

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Wykład 2 Składnia języka C# (cz. 1)

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Programowanie obiektowe

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Wykład 8: klasy cz. 4

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Wykład 3 Składnia języka C# (cz. 2)

PARADYGMATY PROGRAMOWANIA Wykład 4

Dziedziczenie. dr Jarosław Skaruz

Opis zagadnieo 1-3. Iteracja, rekurencja i ich realizacja

Podstawowe części projektu w Javie

Programowanie obiektowe

Programowanie obiektowe

Klasy abstrakcyjne i interfejsy

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

TEMAT : KLASY DZIEDZICZENIE

Wykład 7: Pakiety i Interfejsy

Enkapsulacja, dziedziczenie, polimorfizm

Materiały do zajęć VII

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Podstawy Programowania Obiektowego

Czym jest stos i sterta?

Rozdział 4 KLASY, OBIEKTY, METODY

Podstawy programowania w języku C++

Operatory cd. Relacyjne: ==!= < > <= >= bool b; int i =10, j =20; dzielenie całkowitych wynik jest całkowity! Łączenie tekstu: + string s = "Ala ma ";

Kurs WWW. Paweł Rajba.

Wykład 5: Więcej o Klasach i Metodach

Tworzenie aplikacji w języku Java

Wstęp do programowania

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Programowanie obiektowe

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Kiedy potrzebne. Struktura (rekord) Struktura w języku C# Tablice struktur. struktura, kolekcja

Programowanie 2. Język C++. Wykład 3.

Akademia ETI. Wprowadzenie do programowania w Javie PG Java User Group Przemysław Kulesza

Programowanie obiektowe

Multimedia JAVA. Historia

Programowanie C# mgr in. Dariusz Ku. p. 119A

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

dr inż. Piotr Czapiewski Tworzenie aplikacji w języku Java Laboratorium 1

Metody Metody, parametry, zwracanie wartości

Dokumentacja do API Javy.

Wprowadzenie do Objective-C

Podstawy programowania obiektowego

Programowanie obiektowe

Co to jest klasa? Z programistycznego punktu widzenia klasa stanowi typ danych, który odwzorowuje wspólne cechy jakiegoś obiektu.

Typy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura

Transkrypt:

Programowanie w środowiskach graficznych Wykład 3 Język C# 1

Zagadnienia 1. Wprowadzenie 2. Przestrzenie nazw 3. Typy, parametry, konwersje 4. Klasy 5. Instrukcje sterujące 6. Właściwości 7. Interfejsy, operatory is i as 8. Wyjątki 9. Delegaty 10. Typy generyczne 11. Metody anonimowe 12. Typ dzielony 13. Typ nullable 2

Wprowadzenie Język zorientowany obiektowo, powstały na bazie C++ Powstał około 2000 na zlecenie Microsoftu, jako część.net Jest jednym z języków CLI (Common Language Infrastructure). CLI ma na celu łatwą wymianę i współdziałanie kodu pisanego w różnych językach (C#, Visual Basic, J#) na różne platformy. 3

CLI 4

Klasy Definicja klasy jest połączona z deklaracją nie ma osobnych plików.h/.cpp, jak w przypadku C++ Przykładowa klasa: public class HelloWorld public static void Main() System.Console.WriteLine( Hello world ); 5

Klasy modyfikatory dostępu Modyfikatory występują przed deklaracjami klas, metod, atrybutów. public brak ograniczeń private dostęp tylko z wewnątrz klasy protected dostęp z wewnątrz klasy oraz z klas dziedziczących internal dostęp z klas z tego samego pakietu protected internal = protected OR internal 6

Klasy z atrybutem sealed Jeżeli deklaracja klasy zawiera atrybut sealed, to nie jest możliwe jej dziedziczenie sealed public class MojaKlasa 7

Tworzenie obiektów Tak samo jak w Java (lub obiekty dynamiczne w C++) Button b = new Button(); 8

Klasa object Korzeń struktury dziedziczenia Wszystkie klasy dziedziczą po object Zamiana na object może być niejawna, lecz w drugą stronę wymagane jest jawne rzutowanie int i = 10; object obj = i; int j = (int) obj; 9

Konwersje między typami niejawne (dopuszczalne, gdy nie ma straty) short x = 5; int y = x; // int ma 32 bity, a short 16, wiec ok jawne (wymagane przy możliwości straty) int x = 500; short y = (short) x; // jawna konwersja wymagana 10

Przestrzenie nazw (namespace) Zapobiegają występowaniu konfliktów w nazwach klas Grupują klasy o podobnym zastosowaniu Separatorem jest. (znak kropki) System.Console.WriteLine( Hello ); 11

Przestrzenie nazw (namespace) Zapobiegają występowaniu konfliktów w nazwach klas Grupują klasy o podobnym zastosowaniu Separatorem jest. (znak kropki) System.Console.WriteLine( Hello ); namespace klasa metoda

Przestrzenie nazw (namespace) Zapobiegają występowaniu konfliktów w nazwach klas Grupują klasy o podobnym zastosowaniu Separatorem jest. (znak kropki) System.Windows.Forms.Button b = new System.Windows.Forms.Button(); 13

Przestrzenie nazw (namespace) Zapobiegają występowaniu konfliktów w nazwach klas Grupują klasy o podobnym zastosowaniu Separatorem jest. (znak kropki) System.Windows.Forms.Button b = new System.Windows.Forms.Button(); n.space n.space n.space klasa n.space n.space n.space konstruktor 14

namespace - deklarowanie namespace Nazwa namespace NazwaWewnetrzna class PrzykladowaKlasa Odwołanie z zewnątrz: Nazwa.NazwaWewnetrzna.PrzykladowaKlasa 15

Słowo kluczowe using using System; Console.WriteLine( Witamy w.net ); UWAGA! Po using nie podajemy nazwy klasy, tylko namespace using System.Console; WriteLine( Witamy.NET ); 16

System typów Wspólny system typów.net (Common Type System) dane łatwo przekazywać między różnymi językami programowania z CLI Typy definiowane przez użytkownika Typy wyliczeniowe Struktury Klasy 17

Typy proste i typy referencyjne Typy proste Typy referencyjne Pamiętają bezpośrednio dane Każdy zawiera oddzielną kopię danych Operacje na jednej zmiennej nie mają wpływu na inne zmienne Pamiętają referencję na pamiętane dane Dwie zmienne mogą wskazywać na tą samą daną Operacje na jednej zmiennej mogą mieć wpływ na inne zmienne Referencja wskaźnik o ograniczonych możliwościach 18

Typy proste wbudowane 8-bitowe: 16-bitowe: 32-bitowe: 64-bitowe: byte, char, sbyte short, ushort int, uint, float double, decimal, long, ulong CTS Common Type System (standaryzowane typy.net): int z C# odpowiada System.Int32 z CTS.NETa long z C# odpowiada System.Int64 z CTS.NETa itp. 19

Typy wyliczeniowe Definiowanie enum KolorCzerwony,Zielony,Niebieski=14; Sposób użycia Kolor k1 = Kolor.Czerwony; Korzyści: Percepcja: mamy sensowne słowa zamiast liczb Większe bezpieczeństwo: kompilator kontroluje czy używane wartości są z dozwolonego zakresu Elastyczność: możemy przypisywać etykietom liczby w dowolny sposób, konwertować liczby na etykiety i na odwrót 20

Struktury definiowanie struct Osoba public string Imie, Nazwisko; public int Wiek; sposób użycia Osoba pracownik; pracownik.imie = "Jan"; pracownik.wiek = 30; 21

Przekazywanie parametrów 1/2 Przez wartość przekazywane są typy wbudowane oraz wyliczeniowe i struktury Pozostałe typy przekazywane są przez referencję. 22

Przekazywanie parametrów (2/2) Typ podstawowy można też przekazywać przez referencję wykorzystując słówko pomocnicze ref public void Inkrementuj(ref int liczba) liczba++; W wywołaniu metody także należy użyć ref: Inkrementuj(ref liczba); 23

Dziedziczenie class rodzic virtual public void dajkasę()... class dziecko : rodzic override public void dajkasę()... NIE jest dopuszczalne dziedziczenie wielokrotne Zostało zastąpione poprzez implementację interfejsów (jak w języku Java) 24

if else Identyczna składnia, jak w C++ / Java Warunek musi być typu bool (nie może być int, jak w C++) Unikamy więc błędów typu: if (zmienna = 5) 25

switch (1/2) Nie jest dopuszczalny automatyczny przeskok do kolejnego przypadku: case 0: ZrobCos(); break; case 1: Bez break program się nie skompiluje poza sytuacją, gdy case jest pusty : case 0: case 1: ZrobCos(); 26

switch (2/2) Skok do innego przypadku musi być jawny case 0: ZrobCos(); goto case 1; case 1: Wyrażenie może być stringiem (w C++ wymagany był int) switch (nazwisko) case Kowalski : ZrobCos(); break; case Nowak : ZrobCosInnego(); break; 27

while, do-while jak w C++ while (i < 10) Console.WriteLine( Wartość 0, i); do Console.WriteLine( Wartość 0, i); while (i < 10); 28

Pętla for Zmienne zadeklarowane w pętli for sa widoczne jedynie wewnątrz pętli (tak jak w Javie; w C++ zależało to od wersji języka) for (int i=5, j=12; i<20; i++) 29

foreach foreach (string nazwa in wszystkienazwy) Console.WriteLine(nazwa); wszystkienazwy musi realizować interfejs IEnumerable, np. kolekcje, 30

Zmienna liczba parametrów metody params pozwala tworzyć metody ze zmienną liczbą argumentów, iterujemy po tym za pomocą foreach public int Sumuj(params int[] skladniki) int suma = 0; foreach (int skladnik in skladniki) suma += skladnik; return suma; Sumuj (1, 2, 3, 4); // 10 Sumuj (5, 6); // 11 Sumuj (); // 0 31

Settery i gettery w C# to słowa kluczowe class Test Użycie: Test pom=new Test(); private int liczba; pom.liczba=1; // wywoła się set public int Liczba int x =pom.liczba; // wywoła się get get return liczba; set liczba = value; // value to alias do podstawianej wartości if (liczba < 0) liczba = 0; // minimalna sensowna liczba to 0! CELE: wykrywanie błędnych wartości, prosta aktualizacja innych zmiennych. Zmienną liczba można też używać bezpośrednio (raczej niewskazane). 32

Implementacja interfejsów interface ITestable bool TestMe(); public class MojaKlasa : ITestable bool TestMe() 33

Operator is is służy do sprawdzenia, czy obiekt można rzutować na wybrany typ bez rzucania wyjątków object o = new MojaKlasa(); if (o is MojaKlasa) ((MojaKlasa)o).Zagraj(); //rzutujemy i używamy Możemy też sprawdzać, czy obiekt implementuje wybrany interfejs: if (obiekt is ITestable) 34

Operator as Łączy is z rzutowaniem. Jeśli typ się nie zgadza, zwraca null. protected void clicked(object sender, EventArgs e) Button b = sender as Button; if (b!= null) Console.WriteLine( Naciśnięto przycisk + b.text); 35

Kolekcje ArrayList Queue Stack Dictionary Hashtable tablica kolejka stos struktura słownikowa (łączy klucz-wartość) tablica haszująca 36

37

38

39