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



Podobne dokumenty
Programowanie obiektowe

Programowanie obiektowe

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

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Wprowadzenie do języka Java

Programowanie obiektowe

Dokumentacja do API Javy.

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

Java Język programowania

Programowanie w Internecie. Java

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

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

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

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

Java jako język programowania

Programowanie obiektowe

Podstawowe części projektu w Javie

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

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

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

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

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

1 Podstawy c++ w pigułce.

Podstawy i języki programowania

KOTLIN. Język programowania dla Androida

Tworzenie aplikacji w języku Java

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

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

Platformy Programistyczne Podstawy języka Java

Java EE produkcja oprogramowania

Multimedia JAVA. Historia

1 Podstawy c++ w pigułce.

1 Atrybuty i metody klasowe

Interfejsy i klasy wewnętrzne

Programowanie obiektowe

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

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Wykład 4: Klasy i Metody

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

Ćwiczenie 1. Przygotowanie środowiska JAVA

Kurs WWW. Paweł Rajba.

Wykład 8: klasy cz. 4

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Wykład 2: Podstawy Języka

Powtórka algorytmów. Wprowadzenie do języka Java.

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

PHP 5 język obiektowy

Programowanie obiektowe

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

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

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

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

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

Programowanie obiektowe zastosowanie języka Java SE

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

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

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

Powtórka algorytmów. Wprowadzenie do języka Java.

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

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

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

WPROWADZENIE DO JĘZYKA JAVA

Dziedziczenie. Tomasz Borzyszkowski

Wykład 7: Pakiety i Interfejsy

Aplikacje w środowisku Java

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Podstawy programowania obiektowego w języku Java dla programujących w C++

Spis treści. O autorze (11) O redaktorze technicznym (11) Wstęp (13) Rozdział 1. Podstawy Javy (19)

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

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Programowanie obiektowe

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

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

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

Wykład 5: Klasy cz. 3

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

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

Pakiety i interfejsy. Tomasz Borzyszkowski

Języki i techniki programowania Ćwiczenia 2

Aplikacje w środowisku Java

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop Spis treści

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

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

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

KLASY, INTERFEJSY, ITP

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

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

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

Dziedziczenie. dr Jarosław Skaruz

Tablice (jedno i wielowymiarowe), łańcuchy znaków

JAVA?? to proste!! Autor: wojtekb111111

Klasy i obiekty cz II

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

Klasy abstrakcyjne i interfejsy

Informatyka I. dr inż. Andrzej Czerepicki.

Typy sparametryzowane

Programowanie obiektowe

Transkrypt:

Gdańsk, 2014

Ogólnie o Javie Środowisko Java jest językiem programowania, którego podstawowym celem jest realizacja zasady write once, run anywhere. Oznacza to możliwość wykonania tego samego programu, bez konieczności modyfikowania, z gwarancją identycznego zachowania, na wszystkich architekturach sprzętowych, które Javę wspierają. Java jest używana głównie do tworzenia aplikacji sieciowych o architekturze klient-serwer (aplety na stronach WWW plus serwer) oraz do pisania aplikacji mobilnych w systemie Android. Java jest zauważalnie wolniejsza od języków typu C/C++, więc stosuje się ją głównie tam, gdzie czas wykonania aplikacji nie ma większego znaczenia, a jej przenośność owszem.

Ogólnie o Javie Środowisko Cechy Javy: jest językiem ogólnego przeznaczenia; jest obiektowa, opiera się na klasach i interfejsach; wspiera programowanie współbieżne i komunikację sieciową; wspiera aplikacje z GUI; ułatwia tworzenie niezawodnych i bezpiecznych aplikacji; jest językiem interpretowanym (kompilowanym do bajtkodu, który jest następnie interpretowany).

Ogólnie o Javie Środowisko Do uruchamiania Javy potrzebne jest JRE (Java Runtime Environment), do programowania w Javie JDK (Java Development Kit). Oprócz JDK warto zaistalować program ant, który jest odpowiednikiem make dla Javy. Programowanie aplikacji mobilnych wymaga dodatkowo instalacji Android SDK. JDK (Java Development Kit) zawiera w sobie środowisko uruchomieniowe JRE (Java Runtime Environment) oraz programy wspierające tworzenie, wykonywanie i testowanie aplikacji. JDK zawiera m.in. bibliotekę standardową, dokumentację API, przykładowe fragmenty kodu oraz pliki nagłówkowe dla Java Native Interface.

Ogólnie o Javie Środowisko Wśród programów wspierających tworzenie, wykonywanie oraz testowanie aplikacji znajdują się: appletviewer; program do testowania apletów bez pomocy przeglądarki; java; program uruchamiający skompilowane programy (*.class); javac; kompilator przekształcający pliki źródłowe (*.java) do bajtkodu; javadoc; generator tworzący dokumentację na podstawie odpowiednio przygotowanego kodu; jar; program archiwizujący, umożliwiający dystrybuowanie programów w Javie w postaci jednego pliku; javap; konwerter bajtkodu do postaci źródłowej;

Ogólnie o Javie Środowisko javaws; program uruchamiający aplikacje korzystające z Java Web Start; jdb; debugger. Istnieje IDE stworzone z myślą o Javie jest to Eclipse. Jest także Android Studio, IDE do pisania aplikacji mobilnych. Eclipse wspiera także pisanie aplikacji w Androidzie, poprzez specjalną wtyczkę ADT.

Java powstała jako modyfikacja C++, więc będzie tu cały czas z C++ porównywana wskazane zostaną głównie różnice. Program w Javie składa się z klas i interfejsów, wewnątrz których umieszczamy wszystkie inne elementy: zmienne, funkcje itd. Poza klasami mogą się znajdować wyłącznie komentarze. Klasa pełni podobną funkcję jak w C++, interfejs jest zaś zestawem metod, które muszą znajdować się w każdej klasie go implementującej. Wykonywanie programu o ile przeznaczony jest do niezależnego uruchamiania rozpoczyna się od funkcji statycznej main(). Można ją umieścić w klasie o dowolnej nazwie.

Dla przykładu, program drukujący napis Hello, world! może mieć w Javie następującą postać: class Hello { public static void main( String args[] ) { System.out.println( "Hello, world!" ); } } Aby go uruchomić, należy zapisać powyższy kod w pliku o rozszerzeniu java. Po kompilacji programem javac otrzymamy plik Hello.class, który można uruchomić poleceniem java Hello.

Program robiący to samo, w wersji zakręconej: import java.util.vector; class Zakręcona { public static void main( String args[] ) { String napis = "Hr,el ldwl!oo"; Vector< Character > wektor = new Vector< Character >(); for( int i = 0; i < napis.length(); i++ ) wektor.add( napis.charat( 3 * i % napis.length() ) ); for( char c: wektor ) System.out.print( c ); System.out.println(); } }

Zmienne muszą zostać zadeklarowane przed użyciem, robi się to niemal tak samo jak w C++. Jest przy tym 5 istotnych różnic: nazwy zmiennych mogą zawierać znak dolara oraz litery spoza alfabetu łacińskiego; typ[] zmienna deklaruje podaną zmienną jako tablicę; zmienna, której nie nadamy wartości, otrzymuje wartość domyślną (zależną od jej typu); nie ma wskaźników; zmienne usuwane są automatycznie. Typy w Javie dzielą się na podstawowe i referencyjne. Wartością domyślną typów referencyjnych jest null.

Jest 8 typów podstawowych: całkowitoliczbowe ze znakiem: byte (1-bajtowy), short (2-bajtowy), int (4-bajtowy) i long (8-bajtowy); zmiennoprzecinkowe: float (4-bajtowy) i double (8-bajtowy); znakowy char, znaki zapisywane są 2-bajtowo (unikod); logiczny boolean. Wartością domyślną dla typów liczbowych jest 0 (zapisywane 0L dla typu long i 0.0f dla typu float). Wartością domyślną dla typu znakowego jest \u0000, a dla logicznego false.

Typem referencyjnym, oprócz zwykłej klasy, może także być typ wyliczeniowy i tablica. Typy wyliczeniowe w Javie są bardzo rozbudowane, przypominają zwykłe klasy, bo mogą zawierać pola oraz metody. W Javie istnieją także tzw. typy kopertowe: Byte, Short, Integer, Long, Float, Double, Boolean i Character. Umożliwiają one używanie typów podstawowych jak referencyjnych konwersja z typu podstawowego do kopertowego zachodzi automatycznie tam, gdzie jest potrzebna.

Instrukcja new, używana w C++ do przydzielania pamięci na stercie, w Javie używana jest do tworzenia instancji klas: new typ( argumenty ) tworzy instancję podanego typu i inicjalizuje ją przy pomocy konstruktora, któremu przekazuje podane argumenty; new typ[rozmiar] tworzy tablicę podanego typu o podanym rozmiarze. Elementy tablicy można podać jawnie, umieszczając je wewnątrz nawiasów klamrowych bezpośrednio za instrukcją new. Tablica, której elementy nie zostały jawnie określona, jest inicjalizowana konstruktorem domyślnym.

Podczas używania typów referencyjnych należy pamiętać o tym, że a == b sprawdzi, czy podane zmienne zawierają tę samą referencję do porównania zawartości należy użyć funkcji equals(). Inne istotne różnice w korzystaniu z operatorów, w porównaniu do C++: nie ma możliwości przeciążania operatorów; istnieją operatory specyficzne dla Javy, takie jak np. instanceof; do efektywnego kopiowania tablic należy użyć funkcji System.arrayCopy(), a = b skopiuje tylko referencje.

Java ułatwia także programiście korzystanie z typów liczbowych i napisów: literały napisowe automatycznie zmieniane są w zmienne typu String; literały liczbowe mogą być zapisane binarnie (przedrostek 0b), można także użyć znaku podkreślenia do rozdzielenia cyfr.

Wyrażenia i instrukcje w Javie są zbudowane niemal tak samo jak w C++: instrukcje kończą się średnikiem, instrukcje złożone tworzymy przy pomocy nawiasów klamrowych itd. Instrukcja warunkowa if działa tak samo jak w C++, switch niemal tak samo począwszy od wersji 7, zmienna sterująca może być napisem. Pętle while i do działają identycznie jak w C++.

Z pętli for można korzystać jak w C++ lub następująco: for( typ zmienna: tablica ) { blok }. Ta druga postać podstawia do podanej zmiennej kolejne wartości z tablicy (działa jak pętla foreach spotykana w innych językach programowania). Do obsługi wyjątków służy konstrukcja throws/throw/try/catch/finally.

Deklaracja klasy ma postać class Nazwa { ciało klasy }. Nazwa klasy musi zaczynać się od dużej litery. Wewnątrz klasy umieszcza się deklaracje pól, metod oraz bloki inicjalizacyjne. Deklarację klasy można poprzedzić jednym z poniższych modyfikatorów: public; tworzy klasę dostępną poza swoim pakietem; final; tworzy klasę, która nie będzie mogła mieć klas pochodnych; abstract; tworzy klasę abstrakcyjną.

Deklaracje pól/metod wyglądają jak zwykłe deklaracje zmiennych/funkcji, z tym, że można poprzedzić je modyfikatorami: public, protected, private; określają widoczność pola/metody; final; tworzy pole, którego wartość nie może ulec zmianie lub metodę, której nie można przesłonić w klasach pochodnych; static; tworzy pole/metodę statyczną. (Modyfikatorów jest więcej, ale pozostałe: abstract, strictfp, volatile, transient, native i synchronized są rzadziej używane.)

Java nie wspiera dziedziczenia wielobazowego. Aby klasa B dziedziczyła po klasie A należy zadeklarować ją następująco: class B extends A { ciało klasy }. Namiastką dziedziczenia wielobazowego jest możliwość implementacji interfejsów w klasie. W deklaracji klasy, przed jej ciałem, umieszczamy wówczas napis implements, po którym następuje lista interfejsów implementowanych przez daną klasę. Klasa implementująca dany interfejs musi posiadać wszystkie metody, które zostały w nim zadeklarowane.

Metody można przeciążać oraz przesłaniać w klasach pochodnych. Jeśli nie wskażemy jawnie klasy bazowej, stanie się nią Object. Klasy w Javie można zagnieżdżać, istnieją także klasy anonimowe. Słowo kluczowe super daje dostęp do metod/konstruktorów klasy bazowej. Słowo kluczowe this reprezentuje obiekt, dla którego wywołujemy metody. Można go użyć, aby uzyskać dostęp do pól/metod oraz konstruktorów: this.pole, this.metoda() i this( argumenty ).

to odpowiedniki szablonów z C++. Tworzymy je konstrukcją class Nazwa< Parametry > { ciało klasy }. Można narzucić pewne wymagania na parametry: Nazwa; dowolny parametr referencyjny; Nazwa extends Klasa; parametr musi dziedziczyć po podanej klasie; Nazwa super Klasa; parametr musi być nadklasą podanej klasy. Można także tworzyć metody generyczne w zwykłych klasach.

dają możliwość grupowania klas o związanej z sobą funkcjonalności. Aby umieścić klasę w pakiecie, należy umieścić konstrukcję package nazwa; na początku pliku, a sam plik w odpowiednim katalogu. Aby skorzystać z klasy znajdującej się w danym pakiecie należy tę klasę (lub wszystkie obiekty z pakietu) zaimportować. Można także używać konstrukcji NazwaPakietu.NazwaKlasy, instrukcję import można wówczas opuścić.

Zalety posiadania konwencji Nazewnictwo Układ pliku źródłowego Komentarze, instrukcje i deklaracje Deklaracje ułatwiają zarządzanie kodem. Stosowanie spójnego nazewnictwa, korzystanie z komentarzy oraz ustalonego porządku w plikach źródłowych czyni kod łatwiejszym do zrozumienia. Ma to duże znaczenie w przypadku większych aplikacji, bo rzadko zdarza się, by ten sam programista zajmował się taką aplikacją przez cały okres jej życia., które powinny być stosowane w Javie, zostały spisane i są dostępne pod adresem http://www.oracle.com/ technetwork/java/codeconventions-150003.pdf.

Zalety posiadania konwencji Nazewnictwo Układ pliku źródłowego Komentarze, instrukcje i deklaracje Deklaracje Nazwy powinny być tak dobrane, żeby dobrze opisywały pełnione przez nazywany obiekt funkcje. Nazwy skrócone, np. jednoliterowe, powinny być używane wyłącznie dla zmiennych lokalnych. Nazwy klas i pól powinny być rzeczownikami, a nazwy metod czasownikami. Jeśli zachodzi konieczność użycia nazwy złożonej z wielu wyrazów, to wszystkie poza pierwszym powinny zaczynać się z dużej litery. Nazwy klas zaczynamy od dużej litery, nazwy pól i metod od małej. Stałe powinny być pisane dużymi literami, a jeśli są wieloczłonowe, poszczególne człony należy rozdzielić znakiem podkreślenia.

Zalety posiadania konwencji Nazewnictwo Układ pliku źródłowego Komentarze, instrukcje i deklaracje Deklaracje Pliki nie powinny być zbyt długie, jeśli klasa jest zbyt duża, to powinno dać się ją podzielić na mniejsze, łatwiejsze w zarządzaniu. Plik zaczynamy od komentarza określającego jego zawartość. Następnie umieszczamy informację o pakiecie, do którego plik należy, wszystkie instrukcje import oraz deklaracje klas w tej właśnie kolejności. Pierwsza klasa w pliku powinna być publiczna. Wskazane jest, żeby poza nią w jednym pliku występowały tylko klasy wyłącznie z nią związane. Bezpośrednio przed deklaracją klasy umieszczamy jej opis, najlepiej w postaci zrozumiałej dla javadoc-a.

Zalety posiadania konwencji Nazewnictwo Układ pliku źródłowego Komentarze, instrukcje i deklaracje Deklaracje Kolejność deklaracji w klasie: pola statyczne, pola zwykłe, konstruktory, metody. Kolejność w obrębie pól: najpierw publiczne, następnie chronione, na końcu prywatne. Metody grupujemy wg funkcjonalności metody związane z sobą powinny być umieszczane blisko siebie. Wcięcia 4-znakowe, a w liniach kontynuowanych 8-znakowe. Linie powinny mieścić się na ekranie, co w większości przypadków oznacza, że nie powinny być dłuższe niż 80 znaków.

Zalety posiadania konwencji Nazewnictwo Układ pliku źródłowego Komentarze, instrukcje i deklaracje Deklaracje Przed klasą umieszczamy komentarz dokumentacyjny, nie podając w nim szczegółów implementacyjnych. Te zamieszczamy w komentarzu wewnątrz klasy. Komentarze blokowe powinny mieć wygwiazdkowaną postać. Jedna linia = jedna instrukcja. Należy unikać operatora przecinka do łączenia instrukcji (lepiej użyć bloku). Bloki powinny być wcięte.

Zalety posiadania konwencji Nazewnictwo Układ pliku źródłowego Komentarze, instrukcje i deklaracje Deklaracje Jedna linia powinna zawierać tylko jedną deklarację. Deklaracje należy zamieszczać na początku bloków, z jednym jedynym wyjątkiem: zmiennych sterujących pętlami for. Nie należy korzystać z mechanizmu przesłaniania, lepiej użyć innej nazwy. Deklaracje metod należy rozdzielać pustą linią.