JP SS 5 podstawy Java

background image

Języki Programowania

Podstawy Java. Środowisko BlueJ.

background image

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

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

background image

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

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

background image

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

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

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

background image

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

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

background image

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

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

background image

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

A. Poniecki

13

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 źródłowe bibliotek (po rozpakowaniu src.zip)

background image

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

14

JDK

– główne elementy

Java Virtual Machine

java.exe

Narzędzia dokumentacji

javadoc.exe

Kompilator Java

javac.exe

background image

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

15

Ś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

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

16

Ś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

background image

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

17

Ś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

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

18

Zaczynamy pracę z BlueJ

Klikamy dwukrotnie
na ikonę BlueJ

Otwieramy nowy
projekt

New Project


Pojawia się wiele
predefiniowanych
projektów (klas)

Wybieramy nazwę

przyklady

background image

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

19

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

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

20

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

background image

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

21

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

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

22

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

)

background image

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

23

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

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

24

Dlaczego nie widać kółka?

Dokonujemy

inspekcji

obiektu

kolo

wybierając

z menu kontekstowego
opcję

Inspect

background image

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

25

isVisible = false

Otwiera się okno inspektora

Parametr

isVisible

ma wartość

false


Należy go zmienić,
ale w jaki sposób?

background image

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

26

Metoda

makeVisible()

W menu kontekstowym obiektu
kolo znajdujemy

metodę

makeVisible()

Klikamy na tę opcję i ....
Koło pojawia się w oknie konsoli

BlueJ

background image

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

27

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

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

28

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

background image

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

29

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

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

30

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

)

background image

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

31

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

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

32

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

background image

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

33

Nowa klasa

– Malarz

Otwieramy w

BlueJ

projekt

shapes

i tworzymy nową klasę

o nazwie

Malarz

Następnie zaczynamy edytować
nową klasę

background image

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

34

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

background image

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

35

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

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

36

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

background image

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

37

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

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

38

Klasa Malarz z obiektami

Klasa może być już
kompilowana

Można tworzyć obiekty




W czasie kompilacji nie
wystąpiły żadne błędy

background image

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

39

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

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

40

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

background image

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

41

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

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

42

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

)

;

background image

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

43

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

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

44

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

background image

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

45

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