Programowanie w języku Java WYKŁAD
|
|
- Henryka Grzelak
- 5 lat temu
- Przeglądów:
Transkrypt
1 Programowanie w języku Java WYKŁAD dr inż. Piotr Zabawa Certyfikowany Konsultant IBM/Rational pzabawa@pk.edu.pl www:
2 WYKŁAD 7 Wyjątki
3 Częstym problemem jest optymistyczne podejście do wytwarzania oprogramowania. Cechy charakterystyczne: Pomijanie sytuacji negatywnych w specyfikacji wymagań Brak informacji do testowania reakcji systemu na błędy lub na sytuacje wyjątkowe oraz do testowania przebiegów alternatywnych słabe testy Objawem jest uzgadnianie obsługi takich sytuacji pomiędzy programistami i testerami w zespole z pominięciem wymagań Powyższe błędy mają charakter procesowy. Wyjątki są mechanizmem na poziomie technicznym (implementacyjnym) wspierającym obsługę błędów. Stanowią więc istotny element oprogramowania, który w konsekwencji wspomnianych błędów procesowych jest niesłusznie niedoceniany.
4 Ze względu na niedocenianie znaczenia wyjątków rzadko są one prawidłowo projektowane. W szczególności zwykle trudno dopatrzeć się strategii, wg której zostały one zaprojektowane. Dlatego w czasie wykładu zostaną poruszone zagadnienia obejmujące: Dyskusję własności wyjątków własności te mają wpływ na sposób projektowania ich Omówienie strategii projektowania wyjątków
5 Wyjątki, jak sama nazwa wskazuje, służą do obsługiwania sytuacji wyjątkowych. W odróżnieniu od stosu wywołań metod, w którym wywołania metod odkładane są w kolejności ich wywołań, wyjątki propagowane są przez stos w kolejności odwrotnej. W zależności od języka programowania może je obsługiwać osobny stos, lub ten sam stos, który wykorzystywany jest dla wywołań metod. Klasy wyjątków zdefiniowane są w pakiecie biblioteki standardowej: java.lang UWAGA: wyjątki w Java są znane od dawna, jednak w Java 7 dodano try-with-resources, a w Java 8 wyrażenia lambda pozwalające efektywniej korzystać z try-with-resources. Wykład nawiązuje więc do Java 8.
6 Kiedy nie warto stosować wyjątków tylko wartość zwracaną (return): W czasie interakcji systemu z użytkownikiem Kiedy warto stosować wyjątki zamiast wartości zwracanych: Np. w warstwie danych Powód wyjątki mają przewagę nad obsługą błędów typową dla programowania strukturalnego wtedy gdy informacja o błędzie jest propagowana przez wiele metod i obsługa błędu jest rozproszona.
7 Miejsca powstania wyjątków: Kod biblioteki standardowej Java (np. operacje i/o wymagają obsługi wyjątków) Kod niestandardowej biblioteki obcej Własny kod Sposób powstania wyjątku jest jeden utworzenie obiektu klasy wyjątku (musi dziedziczyć ona z klasy Throwable) a następnie zgłoszenie wyjątku za pomocą słowa kluczowego throw. Przykład: throw new NumberFormatException("format liczby niezgodny z oczekiwanym: " + liczba);
8 Ogólna postać instrukcji sterującej zgłoszeniem wyjątku: throw exception_ref; gdzie exception_ref oznacza referencję do obiektu wyjątku. Zgłoszony wyjątek jest następnie propagowany w kierunku przeciwnym do kolejności wywołań metod na stosie. Jeśli nie zostanie przechwycony w kodzie, to będzie rozpropagowany do maszyny wirtualnej Javy (JVM), która zgłosi nieprzechwycenie wyjątku. Błędy polegające na nieprzechwyceniu wyjątku mają charakter błędów czasu wykonania (run-time), więc mogą być trudne do przewidzenia w czasie kodowania. Dlatego w Java wprowadzono dodatkowe mechanizmy na poziomie kompilacji ułatwiające wykrycie takich sytuacji na etapie kompilowania kodu zostaną one przedstawione dalej.
9 Zgłoszony wyjątek powinien zostać przechwycony i obsłużony. Do przechwycenia wyjątku służy klazula try-catch. Przykład: String s1, s2; try { int n1 = Integer.parseInt(s1); int n2 = Integer.parseInt(s2); catch (NumberFormatException exc) { System.out.println("Błędne dane - kończę działanie"); return;
10 Ogólna postać przechwycenia i obsługi wyjątku (wszystkie elementy z wyjątkiem jednego catch lub finally, jeśli wystąpiło try są opcjonalne): try { // instrukcje mogące zgłosić wyjątek catch(klasawyjątku1 ex) { // obsługa zidentyfikowanego wyjątku catch(klasawyjątku2 ex) { // obsługa zidentyfikowanego wyjątku catch(exception ex) { // obsługa niezidentyfikowanego wyjątku finally { // kod zostanie wykonany niezależnie od tego czy // wyjątek został zgłoszony czy nie i jakiej był klasy
11 Możliwości reakcji na przechwycenie wyjątku: Obsłużenie wyjątku i ponowne jego zgłoszenie Obsłużenie wyjątku i zgłoszenie innego wyjątku Obsłużenie wyjątku i niezgłaszanie żadnego wyjątku (kończy proces propagacji wyjątku) Wyjątki zachowują się jak obiekty (w istocie są nimi), w szczególności mogą zachowywać się polimorficznie. Tę ich własność wykorzystuje się w klauzulach catch, które mogą rozpoznawać klasę obiektu wyjątku po jej nadklasie. Można więc przechwycić wyjątek na podstawie jego nadklasy, a następnie dokonać analizy danych lub typu obiektu wyjątku i zareagować w zależności od zidentyfikowanych informacji. Podejście polimorficzne można też wykorzystać do sterowania przepływem wyjątków.
12 W celu zmniejszenia ryzyka nieprzechwycenia wyjątku, którego klasa w danej metodzie nie została przewidziana przez programistę (mogła nie istnieć w chwili pisania kodu przez niego) istnieje w języku Java możliwość przechwycenia wyjątku dowolnej klasy: catch(exception ex){ Istotne znaczenie w obsłudze wyjątków ma kolejność wystąpienia klauzul catch poniżej danego bloku try. Należy umieszczać je w kolejności od najbardziej szczegółowej klasy wyjątku do najbardziej ogólnej klasy wyjątku (szczegółowość w rozumieniu hierarchii dziedziczenia). Na samym końcu należy umieścić (opcjonalnie) klauzulę catch(exception ex). Dopiero po niej finally.
13 W języku Java wyjątki mają predefiniowaną hierarchię. Zawiera ona następujące istotne elementy: Error błędy, z którymi aplikacja nie jest w stanie sobie sama poradzić Exception nadklasa wyjątków, czyli błędów, z którymi aplikacja jest w stanie sobie poradzić RuntimeException klasa wyjątków niekontrolowanych InterruptedException klasa wyjątków kontrolowanych IOException klasa wyjątków kontrolowanych operacji we/wy
14 Wyjątki dzielą się na: Kontrolowane wymagają obsługi przez programistę dziedziczą z jednej z klas: InterruptedException IOException Niekontrolowane nie wymagają obsługi przez programistę dziedziczą z klasy RuntimeException Poza tym funkcjonalnie nie różnią się od siebie niczym.
15
16 Wyjątki predefiniowane (niektóre): IllegalArgumentException IllegalStateException NullPointerException IndexOutOfBoundsException ConcurrentModificationException UnsupportedOperationException Są one gotowe do wykorzystania przez programistów lub używane w bibliotekach standardowych. Predefiniowano wyjątki najczęściej spotykane.
17 Definiowanie własnej klasy wyjątku: class Wyjątek extends Exception { //...
18 W przypadku korzystania ze standardowej biblioteki języka Java, jeśli metoda z tej biblioteki może zgłosić wyjątek i nie obejmiemy w kodzie klienta tej biblioteki (naszym kodzie) blokiem try oraz klauzulą catch pozwalającą przechwycić ten wyjątek, to kompilator Java wykryje taką sytuację jako błąd. Możemy wtedy: Objąć wywołanie tej metody bibliotecznej blokiem try oraz zaimplementować klauzulę catch odpowiednią dla klasy nieprzechwytywanego wyjątku albo Dodać do nagłówka metody, w której został wykryty ten błąd (naszej metody) następującą deklarację: throws KlasaWyjątku1, KlasaWyjątku2,..., KlasaWyjątkuN
19 Dodanie powyższej deklaracji oznacza, że nasza metoda nie musi obsługiwać wyjątków tych typów, ponieważ może je zgłaszać (propagować dalej). Jeśli taką deklarację umieścimy w deklaracji naszej metody, to jej użytkownik będzie wiedział jakie wyjątki może zgłaszać nasza metoda. Przykład: public void method() throws NumberFormatException { // zgłoszenie wyjątku w method throw new NumberFormatException(); // albo // skorzystanie z metody, która może zgłosić wyjątek int i = convertstringtoint(new String( x ));
20 Klauzula finally wykonywana jest zawsze bezpośrednio po bloku try nawet wtedy, gdy obsługa wcześniej przechwyconego wyjątku w klauzuli catch zwróciła sterowanie z metody (słowo kluczowe return).
21 Możliwości uzupełnienia informacji o zagadnieniach związanych z wyjątkami: Exceptions anti-patterns informacje i przykłady ilustrujące jak nie należy korzystać z wyjątków Exceptions good practices zalecenia dotyczące korzystania z wyjątków; zbyt lakoniczne opisy mogą prowadzić do pochopnego wniosku, że niektóre praktyki są sprzeczne
22 Dobre praktyki obsługi wyjątków (wg. Lokesh Gupta): 1. Nigdy nie ignorować wyjątku w klauzuli catch 2. Zawsze deklarować wyjątki kontrolowane, które może zgłosić metoda 3. Nigdy nie przechwytywać wyjątku na podstawie jego nadklasy Exception 4. Nigdy nie przechwytywać wyjątku na podstawie jego nadklasy Throwable 5. Wychwycony wyjątek zawsze otaczać własną klasą w taki sposób, aby nie gubić śladu stosu 6. Albo logować informację o wyjątku albo go ponownie zgłaszać 7. Nigdy nie zgłaszać wyjątku z klauzuli finally 8. Wychwytywać tylko te wyjątki, które możemy obsłużyć
23 9. Nigdy nie pozostawiać w kodzie końcowym wywołań printstacktrace() 10.Używać klauzuli finally zamiast catch jeśli nie chcemy obsługiwać wyjątków 11.Przestrzegać zasady wczesnego zgłaszania i późnej obsługi wyjątku 12.Zawsze zwalniać zasoby po obsłużeniu wyjątku 13.Zgłaszać w metodzie wyjątek najbardziej odpowiedniej klasy 14.Nigdy nie używać mechanizmu wyjątków w sterowaniu przepływem programu 15.Walidować dane wejściowe w celu wczesnego zgłoszenia wyjątku 16.Zawsze logować pełną informację o każdym wyjątku 17.Umieszczać w wyjątku stosowne informacje w pełni go opisujące
24 18.Zawsze przerywać wątek, który zgłosił wyjątek 19.Stosować metodę szablonową zamiast powtarzania try-catch 20.Dokumentować wszystkie wyjątki w javadoc 21.Dla zwalniania zasobów należy preferować użycie finally w metodzie ponad użycie metody finalize w klasie
25 Konstruowanie własnej hierarchii wyjątków: Warto skonstruować własną nadklasę wyjątku dla biblioteki, żeby jej klient mógł przechwycić dowolny wyjątek z biblioteki w ramach pojedynczej klauzuli catch Zaleca się, aby hierarchie wyjątków były hierarchiami dziedziczenia, co jest sprzeczne z dobrymi praktykami inżynierii oprogramowania wzorce projektowe dla wyjątków?
26 Decyzja o tym czy wyjątki powinny być kontrolowane czy nie: Zaleca się spójność podejścia w odniesieniu do własnych wyjątków: albo wszystkie kontrolowane albo wszystkie niekontrolowane Czym kierować się w powyższej decyzji (argumenty za danym wyborem): Wyjątki kontrolowane Chcemy zaprząc kompilator do wspomagania procesu obsługi wyjątków Wyjątki niekontrolowane Nie chcemy zanieczyszczać kodu metod deklaracjami wyjątków Nie chcemy zanieczyszczać interfejsu deklaracjami wyjątków, które możemy chcieć zmienić w przyszłości
27 Wydaje się, że bardziej warte promowania są wyjątki niekontrolowane. Powody: Wyjątki niekontrolowane nie zanieczyszczają kodu zbędnymi blokami trycatch. Wyjątki niekontrolowane nie zanieczyszczają deklaracji metod zagregowanymi deklaracjami wyjątków. W praktyce rzadko zdarza się przeoczenie obsługi niekontrolowanego wyjątku. Powinny to wykryć testy, o ile proces wytwórczy jest prawidłowy. W praktyce nie potwierdza się opinia, jakoby trudniej było się zorientować jak obsłużyć wyjątek niekontrolowany. Wyjątki niekontrolowane pozwalają uniknąć problemu wersjonowania wymuszonego przez zmianę koncepcji obsługi wyjątków. Liczne dyskusje tego zagadnienia można znaleźć w internecie. Warto zauważyć, że C# wprowadza tylko wyjątki niekontrolowane nie bez powodu.
28 Obsługa wyjątków odporna na błędy. Może dojść do sytuacji, w której zgłoszenie wyjątku w bloku try może skutkować zgłoszeniem wyjątku w klauzuli catch i/lub w klauzuli finally. Przykład przerwania śladu pierwotnego wyjątku (por. z dobrymi praktykami).
29 InputStream input = null; try{ input = new FileInputStream( fname.txt"); //do something with the stream catch(ioexception e){ //first catch block throw new WrapperException(e); finally { try{ if(input!= null) input.close(); catch(ioexception e){ //second catch block throw new WrapperException(e);
30 Powyższy przykład ilustrujący utratę ciągłości śladu wyjątku nie jest skomplikowany. Dużo trudniejsze sytuacje obsługi wyjątków można spotkać w pracy z transakcjami JDBC. Aby zabezpieczyć się przed wspomnianym problemem należy zadbać o to, aby zawsze ostatni ze zgłoszonych wyjątków zawierał wszystkie zgłoszone wcześniej wyjątki. Ponadto w Java 7 wprowadzono mechanizm: try-with-resources Mechanizm ten pozwala rozwiązać wspomniany problem. Poprzedni przykład:
31 try(fileinputstream input = new FileInputStream( fname.txt")) { int data = input.read(); while(data!= -1){ System.out.print((char) data); data = input.read(); Dzięki temu, że FileInputStrem implementuje interfejs java.lang.autocloseable zasób ten zostanie automatycznie zamknięty po wykonaniu bloku try. W konstrukcji try-with-resources można wykorzystać każdą klasę, która implementuje ten interfejs. Mechanizm ten gwarantuje, że jeśli wyjątek zostanie zgłoszony w bloku try, to zostanie on rozpropagowany, podczas gdy wyjątek związany z zamknięciem zasobu zostanie wygaszony. Developer pozna więc pierwotną przyczynę zamiast problemów związanych ze sposobem obsługi błędu.
32 Jeśli trzeba obsłużyć w ten sposób więcej zasobów, to możemy wykorzystać konstrukcję: try( FileInputStream input = new FileInputStream( fname.txt"); BufferedInputStream bufferedinput = new BufferedInputStream(input) ){
33 Implementacja własnych zasobów podlegających mechanizmowi trywith-resources. Postać interfejsu AutoCloseable: public interface AutoClosable { public void close() throws Exception; Warto zauważyć, że jest to tzw. interfejs funkcyjny, co otwiera od razu możliwości zastosowania wyrażeń lambda z Java 8. Jest to zresztą obecnie dobra praktyka korzystania z zasobów.
34 Przykład własnego rozwiązania opartego o try-with-resources (źródło: Jakob Jenkov): public class MyAutoClosable implements AutoCloseable { public void doit() { System.out.println("MyAutoClosable doing public void close() throws Exception { System.out.println("MyAutoClosable closed!");
35 Przykład użycia własnej klasy implementującej AutoCloseable: private static void myautoclosable() throws Exception { try(myautoclosable myautoclosable = new MyAutoClosable()){ myautoclosable.doit(); Wynik wykonania powyższego kodu: MyAutoClosable doing it! MyAutoClosable closed!
36 Przykład wykorzystania rozwiązań z Java 8 dla Neo4J: wraz z zaznaczeniem zalet i wad takiego podejścia do obsługi wyjątków w transakcjach.
37 Problemem jest zanieczyszczenie kodu źródłowego (głównej logiki biznesowej, procesów biznesowych realizowanych w ramach paradygmatu klasowo-obiektowego) kodem obsługi wyjątków. Można to negatywne zjawisko ograniczyć na różne sposoby: Zastosowanie wzorca projektowego Metoda szablonowa mogącego prowadzić do obsługi wyjątków zbliżonej do sposobu obsługi zdarzeń Wzbogacanie wyjątków o informacje o unikalnym kodzie błędu i stosowanie exception handlers Zastosowanie podejścia aspektowego
38 Metoda szablonowa (źródło Jakob Jenkov). Mamy początkowo zanieczyszczony kod, który przy okazji pokazuje jak obsłużyć wcześniej rozważane problemy przerwania ciągłości wyjątków.
39 Input input = null; IOException processexception = null; try{ input = new FileInputStream(fileName); //...process input stream... catch (IOException e) { processexception = e; finally { if(input!= null){ try { input.close(); catch(ioexception e){ if(processexception!= null){ throw new MyException(processException, e, "Error message..." + filename); else { throw new MyException(e, "Error closing InputStream for file " + filename); if(processexception!= null){ throw new MyException(processException, "Error processing InputStream for file " + filename);
40 Dodajemy własną klasę zawierającą metodę szablonową stanowi ona implementację wspomnianego wzorca projektowego, z metodą o nazwie process() jako metodą szablonową, która jest parametryzowana kodem implementowanym przez klienta wzorca w metodzie doprocess().
41 public abstract class InputStreamProcessingTemplate { public void process(string filename){ IOException processexception = null; InputStream input = null; try{ input = new FileInputStream(fileName); doprocess(input); catch (IOException e) { processexception = e; finally { if(input!= null){ try { input.close(); catch(ioexception e){ if(processexception!= null){ throw new MyException(processException, e, "Error message..." + filename); else { throw new MyException(e, "Error closing InputStream for file " + filename); if(processexception!= null){ throw new MyException(processException, "Error processing InputStream for file " + filename); //override this method in a subclass, to process the stream public abstract void doprocess(inputstream input) throws IOException;
42 Warto zauważyć, że mamy do zaimplementowania jedną metodę korzystamy z anonimowej klasy wewnętrznej. new InputStreamProcessingTemplate(){ public void doprocess(inputstream input) throws IOException{ int inchar = input.read(); while(inchar!- -1){ //do something with the chars....process("somefile.txt"); Powyższy kod przypomina obsługę zdarzenia, jakim jest w tym przypadku zgłoszenie wyjątku.
43 Kolejny wariant wzorca wykorzystuje metodę statyczną nie trzeba tworzyć obiektu. Można również pokusić się o wykorzystanie interfejsów do implementacji tego wzorca lub wykorzystać wyrażenia lambda z Java 8 w implementacji z interfejsem mielibyśmy znowu interfejs funkcyjny.
44 Są znane dwie metody wzbogacania informacji związanej z kontekstem w zgłoszonym wyjątku (na podstawie: Jakob Jenkov): Exception wrapping Exception enrichment
45 Exception wrapping. Przykład: catch (SQLException sqlexception) { throw new MyException("error text", sqlexception); Zalety: Uniknięcie sytuacji, w której mamy ogólne metody z długą listą deklaracji niskopoziomowych wyjątków Zamiana niskopoziomowych wyjątków na bardziej ogólne na rzecz komponentów wyższych warstw Wady: Bardzo długi ślad na stosie wyjątków Sklejanie komunikatów o błędzie wewnątrz wyjątku trudne do dekompozycji i do zrozumienia przyczyny błędu
46 Exception enrichment. Polega na dodawaniu do obiektu wyjątku informacji kontekstowej i ponownym zgłaszaniu tego wyjątku. Przykład: try{ method1(); catch(enrichableexception e){ e.addinfo("an error occurred when trying to..."); throw e;
47 W ramach exception enrichment istnieje możliwość dodawania informacji o: Unikalnym kodzie błędu (identyfikujemy jednoznacznie rodzaj błędu znamy go w chwili zgłoszenia) Kontekście wystąpienia błędu (identyfikujemy miejsce w kodzie, w którym to miejscu wyjątek został zgłoszony)
48 Czasem nie da się uniknąć stosowania exception wrapping: Przechwycenie zarządzanego wyjątku non-enrichable exception catch(ioexception ioexception) throw new EnrichableException( ioexception, "METHOD1", "ERROR1", "Original error message"); Istnieje również możliwość wprowadzenia exceptions handlers jeśli wyjątki mają unikalne kody błędu. Wtedy można wyprowadzić ich obsługę spoza kodu procesu biznesowego.
49 W systemach korporacyjnych zwykle wymaga się logowania wyjątków. Umożliwia to analizowanie informacji o działaniu systemu przez pracowników przedsiębiorstwa korzystającego z takiego oprogramowania. Informacje takie mogą służyć: Analizie przyczyn problemu w oprogramowaniu Reprodukcji błędu pomocnej przy usuwaniu błędu W którym miejscu kodu powinno następować logowanie: Bottom-level logging logowanie od razu w komponencie, który zgłosił wyjątek Mid-level logging logowanie pośrodku stosu wywołań gdy wiedza o wyjątku będzie wystarczająca Top-level logging logowanie centralne na wierzchołku stosu wywołań
50 Bottom-level logging. Wady: Zakodowanie logowania w wielu miejscach na niskim poziomie Trudność z dostosowaniem sposobu logowania w przypadku wielokrotnego użycia komponentu w wielu aplikacjach Niedobór informacji w komponencie niskiego poziomu nie wiemy jakiej operacji znanej użytkownikowi dotyczył zgłoszony wyjątek
51 Mid-level logging Wady: Konieczność wzbogacania niskopoziomowej informacji Nadal dużo kodu obsługi błędów
52 Top-level logging Zalety: Wyraźny podział odpowiedzialności w systemie Jedno miejsce w kodzie do zarządzania obsługą błędów Wady: Brak wiedzy niskopoziomowej o przechwyconym wyjątku
53 W rozproszonych twardych systemach czasu rzeczywistego występują komponenty, których zadanie polega na obsłudze błędów lub zgłoszenia alarmów. Jest to więc podejście top-level. Dobrą praktyką jest wzbogacanie informacji o wyjątku w czasie wstecznej propagacji przez stos pod kątem logowania exception enrichment. Rekomendowana jest strategia top-level logging w powiązaniu z exception enrichment.
54 Strategia obsługi wyjątków (źródło Jakob Jenkov).
55 Wymagania dotyczące obsługi wyjątków: Pierwszorzędne (reakcja aplikacji, adresaci, diagnostyka) Drugorzędne (abstrakcja i enkapsulacja, łatwość wprowadzania zmian) Rodzaje błędów: Użytkownika Usług Wewnętrzne Klasyfikacja błędu może ulec weryfikacji podczas jego propagacji mamy wtedy do czynienia z jego re-klasyfikacją.
56 Elementy strategii obsługi wyjątków 1. Detekcja błędu 2. Zbieranie informacji o błędzie Przyczyna Lokalizacja 3. Zgłoszenie wyjątku 4. Propagacja wyjątku, możliwe wzbogacenie o informację kontekstową Pasywna Aktywna 5. Przechwycenie i reakcja na wyjątek: Powtórzenie operacji jeśli to możliwe Notyfikacja uczestników
57 Klasa wyjątku zawiera listę obiektów z informacjami o błędzie.
58 public class AppException extends Exception { protected List<ErrorInfo> errorinfolist = new ArrayList<ErrorInfo>(); public AppException() { public ErrorInfo addinfo(errorinfo info){ this.errorinfolist.add(info); return info; public ErrorInfo addinfo(){ ErrorInfo info = new ErrorInfo(); this.errorinfolist.add(info); return info; public List<ErrorInfo> geterrorinfolist() { return errorinfolist;
59 Klasa informacji o błędzie.
60 public class ErrorInfo { protected Throwable cause = null; protected String errorid = null; protected String contextid = null; protected int errortype = -1; protected int severity = -1; protected String usererrordescription = null; protected String errordescription = null; protected String errorcorrection = null; protected Map<String, Object> parameters = new HashMap<String, Object>();
61 Przykład użycia obu klas.
62 if(! new File(filePath).exists()){ AppException exception = new AppException(); ErrorInfo info = exception.addinfo(); info.seterrorid("filenotfound"); info.setcontextid("fileloader"); info.seterrortype(errorinfo.error_type_client); info.setseverity(errorinfo.severity_error); info.seterrordescription("no file found at file path + filepath); info.seterrorcorrection("filepath should point to existing file."); info.getparameters().put("filepath", filepath); throw exception;
63 W celu zmniejszenia ilości kodu odpowiadającego za tworzenie obiektów informacji o wyjątkach oraz za inicjalizowanie ich można skorzystać z fabryki (metoda wytwórcza) ErrorInfoFactory. Wtedy kod uprości się: try{ FileInputStream fileinputstream = new FileInputStream(filePath); //... catch (IOException e) { AppException exception = new AppException(); exception.addinfo( ErrorInfoFactory.getFileReadErrorInfo(e, filepath) ); throw exception;
64 Koniec
Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków
Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków mgr inż. Maciej Lasota Version 1.0, 13-05-2017 Spis treści Wyjątki....................................................................................
Bardziej szczegółowoWykład 8: Obsługa Wyjątków
Wykład 8: Obsługa Wyjątków Wyjątki Wyjątek to sytuacja nienormalna, która pojawia się w trakcie wykonania programu. W językach bez obsługi wyjątków, błędy są wykrywane i obsługiwane ręcznie, zwykle przez
Bardziej szczegółowoWyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.
Wyjątki Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wydaje się, że żaden użytkownik oprogramowania nie lubi, kiedy stosowany program nagle zawiesza się,
Bardziej szczegółowoProgramowanie Obiektowe Ćwiczenie 4
Programowanie Obiektowe Ćwiczenie 4 1. Zakres ćwiczenia wyjątki kompozycja 2. Zagadnienia Założeniem, od którego nie należy odbiegać, jest by każdy napotkany problem (np. zatrzymanie wykonywanej metody)
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Wykład 9: Wyjątki 5/5/2013 S.Deniziak:Programowanie obiektowe - Java 1 Co to jest wyjątek? błąd wykonania: InputFile.java:8: Warning: Exception java.io.filenotfoundexception must
Bardziej szczegółowoObsługa błędów za pomocą wyjątków. Paweł Motofa (140746)
Obsługa błędów za pomocą wyjątków Paweł Motofa (140746) Co zrobić, gdy wystąpi błąd Przykład Co zrobić, gdy wystąpi błąd Co zrobić, gdy wystąpi błąd Co zrobić, gdy wystąpi błąd Jak wyglądałaby funkcja
Bardziej szczegółowoAplikacje w środowisku Java
Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Wyjątki mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Spis treści Wyjątki... 3 2 Wyjątki Podczas pracy programu
Bardziej szczegółowoJęzyki i metody programowania Java INF302W Wykład 3 (część 1)
Języki i metody programowania Java INF302W Wykład 3 (część 1) Autor Dr inż. Zofia Kruczkiewicz Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 3, część 1 1 STRUKTURA WYKŁADU 1. Wyjątki,
Bardziej szczegółowoWyjątki Monika Wrzosek (IM UG) Programowanie obiektowe 180 / 196
Wyjątki 180 / 196 Wyjątki W Javie istnieje mechanizm tzw. wyjątków (ang. exception), który pozwala na przechwytywanie błędów pojawiających się w programie. Kompilacja tab [ 1 0 ] = 100; spowoduje powstanie
Bardziej szczegółowoWYJĄTKI. Jest ona jednak czasochłonna i prowadzi do duŝego zapotrzebowania na zasoby systemu.
WYJĄTKI Klasa Throwable Exception Error Klasy dziedziczące po klasie Exception są typami wyjątków, które automatycznie obsługuje Java lub program przy jawnym przechwytywaniu i obsłudze wyjątków w blokach
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe III. Refleksja Małgorzata Prolejko OBI JA16Z03 Plan Klasa Class. Analiza funkcjonalności klasy. Podstawy obsługi wyjątków. Zastosowanie refleksji do analizy obiektów. Wywoływanie
Bardziej szczegółowoWyjątki (exceptions)
Instrukcja laboratoryjna nr 6 Programowanie w języku C 2 (C++ poziom zaawansowany) Wyjątki (exceptions) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp Wyjątki (ang.
Bardziej szczegółowoKurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019
Wykład 3 22 marca 2019 Klasy wewnętrzne Klasa wewnętrzna class A {... class B {... }... } Klasa B jest klasa wewnętrzna w klasie A. Klasa A jest klasa otaczajac a klasy B. Klasy wewnętrzne Właściwości
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe IV. Interfejsy i klasy wewnętrzne Małgorzata Prolejko OBI JA16Z03 Plan Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do
Bardziej szczegółowoDariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Wykład 5 Marcin Młotkowski 23 marca 2017 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 50 Historia Początkowe założenia Projekt OAK Sterowanie urządzeniami
Bardziej szczegółowoProgramowanie w języku Java WYKŁAD
Programowanie w języku Java WYKŁAD dr inż. Piotr Zabawa Certyfikowany Konsultant IBM/Rational e-mail: pzabawa@pk.edu.pl www: http://www.pk.edu.pl/~pzabawa 26.05.2014 WYKŁAD 13 Refleksja Data Access Object
Bardziej szczegółowoThrowable. Wyjatek_1(int x_) { x = x_; } int podaj_x()
Wykład 3. Wyjątki 1) Obsługa wyjątków system czasu przebiegu Javy przerwanie programu class Wyjatek_1 //plik Proba_1.java int x; Wyjatek_1(int x_) x = x_; int iloraz() int p = 45/x; //generowanie wyjątku
Bardziej szczegółowoJava podstawy jęyka. Wykład 2. Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne.
Java podstawy jęyka Wykład 2 Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne. Wyjątki: obsługa błędów Wydział Fizyki i Informatyki Stosowanej, Uniwersytetu Łódzkiego 12.03.2015
Bardziej szczegółowoKurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016
Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,
Bardziej szczegółowoZad.30. Czy można utworzyć klasę, która implementuje oba interfejsy?
Zad.28. Utwórz klasę, która implementuje oba interfejsy: public void pisz ( ) ; public void pisz ( ) ; Zad.29. Utwórz klasę, która implementuje oba interfejsy: public void pisz ( int l i c z b a ) ; public
Bardziej szczegółowoDawid Gierszewski Adam Hanasko
Dawid Gierszewski Adam Hanasko Chcemy stworzyć klasę w której możemy przechowywać dwie zmienne dowolnych typów Tworzymy tyle różnych klas ile potrzeba: Class ParaInt{ int pierwszy; Int drugi; Class ParaButow{
Bardziej szczegółowoKurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016
Wstęp - wykład 0 22 lutego 2016 Historia Simula 67 język zaprojektowany do zastosowan symulacyjnych; Smalltalk 80 pierwszy język w pełni obiektowy; Dodawanie obiektowości do języków imperatywnych: Pascal
Bardziej szczegółowoDziedziczenie. Tomasz Borzyszkowski
Dziedziczenie Tomasz Borzyszkowski Podstawy Zobacz: Dziedzictwo1.java Dziedzictwo2.java Dziedziczenie jest jedną z podstawowych cech OOP ponieważ umożliwia łatwe implementowanie klasyfikacji hierarchicznych.
Bardziej szczegółowoWykład 2 Wybrane konstrukcje obiektowych języków programowania (1)
MAS dr. Inż. Mariusz Trzaska Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1) Zagadnienia o Podstawy o Kontrolowanie sterowania o Klasy o Interfejsy o Obsługa błędów o Pojemniki o System
Bardziej szczegółowoRysunkowy tutorial Możesz swobodnie dystrybuować ten plik jeśli pozostawisz go w nietkniętym stanie. Możesz także cytować jego fragmenty umieszczając w tekście odnośnik http://mbartyzel.blogspot.com Jak
Bardziej szczegółowoJava SE Laboratorium nr 4. Temat: Obsługa wyjątków i zdarzeń
Java SE Laboratorium nr 4 Temat: Obsługa wyjątków i zdarzeń 1 1. Definicja i idea I. Obsługa wyjątków Praktycznie w każdym większym programie powstają jakieś błędy. Powodów jest bardzo wiele, może być
Bardziej szczegółowoWzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski
Adapter: opis Wzorce Strukturalne Tomasz Borzyszkowski Alternatywna nazwa: Wrapper (opakowanie) Rola obiektu Adapter: pełni wobec Klienta rolę otoczki, która umożliwia przetłumaczenie jego żądań na protokół
Bardziej szczegółowoUML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.
UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami
Bardziej szczegółowoKlasy abstrakcyjne i interfejsy
Klasy abstrakcyjne i interfejsy Streszczenie Celem wykładu jest omówienie klas abstrakcyjnych i interfejsów w Javie. Czas wykładu 45 minut. Rozwiązanie w miarę standardowego zadania matematycznego (i nie
Bardziej szczegółowopublic - może być używana w kodzie poza klasą, jedna klasa ModyfikatorKlasy może być kombinacją wyrażeń:
Klasy Metody [ModyfikatorMetody] TypZwrotny Nazwa (Typ arg1, ) { // implementacja metody ModyfikatorMetody może być kombinacją wyrażeń: modyfikator widzialności public dostępna dla metod spoza klasy protected
Bardziej szczegółowoPlatformy Programistyczne Wykład z Javy dla zaawansowanych
Platformy Programistyczne Wykład z Javy dla zaawansowanych Agata Migalska 20 maja 2014 Plan wykładu 1 Polimorfizm i dziedziczenie 2 Życie i śmierć obiektu 3 Poziomy oraz modyfikatory dostępu 4 Obsługa
Bardziej szczegółowoWykład 7: Pakiety i Interfejsy
Wykład 7: Pakiety i Interfejsy Plik Źródłowy w Javie Składa się z: instrukcji pakietu (pojedyncza, opcjonalna) instrukcji importujących (wielokrotne, opcjonalne) deklaracji klasy publicznej (pojedyncza,
Bardziej szczegółowoDiagramy klas. dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com
Diagramy klas dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com O czym będzie? Notacja Ujęcie w różnych perspektywach Prezentacja atrybutów Operacje i metody Zależności Klasy aktywne,
Bardziej szczegółowoZdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu
Zdalne wywołanie metod - koncepcja Oprogramowanie systemów równoległych i rozproszonych Wykład 7 RMI (Remote Method Invocation) - obiektowe RPC, dostarcza klientowi interfejs do obiektu, implementacja
Bardziej szczegółowoPodstawy i języki programowania
Podstawy i języki programowania Laboratorium 8 - wprowadzenie do obsługi plików tekstowych i wyjątków mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 11 grudnia 2017 1 / 34 mgr inż. Krzysztof
Bardziej szczegółowoPakiety i interfejsy. Tomasz Borzyszkowski
Pakiety i interfejsy Tomasz Borzyszkowski Pakiety podstawy W dotychczasowych przykładach nazwy klas musiały pochodzić z jednej przestrzeni nazw, tj. być niepowtarzalne tak, by nie doprowadzić do kolizji
Bardziej szczegółowoJava. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ
Procesy i wątki Proces posiada samodzielne środowisko wykonawcze. Proces posiada własny zestaw podstawowych zasobów w czasie wykonywania; W szczególności, każdy proces ma własną przestrzeń pamięci. W uproszczeniu
Bardziej szczegółowoWspółbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1
Współbieżność i równoległość w środowiskach obiektowych Krzysztof Banaś Obliczenia równoległe 1 Java Model współbieżności Javy opiera się na realizacji szeregu omawianych dotychczas elementów: zarządzanie
Bardziej szczegółowoPrototype (prototyp) Cel: Przykład: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp.
1/14 Prototype (prototyp) Cel: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp. Przykład: Edytor 3D klient tworzy obiekty różnych kształtów
Bardziej szczegółowoProjektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017
Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017 1 Wzorce podstawowe 1.1 Interface vs Abstract class class InterfaceAbstractClass
Bardziej szczegółowoOprogramowanie systemów równoległych i rozproszonych Wykład 7
Wykład 7 p. 1/2 Oprogramowanie systemów równoległych i rozproszonych Wykład 7 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Zdalne wywołanie
Bardziej szczegółowoProgramowanie obiektowe - 1.
Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która
Bardziej szczegółowoDariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki W językach niskopoziomowych błędy zgłaszane były przez zwracanie odpowiedniego statusu (liczby) W C main() zwraca int żeby można było określić
Bardziej szczegółowoObiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1
Obiektowe programowanie rozproszone Java RMI Krzysztof Banaś Systemy rozproszone 1 Java RMI Mechanizm zdalnego wywołania metod Javy (RMI Remote Method Invocation) posiada kilka charakterystycznych cech,
Bardziej szczegółowoKlasy cd. Struktury Interfejsy Wyjątki
Klasy cd. Struktury Interfejsy Wyjątki Struktury Struktura pozwala na zdefiniowanie typu danych, który nie charakteryzuje się zbyt złożoną funkcjonalnością (np. punkt, kolor, etc). Do definiowania struktury
Bardziej szczegółowoBadania poziomu bezpieczeństwa portalu dostępowego do infrastruktury projektu PL-Grid
Badania poziomu bezpieczeństwa portalu dostępowego do infrastruktury projektu PL-Grid Tomasz Kuczyński Dział Aplikacji Tomasz Nowak Zespół Bezpieczeństwa Wrocław, 2.12.2010 r. Konferencja i3: internet
Bardziej szczegółowoAplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html
Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Dr inż. Zofia Kruczkiewicz wykład 4 Programowanie aplikacji internetowych, wykład 4 1 1. Zadania aplikacji rozproszonych obiektów
Bardziej szczegółowoEfekty uboczne błędów
Obsługa wyjątków Efekty uboczne błędów Fragment kodu programu jest bezpieczny (ang. exception-safe) jeżeli błędy, które wystąpią w trakcie przetwarzania tego kodu nie będą powodowały niepożądanych efektów
Bardziej szczegółowoDiagramy czynności Na podstawie UML 2.0 Tutorial
Diagramy czynności Na podstawie UML 2.0 Tutorial http://sparxsystems.com.au/resources/uml2_tutorial/ Zofia Kruczkiewicz 1 Diagramy czynności 1. Diagramy czyności UML http://sparxsystems.com.au/resources/uml2_tutorial/
Bardziej szczegółowoKlasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C
#import "Fraction.h" #import @implementation Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; } if ( self ) { [self setnumerator: n anddenominator:
Bardziej szczegółowoAplikacje w środowisku Java
Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - dziedziczenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 W ramach poprzedniego laboratorium
Bardziej szczegółowoPodejście obiektowe do budowy systemów rozproszonych
Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Dariusz Wawrzyniak 1 Mechanizm RMI umożliwia
Bardziej szczegółowoJava RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć
Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów
Bardziej szczegółowoProgramowanie poprzez testy z wykorzystaniem JUnit
Programowanie poprzez testy z wykorzystaniem JUnit Programowanie ekstremalne (XP) XP zaproponowano w 1999 (K. Beck: Extreme Programming Explained ) XP dedykowane jest do projektów: O małym lub średnim
Bardziej szczegółowoKurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016
Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac
Bardziej szczegółowoMultimedia JAVA. Historia
Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania
Bardziej szczegółowoJava RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć
interfejs (w języku Java), wywiedziony z Remote obiekt Podejście obiektowe do budowy systemów rozproszonych aplikacja kliencka stub interfejs serwer szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów
Bardziej szczegółowoJava: kilka brakujących szczegółów i uniwersalna nadklasa Object
Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU Konstrukcja obiektów Niszczenie obiektów i zwalnianie zasobów
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Podstawowe cechy i możliwości języka Scala mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 2017 1 / 32 mgr inż. Krzysztof Szwarc Programowanie obiektowe Informacje
Bardziej szczegółowoJAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.
JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod
Bardziej szczegółowoWykład 04. Programowanie obiektowe. Maciej Wołoszyn 17 marca Spis treści
Programowanie obiektowe Wykład 04 Maciej Wołoszyn mailto:woloszyn@fatcat.ftj.agh.edu.pl 17 marca 2009 Spis treści 1 Wyjatki i obsługa błędów 2 1.1 Rzucanie wyjątków............................... 2 1.2
Bardziej szczegółowoPodczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.
Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.
Bardziej szczegółowoInformatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
Bardziej szczegółowoZaawansowane programowanie obiektowe - wykład 5
Zaawansowane programowanie obiektowe - wykład 5 dr Piotr Jastrzębski (czynnościowe) opisują zachowanie obiektów, komunikację pomiędzy nimi i ich odpowiedzialność. Interpreter Iterator (kursor) Łańcuch
Bardziej szczegółowoWywoływanie metod zdalnych
Wywoływanie metod zdalnych model systemu Wywoływanie metod zdalnych aplikacja kliencka interfejs obiekt serwer Podejście obiektowe do budowy systemów rozproszonych proxy szkielet sieć Istota podejścia
Bardziej szczegółowoKlasy abstrakcyjne, interfejsy i polimorfizm
Programowanie obiektowe 12 kwietnia 2011 Organizacyjne Klasówka będzie 20 IV 2011. Sale jeszcze są pertraktowane. Materiał do wyjątków włącznie. Można mieć swoje materiały nieelektroniczne. Wywołanie z
Bardziej szczegółowoWzorce logiki dziedziny
Wzorce logiki dziedziny 1. Wzorce logiki dziedziny skrypt transakcji (Transaction Script), brama tabeli (Table Data Gateway), model dziedziny (Domain model), strategia (Strategy), moduł tabeli (Table Module),
Bardziej szczegółowoParadygmaty programowania
Paradygmaty programowania Jacek Michałowski, Piotr Latanowicz 15 kwietnia 2014 Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 1 / 12 Zadanie 1 Zadanie 1 Rachunek predykatów
Bardziej szczegółowoPodstawy Programowania Obiektowego
Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja
Bardziej szczegółowoDokumentacja do API Javy.
Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu
Bardziej szczegółowoTechniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja
Bardziej szczegółowoEnkapsulacja, dziedziczenie, polimorfizm
17 grudnia 2008 Spis treści I Enkapsulacja 1 Enkapsulacja 2 Spis treści II Enkapsulacja 3 Czym jest interfejs Jak definuje się interfejs? Rozszerzanie interfejsu Implementacja interfejsu Częściowa implementacja
Bardziej szczegółowoJAVA W SUPER EXPRESOWEJ PIGUŁCE
JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie
Bardziej szczegółowoPolimorfizm. dr Jarosław Skaruz
Polimorfizm dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com O czym będzie? finalne składowe klasy abstrakcyjne interfejsy polimorfizm Finalne składowe Domyślnie wszystkie pola i metody
Bardziej szczegółowoLaboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6
Instrukcja 6 Laboratorium 8 Opracowanie diagramów sekwencji dla wybranych przypadków użycia reprezentujących usługi oprogramowania wynikających również z wykonanych diagramów czynności; definicja operacji
Bardziej szczegółowoInterfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej
Programowanie obiektowe Interfejsy Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Interfejsy Autor: Paweł Rogaliński Instytut Informatyki,
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych
Bardziej szczegółowoModelowanie i Programowanie Obiektowe
Modelowanie i Programowanie Obiektowe Wykład I: Wstęp 20 październik 2012 Programowanie obiektowe Metodyka wytwarzania oprogramowania Metodyka Metodyka ustandaryzowane dla wybranego obszaru podejście do
Bardziej szczegółowoDziedziczenie. dr Jarosław Skaruz
Dziedziczenie dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com Dziedziczenie specjalizacja Dziedziczenie generalizacja Generalizacja-specjalizacja jest takim związkiem pomiędzy klasami,
Bardziej szczegółowoWyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska
Bogdan Kreczmer bogdan.kreczmer@pwr.edu.pl Katedra Cybernetyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2018 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania
Bardziej szczegółowoProgramowanie obiektowe i zdarzeniowe
Marek Tabędzki Programowanie obiektowe i zdarzeniowe 1/23 Programowanie obiektowe i zdarzeniowe wykład 6 polimorfizm Na poprzednim wykładzie: dziedziczenie jest sposobem na utworzenie nowej klasy na podstawie
Bardziej szczegółowoObsługa wyjątków. Rysunek 2-4 Hierarchia dziedziczenia klas wyjątków
Obsługa wyjątków Podczas działania programu mogą wystąpić róŝne sytuacje specjalne, do których naleŝą m.in. wystąpienia błędu polegającego na próbie otwarcia pliku, który nie istnieje. Java posiada zapoŝyczony
Bardziej szczegółowoProxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.
Proxy (pełnomocnik) Cel: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego. Zastosowanie: Wszędzie tam, gdzie oczekujemy bardziej zaawansowanego odwołania do obiektu, niż zwykły
Bardziej szczegółowoLaboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7
Instrukcja 7 Laboratoria 9, 10 Opracowanie diagramów sekwencji dla wybranych przypadków użycia reprezentujących usługi oprogramowania wynikających również z wykonanych diagramów czynności; definicja operacji
Bardziej szczegółowoWzorce prezentacji internetowych
Wzorce prezentacji internetowych 1. Model kontrolera widoku (Model View Controller). 2. Kontroler strony (Page Controller). 3. Kontroler fasady (Front Controller). 4. Szablon widoku (Template View). 5.
Bardziej szczegółowoProjektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2015
Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2015 1 Wzorce podstawowe 1.1 Interface vs Abstract class class InterfaceAbstractClass
Bardziej szczegółowoDiagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego.
Umiejętność czytania oraz tworzenia diagramów klas UML jest podstawą w przypadku zawodu programisty. Z takimi diagramami będziesz spotykał się w przeciągu całej swojej kariery. Diagramy klas UML są zawsze
Bardziej szczegółowoZaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 4 - wzorce projektowe. dr inż. Robert Nowak - p. 1/18 Powtórzenie klasy autonomiczne tworzenie nowych typów: dziedziczenie i agregacja dziedziczenie: przedefiniowywanie
Bardziej szczegółowoProblemy projektowania obiektowego. Czy podobne problemy można rozwiązywac w podobny sposób?
Problemy projektowania obiektowego Czy podobne problemy można rozwiązywac w podobny sposób? Czy te problemy można przedstawić w abstrakcyjny sposób, tak aby były pomocne w tworzeniu rozwiązań w różnych
Bardziej szczegółowo1 Atrybuty i metody klasowe
1 Atrybuty i metody klasowe Składowe klasowe (statyczne) Każdy obiekt klasy posiada własny zestaw atrybutów. Metody używają atrybutów odpowiedniego obiektu. Czasem potrzeba atrybutów wspólnych dla wszystkich
Bardziej szczegółowoDiagramy maszyn stanowych, wzorce projektowe Wykład 5 część 1
Diagramy maszyn stanowych, wzorce projektowe Wykład 5 część 1 Zofia Kruczkiewicz Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 1 Składnia elementów na diagramach UML 1. W prezentacji składni diagramów
Bardziej szczegółowoProjektowanie obiektowe Wzorce projektowe. Gang of Four Strukturalne wzorce projektowe (Wzorce interfejsów)
Projektowanie obiektowe Wzorce projektowe Gang of Four Strukturalne wzorce projektowe (Wzorce interfejsów) 1 Roadmap Adapter Bridge Composite Facade 2 Pojęcia obiekt interfejs typ klasa 3 Co to jest delegacja?
Bardziej szczegółowoWywoływanie metod zdalnych
Wywoływanie metod zdalnych Podejście obiektowe do budowy systemów rozproszonych Wywoływanie metod zdalnych model systemu obiekt aplikacja kliencka interfejs serwer proxy szkielet sieć Istota podejścia
Bardziej szczegółowoWzorce projektowe i refaktoryzacja
Wzorce projektowe i refaktoryzacja Paweł Kozioł p.koziol@students.mimuw.edu.pl 18.01.2005 Moja praca magisterska Narzędzie dla środowiska Eclipse wspierające stosowanie wzorców projektowych J2EE Prowadzący:
Bardziej szczegółowoWykład 4: Klasy i Metody
Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to
Bardziej szczegółowoJAX-RS czyli REST w Javie. Adam Kędziora
JAX-RS czyli REST w Javie Adam Kędziora Webservice Usługa sieciowa (ang. web service) komponent programowy niezależny od platformy i implementacji, dostarczający określonej funkcjonalności. SOAP,UDDI,XML,WSDL
Bardziej szczegółowoKonstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.
Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class
Bardziej szczegółowoKonwencje obsługi błędów
Obsługa błędów Rakieta Ariane 5 spadła 40 sekund po starcie. Straty 0,5 miliarda dolarów. Przyczyna: wyjątek (exception) rzucony przez kod napisany pierwotnie dla Ariane 4. Feralna procedura była niepotrzebna
Bardziej szczegółowoDzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton
Dzisiejszy wykład Wzorce projektowe Visitor Client-Server Factory Singleton 1 Wzorzec projektowy Wzorzec nazwana generalizacja opisująca elementy i relacje rozwiązania powszechnie występującego problemu
Bardziej szczegółowo