Aleksander Skała
Kraków 27 kwietnia 2010 r.
Definicje
Java – środowisko programistyczne
zorientowane obiektowo do tworzenia
aplikacji desktopowych, sieciowych i apletów
na strony WWW.
Sercem platformy JSE jest maszyna
wirtualna Javy zwana Java Virtual Machine
(JVM) do uruchamiania gotowych aplikacji.
Język obiektowy-> wszystkie zapisy składają
się z klas i obiektów
Aleksander Skała
Kraków 27 kwietnia 2010 r.
Podstawowe pojęcia:
Klasa
definiuje zestaw
Metod
i
Pól
dla swoich
Obiektów
. Przykładem klasy
może być samochód. Może on podejmować różne działania np. jechać i ma
pewne właściwości np. kolor. Jest jednak abstrakcyjny, mówiąc inaczej
"nienamacalny". Jeżeli mówimy o klasie Samochód to oznacza, że mówimy o
jakimś samochodzie.
Ponieważ program zawiera wiele klas musimy wiedzieć, która jest klasą
główną: główną jest klasa publiczna zawierająca metodę
main()
Ogólny wzór definicji klasy w Javie wygląda w następujący sposób:
[modyfikator dostępu] class NazwaKlasy {
// definicja pól i metod
}
Nasz wzorcowy samochód:
public class Samochod {
public
Color
kolor = new Color(255,255,255); // pole kolor określa
kolor samochodu
public void jedzie(){
//kod odpowiedzialny za jazdę samochodu
}
Aleksander Skała
Kraków 27 kwietnia 2010 r.
Podstawowe pojęcia:
Obiekt
- byt fizyczny stanowiący instancję klasy.
Obiekt jest fizyczną "manifestacją" Klasy.
Oznacza to że ma własne miejsce w pamięci komputera i
możemy nim manipulować. Jeżeli mówimy o obiekcie samochód
będącym instancją Klasy Samochód to oznacza, że mówimy o
konkretnym samochodzie.
Obiekt definiujemy jako Zmienną.
Zmienna
- byt fizyczny o którym mówimy że ma wartość.
Przez pojęcie zmiennej w Javie rozumiemy referencję,
wskazanie, do określonego miejsca w pamięci komputera.
Zmienne reprezentują dane i pozwalają za swoim
pośrednictwem nimi manipulować.
Aleksander Skała
Kraków 27 kwietnia 2010 r.
Podstawowe pojęcia:
Stała
- rodzaj zmiennej, której wartość nie podlega
modyfikacji.
Stała to zmienna, która po nadaniu jej wartości nie może
być już zmieniona. Zazwyczaj tej konstrukcji używa się do
definiowania np. ustawień. Chcąc uzyskać taki efekt należy
użyć słowa kluczowego
final
.
Metoda
- działanie, które mogą podjąć
Obiekty
danej Klasy.
Metoda określa Działanie. Dlatego najczęściej stosuje się
do jej nazwania czasowniki.
samochód.jedzie() - jedzie() to metoda, działanie.
Metody wywołujemy za pomocą znaku „
.
” po nazwie
zmiennej.
Aleksander Skała
Kraków 27 kwietnia 2010 r.
Podstawowe pojęcia:
Konstruktor
- to specyficzna metoda wywoływana by stworzyć
Obiekt
.
Konstruktor jest wywoływany za każdym razem gdy tworzony jest
nowy obiekt. Można go traktować jako specyficzną metodę, która
zwraca nową instancję klasy, ale nie ma tego wpisanego w
sygnaturze.
Konstruktor może przyjmować parametry. Konstruktor
bezparametrowy nazywany jest czasami konstruktorem domyślnym
ponieważ, jeżeli nie zdefiniowano w klasie żadnego konstruktora to
kompilator umieści w niej konstruktor bezparametrowy.
Jeżeli zdefiniujemy w klasie choć jeden konstruktor z parametrami
to kompilator nie wygeneruje konstruktora domyślnego. Musimy go
sami zdefiniować.
Pole
- właściwość
Obiektu
danej Klasy.
Samochód może mieć kolor. Pole Klasy rozumiemy właściwość lub
relację MA. Pole jest zmienną która należy do klasy.
Aleksander Skała
Kraków 27 kwietnia 2010 r.
Modyfikatory dostępu:
Publiczny - określany jest słowem kluczowym
public
.
Oznacza iż do danej metody, pola, definicji klasy i
interfejsu ma dostęp każdy obiekt w uniwersum javy
(JU). Dostęp ten nie jest uzależniony o tego w jakim
pakiecie znajduje się udostępniana własność i czy to
jest ten sam pakiet co pakiet obiektu z którego
pochodzi żądanie.
Prywatny - jest przeciwieństwem modyfikatora
publicznego. Pola, metody, klasy i interfejsy
oznaczone słowem
private
są całkowicie niewidoczne
poza definicją swojego właściciela.
Żaden obiekt w JU nie będzie wstanie odwołać się do
zawartości PrywatnaKlasa. Bardzo istotnym faktem
jest to, że klasa znajdująca się na najwyższym
poziomie nie może być prywatna.
Aleksander Skała
Kraków 27 kwietnia 2010 r.
Jedynym dowolnym elementem jest nazwa programu:
public class Program {
public static void main (String args[])
{
// definicja pól i metod
}
}
Nazwa programu jest pisana zawsze wielką literą, nie może
rozpoczynać się cyfrą, zawierać znaku spacji, a także polskich
liter.
Nie może też być jednym ze słów kluczowychjęzyka Java (np.
class, public)
Pisanie programu rozpoczynamy od podania słowa kluczowego
class
oznaczającego, że budujemy klasę.
Zaraz po nim umieszczamy nazwę programu, a przed nim
modyfikator dostępu
public
Podstawowe zasady:
Aleksander Skała
Kraków 27 kwietnia 2010 r.
public class Program {
public static void main (String args[])
{
// definicja pól i metod
}
}
Po nazwie programu stosujemy nawias kalmrowy otwierający i
zamykający. W środku znajduje się
ciało klasy
.
Klasa główna musi zawierać metodę
main()
. Poprzedzona
modyfikatorem
public
oraz specyfikatorem
static
.
void
oznacza, że metoda nie zwraca żadnych wartości.
Po nazwie w zwykłych nawiasach argument
String args[]
. Dzięki
niemu będzie można przekazywać w postaci tekstu argumenty do
przetworzenia.
Po nawiasach zwykłych stosujemy nawias klamrowy otwierający i
zamykający. Jego wnętrze to ciało metody
main()
.
Podstawowe zasady:
Aleksander Skała
Kraków 27 kwietnia 2010 r.
Wyróżnia się dwa rodzaje komentarzy:
Liniowy:
// główna klasa programu:
public class Program {
//główna metoda programu
public static void main (String args[])
{
// definicja pól i metod
}
}
Blokowy:
/* główna klasa aplikacji
o nazwie Program: */
public class Program {
public static void main (String args[])
{
// definicja pól i metod
}
Komentarze
Aleksander Skała
Kraków 27 kwietnia 2010 r.
Instrukcje sterujące
W momencie gdy chcemy, aby program dokonał wyboru jednej z
dróg na podstawie prawdziwości jakiegoś warunku logicznego
możemy użyć jednej z dwóch instrukcji sterujących. Jeżeli chcemy,
aby wybór został dokonany na podstawie stanu obiektu możemy użyć
przełącznika - switch.
Instrukcja
if
/
if else
Najprostszą instrukcją warunkową jest instrukcja if:
if
(warunek_logiczny){
//instrukcje wykonane jeżeli warunek jest PRAWDZIWY
}
odmianą tej instrukcji jest instrukcja
if else
:
if(warunek_logiczny){
//instrukcje wykonane jeżeli warunek jest PRAWDZIWY
}
else{
//instrukcje wykonane jeżeli warunek jest FAŁSZYWY
}
Instrukcje sterujące
Aleksander Skała
Kraków 27 kwietnia 2010 r.
instrukcje można zagłębiać:
if
(warunek_logiczny1){
if
(warunek_logiczny2){
//instrukcje wykonane jeżeli warunek2 jest
PRAWDZIWY
}
}
oraz dokonywać wielokrotnego wyboru:
if
(warunek_logiczny1){
//instrukcje wykonane jeżeli warunek1 jest PRAWDZIWY
}
else if
(warunek_logiczny2){
//instrukcje wykonane jeżeli warunek2 jest PRAWDZIWY
}
else
{
//instrukcje wykonane jeżeli warunek1 i warunek 2 są
FAŁSZYWE
Instrukcje sterujące
Aleksander Skała
Kraków 27 kwietnia 2010 r.
Pętle
Jeżeli chcemy wykonać jakiś fragment kodu wielokrotnie to możemy
wypisać go explicite:
System.out.println(1);
System.out.println(2);
System.out.println(3);
Takie rozwiązanie jest jednak złe. Co jeżeli chcemy wypisać np.
wszystkie posty z forum? Jest tego trochę. W dodatku liczba ta wciąż
rośnie więc w momencie uruchomienia kodu na pewno nie będzie tam
ostatnich postów. Rozwiązaniem tego problemu jest specjalna
instrukcja języka - Pętla. Ogólna zasada działania pętli jest bardzo
prosta i można ją ująć na trzy sposoby:
WYKONAJ POLECENIE N-KROTNIE
lub
WYKONAJ POLECENIE DOPÓKI SPEŁNIONY JEST WARUNEK
lub
WYKONAJ POLECENIE DLA KAŻDEGO ELEMENTU ZBIORU B
Pętle
Aleksander Skała
Kraków 27 kwietnia 2010 r.
Pętla for
Jest to pętla policzalna, czyli taka o której możemy
powiedzieć iż wykona się określoną liczbę razy. Ogólna
składnia pętli for wygląda w następujący sposób:
for
(int i = 0; warunek; krok){
//instrukcja
}
Uwagi:
Zmienną
i
nazywamy Indeksem Pętli
Indeks może być dowolnym typem prostym poza boolean. Typ char
ograniczony jest do 65535
Warunek może być dowolnym zdaniem logicznym, należy jednak
zwrócić uwagę by nie była to tautologia. Otrzymamy wtedy pętle
nieskończoną
Krok pętli może być dowolny jednak tak samo jak w przypadku
warunku trzeba uważać na zapętlenie się programu.
Pętla
for
Aleksander Skała
Kraków 27 kwietnia 2010 r.
Gdzie należy używać pętli for?
Pętla ta najlepiej sprawdza się gdy chcemy wykonać jakąś
operację na wszystkich elementach tablicy. Jest naturalną
i najbardziej czytelną dla tego typu problemów:
int[] a = new int[] { 1, 2, 3 };
for
(int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
Pętla
for
Aleksander Skała
Kraków 27 kwietnia 2010 r.
Pętle while i do while
Pętle niepoliczalne, czyli takie o których nie
możemy powiedzieć ile razy się wykonają.
Ich składnia jest następująca:
while
(warunekLogiczny){
//instrukcja
}
/*---------*/
do
{
//instrukcja
}
while
(warunekLogiczny)
Uwagi:
warunek musi być zmienną boolean lub obiektem
klasy java.lang.Boolean.
Pętla
while
i
do while
Aleksander Skała
Kraków 27 kwietnia 2010 r.
Obie te konstrukcje są bardzo podobne do siebie. Główna różnica
polega na tym iż w pętli
while
warunek jest sprawdzany przed
wykonaniem instrukcji, a w pętli
do while
po wykonaniu
instrukcji. Oznacza to, że pętla do while wykona się co najmniej
jeden raz. Poniższy przykład ilustruje różnicę:
int i = 0;
while
(i < 1) {
System.out.println("while " + i);
i++;
}
do
{
System.out.println("do while " + i);
i++;
}
while
(i < 1);
Pętla
while
i
do while
Aleksander Skała
Kraków 27 kwietnia 2010 r.
Druga pętla wykona się pomimo iż warunek, 1 < 1, nie jest
prawdziwy.
Kiedy używać? Najczęściej pętla while jest wykorzystywana do
nasłuchiwania.
Polega to na stworzeniu nieskończonej pętli, najczęściej podając
jako argument słowo true, której zadaniem jest wykonywanie
danego kodu nasłuchującego. Prosty szablon animacji:
while
(animuj){
//kod animacji
}
Dopóki flaga animuj jest prawdziwa wykonywana jest animacja.
Podobnie ma się sprawa z prostymi serwerami które nasłuchują
w ten sposób na portach.
Pętla
while
i
do while
Aleksander Skała
Kraków 27 kwietnia 2010 r.
public class KlasaA
{
public static void main(String[] args)
{
//program drukuje zadany napis
System.out.print("
Witaj na zajęciach z JAVY
");
}
}
Zadania
Aleksander Skała
Kraków 27 kwietnia 2010 r.
import java.util.*;
public class wypisz_date
{
public static void main(String[] args)
{
//program drukuje dzisiejsza date
Date dzisDzien = new Date();
System.out.println("Dzisiaj jest: " + dzisDzien);
}
}
Zadania
Aleksander Skała
Kraków 27 kwietnia 2010 r.
public class KlasaA
{
public static void main(String[] args)
{
//program który sprawdza czy podane imie jest zgodne z wzorcem
System.out.print("
Podaj imie:
");
Scanner wejscie1 = new Scanner(System.in);
String imie = wejscie1.nextLine();
System.out.println(imie.length());
if
(imie.toLowerCase().equals("olek"))
{
System.out.println("OK");
}
else
{
System.out.println("zle");
}
}
Zadania
Aleksander Skała
Kraków 27 kwietnia 2010 r.
public static void main(String[] args)
{
//odliczanie od 1 co trzecią liczbę, przez 30 razy, na koncu komunikat 'koniec'
for
(int i=1, k=1; k<=30; k++, i=i+3)
{
System.out.println(i);
}
System.out.println("
koniec
");
int k=30;
int i=1;
********************************************
while
(k>0)
{
System.out.println(i);
i = i+3;
k--;
}
System.out.println("
koniec
");
}
Zadania
Aleksander Skała
Kraków 27 kwietnia 2010 r.
public static void main(String[] args)
{
//pobranie liczby od uzytkownika, jezeli jest od 0 do 10 to napisac 'ok'
//jezeli mniejsza od 0 to napisac 'za malo'
//jezeli wieksza od 10 'za duzo'
//jezeli nie podano liczby - 'podaj liczbe'
boolean koniec=true;
while
(koniec)
{
System.out.print("Podaj liczbe: ");
Scanner wejscie1 = new Scanner(System.in);
String wej = wejscie1.nextLine();
int liczba = Integer.parseInt(wej);
if
(liczba < 0)
{
System.out.println("Za malo");
}
else
if(liczba < 10)
{
System.out.println("OK");
koniec = false;
}
else
{
System.out.println("Za duzo");
}
}
}
Aleksander Skała
Kraków 27 kwietnia 2010 r.
public static void main(String[] args)
{
//program obliczający 'podatek'
//pobranie liczby od uzytkownika
//jezeli mniej niz 6000 to zwraca 0
//podatek w przedziale 6000 - 20000 - 10%
//w przedziale 20000-40000 - 20%
//powyzej - 40%
while
(true)
{
System.out.print("Podaj liczbe: ");
Scanner wejscie1 = new Scanner(System.in);
double zarobki = wejscie1.nextFloat();
if
(zarobki < 6000)
{
System.out.println("0");
}
else if
(zarobki < 20000)
{
double podatek = (zarobki - 6000)*0.2;
System.out.println(podatek);
}
else if
(zarobki < 40000)
{
double podatek = (zarobki - 20000)*0.3;
System.out.println(podatek);
}
else
{
double podatek = (zarobki - 40000)*0.4;
System.out.println(podatek);
}