Zestaw pytań nr. 3 Typy generyczne Wyjątki OPRACOWALI: JAKUB GRYCZEWSKIKINGA ROSA DANIEL KAPTEJNYWOJCIECH ŁĘCZYCKI 2015-06-03 1.

Slides:



Advertisements
Podobne prezentacje
C++ wykład 2 ( ) Klasy i obiekty.
Advertisements

C++ wykład 4 ( ) Przeciążanie operatorów.
Język C/C++ Funkcje.
C++ wykład 7 ( ) Wyjątki.
Programowanie obiektowe
Wzorce.
Prowadzący: mgr inż. Elżbieta Majka
Generics w .NET 2.0 Łukasz Rzeszot.
PROGRAMOWANIE STRUKTURALNE
Bartosz Walter Inżynieria oprogramowania Lecture XXX JavaTM – część II Bartosz Walter
Struktury.
Tablice.
Dziedziczenie i jego rodzaje
C++ wykład 2 ( ) Klasy i obiekty.
C++ wykład 7 ( ) Wyjątki. Ogólne spojrzenie na wyjątki Wyjątki zaprojektowano do wspierania obsługi błędów. System wyjątków dotyczy zdarzeń synchronicznych.
Pakiety i ATD 1 Definicja. Pakietem albo jednostką programową nazywamy grupę logicznie powiązanych elementów, które mogą być typami, podtypami, obiektami.
Typy prywatne 1 Typy prywatne W Adzie typy prywatne (private types) służą do bezpiecznego udostępniania danych zdefiniowanych w pakiecie, z którego korzysta.
Projektowanie i programowanie obiektowe II - Wykład IV
Semafory według normy POSIX
Techniki i języki programowania
Podstawy programowania II
Programowanie urządzeń mobilnych – wykład IV
Java 3 MPDI Programowanie obiektowe W7. import java.io.*; public class X { // kontrukcja throws – określenie jakie wyjątki może dana metoda // sygnalizować
Andrzej Repak Nr albumu
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.
C# Cz.7 Refleksja, Atrybuty
Warsztaty C# Część 6 Grzegorz Piotrowski Grupa .NET PO
Programowanie obiektowe 2013/2014
Kurs języka C++ – wykład 9 ( )
Programowanie w języku C++
Bariery synchronizacyjne Bariery są obiektami synchronizacyjnymi pakietu pthread służącymi do wyrównywania czasów pracy wątków wykonujących wspólne zadanie.
K URS JĘZYKA C++ – WYKŁAD 7 ( ) Wyjątki.
Programowanie strukturalne i obiektowe C++
Model obiektowy bazy danych
Waldemar Bartyna 1 Programowanie zaawansowane Strukturalna obsługa wyjątków.
Programowanie zaawansowane Kolekcje i typy generyczne
Kurs języka C++ – wykład 4 ( )
Technologie internetowe Wykład 7 Kontrola danych użytkownika.
Programowanie zaawansowane Zaawansowane konstrukcje języka C#
Waldemar Bartyna Pytania egzaminacyjne 1.
Wyjątki. Po co nam wyjątki? Często pisząc jakiś kod staramy się go uczynić uniwersalnym, jesteśmy w stanie wykryć sytuacje niepoprawne, ale nasz kod może.
Waldemar Bartyna 1 Programowanie zaawansowane LINQ to XML.
Platforma .Net.
Łukasz Bieszczad Mateusz Gałązka Karol Włodarek
Programowanie Zaawansowane
PO13-1 / 19 Wykład 13 Wyjątki i ich zgłaszanie Wyłapywanie wyjątków Obsługa wyjątków Wykorzystanie polimorfizmu Filtrowanie wyjątków Błędy w konstruktorach.
Waldemar Bartyna Pytania egzaminacyjne 1.
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
Podstawy informatyki Mechanizm obsługi sytuacji wyjątkowych Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu.
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
Temat: Tworzenie bazy danych
Programowanie Obiektowe – Wykład 6
Dzisiejsze zajęcia będą wyjątkowe…
Strumienie, Wczytywanie, Zapisywanie, Operacje na plikach
Typy wyliczeniowe, kolekcje
Kurs języka C++ – wykład 3 ( )
Programowanie Obiektowe – Wykład 5
(według:
Delegaty Delegat to obiekt „wiedzący”, jak wywołać metodę.
Programowanie Obiektowe – Wykład 2
PGO Interfejsy Michail Mokkas.
Haskell Składnia funkcji.
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
PGO - Projektowanie i implementacja pierwszych klas
PGO Dziedziczenie Michail Mokkas.
Zapis prezentacji:

Zestaw pytań nr. 3 Typy generyczne Wyjątki OPRACOWALI: JAKUB GRYCZEWSKIKINGA ROSA DANIEL KAPTEJNYWOJCIECH ŁĘCZYCKI

1. Co to jest klasa System.Object i jakie posiada składowe? Klasa Object definiuje zbiór składowych wspólny dla wszystkich języków platformy.NET. Jest to klasa nadrzędna, jeżeli zdefiniujemy klasę nie podając jawnie jej klasy bazowej, kompilator automatycznie traktuje ją jako pochodną klasy Object. Składowe klasy System.Object:  Metoda wirtualna Equals(object o)  Domyślnie zwraca wartość true gdy porównywane elementy odnoszą się do tego samego miejsca w pamięci (czy odnoszą się do tej samej instancji klasy)  Zazwyczaj jest przesłaniania tak, aby zwracała wartość true, gdy porównywane elementy mają takie same wartości stanów  Metoda wirtualna GetHashCode()  Zwraca wartość int, która identyfikuje daną instancje klasy Object  Metoda GetType()  Zwraca obiekt klasy Type, który szczegółowo opisuje wskazany obiekt

1. Co to jest klasa System.Object i jakie posiada składowe?  Metoda wirtualna Finalize()  Wykonywana w celu zwolnienia wszystkich zaalokowanych zasobów przed zniszczeniem obiektu  Metoda wirtualna ToString()  Zwraca wartość typu string reprezentującą dany obiekt (domyślnie zwraca przestrzeń_nazw.nazwa_typu)  Zazwyczaj jest przesłaniana przez klasy pochodne, które zwracają w ten sposób łańcuch znaków opisujących ten obiekt  Metoda MemberwiseClone()  Zwraca klon obiektu (kopiowana jest każda jego składowa)  Metoda statyczna Equals(object oA, object oB)  Służy do porównywania stanów obiektów  Metoda statyczna ReferenceEquals(object oA, object oB)  Służy do porównywania referencji

2. Co to są wyjątki? Wyjątek to zbiór informacji o błędzie. Wyjątek reprezentowany jest przez klasę System.Exception (lub klasę dziedziczącą po niej) Wiele właściwości jest tylko do odczytu. Podczas tworzenia klas pochodnych wielu z tych właściwości nadawane są wartości domyślne. Składowe klasy System.Exception:  Właściwość Data  Kolekcja par kluczy i wartości, która dostarcza dodatkowe (zdefiniowane przez programistę) informację o błędzie. Domyślnie jest pusta

2. Co to są wyjątki?  Właściwość HelpLink  Zawiera link do pliku z pomocą  Właściwość InnerException  Przechowuje informacje o wyjątkach które wystąpiły podczas obsługi danego wyjątku. Tylko do odczytu, ustawiana jako parametr konstruktora  Właściwość Message  Zawiera opis zainstaniałego błędu. Tylko do odczytu, ustawiana jako parametr konstruktora  Właściwość Source  Zawiera nazwę pakietu który zgłosił dany wyjątek

2. Co to są wyjątki?  Właściwość StackTrace  Zawiera opis sekwencji wywołań które spowodowały dany wyjątek. Tylko do odczytu  Właściwość TargetSite  Zawiera obiekt typu MethodBase, który zawiera szczegółowe informacje dotyczące metody która dany wyjątek wyrzuciła

3. Na czym polega obsługa wyjątków Z obsługą wyjątków wiąże się z wykorzystaniem czterech elementów:  Klasy która zawiera informację o wyjątku  Składowej która wyrzuca instancję danej klasy wyjątku do wywołującego  Newralgicznego bloku kody po stronie wywołującego w którym może zostać wyrzucony wyjątek  Bloku kodu po stronie wywołującego który przechwyci i obsłuży wyjątek

4. Jakie są bloki i słowa kluczowe związane z obsługą wyjątków? Język C# posiada cztery słowa kluczowe związane z obsługą wyjątków:  try  Blok try jest sekcją kodu, w którym może nastąpić wyrzucenie wyjątku  catch  Jeżeli wyjątek zostanie wykryty, sterowanie zostaje przeniesione do odpowiedniego bloku catch  Jeżeli w bloku try nie wystąpił żaden wyjątek, blok catch zostaje pominięty  finally  Blok finally jest wywoływany zawsze, nie zależnie czy wystąpił wyjątek czy nie  throw  Za pomocą słowa kluczowego throw jest zgłaszany wyjątek  W konstruktorze podawana jest wiadomość nt. błędu

4. Jakie są bloki i słowa kluczowe związane z obsługą wyjątków?

5. Jak realizujemy przechwytywanie wielu wyjątków? Przechwytywanie wielu wyjątków możemy zrealizować za pomocą kolejnych bloków catch. Należy je definiować od najbardziej specjalizowanych do najbardziej ogólnych wyjątków. W przeciwnym razie kolejne bloki mogą zostać nieosiągalne

6. Co to jest typ generyczny? W.NET 2.0 Microsoft wprowadził nowe typy danych – typy generyczne. Do tej pory wszystkie elementy były przechowywane w kolekcjach jako obiekty klasy object. Obecnie mamy dostępną nową przestrzeń nazw System.Collections.Generic, w której znajdują się klasy umożliwiające deklarowanie jakiego typu elementy mają znajdować się w danej kolekcji (podobnie jak ma to miejsce w tablicach). Główną zaletą jest przyspieszenie działania kolekcji. Podczas dodawania elementu nie jest on rzutowany na typ object (chyba że tego chcemy), a podczas pobierania elementu z kolekcji nie musimy z powrotem rzutować go na odpowiedni typ. Uniknięcie tych operacji przyspiesza znacznie działanie naszego programu. Następną zaletą korzystania z typów generycznych jest unikanie wielu błędów już na etapie kompilacji. Używając np. ArrayListy możemy dodawać do niej obiekty różnych typów i kompilator nie uzna tego za błąd. Podczas wykonania może dojść do sytuacji, że pobierając elementy z listy i rzutując je na ten sam typ, może powstać błąd wykonania, ponieważ wcześniej dodaliśmy do listy element innego typu. Natomiast jeśli użyjemy List (generyczny odpowiednik ArrayListy) i zadeklarujemy jakiego typu elementy ma ona przechowywać, już na etapie kompilacji wskazany zostanie błąd podczas dodawania elementu o nieodpowiednim typie. Deklarowanie kolekcji generycznej wygląda następująco:

7. Na czym polega o/wypakowywanie i gdzie jest wykorzystywane? Opakowywanie można formalnie zdefiniować, jako jawną konwersję typu wartościowego na odpowiadający mu typ referencyjny poprzez zapisanie zmiennej w typie System.Object. Kiedy opakowujemy wartość, CLR alokuje nowy obiekt na stercie i kopiuje wartość typu wartościowego ( w tym przypadku 25) do tej instancji. Zwracana jest referencja do tego nowo zaalokowanego obiektu

7. Na czym polega o/wypakowywanie i gdzie jest wykorzystywane? Wypakowywanie to proces konwersji wartości przechowywanej w referencji do obiektu odpowiedniego typu wartościowego. Wypakowywanie rozpoczyna się od weryfikacji, czy „odbierający” typ danych jest równoważny z opakowanym typem. Wypakowywanie do nieodpowiedniego typu danych powoduje wyrzucenie wyjątku InvalidCastException. Mechanizm ten, mimo że wydawać się może rzadko stosowany, jest bardzo pomocny. Pozwala on na przyjęcie założenia, że wszystko może być traktowane jako obiekty klasy System.Object, podczas gdy CLR zajmuje się wszystkimi operacjami związanymi z zarządzaniem pamięcią

8. Wymień znany Ci kolekcje generyczne Collection (odpowiednik CollectionBase) – stanowi bazę dla kolekcji generycznych, Comparer (odpowiednik Comparer) – porównuje dwa obiekty generyczne, Dictionary (odpowiednik Hashtable – generyczna kolekcja par nazwa/wartość, List (odpowiednik ArrayList) – dynamiczna dostosowująca swój rozmiar lista elementów, LinkedList - generyczna implementacja podwójnie powiązanej listy, Queue (odpowiednik Queue) – generyczna implementacja kolejki FIFO, Stack (odpowiednik Stack) – generyczna implementacja kolejki LIFO, SortedDictionary (odpowiednik SortedList) – dynamiczna implementacja posortowanego zbioru par nazwa/wartość, ReadOnlyCollection (odpowiednik ReadOnlyCollectionBase) – generyczna implementacja zbioru elementów tylko do odczytu

9. Co to są indeksery? Indekser pozwala indeksować instancje danej klasy lub struktury tak jak tablice. Indeksery są podobne do właściwości klasy, z tą różnicą że ich metody dostępowe mogą przyjmować parametry. Składnia indeksera wygląda następująco:

Dziękujemy za uwagę