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
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
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
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
żð rekurencja 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
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
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
JDK  główne elementy
żð bin - kompilator i wszystkie narzÄ™dzia
żð demo - kilka przykÅ‚adowych programów
żð include - pliki dla metod rodzimych
żð lib - pliki bibliotek
żð jre - pliki Å›rodowiska wykonawczego Javy
żð src - pliki zródÅ‚owe bibliotek (po rozpakowaniu src.zip)
A. Poniecki 13
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 14
Åš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 15
Åš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 16
Åš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 17
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 18
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 19
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 20
Tworzenie obiektów
Tworząc kolejny obiekt z danej klasy należy
Klasa Hello w oknie
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 21
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 22
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 23
Dlaczego nie widać kółka?
Dokonujemy inspekcji
obiektu kolo wybierajÄ…c
z menu kontekstowego
opcjÄ™ Inspect
R. Pełka: Języki Programowania, 2008 24
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 25
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 26
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 27
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 28
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 29
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 30
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 31
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 32
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 33
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 34
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 35
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
Circle slonce; jeszcze nieutworzonego obiektu
klasy Circle
slonce = new Circle( ); utwórz nowy obiekt klasy Circle
i nadaj mu nazwÄ™ slonce
Uwaga: Java rozróżnia wielkość liter, dlatego:
CIRCLE `" Circle `" circle
R. Pełka: Języki Programowania, 2008 36
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 37
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 38
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 39
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 40
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 41
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 42
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 43
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 44
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 45


Wyszukiwarka

Podobne podstrony:
JP SS 5 podstawy Java
JP SS 5 podstawy Java (3)
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