Programowanie wieloplatformowe w Java



Podobne dokumenty
dr Krzysztof Podlaski

Programowanie obiektowe

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Programowanie obiektowe

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Tworzenie aplikacji w języku Java

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Programowanie obiektowe

Java jako język programowania

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Wprowadzenie do języka Java

Programowanie w Internecie. Java

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie obiektowe

2. Składnia, środowisko i konwencje w Javie

Programowanie obiektowe. Wprowadzenie

Microsoft IT Academy kurs programowania

Ćwiczenie 1. Przygotowanie środowiska JAVA

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

1 Atrybuty i metody klasowe

Java podstawy jęyka. Wykład 2. Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne.

Java Język programowania

WPROWADZENIE DO JĘZYKA JAVA

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Multimedia JAVA. Historia

Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.

Wykład 2: Podstawy Języka

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Programowanie urządzeń mobilnych

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Wykład 4: Klasy i Metody

Podstawy otwartych języków programowania Język Java

Podstawy programowania obiektowego

Spis treści. 1 Java T M

Platformy Programistyczne Podstawy języka Java

Programowanie w Javie

Programowanie obiektowe zastosowanie języka Java SE

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

Języki i metody programowania Java. Wykład 2 (część 2)

Programowanie, algorytmy i struktury danych

Akademia ETI. Wprowadzenie do programowania w Javie PG Java User Group Przemysław Kulesza

Java EE produkcja oprogramowania

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Podstawy i języki programowania

Java-wykład. Dorota Pylak

Podstawowe części projektu w Javie

Podstawy języka Java. przygotował:

Wstęp do programowania w języku Java

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

JAVA. Tomasz Grzywacz.

Dokumentacja do API Javy.

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusz Mikoda

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Programowanie obiektowe

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Podstawy Języka Java

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Wstęp do programowania w języku Java

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Laboratorium Programowania Kart Elektronicznych

Programowanie sieciowe

Dziedziczenie. dr Jarosław Skaruz

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

1 Podstawy c++ w pigułce.

Enkapsulacja, dziedziczenie, polimorfizm

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Podstawy Programowania C++

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Technologie i usługi internetowe cz. 2

Języki i metody programowania Java INF302W. Wykład 1 (część 1) na podstawie Autor Dr inż. Zofia Kruczkiewicz

Język ludzki kod maszynowy

Dorota Pylak. Aplikacje w Javie- wykład 1

Programowanie obiektowe i zdarzeniowe

Podstawy programowania skrót z wykładów:

Podstawy programowania w języku C

Podstawy Programowania Obiektowego

1 Podstawy c++ w pigułce.

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Java EE produkcja oprogramowania

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

Programowanie obiektowe

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main

Materiały do zajęć VII

Definiowanie własnych klas

Transkrypt:

Programowanie wieloplatformowe w Java dr Krzysztof Podlaski 1

Kwestie organizacyjne Wykład: 15 godzin Zaliczenie test Ćwiczenia 30 godzin (dr K.Podlaski) Zaliczenie projekt Konsultacje: do ustalenia, Kontakt: pokój 331 (III poziom) email: podlaski (at) uni.lodz.pl www: http://merlin.phys.uni.lodz.pl/kpodlaski 2

Treść wykładów 1. Krótki wstęp, dotyczący historii języka i zastosowań 2. Java - język obiektowy. 3. Tworzenie programów, kompilowanie ich i wykonywanie, tworzenie dokumentacji. 4. Podstawowe konstrukcje i instrukcje sterujące. 5. Dziedziczenie i Polimorfizm 6. Inicjalizacja klas, czyszczenie po wykorzystanych obiektach. 7. Wyjątki w Języku Java i ich obsługa. 8. Wykrywanie typów RTTI (Metoda refleksji) 9. Kolekcje obiektów 10. Systemy wejścia-wyjścia 11. Wielowątkowość 12. Tworzenie Appletów, oprogramowanie GUI 13. J2ME tworzenie aplikacji dla małych urządzeń 3

Dlaczego Java Modny Język Wieloplatformowość» Java Virtual Machine Era internetu Łatwość programowania? Programowanie dużych projektów» Just In Time Wiele specjalistycznych bibliotek Prostota tworzenia dokumentacji 4

Dlaczego Java cd. Zastosowania Aplikacje wieloplatformowe Applety dla stron www JSP, Servlety (nowoczesne cgi), Portlety Serwisy Webowe Telefony komórkowe - w wersji Android Programowanie sieciowe (czat, wspomaganie systemów CMS) Wykorzystanie zasobów jak Bazy Danych, pliki XML, innych technologii informatycznych 5

Trochę historii James Gosling, Sun Microsystems Projekt Oak czerwiec 1991 WORA - Write Once, Run Everywhere Język obiektowy prostszy niż c++ Pierwsza implementacja Java 1.0, 1995 Nowa Java 2 (Java 1.2, 1.3, 1.4, 1.5) Aktualnie Java 1.8 (Java 8 ) 6

Język Java Dzisiaj J8SE (Java 8 Standard Edition) JDK (Java Developement Kit) J8RE (Java 8 Runtime Einviroment) Plug-in dla przeglądarek J5EE (Java 7 Enterprise Edition)» J2EE w wersji 1.4 i 1.5 równocześnies JME (Java 2 Micro Edition) Zastąpiona przez Davlik == Android 7

JDK 8

JDK - narzędzia javac kompilowanie plików źródłowych java JVM appletviewer przeglądarka appletów jdb debuger javy javadoc generator dokumentacji w formacie HTML jar archiwizator wieloplatformowy 9

Po Pomoc Strony Sun Microsystems www.sun.com, java.sun.com, www.java.com Strony niezależne www.google.pl www.onjava.com, today.java.net, www.javalobby.org Alternatywne wersje Javy www-128.ibm.com/developerworks/java/jdk/ 10

Literatura Bruce Eckel, Thinking in Java, wyd. 4, Helion 2006 (wyd. 3, 2003) Dostępne w wersji angielskiej (wyd. 3) www.mindview.net/books/tij/ Boone Barry, Java dla programistów C i C++, WNT, 1998. 11

Własności języka Java Obiektowy język programowania Wszystko jest obiektem» Prawie wszystko Podobieństwo do języka C++» Podobna składnia» Uproszczona obsługa pamięci» Garbage Collector» Ścisła kontrola błędów (wyjątki) 12

Proces tworzenia programu Pomysł Implementacja w języku java Plik.java Kompilacja Kod pośredni (java bytecode).class Wykonanie Wirtualna Maszyna Javy Wykonanie kodu pośredniego Kompilacja Just in Time 13

Dlaczego kod pośredni Wieloplatformowość Odpowiedzialność zrzucona na JVM Bezpieczeństwo i ochrona praw autorskich Dystrybucja tylko plików.class Trudność w odkodowaniu programu» obfusyfikacja kodu Ułatwienie pracy w zespole Kompilacja JiT 14

Programowanie Obiektowe Dwa światy Problem do rozwiązania (abstrakcja problemu) Specyfika maszyny (abstrakcja implementacji) Semafor: własności: stan: (zapalony, zgaszony) czynności: włączanie (zapal, zgaś) sprawdzanie stanu Klasa: Semafor wlaczony on() off() czyzapalony() 15

Przykładowa implementacja Semafor wlaczony on() off() czyzapalony() class Semafor { boolean wlaczony; void on() {wlaczony = true;} void off() {wlaczony = false;} boolean czyzapalony {return wlaczony;} } 16

Paradygmat obiektowości Wszystko jest obiektem Program zbiór obiektów komunikujących się ze sobą Każdy obiekt ma określony typ (klasa) Obiekty tej samej klasy używają takich samych metod komunikowania się 17

Wszystko jest obiektem Cały program Javy jest obiektem!! Definiujemy obiekt public class NazwaKlasy {... Pola i metody } Sterowanie dostępem public, private, protected, package access 18

Wszystko jest obiektem cd. Obiekt posiada: Pola stan obiektu» Pole może również być obiektem Metody komunikowanie się ze światem Tożsamość Każdy obiekt musi zostać utworzony przed pierwszym użyciem instrukcja new 19

Wszystko jest obiektem cd. Klasa publiczna -> NazwaKlasy.java Tylko 1 klasa publiczna w pliku o tej samej nazwie Inne klasy ograniczony dostęp Kompilacja -> pliki NazwaKlasy.class 1 klasa jeden kod pośredni NazwaKlasy.class Każda klasa ma swój plik.class Uruchomienie programu Klasa publiczna Posiada jedną metodę publiczną main 20

No prawie wszystko Wygoda programistów Typy proste boolean (true, false) char (znak Unicode) 16 bit byte (całkowite [-127, 127] ) 8bit short, int, long (całkowite) 16, 32, 64 bit float, double 32, 64 bit void Do każdego z typów klasy opakowujące (Wrappers) Boolean, Character, Byte, Short, Integer, Long, Float, Double, Void 21

Podział Pamięci Rejestr Stos Sterta Wewnątrz procesora Brak dostępu i kontroli Bezpośredni dostęp dla procesora Mało miejsca Określone przez kompilator czas życia i wielkość Przyznawane dynamicznie Obszar statyczny Obszar stałych 22

Obiekty Obiekt a typ prosty Tworzone poprzez new Umieszczone na stercie» Dużo miejsca» Wolny dostęp Typy podstawowe Tworzone w trakcie deklaracji Umieszczane na stosie» Mało miejsca» Szybki dostęp» Określony czas życia 23

Zwyczaje w nazewnictwie Nazwy Klas zaczynamy z Dużej Litery Hello, HelloJava, Prostokat, ZbiorProstokatow Metody i pola z małej litery on(), off(), wlaczony, pokazwartosc() Nazwa klasy/pola/metody zaczyna się od litery znaku _ lub $. 24

Pakiety w Javie Unikatowa nazwa Zwyczajowo pochodne nazw domen Programista domena kowalski.net pakiet zawiera Narzędzia nazwa pakietu» net.kowalski.narzedzia Pakiet w katalogu net/kowalski/narzedzia/ 25

Pakiety w Javie Przykładowa klasa MacierzOdwrotna.class na początku pliku linijka:» package net.kowalski.narzedzia; net/kowalski/narzedzia/macierzodwrotna.class import net.kowalski.narzedzia.macierzodwrotna; uruchamianie programów java net.kowalski.narzedzia.nazwaklasy 26

Składnia Komentarze /* komentarz wielowierszowy jak w c++ */ // komentarz jednolinijkowy /** komentarz wykorzystywany przez javadoc automatyczne tworzenie dokumentacji */ 27

Zmienne podstawowe: double epsilon=2.7; boolean prawda=true, falsz=false; Całkowite 2, -322, 0123, 0x23f, 0X7A3, 15L Logiczne True, false Znakowe a, \n, \u00ff, \077 Tekstowe Hello\n 28

Operatory Przypisania = Arytmetyczne +,-,*,/,% Inkrementacja, dekrementacja ++,-- Porównywania >,<,>=,<=,==,!= Logiczne &&,, ^ (xor),! (not) &, 29

Operatory cd. Przypisanie złożone +=, -= Łączenie łańcuchów znaków + Brak przeładowywania operatorów znanego z C++ 30

Operacje rzutowania Operacja zmiany typu Dla typów podstawowych Automatyczne Bezstratne int i=7; float k=i; Wymuszone Dla Obiektów na String (metoda tostring() ) Nie ma rzutowania na typ boolean!! int i; char c= a ; i=(int) c; 31

Instrukcje sterujące Instrukcja warunkowa: if ( warunek ) {...} else {...} if ( warunek ) {...} else if (warunek 2) {...} else {...} 32

Pętle for for (int i=0; i<10; i++) {...} while while (warunek) {...} do while do... while (warunek) 33

Przerwanie pętli modyfikatory return break continue etykieta etykieta: while(true){ for(;true;) {... break; //1 1 - wyjście z pętli for 2 następna iteracja for 3 następna iteracja while 4 koniec obu pętli }} continue; //2 continue etykieta; //3 break etykieta; //4 34

Wybór z wielu opcji switch, case switch (zmienna) { case warość1: instrukcje; break; case wartość2: instrukcje; break;... default : instrukcje; } zmienna - byte, short, char, int, Enum 35

Klasy dostęp class NazwaKlasy { } dostęp typ nazwapola; dostęp typ nazwametody (typ1 argument1, typ2 argument2) { ciało metody } dostęp private, public, protected, nic czyli package access. 36

Konstruktor - dla każdej klasy istnieje specjalna metoda dostęp NazwaKlasy ( argumenty) {...} W Javie brak destruktora Garbage Collector Metoda finalize() Metody statyczne public void static main(string[] args){...} 37

Używanie metod obiektów class Test { private int wynik=0; public int jakiwynik { return wynik;} public void ustawwynik(int w) { wynik = w; } } Zastosujmy tę klasę jako pole innej class Student { Test fizyka=new Test(); public Student(int _wynik) { fizyka.ustawwynik(_wynik); } } 38

Proste przykłady Przykład z kilkoma klasami Przykład 1_1 Kompilowanie pliku z wieloma klasami Dla każdej klasy plik.class Klasy wewnętrzne 39

Atrybuty pól i metod Atrybuty static Z metod statycznych dostęp TYLKO do pól statycznych final typy podstawowe stała obiekty stała referencja 40

Przeładowanie metod class Student { private byte rok; private String nazwisko; private String pesel; public Student(String nazw, String npesl) { rok =1; nazwisko=nazw; pesel=npesl;} public Student(String nazw, String npesl, int _rok) {nazwisko=nazw; pesel=npesl; rok =_rok;} } 41

Inicjalizacja obiektów Kolejność inicjalizacji elementów obiektu Przykład 1_2 Początek programu Inicjalizacja elementów statycznych Deklaracja zmiennych Inicjalizacja zmiennych Inicjalizacja pól Uruchomienie konstruktora Typy podstawowe inicjowane przy deklaracji. 42

Operacje na obiektach Przyrównywanie obiektów Przykład 1_3 operator == metoda equals() Rzutowanie obiektu na String Przykład 1_4 metoda tostring() 43

Tablice Typy proste vs Obiekty klas int[ ] tab = {1, 2, 4, 6}; int tab[ ] = {1, 2, 4, 6}; int[ ] tab = new int[3];... i[0]=1; i[1]=2; i[2]=13; class Element {...}; Element[ ] tab = new Element[3];... tab[0]=new Element(); tab[1]=new Element(); 44

Tablice cd. Własności Stała wielkość Dane jednego typu» Można to obejść Czas dostępu» Jednakowy czas dostępu 45

Projektowanie Projektowanie Wymyślanie struktury klas Programowanie klas, metod Testowanie Nowy projekt Zaczynamy od zera? NIE Ponowne wykorzystanie Klas API (Application Programming Interface) 46

Powtórne użycie klasy Klasa bazowa Klasa pochodna Semafor wlaczony on() off() czyzapalony() Trasa Semafor[ ] stansemafora(int) wlaczsemafor(int) wylaczsemafor(int) polozeniesemafora(int) ktorysemafor(int) 47

Powtórne użycie klasy cd. Klasa pierwotna ElemKomp nazwa cena iloscnastanie ilekosztuje() Dostepne(int i) tostring() Klasa pochodna KartaGraficzna nazwa cena iloscnastanie rodzajzlacza iloscpamieci ilekosztuje() Dostepne(int i) tostring() 48

Dziedziczenie ElemKomp nazwa cena iloscnastanie ilekosztuje() Dostepne(int i) tostring() KartaGraficzna KartaMuzyczna Pamiec Procesor 49

Dziedziczenie cd. Dziedziczenie Zachowanie struktury Przeładowanie metod» ostrożnie z metodami prywatnymi Klasa ma TYLKO jedną Klasę przodka 50

Przykład class Ksztalt { public rysuj(int x, int y){...} public skasuj(int x, int y){...} } class Kwadrat extends Ksztalt { public Kwadrat(int, int, int); public rysuj() {...} public skasuj() {...} } class Trojkat extends Ksztalt { public Trojkat(int, int, int); public rysuj() {...} public skasuj() {...} } class Kolo extends Ksztalt { public Kolo(int, int, int); public rysuj() {...} public skasuj() {...} } 51