Programowanie obiektowe Andrzej Ziółkowski Wykład 7
Uruchamianie i testowanie programów Etapy tworzenia oprogramowania Koncepcja Projektowanie Dokumentowanie Kodowanie Uruchamianie Testowanie
Błędy w programach, jakość programów Bardzo trudno jest napisać program o długości 1 strony, który zadziała od razu dobrze bez konieczności poprawiania. Źli i dobrzy programiści popełniają mnóstwo błędów ale ci drudzy potrafią je znaleźć i usunąć. Na podstawie statystyk wykrywania błędów można twierdzić, że w każdym większym programie są jeszcze niewykryte błędy.
Co to jest programowanie? – przydatne definicje Programowanie to zapisywanie pewnego przepisu (algorytmu, sposobu postępowania) w języku zrozumiałym dla komputera. <–słaba definicja zapisywanie pewnego przepisu w języku zrozumiałym dla innego programisty. <-trochę lepsza zapisywanie pewnego przepisu w języku zrozumiałym dla innego programisty i jego samego po pewnym czasie. <-najlepsza
Jak pisać dobre programy? Nazewnictwo – czytelne i zrozumiałe nazwy zmiennych, pól, metod, klas itd. Jak najmniej skrótów – można dla zmiennych pomocniczych, indeksów. Podział na odseparowane części. Sprawdzanie czy czarne jest czarne a białe jest białe. Każdy moduł sprawdza czy dane, które otrzymał są poprawne. Wcięcia w tekście obrazujące logiczną strukturę programu Komentarze – bez przesady, kod z mniejszą ilością komentarzy może być czasami bardziej czytelny, ale koniecznie jakie wartości mogą przyjmować poszczególne pola i do czego służą.
Metody uruchamiania programów Analiza logiczna (zachowania programu i kodu) Drukowanie/wyświetlanie śladu (historia choroby) Debugowanie – ustawianie breakpointów, podgląd wartości zmiennych, praca krokowa, zagłębione wywołania metod,… Przygotowywanie i przeprowadzanie testów automatycznych Wbudowana w program sygnalizacja błędów – obsługa wyjątków
Wyjątki, konstrukcja try – catch try { … kod, w którym mogą wystąpić błędy … } catch (RodzajWyjątku e) { … sygnalizacja błędu … }
Wyjątki obsługiwane przez program ArithmeticException ArrayIndexOutOfBoundsException ArrayStoreException ClassCastException IllegalAccessException IllegalArgumentException InterruptedException NullPointerException NumberFormatException RuntimeException SecurityException …
Wyjątki przerywające pracę programu AbstractMethodError ClassCircularityError ClassFormatError ExceptionInintializerError IllegalAccessError IncompatibleClassChangeError InstantizationError InternalError …
Generowanie programowe wyjątków Przykład: throw new AtithmeticException(Dzielenie przez zero);
Definiowanie własnego wyjątku class MojeExcp extends Exception { public int blad; MojeExcp(int blad) { this.blad = blad; } public String toString() { String opis; if (blad == 1) opis = Blad nr 1; else if (blad == 2) opis = Blad nr 2 return opis; }