Łukasz Bieszczad Mateusz Gałązka Karol Włodarek

Slides:



Advertisements
Podobne prezentacje
Funkcje w PHP ABK.
Advertisements

C++ wykład 2 ( ) Klasy i obiekty.
C++ wykład 4 ( ) Przeciążanie operatorów.
Język C/C++ Funkcje.
Programowanie obiektowe
Programowanie obiektowe
Standardowa biblioteka języka C++
Programowanie obiektowe
Wzorce.
Prowadzący: mgr inż. Elżbieta Majka
Static, const, volatile.
Generics w .NET 2.0 Łukasz Rzeszot.
PROGRAMOWANIE STRUKTURALNE
Visual Studio Codename „Orcas”, LINQ
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Struktury.
Dziedziczenie i jego rodzaje
C++ wykład 2 ( ) Klasy i obiekty.
Zasady zaliczenia Warunki uzyskania zaliczenia:
Tablice jednowymiarowe 1
Modele baz danych - spojrzenie na poziom fizyczny
Podstawy programowania
Jakub Wołczko W obiektowym świecie… Jakub Wołczko
Programowanie obiektowe III rok EiT
Java – coś na temat Klas Piotr Rosik
Dziedziczenie Maciek Mięczakowski
Inicjalizacja i sprzątanie
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
Programowanie obiektowe – język C++
Programowanie obiektowe 2013/2014
Komendy SQL do pracy z tabelami i bazami
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
Prasek Aneta, Skiba Katarzyna. Funkcje stałe const to takie funkcje, które nie mogą modyfikować stanu obiektu. Oznacza to, że funkcja stała nie może zmieniać.
Programowanie w języku C++
Aplikacje internetowe
Programowanie zaawansowane
Programowanie strukturalne i obiektowe C++
Model obiektowy bazy danych
Kurs języka C++ – wykład 4 ( )
Programowanie obiektowe Wykład 9 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/15 Dariusz Wardowski.
Programowanie zaawansowane Zaawansowane konstrukcje języka C#
Waldemar Bartyna Pytania egzaminacyjne 1.
Waldemar Bartyna 1 Programowanie zaawansowane LINQ to XML.
.NET i Bazy Danych Projekt: Wadim Grasza.
Obiekty COM Przemysław Buczkowski. Plan prezentacji 1.Wprowadzenie do COM 2.Historia standardu 3.Jak działa COM 4.Interface IUknown 5.Paradygmaty COM.
Programowanie Zaawansowane
Programowanie zaawansowane
Tryby adresowania i formaty rozkazów mikroprocesora
Waldemar Bartyna Pytania egzaminacyjne 1.
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
Zarządzanie stanem w aplikacjach ASP.NET Elżbieta Mrówka-Matejewska
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
Testy jednostkowe. „Test jednostkowy (unit test) to fragment kodu, który sprawdza inny fragment kodu”
Oprogramowanie w eksperymentach fizyki Wykład 3, Paweł Staszel.
Programowanie Obiektowe – Wykład 6
Typy wyliczeniowe, kolekcje
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
(według:
Delegaty Delegat to obiekt „wiedzący”, jak wywołać metodę.
Programowanie Obiektowe – Wykład 2
Aplikacje i usługi internetowe
PGO Interfejsy Michail Mokkas.
Haskell Składnia funkcji.
PGO Dziedziczenie Michail Mokkas.
PGO Przeciążanie metod i konstruktorów
Modele baz danych - spojrzenie na poziom fizyczny
Zapis prezentacji:

Łukasz Bieszczad Mateusz Gałązka Karol Włodarek Delegaty i LINQ Łukasz Bieszczad Mateusz Gałązka Karol Włodarek

Co to są delegaty? Delegaty – silnie typowane wskaźniki do metod. Jest jednym z 5 głównych typów. Do utworzonego obiektu delegata można przypisać dowolną metodę mającą zgodne z delegatem typu parametrów i typ zwracanej wartości. Zalety: Delegaty są jak wskaźniki do funkcji w C++, ale są bezpieczniejsze ze względu na kontrolę typu. Delegaty umożliwiają przekazywanie metod jako parametry. Delegatów można używać do definiowania metod wywoływania zwrotnego. Delegaty można łączyć w łańcuch; na przykład w jednym zdarzeniu można wywołać wiele metod. Metody nie muszą dokładnie pasować do typu delegata. Kowariancja pozwala na przekazywanie do delegata metod, których typ zwracanej wartości nie jest identyczny z sygnaturą delegata, ale jest potomnym w stosunku do zwracanego typu zdefiniowanego w tym delegacie. K

Co to są zdarzenia? Zdarzenia upraszczają korzystanie z delegatów. Zdefiniowany za pomocą słówka kluczowego event obiekt delegata jest automatycznie wyposażony w mechanizm do rejestrowania i wyrejestrowywania metod (operatory += i -=), które dany obiekt ma przechowywać. Dodatkowo, zdarzenia nie można wywołać poza klasą, w której zostało zdefiniowane. W przypadku, gdy nie korzystamy ze słówka event, sami musimy zapewnić bezpieczeństwo obiektu delegata (zdefiniować go jako prywatną składową i zdefiniować publiczne metody d dodawania i usuwania metod do danego obiektu delegata). M

Co to są metody anonimowe? Metoda anonimowa to metoda, której dziwactwo polega na tym, że nie posiada swojej nazwy (dlatego jest „anonimowa”). Jednak nie możemy tego uważać za powód do dyskryminacji, bowiem oprócz braku przydomka jest całkiem normalna, tzn. może przyjmować argumenty i ma swoje ciało w którym możliwe jest zwrócenie wartości. Używana jest np. gdy będzie użyta tylko raz TypDelegacji obiektDelegacji = delegate(int x) { Console.WriteLine("Wywołano metode anonimową"); return(x*x); }; Console.Writeln(obiektDelegacji(2)); Ł

Co to są wyrażenia lambda? Wyrażenie lambda to funkcja anonimowa służąca do tworzenia typów delegatów. Za pomocą wyrażenia lambda można pisać funkcje lokalne, które mogą być przekazywane jako argumenty lub zwracane jako wartość wywołania funkcji. Wyrażenie lambda zawiera tylko dwa elementy: listę parametrów oraz ciało metody. Wyrażenia Lambda nie określają swojej nazwy. Wyrażenie lambda nie definiuje też zwrotnego parametru. Jednak jakiś parametr może być zwracany jeśli wynika to z zawartości jej ciała. Typ parametru jest wnioskowany z kontekstu wyrażenia. K

Na czym polega kowariancja i kontrkowariancja? Kowariancja pozwala na przekazywanie do delegata metod, których typ zwracanej wartości nie jest identyczny z sygnaturą delegata, ale jest potomnym w stosunku do zawracanego typu zdefiniowane w tym delegacie. Kontrkowariancja działa na podobnej zasadzie, z tym że dotyczy ona argumentów metod przekazywanych do delegata. M

Z jakich standardowych delegatów korzystałeś? EventHandler np. w aplikacjach okienkowych Zwraca void, przyjmuje object i EventArgs Predicate: np. w kolekcjach gen. Zwraca boolean, przyjmuje parametr typu gen. Func: np. w zapytanie LINQ Zwraca obiekt typu gen., przyjmuję obiekty typu gen. Ł

Do czego wykorzystywane są delegaty w zapytaniach LINQ i aplikacjach okienkowych?

Co to jest LINQ? Technologia LINQ jest próbą zapewnienia spójnego, i uniwersalnego sposobu, w który programiści mogliby pozyskiwać i manipulować danymi, w szerokim tego słowa znaczeniu. Dzięki niemu można tworzyć bezpośrednio w języku programowania C# konstrukcje zwane wyrażeniami zapytania. M

Co mają wspólnego z LINQ metody rozszerzeniowe? Metody rozszerzeniowe pozwalają na dodanie nowej funkcjonalności do wcześniej zdefiniowanych i skomplikowanych typów. Zapytanie LINQ może być użyte do przechodzenia po elementach kontenerów implementujących generyczny interfejs IEnumerable<T>. System.Array tego interfejsu nie implementuje. System.Array zyskuje funkcjonalność poprzez metody rozszerzeniowe zdefiniowane w statycznej klasie System.Linq.Enumerable. System.Enumerable rozszerza funkcjonalność nie tylko typu tablicowego. Metody rozszerzeniowe muszą być definiowane w klasach statycznych, więc każda metoda rozszerzeniowa musi być statyczna. Metody rozszerzające są oznaczone jako takie poprzez użycie słowa this jako modyfikatora pierwszego parametru danej metody. Każda metoda rozszerzeniowa może być wywołana z aktualnej instancji typu w pamięci lub statycznie, poprzez definiującą ją klasę statyczną. Ł

Na czym polega natychmiastowe i odroczone wykonanie zapytań?

Na jakich obiektach może działać LINQ? Termin LINQ jest używany do opisania ogólnego podejścia do dostępu do danych. Istnieją 4 implementacje tej technologii: - LINQ to Objects – to LINQ dla obiektów implementujących interfejs IEnumerable<T> - LINQ to SQL – dla relacyjnych baz danych - LINQ to DataSet – nadzbiór LINQ to SQL - LINQ to XML – dla dokumentów XML. M

Jak dostosować kolekcje niegeneryczne do LINQ? Operatory zapytań LINQ działają na typach implementujących interfejs IEnumerable<T> (bezpośrednio lub pośrednio poprzez metody rozszerzeniowe). W odróżnieniu od typu System.Array dla kolekcji niegenerycznych nie zdefiniowano odpowiednich metod rozszerzeniowych. Można realizować zapytania na kolekcjach niegenerycznych poprzez metodę OfType<T>() zdefiniowanej w klasie Enumerable. Wywołując tę metodę dla kolekcji niegenerycznej implementującej interfejs IEnumerable(takiej jak ArrayList), podajemy typ elementów zawartych w kontenerze w celu uzyskania obiektu kompatybilnego z interfejsem IEnumerable<T>. Kolekcje generyczne są prototypowane do operowania na obiektach typu System.Object, co oznacza że mogą przechowywać kilka różnych typów. Metoda OfType<T>() pozwala na pobranie z kolekcji obiektów wskazanego typu. Ł

Jak definiuje się zapytania LINQ? operatorów zapytania , wywołania metod LINQ w wersji instancyjnej (po kropce) i wyrażeń lambda jako parametrami tych metod, wywołania metod LINQ w wersji rozszerzeniowej i wyrażeń lambda jako parametrami tych metod, wywołania metod LINQ w wersji instancyjnej (po kropce) i metodami anonimowymi jako parametrami tych metod, wywołania metod LINQ w wersji instancyjnej (po kropce) , których parametrami będą jawnie zdefiniowane metody (zgodne z odpowiednimi delegatami), nie korzystając z LINQ. K

Dziękujemy za uwagę!