Java. Write Once, Run Anywhere

Podobne dokumenty
Programowanie obiektowe

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

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

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

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

Programowanie obiektowe

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

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

Platformy Programistyczne Podstawy języka Java

Programowanie obiektowe

Wprowadzenie do języka Java

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

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

Tworzenie aplikacji w języku Java

Java jako język programowania

STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW

Ćwiczenie 1. Przygotowanie środowiska JAVA

JAVA W SUPER EXPRESOWEJ PIGUŁCE

KOTLIN. Język programowania dla Androida

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

Wykład 2: Podstawy Języka

Programowanie w Internecie. Java

Podstawowe części projektu w Javie

Microsoft IT Academy kurs programowania

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

Java. Programowanie Obiektowe Mateusz Cicheński

Laboratorium Programowania Kart Elektronicznych

Multimedia JAVA. Historia

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

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

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

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

Wykład 4: Klasy i Metody

Programowanie wieloplatformowe w Java

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

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

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

Podstawy i języki programowania

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

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

Programowanie obiektowe zastosowanie języka Java SE

Programowanie obiektowe

Dokumentacja do API Javy.

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

1 Atrybuty i metody klasowe

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Java EE produkcja oprogramowania

Programowanie obiektowe

Wykład 5: Więcej o Klasach i Metodach

Programowanie Komputerów

Kurs programowania. Wykład 10. Wojciech Macyna. 05 maja 2016

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

Java EE produkcja oprogramowania

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

1 Podstawy c++ w pigułce.

Programowanie w Javie Lista nr 1. Wybieramy kategorię Java, a wśród Projektów Java Application i [NEXT]

Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne

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

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

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

Testy jednostkowe - zastosowanie oprogramowania JUNIT 4.0 Zofia Kruczkiewicz

Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie

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

Programowanie obiektowe

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

Programowanie obiektowe

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


Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

Programowanie obiektowe

Programowanie, algorytmy i struktury danych

Programowane refleksyjne i serializacja

Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2.

Metody Metody, parametry, zwracanie wartości

Podstawy Programowania C++

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Podstawy i języki programowania

1 Podstawy c++ w pigułce.

Polimorfizm. dr Jarosław Skaruz

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

Wykład 7: Pakiety i Interfejsy

Java Język programowania

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

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

Na przykładzie języków Java, C# i odrobiny C++ Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

PARADYGMATY PROGRAMOWANIA Wykład 4

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

Opis zagadnieo 1-3. Iteracja, rekurencja i ich realizacja

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18

Programowanie obiektowe

Programowanie - instrukcje sterujące

Materiały pomocnicze do wykładu 3 - Elementy języka Java

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Typy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura

Definiowanie własnych klas

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Programowanie obiektowe

Programowanie w Javie cz. 1 Programowanie strukturalne

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Transkrypt:

Java Write Once, Run Anywhere

Java - Wstęp Java: Język programowania niezależny od platformy Składnia podobna do C++ Podobieństwo do j. Smalltalk

Java - Wstęp Java interesujące cechy: Automatyczna kontrola typów, Automatyczne odśmiecanie, Brak wskaźników, Uproszczony dostęp do sieci, Wielowątkowość

Jak to działa..? Compile-time Environment Run-time Environment Java Source (.java) Class Loader Bytecode Verifier Java Class Libraries Java Compiler Java Bytecodes move locally or through network Java Interpreter Just in Time Compiler Java Virtual machine Runtime System Java Bytecode (.class ) Operating System Hardware

Jak to działa..? Niezależność od platformy: Java Virtual Machine (JVM), Kod jest kompilowany do bytecode, który jest interpretowany przez JVM, JIT (just in time) kompilator

Java - Bezpieczeństwo Brak wskaźników zmniejszone szanse na uszkodzenie pamięci, Applety z ograniczeniami - Nie mogą Uruchamiać lokalnych programów, Pisać/czytać z lokalnych plików, Komunikować się z innymi serwerami niż ten, z którego pochodzą

Object-Oriented Java wspiera OOD Polimorfizm Dziedziczenie Enkapsulację Wszystko w Javie należy do jakiejś klasy Brak funkcji, zmiennych globalnych

Zalety Javy Przenośność - Write Once, Run Anywhere Przemyślane mechanizmy bezpieczeństwa Łatwe zarządzanie pamięcią Duże wsparcie dla programowania sieciowego Wbudowane mechanizmy wielowątkowości Dynamiczne ładowanie bibliotek Ładowane wtedy gdy potrzebne

Podstawowa składnia

Typy proste, zmienne boolean, char, byte, short, int, long, float, double etc. Tylko zmienne tych typów nie są obiektami Do tworzenia zmiennych tych typów nie używa się new Tworzenie zmiennych typów prostych: float initval; int retval, index = 2; double gamma = 1.2, brightness; boolean valueok = false;

Inicjalizacja Jeśli wartość nie została przypisana przed pierwszym użyciem kompilator zgłosi błąd Java automatycznie ustawia wartość zmiennych na 0 lub true (boolean) Wszystkie referencje są początkowo ustawiane jako null Tablica także jest obiektem Ma wartość null po deklaracji Elementy mają wartość null lub 0 po utworzeniu tablicy

Definicje zmiennych int index = 1.2; boolean retok = 1; // compiler error // compiler error double fivefourths = 5 / 4; // no error! float ratio = 5.8f; double fivefourths = 5.0 / 4.0; // correct // correct 1.2f jest typu float (dokładność do 7 miejsc po przecinku) 1.2 jest typu double (dokładność 15)

Przypisania Wszystkie przypisania są right associative int a = 1, b = 2, c = 5 a = b = c System.out.print( a= + a + b= + b + c= + c) Od prawej do lewej: a = (b = c);

Operatory artymetyczne * / % + - * / % mają wyższy priorytet od + or - double myval = a + b % d c * d / b; to to samo co: double myval = (a + (b % d)) ((c * d) / b);

Wyrażenia i bloki Wyrażenie to polecenie kończące się średnikiem name = Fred ; Blok to zbiór wyrażeń ograniczonych { { name1 = Fred ; name2 = Bill ; Bloki mogą zawierać inne bloki

Przepływ sterowania Java przetwarza polecenia jedno po drugim w kolejności ich występowania w kodzie Polecenia kontrolujące przepływ sterowania: Alternation: Looping: Escapes: if, if else, switch for, while, do while break, continue, return

If Wyrażenie warunkowe Wyrażenie if przetwarza warunek logiczny i jeśli jest ono true wykonuje polecenia: if ( x < 10 ) x = 10; Jeśli x jest mniejsze od 10 to ustaw x = 10 Można zapisać: Lub: if ( x < 10 ) x = 10; if ( x < 10 ) { x = 10;

Operatory służące do porównywania == Równość (uwaga przy obiektach!)!= Brak równości >= Większy lub równy <= Mniejszy lub równy > Większy < Mniejszy

If else if (x!= oldx) { System.out.print( x was changed ); else { System.out.print( x is unchanged );

Nested if else if ( myval > 100 ) { if ( remainderon == true) { myval = mval % 100; else { myval = myval / 100.0; else { System.out.print( myval is in range );

else if if ( n == 1 ) { // execute code block #1 else if ( j == 2 ) { // execute code block #2 else { // if all previous tests have failed, execute code block #3

Uwaga! ŹLE! if( i == j ) if ( j == k ) System.out.print( else i equals k ); System.out.print( i is not equal to j ); DOBRZE! if( i == j ) { if ( j == k ) System.out.print( else i equals k ); System.out.print( i is not equal to j ); // Correct!

Polecenie switch switch ( n ) { case 1: // execute code block #1 break; case 2: // execute code block #2 break; default: // if all previous tests fail then //execute code block #4 break;

Pętla for n iteracji pętli : for ( i = 0; i < n; n++ ) { // this code body will execute n times // ifrom 0 to n-1 Zagnieżdżone for : for ( j = 0; j < 10; j++ ) { for ( i = 0; i < 20; i++ ){ // this code body will execute 200 times

Pętla while while(response == 1) { System.out.print( ID = + userid[n]); n++; response = readint( Enter );

Pętla do { while do { System.out.print( ID = + userid[n] ); n++; response = readint( Enter ); while (response == 1);

Break Polecenie break powoduje wyjście z najbardziej zagnieżdżonego polecenia while, do, for lub switch for ( int i = 0; i < maxid, i++ ) { if ( userid[i] == targetid ) { index = i; break; // program jumps here after break

Continue Może być używane w pętlach while, do oraz for Powoduje przejście do kolejnej iteracji pętli for ( int i = 0; i < maxid; i++ ) { if ( userid[i]!= -1 ) continue; System.out.print( UserID + i + : + userid);

Tablice Tablica jest zbiorem wartości Tablica ma ustalone: nazwę typ długość Te wartości muszą być podane przy deklaracji tablicy Wielkość tablicy nie może się zmieniać podczas działania programu

myarray = 3 6 3 1 6 3 4 1 0 1 2 3 4 5 6 7 myarray ma miejsce na 8 elementów Dostęp do elementów poprzez ich indeks W Javie numerowanie indeksów zaczyna się od 0!

Deklarowanie tablic int myarray[]; Deklaruje tablicę wartości typu int myarray = new int[8]; Tworzy tablicę o długości 8 int myarray[] = new int[8]; Zapis w jednej linijce

Przypisywanie wartości Odwoływanie się przez indeks myarray[0] = 3; myarray[1] = 6; myarray[2] = 3;... Można zainicjować tablicę wartościami przy jej tworzeniu int myarray[] = {3, 6, 3, 1, 6, 3, 4, 1;

Przechodzenie (iterowanie) przez tablicę Pętle for są do tego przydatne for (int i = 0; i < myarray.length; i++) { myarray[i] = getsomevalue();

Tablice obiektów Do tej pory mieliśmy do czynienia z tablicami typów prostych integers doubles, floats, characters Tablice można tworzyć także dla obiektów Student studentlist[] = new Student[10]; studentlist[0] = new Student();

Java Methods & Classes

Klasy OOP - object oriented programming Kod zbudowany z klas Instancje klas to obiekty Każda klasa powinna być w osobnym pliku.java

Trzy filary OOP Enkapsulacja Objects hide their functions (methods) and data (instance variables) Dziedziczenie Each subclass inherits all variables of its superclass Polimorfizm Interface same despite different data types manual draw() car Super class automatic draw() Subclasses

Prosta klasa i metoda tej klasy Class Fruit{ int grams; int cals_per_gram; int total_calories() { return(grams*cals_per_gram);

Metody Metoda to sekwencja poleceń, która może być wywołana w kodzie na rzecz danego obiektu Metoda pobiera argumenty, wykonuje polecenia i może zwracać wartość public float convertcelsius(float tempc) { return( ((tempc * 9.0f) / 5.0f) + 32.0 );

Sygnatury metod Sygnatura metody specyfikuje: Nazwę metody Typ i nazwę każdego parametru Zwracany typ (lub void nic nie zwraca) Listę wyjątków rzucanych przez metodę public float convertcelsius (float tcelsius ) { public boolean setuserinfo ( int i, int j, String name ) throws IndexOutOfBoundsException {

Public/private Metody/składowe mogą być deklarowane jako public lub private. Do metod/składowych public jest dostęp z poza klasy Dobra praktyka: Składowe private Większość metod private Dobrze zdefiniowany interfejs publiczny klasy

Używanie obiektów Fruit plum=new Fruit(); int cals; cals = plum.total_calories(); Operator. pozwala na dostęp do publicznych metod/składowych

Konstruktory plum = new Fruit(); Konstruktor jest to metoda wywoływana podczas tworzenia obiektu danej klasy Klasa może mieć kilka konstruktorów z różnymi parametrami

Przeładowanie metod Klasa może mieć kilka wersji danej metody Fruit() {grams=50; Fruit(a,b) { grams=a; cals_per_gram=b; Patrząc na listę argumentów Java decyduje, której wersji metody użyć: Fruit f1 = new Fruit(); Fruit f2 = new Fruit(1, 2);

Java Development Kit javac - The Java Compiler java - The Java Interpreter jdb - The Java Debugger appletviewer -Tool to run the applets javap - to print the Java bytecodes javaprof - Java profiler javadoc - documentation generator javah - creates C header files

Stream Manipulation

Streams and I/O basic classes for file IO FileInputStream, for reading from a file FileOutputStream, for writing to a file Example: Open a file "myfile.txt" for reading FileInputStream fis = new FileInputStream("myfile.txt"); Open a file "outfile.txt" for writing FileOutputStream fos = new FileOutputStream ("myfile.txt"); 47

Display File Contents import java.io.*; public class FileToOut1 { public static void main(string args[]) { try { FileInputStream infile = new FileInputStream("testfile.txt"); byte buffer[] = new byte[50]; int nbytesread; do { nbytesread = infile.read(buffer); System.out.write(buffer, 0, nbytesread); while (nbytesread == buffer.length); catch (FileNotFoundException e) { System.err.println("File not found"); catch (IOException e) { System.err.println("Read failed"); 48

Filters Once a stream (e.g., file) has been opened, we can attach filters Filters make reading/writing more efficient Most popular filters: For basic types: DataInputStream, DataOutputStream For objects: ObjectInputStream, ObjectOutputStream 49

Writing data to a file using Filters import java.io.*; public class GenerateData { public static void main(string args[]) { try { FileOutputStream fos = new FileOutputStream("stuff.dat"); DataOutputStream dos = new DataOutputStream(fos); dos.writeint(2); dos.writedouble(2.7182818284590451); dos.writedouble(3.1415926535); dos.close(); fos.close(); catch (FileNotFoundException e) { System.err.println("File not found"); catch (IOException e) { System.err.println("Read or write failed"); 50

Reading data from a file using filters import java.io.*; public class ReadData { public static void main(string args[]) { try { FileInputStream fis = new FileInputStream("stuff.dat"); DataInputStream dis = new DataInputStream(fis); int n = dis.readint(); System.out.println(n); for( int i = 0; i < n; i++ ) { System.out.println(dis.readDouble()); dis.close(); fis.close(); catch (FileNotFoundException e) { System.err.println("File not found"); catch (IOException e) { System.err.println("Read or write failed"); 51

Object serialization Write objects to a file, instead of writing primitive types. Use the ObjectInputStream, ObjectOutputStream classes, the same way that filters are used. 52

Write an object to a file import java.io.*; import java.util.*; public class WriteDate { public WriteDate () { Date d = new Date(); try { FileOutputStream f = new FileOutputStream("date.ser"); ObjectOutputStream s = new ObjectOutputStream (f); s.writeobject (d); s.close (); catch (IOException e) { e.printstacktrace(); public static void main (String args[]) { new WriteDate (); 53

Read an object from a file import java.util.*; public class ReadDate { public ReadDate () { Date d = null; ObjectInputStream s = null; try { FileInputStream f = new FileInputStream ("date.ser"); s = new ObjectInputStream (f); catch (IOException e) { e.printstacktrace(); try { d = (Date)s.readObject (); catch (ClassNotFoundException e) { e.printstacktrace(); catch (InvalidClassException e) { e.printstacktrace(); catch (StreamCorruptedException e) { e.printstacktrace(); catch (OptionalDataException e) { e.printstacktrace(); catch (IOException e) { e.printstacktrace(); System.out.println ("Date serialized at: "+ d); public static void main (String args[]) { new ReadDate (); 54