JP SS 5 podstawy Java


Języki Programowania
Podstawy Java. Åšrodowisko BlueJ.
Zagadnienia
Koncepcja maszyny wirtualnej (VM)
JVM  Java Virtual Machine
Elementy środowiska SDK Java Sun Microsystems
Kompilator, interpreter JVM
Uruchamianie programów w systemie Windows
Åšrodowisko uruchomieniowe BlueJ
Metody
Obiekty
Klasy
Manipulowanie klasami, metodami i obiektami w BlueJ
R. Pełka: Języki Programowania, 2008 2
1
Kompilacja
Kompilator tłumaczy program zapisany w języku
wysokiego poziomu na język maszynowy
my_prog.c
my_prog.exe
program wykonywalny
R. Pełka: Języki Programowania, 2008 3
Kompilacja i platformy
Każda platforma (procesor + system operacyjny) ma własne unikatowe
wymagania odnośnie postaci kodu programu wykonalnego
Dla n jÄ™zyków i m platform potrzebne jest n × m kompilatorów
PC + UNIX
PC + Windows
PC + MacOS
R. Pełka: Języki Programowania, 2008 4
2
Maszyna wirtualna (VM)
Maszyna wirtualna (VM % virtual machine) jest hipotetycznym
(wirtualnym) komputerem
VM można uruchomić na dowolnym rzeczywistym komputerze jako
symulator (emulator)
Język maszyny wirtualnej jest językiem pośredniczącym między
oprogramowaniem a rzeczywistym komputerem. Zapis programu w
tym języku nosi nazwę bytecode
Dla dowolnego języka wystarczy tylko jeden kompilator tego języka
na język VM
R. Pełka: Języki Programowania, 2008 5
Koncepcja VM
Niezależnie od liczby platform, dla n języków potrzeba n
kompilatorów
PC + UNIX
PC + Windows
Maszyna wirtualna  VM
PC + MacOS
R. Pełka: Języki Programowania, 2008 6
3
Wady koncepcji VM
Utrata efektywności
Stosując wspólną maszynę wirtualną VM dla różnych platform sprzętowych nie
można wykorzystać w pełni jej unikatowych cech przyspieszających wykonanie
niektórych operacji
akceleratory graficzne
operacje DSP ...
Sprowadzenie zapisu programu do zunifikowanego bytecode prowadzi do utraty
efektywności języków w zakresie pewnych konstrukcji programistycznych
rekursja itp..
Idealna maszyna wirtualna w praktyce nie istnieje
W praktyce decydując się na określoną VM dokonuje się kompromisu, godząc
się na utratę efektywności
Stąd szybkość programów interpretowanych przez VM jest zwykle mniejsza od
szybkości programów kompilowanych bezpośrednio na daną platformę
programy napisane w języku Java są wolniejsze od programów napisanych w języku
C/C++
R. Pełka: Języki Programowania, 2008 7
JVM  wirtualna maszyna Java
Maszyna wirtualna Java (Java Runtime Engine) jest dostępna dla niemal
wszystkich platform
JVM dla Windows to java.exe
PC + UNIX
Java
PC + Windows
Maszyna wirtualna Java
JVM
PC + MacOS
R. Pełka: Języki Programowania, 2008 8
4
Maszyny wirtualne
Maszyny wirtualne
dla jednego języka
wielu platform
były znane już wcześniej, ale nie zdobyły większej popularności
Najbardziej dojrzałe rozwiązania wcześniejszych VM to
Pascal: p-Machine (połowa lat 80-tych XX w.)
Smalltalk: Smalltalk Bytecode Interpreter
Prolog: WAM
Smalltalk 80 może być uważany za protoplastę języka Java. Rynek
nie był w roku 1980 przygotowany na taką ideę. Smalltalk
wyprzedził swój czas o ponad 20 lat
R. Pełka: Języki Programowania, 2008 9
Wielojęzyczne JVM
Współczesne implementacje JVM są zdolne do interpretacji bytecode
generowanego przez różne języki
R. Pełka: Języki Programowania, 2008 10
5
Kompilacja programu Java
Program zródłowy z rozszerzeniem .java jest kompilowany przez
kompilator javac na plik o tej samej nazwie, ale z rozszerzeniem .class
Plik ten zawiera bytecode dla JVM
Hello.java Hello.class
Source code
Hello.java
Hello.class
R. Pełka: Języki Programowania, 2008 11
Wykonanie programu Java
Bytecode jest wykonywany przez JVM
Bytecode może również pochodzić z innych kompilatorów, np.. JPython,
JBasic lub Smalltalk/JVM
Hello.class
Hello
Hello.class
R. Pełka: Języki Programowania, 2008 12
6
JDK  główne elementy
Kompilator Java
Narzędzia dokumentacji
Java Virtual Machine
javac.exe
javadoc.exe
java.exe
R. Pełka: Języki Programowania, 2008 13
Åšrodowisko JDK / DOS
Utworzyć program zródłowy
public class hello{
hello.java
public static void
main(String[] args)
W linii poleceń DOS wywołać
{ System.out.println
kompilator javac i skompilować
program hello.java ("Hello World"); }
}
Powstanie bytecode o nazwie
hello.class
C:>javac hello.java
Uruchomić program w JVM
C:>java hello
Hello World
R. Pełka: Języki Programowania, 2008 14
7
Åšrodowisko JDK / Windows
Utworzyć program zródłowy
hello.java
Wywołać konsolę cmd
Wywołać kompilator
>javac hello.java
Powstanie bytecode o nazwie
hello.class
Uruchomić program w JVM
>java hello
Na konsoli
pojawi siÄ™
tekst
Hello World
R. Pełka: Języki Programowania, 2008 15
Åšrodowisko JDK / Windows
Metoda pisania, kompilowania i uruchamiania programów podana na
poprzednim slajdzie działa, ale jest anachroniczna
Dziś nie posługujemy się już linią poleceń, bo jest to niewygodne
Stosuje się specjalnie zaprojektowane graficzne środowiska uruchomieniowe
Interaktywne, graficzne środowiska uruchomieniowe dla języka Java
JBuilder (Borland)
NetBeans (Sun Microsystems)
Swing  do budowy GUI
Eclipse
Zaletą (ale też i wadą) wymienionych narzędzi jest bogactwo opcji, funkcji
Nauka jest długa i żmudna
Dokumentacja jest bardzo obszerna
Dlatego opracowano uproszczone środowiska uruchomieniowe, przeznaczone
głównie do celów dydaktycznych
BlueJ (University of Kent, Deakin University)
jGRASP
R. Pełka: Języki Programowania, 2008 16
8
Zaczynamy pracÄ™ z BlueJ
Klikamy dwukrotnie
na ikonÄ™ BlueJ
Otwieramy nowy
projekt
New Project
Pojawia siÄ™ wiele
predefiniowanych
projektów (klas)
Wybieramy nazwÄ™
przyklady
R. Pełka: Języki Programowania, 2008 17
BlueJ, pierwsza klasa
prawym przyciskiem
myszy wywołujemy
nowa klasa
menu kontekstowe,
z którego możemy
np. dokonać edycji
nazwa Hello
powstała nowa klasa Hello.java
R. Pełka: Języki Programowania, 2008 18
9
Edycja i kompilacja
Edytor podaje gotowy kod
zródłowy wcześniej
zapisanej klasy Hello
TworzÄ…c nowÄ… klasÄ™ trzeba
ten kod wpisać, a potem
można go modyfikować -
edytować
Gotowy kod można
poddać tłumaczeniu -
kompilacji
R. Pełka: Języki Programowania, 2008 19
Tworzenie obiektów
Klasa Hello w oknie Tworząc kolejny obiekt z danej klasy należy
mu nadać unikatową nazwę, w tym przypadku
BlueJ oznacza tylko, że
np. hello3. Konstruktor obiektów sam
klasa ta została
podpowiada kolejne numery obiektów
poprawnie skompilowana,
na razie jednak nie można
z niej korzystać w
praktyce
U dołu okna widać, że
wcześniej zostały już
utworzone dwa obiekty
z klasy Hello o
nazwach hello1 i
hello2
R. Pełka: Języki Programowania, 2008 20
10
Obiekty  sedno programowania
Obiekty sÄ… podstawÄ… idei progra-
mowania obiektowego.
W BlueJ wszystkie własności
obiektów można przywołać przez
menu kontekstowe
Można przy tym obejrzeć
wewnętrzne właściwości obiektów
(Inspect) lub usunąć obiekt
(Remove)
R. Pełka: Języki Programowania, 2008 21
Figury jako obiekty
Otwieramy zdefiniowanÄ…
przykładową klasę shapes
i tworzymy obiekty klas
Circle
Square
Triangle
Możemy nadać własne
nazwy obiektów, np.:
kolo
kwadrat
trojkat
Lub zaakceptować
proponowane przez BlueJ
nazewnictwo typu:
Uwaga: powszechnie przyjęta jest konwencja, że
circle1
nazwy klas zaczynają się od dużej, a nazwy
circle2
obiektów od małej litery
square1
R. Pełka: Języki Programowania, 2008 22
11
Dlaczego nie widać kółka?
Dokonujemy inspekcji
obiektu kolo wybierajÄ…c
z menu kontekstowego
opcjÄ™ Inspect
R. Pełka: Języki Programowania, 2008 23
isVisible = false
Otwiera siÄ™ okno inspektora
Parametr isVisible
ma wartość false
Należy go zmienić,
ale w jaki sposób?
R. Pełka: Języki Programowania, 2008 24
12
Metoda makeVisible()
W menu kontekstowym obiektu
kolo znajdujemy metodÄ™
makeVisible()
Klikamy na tÄ™ opcjÄ™ i ....
Koło pojawia się w oknie konsoli
BlueJ
R. Pełka: Języki Programowania, 2008 25
Badanie metod
W podobny sposób powodujemy pojawienie
się obiektów kwadrat i trojkat
Następnie wywołujemy kolejno metody:
obiekt kwadrat metoda moveRight()
obiekt kolo metoda moveDown()
obiekt kwadrat metoda moveRight()
obiekt kwadrat metoda moveUp()
R. Pełka: Języki Programowania, 2008 26
13
Metody z argumentami
Zmienimy teraz wielkość koła wywołując
zwiÄ…zanÄ… z nim metodÄ™
changeSize(int)
Otwiera się okno dialogowe, w które
wprowadzamy nową wartość średnicy
koła w pikselach
Typ parametru int oznacza, że jest on
liczbą całkowitą.
Wpisujemy wartość 100 i konsola
pokazuje większe koło o średnicy 100
pikseli
R. Pełka: Języki Programowania, 2008 27
Kolejne obiekty
tworzymy kolejne dwa obiekty klasy Circle
kolo2
kolo3
i przesuwamy jedno z nich o 100 pikseli w prawo a
drugie o 50 pikseli w dół, po czym uwidaczniamy je
metodÄ… makeVisible()
Na ekranie widzimy jednak tylko dwa niebieskie
koła. Gdzie jest trzecie koło?
Duże niebieskie koło (obiekt kolo) przesłania inne
niebieskie koło (obiekt kolo3)
Aby uwidocznić obiekt kolo3 w jego menu
szukamy metody changeColor(string)
R. Pełka: Języki Programowania, 2008 28
14
Argumenty typu string
Argumentem metody
changeColor(String) jest łańcuch
znaków. W tym przypadku BlueJ pozwala
wybrać jeden z 6 kolorów. Wybieramy np.
 yellow
Na konsoli pojawia siÄ™ niewidoczne
dotąd żółte koło (obiekt kolo3)
R. Pełka: Języki Programowania, 2008 29
Powtórna inspekcja
Wywołujemy inspektora obiektu
kolo i widzimy, że ma on nowe
wartości pól:
diameter
xPosition
yPosition
isVisible
Pola opisujące obiekty mają najczęściej jeden z trzech
podstawowych typów:
int
String
boolean
R. Pełka: Języki Programowania, 2008 30
15
Malarz  program Java
DotÄ…d wszystkie operacje na klasach, obiektach i ich parametrach
(wartościach pól) wykonywaliśmy interaktywnie, przy pomocy myszy
i odpowiednich opcji w menu. Czy można te operacje
zaprogramować w języku Java?
W jaki sposób tworzyć obiekty i nadawać im nazwy używając zapisu
w języku Java, a w szczególności jak
Utworzyć obiekt klasy Circle i nadać mu nazwę, np. kolo2
Utworzyć obiekt klasy Square i nadać mu nazwę, np. kwadrat
Jak zaprogramować takie czynności?
Stworzymy w tym celu nowÄ… klasÄ™ i nazwiemy jÄ… Malarz
R. Pełka: Języki Programowania, 2008 31
Nowa klasa  Malarz
Otwieramy w BlueJ projekt
shapes i tworzymy nowÄ… klasÄ™
o nazwie Malarz
Następnie zaczynamy edytować
nowÄ… klasÄ™
R. Pełka: Języki Programowania, 2008 32
16
Klasa Malarz
Po wywołaniu edycji nowej klasy
Malarz BlueJ otwiera okno
klasy z tzw. szkieletem klasy.
Kasujemy wszystko z wyjÄ…tkiem
definicji
class Malarz
Oraz nawiasów klamrowych
{
}
Nawiasy obejmują przyszłą treść
tworzonej klasy
R. Pełka: Języki Programowania, 2008 33
Co ma zawierać klasa Malarz
zakładamy, że klasa Malarz, a więc i obiekty utworzone
z tej klasy powinny:
tworzyć (rysować) obiekty w postaci kół, prostokątów i trójkątów i
nadawać im nazwy
zawierać metodę, np. rysujDom( ), która:
utworzy i umieści w odpowiednich miejscach obiekty składowe
tworzÄ…ce rysunek domu
będzie je mogła powiększać lub zmniejszać
uwidoczni na konsoli poszczególne obiekty
będzie mogła zmieniać barwy elementów rysunku domu
R. Pełka: Języki Programowania, 2008 34
17
Tworzenie obiektów
Tworzenie (konstrukcja) obiektów składa się z dwóch kroków:
rejestruje siÄ™ nazwÄ™ obiektu
tworzy się nowy obiekt i zapamiętuje z nadana wcześniej nazwą
zarejestruj nazwÄ™ slonce dla
jeszcze nieutworzonego obiektu
Circle slonce;
klasy Circle
utwórz nowy obiekt klasy Circle
slonce = new Circle( );
i nadaj mu nazwÄ™ slonce
Uwaga: Java rozróżnia wielkość liter, dlatego:
CIRCLE `" Circle `" circle
R. Pełka: Języki Programowania, 2008 35
Rejestracja przy tworzeniu
Rejestrację i utworzenie (konstrukcję) obiektu można również
wykonać w jednym kroku. Aby w ten sposób utworzyć nowy obiekt
klasy Circle i nadać mu nazwę slonce należy napisać:
Circle slonce = new Circle( );
Rejestruj nazwÄ™ obiektu
Utwórz nowy obiekt klasy
slonce, który należy do
Circle
klasy Circle
R. Pełka: Języki Programowania, 2008 36
18
Klasa Malarz z obiektami
Klasa może być już
kompilowana
Można tworzyć obiekty
W czasie kompilacji nie
wystąpiły żadne błędy
R. Pełka: Języki Programowania, 2008 37
Malarz prymitywista
W menu kontekstowym klasy
Malarz wybieramy opcjÄ™
new Malarz(), tworzymy
nowy obiekt tej klasy i
nadajemy mu nazwÄ™
prymitywista
Następnie wchodzimy do
inspekcji obiektu
prymitywista
R. Pełka: Języki Programowania, 2008 38
19
Inspekcja obiektu prymitywista
Strzałki oznaczają odwołanie do obiektu
Podwójne kliknięcie na
link wywołuje okno
inspektora
wskazywanego obiektu
Inspektor wskazuje, że prymitywista ma
pola o nazwach slonce, sciana, okno
i dach
Nie sÄ… to liczby, ale obiekty odpowiednio
klas: Circle, Square, Square i
Triangle
R. Pełka: Języki Programowania, 2008 39
Malarz może już malować
Aby obiekt klasy Malarz mógł malować należy
klasę wyposażyć w metodę malowania.
Metody języka Java składają się z nagłówka i
ciała
Nagłówek zawiera:
" typ wyniku  u nas brak  void
" nazwÄ™ metody  rysujDom
" listę parametrów  u nas pusta ( )
Ciało zawiera opis czynności, które wykonuje
metoda:
" slonce.makeVisible();
" slonce.changeColor( yellow );
" slonce.moveHorizontal(100);
" itd...
R. Pełka: Języki Programowania, 2008 40
20
Nagłówek metody
Nagłówek metody Javy
void rysujDom( );
Typ wyniku wyprodukowa-
Nazwa metody 
Lista parametrów metody,
nego (obliczonego) przez
zgodnie z konwencjÄ…
nawiasów nie można
metodę. Jeśli metoda nie
zaczyna się od małej
pominąć, nawet gdy lista
zwraca żadnego wyniku
litery
jest pusta
używa się słowa void
Przykłady nagłówków innych metod
void rysujAkwarium( );
void makeVisible( );
void changeColor(String kolor);
void moveHorizontal(int distance);
R. Pełka: Języki Programowania, 2008 41
Ciało metody
Ciało metody, nazywane też blokiem zawiera następujące
elementy:
1. KlamrÄ™ otwierajÄ…cÄ… blok {
2. CiÄ…g instrukcji, np.
deklaracje zmiennych
instrukcje przypisania
pętle
wywołania metod np. slonce.makeVisible( );
....
3. KlamrÄ™ zamykajÄ…cÄ… blok }
R. Pełka: Języki Programowania, 2008 42
21
Uruchamiamy prymitywistÄ™
Tworzymy obiekt klasy Malarz i
nazywamy go prymitywista.
W menu kontekstowym obiektu
prymitywista znajdujemy
metodÄ™ void rysujDom()
i widzimy ....
wschód słońca
na kempingu ?
Niezupełnie o to nam chodziło, ale na początek i tak niezle ...
R. Pełka: Języki Programowania, 2008 43
Zadanie domowe
Zmodyfikować klasę Malarz w taki sposób,
by obiekt tej klasy dysponował metodą wygenerowania
załączonego obrazu
R. Pełka: Języki Programowania, 2008 44
22


Wyszukiwarka

Podobne podstrony:
JP SS 5 podstawy Java (3)
JP SS 5 podstawy Java
JP SS 4 start Java
JP SS 1 podstawy JP
JP SS 4 wprowadzenie Java
JP SS 1 podstawy JP
JP SS 4 start Java
JP SS 2 algorytmy i podstawy programowania
JP SS 6 Klasy i obiekty
1 podstawy java 2562
JP SS Interfejs graficzny
JP SS 7 Klasy i obiekty
JP SS 6 BlueJ
JP SS 3 jezyk C
JP SS 3 jezyk C
JP SS 8 Instrukcje, pętle
JP SS 7 Typy i operacje
JP SS 9 Tablice IO wyjÄ…tki

więcej podobnych podstron