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
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
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
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 continue for new switch assert default if package synchronized boolean do goto private instanceof break double throw protected implements byte else import public throws this case enum return transient catch extends int short interface char final try static void class finally long strictfp volatile const float native super 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
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
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
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