Java podstawy
Transkrypt
Java podstawy
2016-03-10 Języki Programowania II Wykład 3 Java podstawy Przypomnienie • Analiza, projektowanie, programowanie, testowanie, wdrażanie – Iteracyjnie nie kaskadowo • Przypadki użycia = opowiastki o używaniu systemu = wymagania w kontekście • UML – Tylko notacja – Pozwala się komunikować • Myślenie obiektowe – Mniejsza luka reprezentacji – Łatwiej zapanować nad złożonością Przypomnienie c.d. • Program = zbiór obiektów • Obiekty łączą stan i zachowanie • Obiekty zlecają sobie nawzajem pewne odpowiedzialności 1 2016-03-10 Co dalej • Wprowadzenie do Javy – Podstawowe konstrukcje języka – Uruchamianie programów – JVM, JRE, JDK, ... Język Java • • • • • Wysokopoziomowy Kompilowalny Obiektowy Z silną kontrolą typów Składnia wzorowana na C/C++ – Bezpieczniejszy – Przenośny – “write once run anywhere” vs “write once debug everywhere” – "compile once, run anywhere” vs "write once, compile anywhere” Bajtkod • Kompilator nie generuje kodu maszynowego, ale kod pośredni (bajtkod) • Bajtkod wykonuje maszyna wirtualna Javy (Java Virtual Machine JVM) • Obecnie również inne języki (Scala, Python, Groovy, Ruby, Ada, PHP, ... • JMV + standard class libraries = JRE – JRE to Java Runtime Environment – Standardowe biblioteki implementują Java API (Application Programming Interface) • Java SE 7 (SE, ME, EE) 2 2016-03-10 Witaj Świecie public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world!");} } • Definicja klasy • Modyfikatory dostępu • Definicja metody • – Typ zwrotny • – Lista parametrów (rozdzielana przecinkiem, najpierw typ potem nazwa) • – Ciało • Składowe klasowe vs egzemplarza • Wywołanie metody Uruchamianie • Klasa publiczna musi być w pliku o tej samej nazwie – Tylko jedna klasa publiczna w pliku • W IDE – Shift+F6 vs F6 – Ctrl+Shift+F5 vs Ctrl+F5 – Ctrl+spacja – Alt+Shift+F • Z konsoli – javac – java Komentarze • Jednowierszowe // To jest komentarz jednowierszowy • Wielowierszowe /* To jest komentarz wielowierszowy */ /* A */ /* to */ /* kilka */ /* takich */ /* komentarzy */ /* To jest komentarz /* to nadal jest komentarz */ a_to_już_nie */ 3 2016-03-10 Identyfikatory • Zaczynają się od litery a potem litery lub cyfry – Znak "_" jest traktowany jako litera – Znak "$” też ale jest zarezerwowany • Programy w Javie to napisy w UniCode – identyfikatory mogą zawierać znaki narodowe (w tym polskie) • Nie ma ograniczenia na długość identyfikatorów • Identyfikatory nie mogą być słowami kluczowymi Javy ani literałami true, false i null Słowa kluczowe abstract assert boolean break byte this catch char class const continue default do double else case extends final finally float for if goto throw import enum int try long native new package private protected public return short static strictfp super switch synchronized instanceof implements throws transient interface void volatile while Literały • liczby całkowite (np. 13 czy -2627) – dziesiętne, szesnastkowe (0xC) lub ósemkowe (np. 015), • liczby rzeczywiste (np. 1.0 czy -4.9e12) – mogą być dziesiętne, szesnastkowe lub binarne • literały logiczne false i true • literały znakowe (np. 'a' czy '\n') • literały napisowe (np. "Ala ma kota") – klasa String a nie typ pierwotny • literały tablicowe • literał null 4 2016-03-10 Operatory • • • • • • • • • • • • • Postfix: expr++ expr-Unary: ++expr --expr +expr -expr ~ ! Multiplicative * / % Additive + Shift << >> >>> Relational < > <= >= instanceof Equality == != Bitwise AND & Bitwise OR | Logical AND && Logical OR || Ternary ? : Assignment = += -= *= /= %= &= ^= |= <<= >>= >>>= Typy • Każda zmienna, atrybut, parametr ma zadeklarowany typ • Kompilator sprawdza czy typy wyrażeń się zgadzają • Typy pierwotne – boolean – byte, short, int, long, char – float, double • Typy referencyjne – Klasy – Interfejsy – Tablice • Obiekty = egzemplarze klas lub tablice Zmienne • • • • • • • zmienne klasowe zmienne egzemplarzowe zmienne lokalne elementy tablic (te zmienne są anonimowe) parametry metod parametry konstruktorów parametry obsługi wyjątków Dla zmiennych lokalnych trzeba samemu zainicjować przed użyciem! 5 2016-03-10 Instrukcje • instruckja pusta ; • instrukcja deklaracji zmiennej lokalnej int j = 13; int[] tab = new int[10]; • instrukacja etykietowana koniec: return 0; • instrukcja wyrażeniowa i = 0; o.wypisz(i); • instrukcja warunkowa if (i > 0) i--; if (i > j) max = i; else max = j; Instrukcje c.d. • instrukcja asercji assert i>0; assert i>=0: "i (" + i + ") mniejsze od zera"; • instrukcja wyboru switch (i){ default: System.out.println("Wartość spoza zakresu"); break; // Tak, nie musi być ostatnia! case 1: case 2: System.out.println("Dodatnie"); break; case -1: case -2: System.out.println("Ujemne"); break; case 0: System.out.println("Zero"); break; } • pętla dopóki while (i>0) i--; Instrukcje c.d. • pętla wykonuj do i++ while ( i < 0 ); • pętla dla (wersja podstawowa) for(int j = 0; j<tab.length; j++) tab[j] = 0; • pętla dla (wersja rozszerzona) for(int elt: tab) System.out.print(elt+", "); • instrukcja break break; break dalej; • instrukcja continue continue; continue dalej; • instrukcja powrotu return; return 0; 6 2016-03-10 Instrukcje c.d. • instrukcja zgłoszenia wyjątku throw new Wyjątek(); • instrukcja synchronizująca (zagadnienia współbieżności pomijamy) • instrukcja try try{ i = j/k; } catch (Exception e) { System.out.println("Dzielenie przez zero"); } finally { System.out.println("Kończymy"); } • instrukcja bloku (umożliwia deklarowanie zmiennych lokalnych, a także klas lokalnych), np. { int i = 1; i++; int j = i + 1; return i+j; } Przykład Klasy Co dalej….? • Zapoznać się z przedstawionymi typami instrukcji i przykładami • Lista 2 Następne zajęcia: • Pakiety, tablice, przeciążanie metod, kapsułkowanie, inicjalizacja 7