Podstawowe konstrukcje języka Java Bartosz Walter InMoST Wielkopolska sieć współpracy w zakresie innowacyjnych metod wytwarzania oprogramowania Termin.

Slides:



Advertisements
Podobne prezentacje
C++ wykład 2 ( ) Klasy i obiekty.
Advertisements

Język C/C++ Funkcje.
Programowanie obiektowe
Klasy i obiekty.
Wzorce.
Dziedziczenie. Po co nam dziedziczenie? class osoba { char * imie, char * imie, * nazwisko; * nazwisko;public: void wypisz_imie(); void wypisz_imie();
Języki programowania C++
Tworzenie i obsługa programów – przykład 3 uwagi cd. Wykorzystując różne klasy biblioteki języka Java należy pamiętać w jakim pakiecie się znajdują. Wszystkie.
Programowanie Obiektowe w Javie (c.d.)
Programowanie obiektowe w Javie
Podstawy języka Java Nguyen Hung Son Uniwersytet Warszawski.
ODE Triggery. Wstęp n Triggery są trójką zdarzenie-warunek-akcja (event-condition- action). n Zdarzenia mogą być proste lub złożone, co zostanie omówione.
Struktury.
Tablice.
C++ wykład 2 ( ) Klasy i obiekty.
PODSTAWY JĘZYKA PHP 1. czym jest 2. składnia 3. wersje 4. bazy danych
Wykład 1: Wskaźniki Podstawy programowania Programowanie w C
Wykład 2 struktura programu elementy języka typy zmienne
Czytanie, pisanie i rysowanie – cd.. Jeszcze jeden strumyk PrintStream działa jak PrintWriter, ale: Używa domyślnego (systemowego) kodowania Nie wyrzuca.
dr Anna Kwiatkowska Instytut Informatyki
Tablice tablica jest sekwencją elementów tego samego typu (prostego lub obiektowego) w Javie tablice są obiektami, a zmienne tablicowe przechowują referencję
Polsko – Japońska Wyższa Szkoła Technik Komputerowych
AWK Zastosowania Informatyki Wykład 1 Copyright, 2003 © Adam Czajka.
Podstawy C# Grupa .NET PO.
Podstawy programowania
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
Podstawy programowania
A ctive S erver P ages Technologia dostępu do danych.
PHP: warunki, pętle, switch, break, continue
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
STEROWANIE Ale nie tylko
Andrzej Repak Nr albumu
Java – coś na temat Klas Piotr Rosik
Dziedziczenie Maciek Mięczakowski
Inicjalizacja i sprzątanie
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
C# Platforma .NET CZ.3 Kuba Ostrowski.
Podstawy informatyki 2013/2014
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
Programowanie obiektowe 2013/2014
  ELEMENTY JĘZYKA JAVA komentarze w Javie, słowa kluczowe i operatory, proste typy danych, tablice, podstawowy zestaw instrukcji.
Podstawy języka Instrukcje - wprowadzenie
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Programowanie strukturalne i obiektowe C++
Zmienne i typy danych w C#
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Programowanie Zaawansowane
Dziedziczenie Wykład 7 Dziedziczenie sekwencyjne
Pętle – instrukcje powtórzeń
Seminarium Dyplomowe: Metodyka i Techniki Programowania Autor: Bartłomiej Fornal.
Instrukcje warunkowe w php. Pętla FOR Czasem zachodzi potrzeba wykonania jakiejś czynności określoną ilość razy. Z pomocą przychodzi jedna z najczęściej.
Partnerstwo dla Przyszłości 1 Lekcja 28 Dziedziczenie i rodzaje dziedziczenia.
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
P ASCAL Definicje, deklaracje, podstawowe instrukcje 1.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Czym jest PHP? ● Językiem programowania przeznaczonym do tworzenia i generowania dynamicznych stron WWW. Działa po stronie serwera: Klient Żądanie strony.
Programowanie Obiektowe – Wykład 6
(według:
Akademia C# - Lab2 Zmienne, instrukcje warunkowe, pętle, debugger,
Programowanie Obiektowe – Wykład 2
Dane, zmienne, instrukcje
PGO Interfejsy Michail Mokkas.
Założenia projektowe Javy
Haskell Składnia funkcji.
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
PGO Dziedziczenie Michail Mokkas.
Zapis prezentacji:

Podstawowe konstrukcje języka Java Bartosz Walter InMoST Wielkopolska sieć współpracy w zakresie innowacyjnych metod wytwarzania oprogramowania Termin realizacji: – Szkolenie finansowane ze środków Europejskiego Funduszu Społecznego (75%) i budżetu państwa (25%) w ramach Zintegrowanego Programu Operacyjnego Rozwoju Regionalnego

Zmienne  Zmienne w Javie dzielą się na 3 rodzaje typów  typ obiektowy  typ prymitywny  typ tablicowy  Zmienne muszą być deklarowane przed użyciem; deklaracja może jednocześnie być połączona z inicjalizacją zmiennej  Typy w Javie są ściśle kontrolowane  nie można przypisać zmiennej jednego typu danej drugiego typu

Zmienne (cd.)  zmienne prymitywne int licznik = 0; double suma = 0.0; boolean pelnoletni = false; char literaA = 'A';  zmienne obiektowe Date teraz = new Date(); String imie = new String("Kazimierz"); String imie = "Kazimierz";  zmienne tablicowe int[] wynikiTotka = new int[6]; String[] studenci = new String[3]; String[] studenci = {"Kowalski", "Nowak", "Kaczmarek"};

Typy prymitywne  Typy prymitywne (inaczej proste) służą do reprezentacji danych, które nie są obiektami  Typami prymitywnymi są: int, long, short, byte, char, boolean, float i double  Typy prymitywne są przechowywane na stosie (wkompilowane w program)

Odpowiedniki typów prymitywnych  Typy prymitywne często nie wystarczają  Dlatego mają swoje odpowiedniki obiektowe  Integer, Short, Long, Byte  Boolean  Character  Float, Double  Obiekty tych typów mogą mieć nadane wartości tylko przy ich tworzeniu Integer jedynka = new Integer(1); int wartosc = jedynka.intValue();// wartosc == 1 jedynka.ustawWartość(2); // niemożliwe....

Napisy  Napisy są w Javie reprezentowane przez typ java.lang.String  Łączenie napisów  napis1 + napis 2  połączenie dwóch napisów zawsze powoduje utworzenie trzeciego String napis1 = "Ala"; String napis2 = "ma"; String napis2 = "kota"; System.out.println(napis1 + " " + napis2 + " " + napis3);

Obsługa napisów  Pomiar długości napisu  int length()  Wycinanie fragmentów napisów  String substring(int poczatek, int koniec)  Czy napis zaczyna się od podanego fragmentu?  boolean startsWith(String fragment)  Czy napis kończy się na podanym fragmencie?  boolean endsWith(String fragment)  Zamiana wielkości liter  String toLowerCase()  String toUpperCase()

Obsługa napisów  Porównanie z innym napisem  int compareTo(String innyNapis)  bolean equals(String innyNapis)  Porównanie z innym napisem bez różnicy w wielkości  boolean equalsIgnoreCase(String innyNapis)  Odczyt znaku na podanej pozycji  char charAt(int pozycja)  Odczyt pozycji podanego znaku  int indexOf(char znak)  int lastIndexOf(char znak)

Napisy – trochę inaczej  Istnieje drugi typ reprezentujący napisy java.lang.StringBuffer  StringBuffer pozwala na łączenie napisów bez konieczności tworzenia nowych obiektów StringBuffer napis1 = new StringBuffer(); napis1.append("Ala").append(" "); napis1.append("ma").append(" "); napis1.append("kota"); System.out.println(napis1);

Funkcja printf() W wersji Java 5.0 wprowadzono znaną z języka C (i innych...) funkcję printf() System.out.printf(tekst, zmienna1, zmienna2,...); Formaty %c znak o podanym kodzie %s napis %d całkowita liczba dziesiętna ze znakiem %u całkowita liczba dziesiętna bez znaku %f liczba zmiennoprzecinkowa "Imię: %s, wiek %u" imie wiek

Stałe  Stałe reprezentują dane, które się nie zmieniają  Można tylko raz przypisać wartość zmiennej; drugie przypisanie zostanie uznane przez kompilator za błąd  Stałą jest zmienna poprzedzoną słowem final final int LICZBA_KOL_W_SAMOCHODZIE = 4; final double GRAWITACJA = 9.81; final String uczelnia = "WSB";

Typy obiektowe  Typ obiektowy pozwala przechowywać dane będące obiektami danej klasy  W Javie wszystkie typy poza typami prymitywnymi są typami obiektowymi (tablice też)  Typy obiektowe (klasy) można samodzielnie definiować MojaKlasa klasa; MojaKlasa klasa = new MojaKlasa(); typ obiektowy utworzenie obiektu zmienna

Instrukcja if  Instrukcja warunkowa if pozwala wykonać instrukcję jeżeli podany warunek jest prawdziwy  Opcjonalnie, w klauzuli else można podać instrukcję, która ma być wykonana, jeżeli warunek jest nieprawdziwy if (wiek < 13) szkola = "Podstawówka"; else szkoła = "Inna";

Instrukcja for  Instrukcja for pozwala wykonywać określone polecenia w pętli, wykorzystując zmienne sterujące  Pętla for pozwala na realizację wielu typów pętli for (int licznik = 0; licznik < 10; licznik++) { System.out.println("Licznik=" + licznik); instrukcja początkowa pętli warunek kontynuacji instrukcja postępu pętli

Instrukcja while Instrukcja while pozwala wykonywać określone polecenia dopóki spełniony jest warunek kontynuacji sprawdzany na początku pętli while (licznik < 25) System.out.println("Licznik=" + licznik++); warunek kontynuacji

Instrukcja do..while  Instrukcja do..while pozwala wykonywać określone polecenia dopóki spełniony jest warunek kontynuacji sprawdzany na końcu pętli  do..while różni się od while tym, że zostanie wykonana przynajmniej raz do { System.out.println("Licznik=" + licznik++); } while (licznik < 25); warunek kontynuacji

Instrukcja switch  Instrukcja switch pozwala wykonywać określone polecenia w zależności od wartości wyrażenia  Instrukcja switch działa jedynie dla wyrażeń o wartościach całkowitych, znakowych lub logicznych switch (znak) { case 'A' : System.out.print('A'); break; case 'B' : System.out.print('B'); break; default : System.out.print('D'); } wyrażenie sterujące przypadek 'A' przypadek domyślny przerwanie

Instrukcje break, continue i return  Instrukcja break przerywa działanie pętli i powoduje jej opuszczenie  Instrukcja continue przerywa bieżącą iterację pętli i powoduje przejście do następnej  Instrukcja return powoduje opuszczenie bieżącej metody (funkcji) i ew. zwrócenie wyniku

Instrukcje break i continue for (int x = 0; x 5) continue; // koniec danej iteracji if (x > 10) break;// koniec pętli }  Instrukcja break przerywa działanie pętli i powoduje jej opuszczenie  Instrukcja continue przerywa bieżącą iterację pętli i powoduje przejście do następnej

Instrukcja return public int fibb(int n) { if (n == 1 || n == 2) return 1; return fibb(n–1) + fibb(n–2); } fibb(1) == 1 fibb(2) == 1 fibb(5) == fibb(4) + fibb(3)  Instrukcja return powoduje opuszczenie bieżącej metody (funkcji) i ew. zwrócenie wyniku

Instrukcja złożona  Instrukcja złożona jest sekwencją instrukcji ograniczoną znakami '}' i '{'  Może być użyta w instrukcjach warunkowych i pętlach w miejsce pojedynczej instrukcji if (wiek < 13) { szkola = "Podstawówka"; System.out.println(szkola); } else { szkoła = "Inna"; System.out.println(szkola); }

Operatory  Arytmetyczne  +, –, *, /, %  Inkrementacji i dekrementacji  ++, – – (prefiksowy i postfixowy)  Porównania  >, >=, ==, <=, <, !=  Logiczne  && (and), || (or), ! (not), ^ (xor)  Bitowe  & (and), | (or), ~ (dopełnienie), ^ (xor)

Operatory (cd.)  Przypisania  =, op= (op jest operatorem dwuargumentowym: +, –, etc.)  Konkatenacji łańcuchów +  przykład: "Ala ma " + wiek + " lat"  Sprawdzenia typu obiektowego instanceof  przykład: kot instanceof Ssak  Warunkowy :?  przykład: x = (a > 5? 1: 2);

Konwersje i rzutowania  Konwersja niejawna jest wykonywana automatycznie między typami liczbowymi mniejszymi a większymi  byte  short  int  long  float  double  przykład: int a = 1; long b = a; // OK  Konwersja jawna (rzutowanie) jest wymagana w pozostałych przypadkach  przykład: long a = 1; int b = (int) a; // OK, ale możliwa utrata informacji

Wyrażenia  Wyrażeniem jest ciąg operacji posiadający jakąś wartość, którą można obliczyć  Składnia wyrażeń jest wzorowana na języku C i pochodnych a / (2 * b) a + b * (5 – 3 * a) 2 * Math.sin(Math.PI / 2) (a > 5? 10: 0)

Modyfikatory dostępu  Modyfikatory dostępu określają, jak dostępna jest dana klasa lub metoda  private: metoda jest dostępna tylko dla innych metod w tej samej klasie  protected: metoda jest dostępna dla innych metod w tej samej klasie lub w podklasach  public: metoda jest dostępna dla wszystkich metod we wszystkich klasach  domyślny: metoda jest dostępna dla wszystkich klas w pakiecie public class Fibbonacci { public int fibb(int n) {} }

Wybrane inne modyfikatory  abstract: metoda jest jedynie zadeklarowana, natomiast jej definicja (treść) powinna znaleźć się w klasach potomnych  static: metoda/pole jest dostępne bez konieczności tworzenia obiektów (instancji klas)  final: "zamyka" pole, metodę lub klasę  metoda nie może być pokrywana,  pole nie może być zmieniane (jest stałą),  klasa nie może posiadać podklas. public class Fibbonacci { final static int ELEM_1 = 1; public abstract int fibb(int n); }

Klasy  Program w Javie jest zbudowany z klas  Klasa posiada pola i metody public class Rachunek { private String numer; private String wlasciciel; private int saldo; public Rachunek(String n, String w) { numer = n; wlasciciel = w; saldo = 0; } public void wplata(int kwota) { saldo += kwota; }

Konstruktor  Każdy obiekt musi posiadać konstruktor; jeżeli go nie ma, wówczas kompilator generuje domyślny (pusty, bezparametrowy) public class Rachunek... public Rachunek(String id, String wlasciciel) { } modyfikator dostępu brak zwracanego typu lista parametrów

Konstruktor public class Rachunek { public Rachunek(String id, String wlasciciel) { //... } public Rachunek(String id) { this(id, null); } konstruktor nr 1 konstruktor nr 2  Konstruktor zawsze nazywa się tak jak jego klasa  Klasa może posiadać dowolną liczbę konstruktorów odwołanie do konstruktora nr 1

Utworzenie obiektu Rachunek rachunek; Rachunek rachunek = new Rachunek(1, "Nowak"); typ obiektowy wywołanie konstruktora: utwórz nowy rachunek, nadaj mu nr 1 i właściciela Nowaka zmienna operator new  Obiekt jest tworzony przez operator new i wywołanie konstruktora  Uzyskaną referencję do obiektu można zapamiętać w zmiennej

Metody (funkcje)  Program jest wykonywany poprzez wywołania metod  Metody są ciągiem instrukcji, posiadają nazwę i mogą zwrócić wartość  Metody muszą być zdefiniowane wewnątrz klas public int fibb(int n) { if (n == 1 || n == 2) return 1; return fibb(n–1) + fibb(n–2); } parametry nazwa metody typ zwracany ciało metody sygnatura metody

Wywołanie metody na obiekcie Rachunek rachunek = new Rachunek(1, "Nowak"); rachunek.wplata(1000); parametry metody obiekt komunikat (metoda)  Wywołanie metody polega na wysłaniu do obiektu komunikatu z parametrami

Pola (atrybuty)  Pola przechowują informacje w klasie  Pola definiuje się identycznie jak zmienne, tylko na poziomie klasy public class Student { private String imie; private String nazwisko; public Student(String i, String n) { imie = i; nazwisko = n; } }

Interfejs public interface InstytucjaFinansowa { public void wplata(String numer, int kwota); public void wyplata(String numer, int kwota) } nazwa klasy deklaracje metod  Interfejs, podobnie jak klasa, musi być zdefiniowany w osobnym pliku o nazwie takiej jak interfejs  Interfejs deklaruje nazwy metod, ale nie zawiera ich definicji (treści, ciała)  Interfejs jest "okienkiem", przez które można zajrzeć do klasy, która go implementuje

Interfejs SKOKATMskarbonka instytucja finansowa

Interfejsy i klasy public class Bank implements InstytucjaFinansowa { public void wplata(String numer, int kwota) { Rachunek rachunek = (Rachunek) rachunki.get(numer); rachunek.wplata(kwota); } public void wyplata(String numer, int kwota) { Rachunek rachunek = (Rachunek) rachunki.get(numer); rachunek.wplata(kwota); } implementacja interfejsu implementacja metody wplata() implementacja metody wyplata()

Interfejsy i klasy public class Bankomat implements InstytucjaFinansowa { public void wplata(String numer, int kwota) { Karta karta = (Karta) karty.get(numer); karta.wplac(kwota); } public void wyplata(String numer, int kwota) { Karta karta = (Karta) karty.get(numer); karta.wyplac(kwota); } implementacja interfejsu implementacja metody wplata() implementacja metody wyplata()

Interfejsy i klasy public class Skarbonka implements InstytucjaFinansowa { public void wplata(String numer, int kwota) { monety += kwota; } public void wyplata(String numer, int kwota) { this.rozbij(); monety = 0; } implementacja interfejsu implementacja metody wplata() implementacja metody wyplata()

Dziedziczenie public class KontoLokacyjne extends Rachunek public void ulokuj(int kwota) {...} public void wplata(int kwota) {...} } nadklasa nowa metoda  Dziedziczenie pozwala utworzyć nową klasę na bazie już istniejącej  Nowa klasa ( podklasa ) domyślnie dziedziczy wszystkie cechy (pola i metody) nadklasy, ale może też je przedefiniować  Podklasa jest szczególnym przypadkiem nadklasy i może być zawsze użyta zamiast niej metoda przedefiniowana

Pakiety  Pakiety pozwalają odróżnić różne klasy o tych samych nazwach  Pakiet + nazwa klasy tworzą pełną nazwę klasy  Pakiety mogą być w sobie zagnieżdżane package pl.org.inmost.java.adamnowak; class Klasa {} pełna nazwa: pl.org.inmost.java.adamnowak.Klasa

Polecenia importu  Polecenie importu na początku pliku klasy wskazuje, że ta klasa potrzebuje innej klasy  Import nie powoduje dołączenia jakiegokolwiek kodu do pliku wynikowego kompilacji; podpowiada jedynie kompilatorowi, o jakie obce klasy chodzi import java.util.Map; // import pojedynczej klasy import java.io.*;// import wszystkich klas z pakietu

Konwencje nazewnicze  Typy prymitywne: małymi literami  int, float, boolean  Typy obiektowe (klasy, interfejsy): z dużej litery  String, MojaKlasa  Zmienne i pola klas: małymi literami  i, imie, licznikPetli, daneOsobowe  Stałe: dużymi literami  PI, NAZWA_UCZELNI  metody: małymi literami  public void wydrukuj(String tekst)  publik void wydrukujNaEkranie(String tekst)

Komentarze /* komentarz wieloliniowy obowiązuje między znakami "/*" i "*/" */ int i; // komentarz jednoliniowy // obowiązuje od znaków "//" do końca linii /** komentarz JavaDoc pozwala dokumentować kod Bartosz 1.0 */

Pytania?