JP SS 5 podstawy Java

background image

1

Języki Programowania

Podstawy Java. Środowisko BlueJ.

R. Pełka: Języki Programowania, 2008

2

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

background image

2

R. Pełka: Języki Programowania, 2008

3

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

4

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

background image

3

R. Pełka: Języki Programowania, 2008

5

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

6

Koncepcja VM

ƒ

Niezależnie od liczby platform, dla n języków potrzeba n
kompilatorów

Maszyna wirtualna – VM

PC + UNIX

PC + Windows

PC + MacOS

background image

4

R. Pełka: Języki Programowania, 2008

7

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

8

JVM – wirtualna maszyna Java

Java

Maszyna wirtualna Java

JVM

PC + UNIX

PC + Windows

PC + MacOS

ƒ

Maszyna wirtualna Java (

Java Runtime Engine

) jest dostępna dla niemal

wszystkich platform

ƒ

JVM dla Windows to

java.exe

background image

5

R. Pełka: Języki Programowania, 2008

9

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

10

Wielojęzyczne JVM

ƒ

Współczesne implementacje JVM są zdolne do interpretacji

bytecode

generowanego przez różne języki

background image

6

R. Pełka: Języki Programowania, 2008

11

Kompilacja programu Java

ƒ

Program źró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

Source code

Hello.java

Hello.class

Hello.java

Hello.class

R. Pełka: Języki Programowania, 2008

12

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

Hello.class

Hello.class

background image

7

R. Pełka: Języki Programowania, 2008

13

JDK – główne elementy

Java Virtual Machine

java.exe

Narzędzia dokumentacji

javadoc.exe

Kompilator Java

javac.exe

R. Pełka: Języki Programowania, 2008

14

Środowisko JDK / DOS

ƒ

Utworzyć program źródłowy

hello.java

ƒ

W linii poleceń DOS wywołać
kompilator

javac

i skompilować

program

hello.java

ƒ

Powstanie bytecode o nazwie

hello.class

ƒ

Uruchomić program w JVM

public class hello{

public static void

main(String[] args)

{ System.out.println

("Hello World"); }

}

C:>javac hello.java

C:>java hello
Hello World

background image

8

R. Pełka: Języki Programowania, 2008

15

Środowisko JDK / Windows

ƒ

Utworzyć program źró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

background image

9

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

nowa klasa

nazwa

Hello

powstała nowa klasa

Hello.java

prawym przyciskiem
myszy wywołujemy
menu kontekstowe,
z którego możemy
np. dokonać edycji

background image

10

R. Pełka: Języki Programowania, 2008

19

Edycja i kompilacja

Edytor podaje gotowy kod
źró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

Klasa

Hello

w oknie

BlueJ oznacza tylko, że
klasa ta została
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

Tworząc kolejny obiekt z danej klasy należy
mu nadać unikatową nazwę, w tym przypadku
np.

hello3

. Konstruktor obiektów sam

podpowiada kolejne numery obiektów

background image

11

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:

circle1
circle2
square1

Uwaga:

powszechnie przyjęta jest konwencja, że

nazwy

klas

zaczynają się od dużej, a nazwy

obiektów

od małej litery

background image

12

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?

background image

13

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()

background image

14

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

)

background image

15

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

background image

16

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ę

background image

17

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

background image

18

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

jeszcze nieutworzonego obiektu
klasy

Circle

utwórz nowy obiekt klasy

Circle

i nadaj mu nazwę

slonce

Uwaga:

Java rozróżnia wielkość liter, dlatego:

CIRCLE ≠ Circle ≠ circle

Circle slonce

;

slonce = new 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

slonce

, który należy do

klasy

Circle

Utwórz nowy obiekt klasy

Circle

background image

19

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

background image

20

R. Pełka: Języki Programowania, 2008

39

Inspekcja obiektu prymitywista

Strzałki oznaczają odwołanie do obiektu <object reference>

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...

background image

21

R. Pełka: Języki Programowania, 2008

41

Nagłówek metody

Nagłówek metody Javy

void

rysujDom( )

;

Typ wyniku wyprodukowa-
nego (obliczonego) przez
metodę. Jeśli metoda nie
zwraca żadnego wyniku
używa się słowa

void

Nazwa metody –
zgodnie z konwencją
zaczyna się od małej
litery

Lista parametrów metody,
nawiasów nie można
pominąć, nawet gdy lista
jest pusta

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

}

background image

22

R. Pełka: Języki Programowania, 2008

43

Uruchamiamy prymitywistę

wschód słońca
na kempingu ?

Tworzymy obiekt klasy

Malarz

i

nazywamy go

prymitywista

.

W menu kontekstowym obiektu

prymitywista

znajdujemy

metodę

void rysujDom()

i widzimy ....

Niezupełnie o to nam chodziło, ale na początek i tak nieźle ...

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


Wyszukiwarka

Podobne podstrony:
JP SS 5 podstawy Java (2)
JP SS 5 podstawy Java
JP SS 4 start Java
JP SS 4 wprowadzenie Java
JP SS 1 podstawy JP
JP SS 4 start Java
JP SS 1 podstawy JP
JP SS 4 start Java
JP SS 2 algorytmy i podstawy programowania
JP SS 10 Interfejs graficzny
JP SS 7 Klasy i obiekty
JP SS 6 BlueJ
JP SS 6 Klasy i obiekty
JP SS 7 Typy i operacje
JP SS 8 Instrukcje, pętle

więcej podobnych podstron