Laboratorium z informatyki sem.II/ćw.1 Wydział Transportu PW 2016/17 MATERIAŁY POMOCNICZE DO ĆWICZENIA 1 Aplikacja w języku Java Aplikacja to program zdolny do samodzielnego działania w systemie wyposażonym w interpreter Javy Aplikacje mogą działać w trybie tekstowym (aplikacje konsolowe) albo w trybie graficznym (GUI) - Swing, AWT. Aplikacja języka Java składa się z jednej lub więcej klas. Źródłowy program Javy może być zapamiętany w jednym lub wielu plikach z rozszerzeniem "java". Klasa jest podstawową jednostką programu, kod programu zawarty jest wewnątrz definicji klas. Definicja klasy może zawierać deklaracje pól i metod, umieszczone wewnątrz nawiasów klamrowych po słowie kluczowym class oraz nazwie klasy, np. class Nazwa{… deklaracje pól i/lub metod …} Na podstawie definicji klasy mogą być tworzone obiekty o określonych zawartościach pól (zwanych właściwościami lub atrybutami), dysponujące zadeklarowanymi w klasie metodami. Pakiety i biblioteki Javy Środowisko programistyczne Javy obejmuje bogaty zestaw bibliotek klas, które mogą być użyte w programach. Klasy zawarte w bibliotekach Javy są organizowane w pakiety. Pakiety grupują hierarchie klas, zapobiegając kolizjom nazw. Hierarchia klas w pakietach odpowiada strukturze folderów zawierających pliki z ich kodem. Obok klas zdefiniowanych we własnym kodzie źródłowym, aplikacja ma dostęp do atrybutów i metod klas zdefiniowanych w standardowym pakiecie java.lang, a także w innych pakietach bibliotek klas Javy. Standardowy pakiet java.lang jest dostępny w każdym programie; są w nim zawarte podstawowe klasy Javy w tym wykorzystane w ćwiczeniu klasy System, String oraz Integer. Kompilacja i wykonanie programu Javy Pliki źródłowe są kompilowane za pomocą kompilatora Javy do postaci pośredniej - tzw. kodu bajtowego. W wyniku kompilacji klasy są umieszczane w oddzielnych plikach o nazwach zgodnych z nazwą klasy, z rozszerzeniem "class". Kompilator javac.exe wchodzi w skład JDK (Java Development Kit) bezpłatnego środowiska programistycznego Javy opracowanego przez firmę Sun. Najprostsze polecenie kompilacji programu zawartego w pliku Nazwa.java, z użyciem kompilatora javac.exe z poziomu wiersza poleceń, ma postać: javac Nazwa.java Program Javy jest wykonywany przez interpreter kodu bajtowego zwany JVM (Java Virtual Machine), dopasowany do danego systemu operacyjnego; dzięki temu można go wykonać na dowolnej platformie wyposażonej w JVM. Interpreter java.exe wchodzi w skład JRE (Java Runtime Environment) środowiska uruchamiania programów Javy, które może być używane samodzielnie lub jako podzbiór JDK. Najprostsze polecenie wykonania kodu bajtowego programu Javy zawartego w pliku zawartego w pliku Nazwa.class, z użyciem maszyny wirtualnej java.exe z poziomu wiersza poleceń, ma postać: java Nazwa Polecenie programu wykonania może opcjonalnie zawierać argumenty, podane w wierszu poleceń po jego nazwie w postaci rozdzielonych spacjami ciągów znaków tekstowych, np. java Nazwa alfa beta lub java Nazwa 12 5.3 Aplikacja Javy musi mieć publiczną klasę główną, której definicja zaczyna się od słowa public. Klasa główna musi zawierać standardową metodę o nazwie main(), która służy jako punkt startowy. Ciało metody main() zawiera kod rozpoczynający działanie programu, np. przez odwołania do innych klas aplikacji lub klas zawartych w bibliotekach Javy, tworzenie obiektów i wywołanie metod. Nagłówek standardowej metody main(); parametr w postaci tablicy argumentów W nagłówku (sygnaturze) nazwę metody main() poprzedzają trzy słowa kluczowe o niżej wyjaśnionym znaczeniu: public static void main(String[] args) public static – oznacza metodę publiczną, czyli dostępną dla innych klas i obiektów – oznacza statyczną metodę klasową, czyli dostępną za pośrednictwem nazwy klasy (bez potrzeby tworzenia instancji obiektu tej klasy) void – oznacza metodę nie zwracającą wartości, a tylko wykonującą ciąg instrukcji zawarty w jej deklaracji Jeżeli wywołaniu programu towarzyszą argumenty, to są one przekazywane do metody main() przez tablicę klasy o zwyczajowej nazwie args, której elementami są ciągi znaków tekstowych podane jako argumenty. Elementy tablicy args są numerowane od 0 do n-1, gdzie n określa liczbę argumentów przekazanych w poleceniu wykonania programu. Do elementu tablicy args odnosimy się podając jego numer w nawiasie kwadratowym, np. args[0] oznacza pierwszy argument. String[] Klasa String, stałe i zmienne tekstowe, konkatenacja i automatyczna konwersja tekstów Teksty czyli łańcuchy znaków są reprezentowane w Javie przez obiekty klasy String Stałe łańcuchy znaków występujące w programie, pisane w cudzysłowie, są przekształcane na obiekty klasy String Obiekty klasy String mogą być łączone przez operator konkatenacji +, np. "Witaj w Javie" + s Jeżeli co najmniej jeden ze składników łączonych znakami + jest obiektem klasy String, znaki + są traktowane jako operatory konkatenacji. Wówczas następuje automatyczna konwersja składników o wartościach liczbowych na łańcuchy znaków, np. w wyrażeniu (i+1)+": "+args[i] liczbowa wartość wyrażenia (i+1) będzie przekształcona na odpowiedni ciąg cyfr. Materiały do użytku wewnętrznego strona 1 Laboratorium z informatyki sem.II/ćw.1 Wydział Transportu PW 2016/17 Metody print() i println() Klasa System jest wyposażona m.in. w pole statyczne (tzw. zmienną klasową) out reprezentujące standardowe wyjście z programu. Obiekt out posiada szereg metod wyświetlania na ekranie (bądź drukowania, zależnie od technicznej realizacji wyjścia standardowego). Metoda System.out.print() ma jeden argument, który wyświetla jako tekst, metoda System.out.println() wyświetla argument oraz dodaje na końcu znak nowej linii, co powoduje przejście kursora do następnej linii. Deklaracje zmiennych Zmienne są deklarowane przez podanie ich typu (klasy) oraz nazwy, np. String s; lub int i; Deklaracja zmiennej może być połączona z przypisaniem jej wartości początkowej, np. String s="as"; int i=10; Typy proste i obiektowe; konwersja tekstu na liczby. Obok klas obiektów, w Javie występują typy proste dla wartości liczbowych, znakowych i logicznych. Większość typów prostych uzupełniają odpowiadające im klasy (typy obiektowe), które definiują szereg właściwości i metod związanych z operacjami na odpowiednich wartościach. Jednym z prostych typów całkowitych jest typ int. Odpowiadająca mu klasa Integer definiuje m.in. metodę o nazwie parseInt(}, która konwertuje łańcuch znaków (ciąg cyfr ew. poprzedzony znakiem „-”) podany jako parametr na wartość typu int. Jednym z przykładów użycia tej metody w ćwiczeniu jest następująca instrukcja: m = Integer.parseInt(args[i]); Wyjątki w programach Javy; instrukcja try-catch… Zdarzenia powodujące błędne działanie programu nazywane są wyjątkami (ang. exceptions). Wyjątki są reprezentowane w języku Java przez obiekty specjalnie w tym celu zdefiniowanych klas. Do obsługi wyjątków służy instrukcja try w połączeniu z jedną lub kilkoma częściami catch i/lub jedną częścią finally. Słowem kluczowym try rozpoczynamy blok kodu, który może zgłaszać wyjątki. Jeśli wewnątrz tego bloku pojawi się wyjątek jest on wyrzucany (ang. thrown). Słowo kluczowe catch (złap) używane jest do przechwytywania wyjątków. Najbardziej ogólna postać bloku try...catch jest następująca: try {//blok kodu, który może spowodować wyjątek Instrukcje zawarte w części catch są } wykonywane przypadku pojawienia się wyjątku catch (Klasa_wyjątku nazwa_wyjątku) { odpowiedniej klasy; instrukcje zawarte w //instrukcje obsługi wyjątku opcjonalnej (nieobowiązkowej) części finally } są zawsze wykonywane na zakończenie … finally{//instrukcje} instrukcji try-catch. Uwaga: Istotna jest kolejność części catch: jeśli któraś z nich przechwyci wyjątek, następne catch nie będą wykonane. Przykładami klas wyjątku są: Exception – błąd typu ogólnego (przechwytuje wszystkie błędy) ArrayIndexOutOfBoundsException - błąd przekroczenia zakresu tablicy NumberFormatException – błąd formatu liczbowego (występujący w ćwiczeniu). IOException - błąd wejścia/wyjścia Środowisko uruchomieniowe NetBeans Do edycji i uruchamiania programów w języku Java będziemy korzystać z NetBeans IDE 8.0.2 w wersji Development. Jest to zintegrowane środowisko programistyczne (Integrated Development Environment), które umożliwia opracowanie wielu różnych typów aplikacji - bazujących przede wszystkim na Javie, a także na innych współczesnych językach i technologiach programowania aplikacji sieciowych jak HTML, XML czy usługi webowe. Oprogramowanie IDE NETBEANS 8.0.2 można pobrać ze strony https://netbeans.org/downloads/ Podstawowe elementy okna w środowisku NetBeans IDE 8.0.2 Okno Netbeans IDE jest podzielone na szereg istotnych elementów; najważniejsze z nich pokazano na poniższym rysunku: Pasek menu Okno edytora kodu źródłowego Okno Projektów wyświetla drzewo struktury budowanego projektu Okno Nawigatora wyświetlające hierarchię używanych w programie klas, pozwala na kontrolę poszczególnych klas i ich metod Okno konsoli (wyjścia standardowego - Output) służy do wyświetlania komunikatów IDE w fazie kompilacji i wykonania oraz wyników działania aplikacji Z pozostałymi elementami środowiska NetBeans będziemy zapoznawać się w trakcie kolejnych zajęć. Materiały do użytku wewnętrznego strona 2