Przygotował: Jacek Sroka 1 Programowanie obiektowe Wykład 3 Java podstawy
Przygotował: Jacek Sroka 2 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ą
Przygotował: Jacek Sroka 3 Przypomnienie c.d. Program = zbiór obiektów Obiekty łączą stan i zachowanie Obiekty zlecają sobie nawzajem pewne odpowiedzialności Posiadanie młotka nie uczyni z ciebie architekta
Przygotował: Jacek Sroka 4 Co dalej Wprowadzenie do Javy Podstawowe konstrukcje języka Uruchamianie programów JVM, JRE, JDK,...
Przygotował: Jacek Sroka 5 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
Przygotował: Jacek Sroka 6 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 6 J2SE 1.4.2 i 5.0 SE, ME, EE
Przygotował: Jacek Sroka 7 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
Przygotował: Jacek Sroka 8 Uruchamianie Klasa publiczna musi być 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
Przygotował: Jacek Sroka 9 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 */
Przygotował: Jacek Sroka 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
Przygotował: Jacek Sroka 11 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
Przygotował: Jacek Sroka 12 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
Przygotował: Jacek Sroka 13 Operatory Postfix: expr++ expr-- Unary: ++expr --expr +expr -expr ~! Multiplicative * / % Additive + - Shift << >> >>> Relational < > <= >= instanceof Equality ==!= Bitwise AND & bitwise exclusive OR ^ bitwise inclusive OR Logical AND && Logical OR Ternary? : Assignment = += -= *= /= %= &= ^= = <<= >>= >>>=
Przygotował: Jacek Sroka 14 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
Przygotował: Jacek Sroka 15 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!
Przygotował: Jacek Sroka 16 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;
Przygotował: Jacek Sroka 17 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--; 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+", ");
Przygotował: Jacek Sroka 18 Instrukcje c.d. instrukcja break break; break dalej; instrukcja continue continue; continue dalej; instrukcja powrotu return; return 0; instrukcja zgłoszenia wyjątku throw new Wyjątek(); instrukcja synchronizująca (zagadnienia współbieżności pomijamy)
Przygotował: Jacek Sroka 19 Instrukcje c.d. 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; }