cw1 wprowadzenie

background image

Języki programowania obiektowego

Laboratorium nr 1

Akademia Górniczo-Hutnicza

Katedra Robotyki i Mechatroniki

background image

Wstęp

Programowanie w języku Java, tak samo jak w innych językach, wymaga posiadania
zainstalowanych oraz odpowiednio skonfigurowanych narzędzi programistycznych. W przypadku
języka Java konieczne jest posiadanie co najmniej pakietu Java SDK dystrybuowanego na
specjalnych warunkach poprzez firmę Sun Microsystems. Pakiet dostępny jest jest nieodpłatnie pod
adresem:

http://java.sun.com/javase/downloads/index.jsp

. Po zainstalowaniu pakiet zawiera między

innymi narzędzia:

javac – kompilator,

java - interpreter,

appletviewer – przeglądarka apletów,

javadoc - generator dokumentacji,

jdb – debuger,

jar – narzędzie do tworzenia archiwów.

Przykład 1

Pierwszą czynnością jaką należy wykonać przed przystąpieniem do tworzenia programów w danym
języki jest sprawdzenie czy wszystkie elementy środowiska programistycznego którego chcemy
używać działają poprawnie. W naszym przypadku konieczne jest sprawdzenie czy narzędzia są
poprawnie zainstalowane w systemie. Można tego dokonać na kilka sposobów. Jeden z nich polega
na:

uruchomieniu okna konsoli (Start -> Uruchom, wpisanie cmd)

w oknie konsoli wpisanie: javac -version

system powinien odpowiedzieć wypisując bieżącą wersję kompilatora jawy np:

Jeśli odpowiedź jest inna np:
„Nazwa 'javac' nie jest rozpoznawana jako polecenie wewnętrzne lub zewnętrzne,
program wykonywalny lub plik wsadowy.”
oznacza to iż środowisko jest skonfigurowane niepoprawnie. Jeśli mamy pewność iż instalacja
przebiegła poprawnie problem może dotyczyć braku dodania jawy do zmiennej systemowej
„PATH”.

Tworzenie i uruchomienie programu

Utworzenie i uruchomienie programu za pomocą języka Java polega na:

utworzeniu dokumentu tekstowego za pomocą dowolnego dostępnego edytora tekstowego
(np. notatnik w systemach Windows).

background image

wypełnieniu utworzonego dokumentu treścią programu zgodnie z regułami i składnią języka
programowania, przy czym należy pamiętać o tym że:

każdy program w Javie jest zestawem klas,

klasa jest podstawową jednostką enkapsulacji (nie można pisać kodu poza definicją
klasy).

pisany przez nas program może być zapamiętany w jednym lub wielu plikach
źródłowych o rozszerzeniu "java".

klasa uruchomieniowa musi zawierać statyczną metodę „main” o postaci:

public static void main(String args[]) { ... }

zapisaniu treści dokumentu w postaci pliku dyskowego posiadającego rozszerzenie *.java
(przy czym należy przestrzegać następującej konwencji dotyczącej nazewnictwa – nazwa
klasy powinna być zgodna z nazwą pliku, który przechowuje program),

wykonaniu kompilacji kodu źródłowego do postaci kodu bajtowego. Kompilacja
wykonywana jest za pomocą narzędzia javac.exe. Jej wynikiem jest otrzymanie plików
skompilowanych o nazwach zawierających rozszerzenie *.class. Podczas kompilacji pliku
źródłowego każda klasa zostaje przeniesiona do swojego własnego pliku o nazwie
właściwej zgodnej z nazwą klasy i rozszerzeniu "class".

uruchomienie programu za pomocą narzędzia java.exe. Przykładowe wywołanie pokazane
jest poniżej: java nazwa_pliku arg1 arg2.

Przykład 2

Zgodnie z tradycją każdego z kursów, związanego z początkami programowania w jakimś z
języków programowania, jest utworzenie najprostszego programu pozwalającego na wyświetlenie
wiadomości tekstowej w oknie konsoli. Do wykonania tego zadania konieczne jest wykonanie
następujących kroków:

utworzenie

utworzenie nowego dokumenty tekstowego (np. w notatniku)

umieszczenie w dokumencie kodu programu np:

public class Test{
public static void main(String[] arg){

System.out.println("To jest probny komunikat!");

}
}

zapisanie utworzonego pliku. Nazwa pliku powinna być zgodna z nazwą definiowanej klasy
oraz powinna mieć rozszerzenie .java. W tym konkretnym przypadku będzie to „Test.java”

skompilowanie programu za pomocą narzędzia javac. Np. javac Test.java

uruchomienie programu za pomocą narzędzia java. Np. java Test

background image

Zastosowanie zintegrowanego środowiska programistycznego

W celu ułatwienia wykonywania przedstawionych powyżej czynności tworzone są środowiska
programistyczne pomagające programistom na szybkie tworzenie programów. Obecnie istnieje całe
mnóstwo narzędzi ułatwiających tworzenie programów. W sieci można znaleźć ponad 100 różnych
narzędzi poprawiających komfort tworzenia oprogramowanie jedynie w Javie. Jednym z najbardziej
popularnych obecnie środowisk programistycznych jest Eclipse. Narzędzie to dostępne jest
nieodpłatnie na zasadach wolnego oprogramowania na stronie:

www.eclipse.org

. Poniżej pokazane

jest zastosowanie programu Eclipse do wykonania podstawowych kroków tworzenia
oprogramowania za pomocą języka Java.

1. Tworzenie projektu

W Eclipse najważniejszym pojęciem organizacji pracy jest projekt. Zajmiemy się utworzeniem
projektu, który będzie zawierał program napisany w Javie.
Aby utworzyć nowy projekt:

Uruchom Eclipse

Wybierz File -> New -> Project

Z listy kategorii wybierz "Java"

Z listy projektów wybierz "Java Project"

Wpisz nazwę projektu, np. "Hello World"

Wciśnij "Finish"

2. Tworzenie klasy

Najprostszy program w Javie składa się z pojedynczej klasy i metody main().
Aby stworzyć klasę w projekcie:

W widoku Navigatora, kliknij prawym klawiszem na projekt i wybierz New->Class

W pole Name wpisz "HelloWorld"

zaznacz, że chcesz stworzyć metodę main() (checkbox na dole)

Wciśnij Finish

background image

3. Uruchamianie programu

Wypełnijmy utworzoną klasę kodem. Wpiszmy na przykład w metodzie main():

System.out.println("To jest mój pierwszy program w jawie!!");

Następnie zapiszmy projekt (File->Save lub Ctrl+S). Zauważmy, że efektem zapisania jest również
skompilowanie programu.
Na pasku zadań wciśnij przycisk Run (zielona strzałka).
Pokaże się okno konfiguracji uruchamiania. Wybierz "Java Application" i wciśnij "New".
Następnie wciśnij Run.
Na dole, w widoku Console, otrzymasz wynik programu. Gratulacje! Właśnie stworzyłeś,
skompilowałeś i uruchomiłeś pierwszy projekt w Eclipse :)

4. Użycie perspektyw i widoków

Główne okno Eclipse'a to tak zwany Workbench. W Workbenchu mogą znajdować się różne
Edytory oraz Widoki. Każdy układ Edytorów i Widoków stanowi Perspektywę. Pracując nad

background image

projektem, możemy przełączać się między uruchomionymi perspektywami, a także dodawać nowe.

Przełącz się z perspektywy Java na perspektywę Resource. Możesz to zrobić, klikając
zakładkę Resource w prawym górnym rogu ekranu.

Zauważ, że niektóre widoki zniknęły, a na ich miejsce pojawiły się inne.

Wróć do perspektywy Javy, klikając zakładkę Java tuż obok Resource.

W ramach każdej perspektywy można przełączać się między widokami.

Wybierz z menu Window -> Show View -> Javadoc

Zauważ, jak na dole pojawił się widok Javadoc.

Możesz przetestować działania tego widoku. Kliknij na nazwę klasy HelloWorld w edytorze
lub w widoku Outline.

W widoku Javadoc pojawi się Javadoc odpowiadający wybranej klasie (został on
automatycznie wygenerowany przez Eclipse podczas tworzenia klasy, należy go oczywiście
zmienić).

5. Autopoprawianie

Jedną z licznych zalet Eclipse'a jest ogromne ułatwienie dla użytkownika, jakim jest wykrywanie
błędów składniowych jeszcze przed próbą kompilacji oraz ich automatyczne poprawianie.
Zmodyfikuj kod metody main(), aby wyglądała tak:

public static void main(String[] args) {

ArrayList n;
System.out.println("Hello World");

}

Zauważ, że słowo ArrayList zostało podkreślone na czerwono. To znaczy, że Eclipse znajduje w
tym miejscu błąd składni.
Wciśnij Ctrl+S - faktycznie, podczas kompilacji pojawił się błąd.
Jeśli spojrzymy na widok "Problems" (na dole ekranu), to zauważymy czerwony X i opis problemu:
nigdzie nie zdefiniowaliśmy typu ArrayList. Dodatkowo, Eclipse może automatycznie poprawić
błąd.

Wciśnij żarówkę z iksem po lewej stronie błędnej linii w edytorze. Możesz również kliknąć
prawym klawiszem na wpis w widoku Problems i wybrać QuickFix

Pojawi się lista sugerowanych przez Eclipse poprawek.

Wybierz "Import ArrayList (java.util)"

Zauważ, że na górze kodu pojawiła się nowa linijka, importująca odpowiedni moduł.

Eclipse potrafi wykrywać również bardziej wyrafinowane błędy, np. brak obsługi wyjątków
rzucanych przez wywołaną metodę.

6. Autouzupełnianie

Oprócz poprawiania błędów, edytor Eclipse'a wspomaga również pisanie kodu. Sprawdzimy to,
tworząc pętlę wypisującą 10 liczb, zaczynając od 1.
Dopisz do metody main() następujące linijki:

int limit = 10;

for

Następnie po for, zamiast spacji, naciśnij Ctrl+Space.

background image

Pojawi się okienko z listą możliwych uzupełnień sugerowanych przez Eclipse. Wybierz "iterate
over array". Zauważ, że po pojedynczym kliknięciu myszki na wybraną opcję pojawia się jej
podgląd.
Do kodu został dodany szablon ze zmiennymi do uzupełnienia. Zauważ, że Eclipse próbował
zgadnąć, jaki będzie warunek końcowy pętli.
Każde obramowane na zielono pole szablonu możemy zmieniać, a zmiany zostaną odzwierciedlone
w szablonie.
Wciśnij TAB, aby przejść do warunku końca pętli. Zmień go na x < 10.
Do ciała pętli wpisz coś w rodzaju:

System.out.println("Liczba: " + i);

Zauważ, że jeśli napiszesz tylko System.out. i wciśniesz Ctrl+Space lub poczekasz chwilę, to
również pojawi się okno z podpowiedziami.
Zapisz (Ctrl+S) i wykonaj program.

7. Debugowanie kodu

Ponownie zmodyfikujmy treść głównej metody main(), aby wyglądała tak:

public static void main(String[] args) {

ArrayList n;
int x = 1;

System.out.println("Hello World");
x = 2;

System.out.println("Oto liczba: " + 2);
}

Spróbujemy dodać breakpoint w linii Hello World i sprawdzić, jaka jest wartość zmiennej x.

Kliknij dwukrotnie lewym klawiszem myszki po lewej stronie od linii wypisującej Hello
World, na pierwszym pionowym pasku edytora (powinien być zacieniony na niebiesko).
Pojawi się niebieska kropka, oznaczająca ustawienie breakpointu.
Możesz również wybrać z menu Run -> Toggle Line Breakpoint.

Jeśli klikniesz prawym klawiszem na kropkę i wybierzesz Breakpoint Properties, możesz
ustawić dodatkowe właściwości breakpointu, takie jak warunek zatrzymania czy licznik
wywołań. Teraz jednak nie będzie to nam potrzebne.

Zapisz projekt (Ctrl+S) i wybierz z menu Run -> Debug..., po czym wciśnij Debug w oknie,
które się pojawi.

Eclipse zapyta, czy przełączyć się na Perspektywę Debugowania. Potwierdź.

Zauważ, że układ widoków zmienił się i jest dużo wygodniejszy do obsługi debugowania
niż zwykła perspektywa Java.

Program zatrzymał się przed wykonaniem zaznaczonej linii.

Spójrz w prawy górny róg, na widok Variables. Możemy stwierdzić, że x ma wartość 1, a
metoda main dostała pustą listę argumentów.

Na belce na górze mamy podstawowe przyciski obsługi debugowania: Kontynuacja,
Zatrzymanie, Step Into oraz Step Over.

Wciśnij Step Over. Zauważ, że w Console wypisał się "Hello World"

Ponownie wciśnij Step Over. Wartość x zmieniła się na 2. Eclipse dodatkowo podkreśla
zmianę, zaznaczając zmienną kolorem czerwonym w widoku Variables.

Wciśnij Resume, aby dokończyć działanie programu.

Wróć do widoku Java (klikając fiszkę "Java" w prawym górnym rogu ekranu")

Wyłącz breakpoint, dwukrotnie klikając lewym klawiszem myszki na niebieską kulkę.

background image

Inne przydatne funkcje

Importowanie już napisanego programu do Eclipse'a

Jeżeli zaczęliśmy tworzyć jakiś projekt w innym środowisku niż Eclipse, możesz importować ten
projekt do Eclipse'a. W tym celu należy stworzyć nowy projekt w Eclipse a następnie:

użyć polecenia File->Import...

lub skopiować pliki ręcznie do utworzonego przez Eclipse katalogu projektu, a następnie
kliknąć prawym klawiszem na nazwę projektu w widoku i wybrać Refresh From Local.

Uzyskiwanie pomocy

Eclipse posiada duże możliwości związane z podpowiadaniem składni poprawianiem błędnie
wprowadzonego kodu. Część z tych możliwości pokazana została w poprzednich częściach tego
dokumentu. Wszystkie informacje zawarte w podpowiedziach mogą być dostępne także z poziomu
menu Help środowiska.
Inną możliwością uzyskania pomocy dotyczącej klas dostarczanych wraz z pakietem Java SDK jest
wykorzystanie dokumentacji dostarczanej bezpośrednio przez Sun. API (Application Program
Interface) bibliotek dostarczanych wraz z SDK dostępne jest on-line na stronie

http://java.sun.com/javase/6/docs/api/

.

Tworzenie dokumentacji wykonywanego programu

Do opisu fragmentów kodu źródłowego programu używa się komentarzy. Na ich podstawie,
używając programu javadoc można później wygenerować dokumentację. Najczęściej opisuje się
elementy takie jak klasy, metody, interfejsy czy obiekty. Komentarze powinny być krótkie oraz
precyzyjne. Należy je umieszczać bezpośrednio przed dokumentowanym elementem programu.

Aby tekst komentarza został rozpoznany przez javadoc, musi być umieszczony pomiędzy
sekwencjami znaków /** i */.

Początkowe znaki * w kolejnych wierszach są pomijane.

Każdy wiersz zawierający znak @, po którym następuje jeden ze znaczników

background image

dokumentacyjnych, powoduje utworzenie w dokumentacji oddzielnego paragrafu.

Polecenie wygenerowania dokumentacji ma postać:

javadoc nazwa_pliku.java

Jego wynikiem jest zbiór plików z opisem w formacie HTML.

Wybrane znaczniki dokumentacyjne Javy:

@author

– informacje o autorze programu,

@version

– informacje o wersji programu,

@return

– opis wyniku zwracanego przez metodę,

@serial

– opis typu danych i możliwych wartości przyjmowanych przez zmienną,

@see

– tworzy łącze do innego tematu,

@since

– opis wersji, od której zaistniał określony fragment kodu,

@deprecated

– informacje o elementach zdeprecjonowanych (które nie są zalecane),

@param

– opis parametru wywołania metody,

@exception

– identyfikator wyjątku.

Wybrane pakiety klas dostarczanych razem z Java SDK

Klasa System

Jest jedną z częściej wywoływanych klas w programach Javy. Zawiera ona kilka użytecznych
metod związanych z dostępem do ustawień środowiska zmiennych środowiskowych, posiada środki
do wczytywania plików i bibliotek. Posiada także narzędzia do szybkiego kopiowania części
zmiennych tablicowych. Najczęściej używanym składnikiem klasy system jest jednak możliwość
dostępu do strumieni wejściowych, wyjściowych oraz strumienia błędów. Najczęstsze użycie klasy
System związane jest z wypisaniem danych wynikowych związanych z działaniem danego
programu. W tym celu konieczne jest wykorzystanie składni:
System.out.println(„String do wypisania”).
W powyższym przykładzie out reprezentuje strumień wyjściowy którego metoda println()
powoduje wypisanie zmiennej typu String na konsoli.
Możliwe jest także wykorzystanie klasy System do pobierania danych ze standardowego wejścia
(najczęściej jest nim klawiatura).

Klasa String

Klasa String jest wbudowaną klasą Javy. Jej obiekty używane są do przechowywania łańcuchów
znaków. Obiekty klasy String tworzy się bardzo łatwo, np.:

String s;

//utworzenie zmiennej referencyjnej

s =

"abc"

;

//utworzenie obiektu zawierającego napis abc

Instrukcje te można połączyć, pisząc:
String s = "abc";
Nazwa typu String zaczyna się od dużej litery, ponieważ jest to nazwa typu obiektowego. Raz
utworzone obiekty klasy String nie mogą ulegać zmianom – ich zawartość jest tylko do odczytu.
Operacje przeprowadzane na stringach tworzą nowe obiekty klasy String. Nieużywane stringi są
automatycznie usuwane z pamięci.
Operacje jakie mogą być wykonywane są dostępne poprzez:

background image

operatory konkatenacji (łączenia)

metody klasy String

Operatory konkatenacji + oraz += są jedynymi operatorami przeciążonymi w Javie - oprócz
sklejania łańcuchów, pozwalają również na ich łączenie z liczbami lub obiektami innych klas.
Przykłady ich wykorzystania pokazane są poniżej:

int

n = 10;

String str, str1, str2, str3, str4;
str =

"napis"

;

str1 = str + n;

// napis10

str2 = str + n + n;

// napis1010

str3 = str + (n + n);

// napis20

str4 = n + n + str;

// 20napis

Metody klasy String pozwalają na wykonanie dodatkowych operacji np:

String s=

"aBCDe"

, s1, s2;

//obiekty

int

dl=s.length();

//dl=5

int

k=s.indexOf('C');

//k=2

int

l=s.indexOf('Z');

//l=-1

s1=s.toLowerCase();

//s1=abcde

s2=s.toUpperCase();

//s2=ABCDE

boolean

b1=s1.equals(s2);

//b1=false

boolean

b2=s1.equals(s1);

//b2=true

String s3=s.substring(0,2);

//s3=aB

char

znak=s.charAt(2);

//znak=C

Porównywanie Stringów - do porównywania zawartości dwóch obiektów typu String służy
metoda equals(). Zwraca ona wartość true w przypadku gdy zawartość porównywanych obiektów
jest identyczna oraz false w przeciwnym przypadku. Do porównywania można też zastosować
metodę compareTo() jednak ona zwraca zero, gdy stringi są równe. Użycie operatora „==” może
prowadzić do błędów ponieważ operator ten pozwala jedynie stwierdzić, czy zmienne referencyjne
odwołują się do tego samego obiektu.

Przykłady użycia:
String s =

"abc"

;

s = s+12;
String s1 =

"abc12"

;

boolean

b1 = s==s1;

//false

boolean

b2 = s.equals(s1);

// true

int

k = s.compareTo(s1);

// 0

Przekształcanie liczb na łańcuchy:

Konwersję liczb do postaci łańcuchów znakowych przeprowadza się za pomocą metody
valueOf() klasy String. Na przykład:

double x = 12.31;
int n = 100;
String s1 = String.valueOf(x);
String s2 = String.valueOf(n);

Innym (bardziej kosztownym) rozwiązaniem jest użycie operatorów konkatenacji, np:

double

x = 12.31;

int

n = 100;

background image

String s1 =

""

+ x;

String s2 =

""

+ n;

Przekształcanie łańcuchów na liczby:

Do przekształcania łańcuchów w liczby stosuje się metodę parseInt():

String t="125";
int i = Integer.parseInt(t);

Można też posłużyć się starszą metodą valueOf() klasy Double lub Integer. Na przykład:

String s="3.14", t="10";
double x;
int i;
x=Double.valueOf(s);
i=Integer.valueOf(t);

Przykład:

package

agh.krim.jpo;

public

class

Konwersja {

/**

*

@param

args

*/

public

static

void

main(String[] args) {

//

TODO

Auto-generated method stub

String s1 =

"11.1"

;

String s2 =

"6.6"

;

double

a=Double.parseDouble(s1);

double

b=Double.parseDouble(s2);

double

suma=a+b;

String wynik = String.valueOf(suma);

System.

out

.println(a);

System.

out

.println(b);

System.

out

.println(wynik);

}

}

Klasa Math

Klasa Math grupuje instrukcje matematyczne pozwalające na wykonanie podstawowych operacji na
wartościach liczbowych. Wszystkie funkcje zadeklarowane są jako statyczne, więc można ich
używać bez tworzenia egzemplarza obiektu. Funkcje matematyczne – metody klasy Math -zwykle
operują na liczbach rzeczywistych typu double i zwracają wartości typu double. Poniżej pokazana
jest tabela grupująca składnię typowych operacji matematycznych:

Metoda

Opis

abs(x)

Wartość bezwzględną liczby x

min(a, b)

Mniejsza z liczb a i b

max(a, b)

Większą z liczb a i b

ceil(double x)

Najmniejszą liczba całkowita większą lub równa x

floor(double x)

Największa liczba całkowita mniejsza lub równa x

exp(double x)

Liczba e podniesiona do potęgi x

background image

log(double x)

Logarytm naturalny liczby x

pow(double x, double n) Liczba x podniesiona do potęgi n
random()

Generuje liczbę losową z zakresu od 0.0 do 1.0

round(float x)

Zwraca liczbę całkowitą powstałą z zaokrąglenia liczby typu float

sqrt(double x)

pierwiastek kwadratowy z liczby x

sin(double alfa)

sinus kąta alfa (podanego w radianach)

cos(double alfa)

cosinus kąta alfa (w radianach)

tan(double alfa)

tangens kąta alfa (w radianach)

toRadians(double alfa)

Zamienia stopnie na radiany

toDegrees(double alfa)

Zamienia radiany na stopnie

Przykład użycia
Napisz program obliczający wartość wyrażenia określonego wzorem:

Wynik ma być podany z dokładnością do trzech miejsc po przecinku.

Rozwiązanie:

class

Liczby{

public

static

void

main(String args[]){

double

a = Math.cos(Math.toRadians(15));

double

b = 1+Math.sqrt(17.681);

double

w = 2*a*b*b;

w=Math.round(w*1000)/1000.0;

System.out.println(

"w= "

+ w);

}
}

Zadania do wykonania

1. Napisz program, który znajduje wszystkie trzycyfrowe liczby, których suma sześcianów

poszczególnych cyfr jest równa danej liczbie. (Wskazówki: Skorzystaj z operatorów
arytmetycznych % i / dla argumentów całkowitych, gdzie:

% - operator modulo - reszta z dzielenia. Na przykład wartością wyrażenia 937%10 jest
liczba 7;

/ - operator dzielenia całkowitego. Na przykład wartością wyrażenia 937/10 jest liczba
93 (ale wartością 937/10.0 jest liczba 93.7).

2. Napisz funkcję rysującą prostokąt o zadanych wymiarach, który składa się z samych

gwiazdek. Na przykład po wywołaniu tej funkcji z parametrami 8 i 3 powinniśmy otrzymać:

* * * * * * * *
* * * * * * * *
* * * * * * * *
Oto nagłówek funkcji

public static void rysuj_prostokat( int a, int b )

3. Napisz program obliczający wartość wyrażenia:

2

0

)

681

.

17

1

(

15

cos

2

+

=

w

background image

3

422

128

750000000

521

log

2

+

=

w

Wskazówki:

Liczbę 750000000 można zapisać w postaci: double x = 7.5e8;

W klasie Math nie ma funkcji log10x. Można obliczyć jej wartość, stosując wzór:

10

log

log

log

10

e

e

x

x

=


Document Outline


Wyszukiwarka

Podobne podstrony:
Tablice cw1 Wprowadz do przedsieb
cw1 wprowadzenie wstepna obrobka danych
Wprowadzenie do cw1
wprowadzenie[1]
Matlab cw1 2 zaoczni
Wykład 1 inżynierskie Wprowadzenie do zarządzania operacyjnego
PREZENTACJA 1 wprowadzenie
Wprowadzenie do medycyny rozwojowej 1
Zdrowie psychiczne wprowadzenie
PD W1 Wprowadzenie do PD(2010 10 02) 1 1
Wprowadzenie do psychologii
Terapia zajeciowa WPROWADZENIE
01 WPROWADZENIA

więcej podobnych podstron