background image

Przemysław Wionczyk

JAVA

Klasy i obiekty

Klasy i obiekty

1 / 15

background image

Przemysław Wionczyk

JAVA

Wstęp

Język Java został zaprojektowany jako język w pełni obiektowy. To 

oznacza, że wszystko poza typami prostymi, które poznaliśmy wcześniej 

jest obiektem. Poza tym wszystkie obiekty są dostępne tylko poprzez 

referencję.   W   języku   C++   mogliśmy   tworzyć   bezpośrednio   zmienne 

obiektowe lub wskaźniki na obiekty (referencje). W Javie mamy sytuację 

uproszczoną, bo nie mamy wyboru, wszystko co nie jest zmienną typu 

podstawowego jest referencją.

2 / 15

background image

Przemysław Wionczyk

JAVA

Klasy

W  języku  Java  klasy   dzielimy   na publiczne  i  pakietowe.  Pisząc 

przed nazwą klasy tylko słowo class tworzymy klasę pakietową. Podając 

przed   słowem   class   specyfikator   dostępu   public   tworzymy   klasę 

publiczną.   Klasa   publiczna   jest   dostępna   dla   wszystkich   innych   klas. 

Klasa pakietowa jest dostępna jedynie wewnątrz danego pakietu, np. dla 

wszystkich klas w jednym katalogu tworzących jedną aplikację.

W jednym pliku może się znajdować tylko jedna klasa publiczna, 

ale razem z nią może być tam wiele klas pakietowych. Nazwa takiego 

pliku musi być identyczna z nazwą klasy (wielkość liter też jest ważna).

3 / 15

background image

Przemysław Wionczyk

JAVA

Zawartość klas

Klasy mogą zawierać pola (zmienne) oraz metody (czyli funkcje).

Przykładowa klasa przechowująca punkt na ekranie może wyglądać tak:

public class Punkt {

int x, y;
int getX() {

return x;

}
int getY() {

return y;

}

}

4 / 15

background image

Przemysław Wionczyk

JAVA

Aby stworzyć referencję do tej klasy możemy napisać:

Punkt punkt;

To stworzyło nam zmienną (referencję) do obiektu klasy Punkt, ale nie 

stworzyło jeszcze samego obiektu, zatem nie da się przechowywać nic 

pod tą zmienną. Aby umieścić tam obiekt, należy napisać:

punkt = new Punkt();

To   tworzy   nam   nowy   obiekt   klasy   Punkt   (poprzez   wywołanie 

konstruktora  klasy  Punkt)   i  przypisuje  ten   obiekt   do  zmiennej   punkt. 

Można połączyć te czynności i stworzyć równocześnie zmienną i obiekt:

Punkt punkt = new Punkt();

5 / 15

background image

Przemysław Wionczyk

JAVA

Korzystanie z obiektów

Podobnie   jak   przy   obiektach   w   C++,   do   składowych   obiektu 

odwołujemy się przy użyciu kropki:

System.out.println(punkt.x);
int a = punkt.getX();

Możemy  też referencję ze zmiennej  punkt skopiować do innej, nowo 

utworzonej zmiennej, która od tego momentu będzie wskazywała na ten 

sam obiekt:

Punkt punktA = punkt;

6 / 15

background image

Przemysław Wionczyk

JAVA

Specyfikatory dostępu

Do pól i metod możemy ograniczać dostęp podobnie jak w C++, 

czyli dopisując specyfikator dostępu. Mamy do dyspozycji 4 możliwości:

public – publiczne pola i metody będą dostępne dla wszystkich (ten 

typ dostępu widzieliście już przy głównej funkcji programu – main,

private – pola i metody dostępne tylko wewnątrz danej klasy,

protected – dostępne dla danej klasy i klas dziedziczących,

brak specyfikatora – oznacza dostęp pakietowy, działający tak jak 

opisałem przy klasach.

7 / 15

background image

Przemysław Wionczyk

JAVA

Specyfikatory dostępu

public class Punkt {

private int x, y;

// dostęp tylko dla funkcji w klasie

public int getX() {

// dostęp dla wszystkich

return x;

}
protected int getY() {

// dostęp wewnątrz klasy 

return y;

// i klas potomnych

}

}

Private   powinniśmy   używać   do   prawie   wszystkich   pól   i   niektórych 

wewnętrznych funkcji klasy, do reszty dostęp może być swobodniejszy.

8 / 15

background image

Przemysław Wionczyk

JAVA

Konstruktor

Tak jak w C++, mamy możliwość definiowania specjalnych metod 

nazywanych   konstruktorami,   które   są   uruchamiane   przy   tworzeniu 

obiektu danej klasy. Konstruktory nigdy nie zwracają wyniku. Tak jak 

w C++ mamy możliwość zdefiniowania kilku różnych konstruktorów dla 

jednej   klasy.   Konstruktory   te   muszą   różnić   się   ilością   lub   rodzajem 

parametrów.

9 / 15

background image

Przemysław Wionczyk

JAVA

Konstruktor

public class Punkt {

private int x, y;
public Punkt() {

x = 100;

y = 200;

}
public Punkt(int a, int b) {

x = a;
y = b;

}

}

10 / 15

background image

Przemysław Wionczyk

JAVA

Przeciążanie metod

Możliwość   stworzenia   dwóch   konstruktorów   o   różnych 

parametrach, tak samo jak dowolnych funkcji o tej samej nazwie, które 

różnią   się   listą   przyjmowanych   argumentów   lub   typem   zwracanej 

wartości   nazywamy   przeciążaniem   metod.   Sama   metoda 

System.out.print  ma   kilkanaście   przeciążonych   wersji   przyjmujących 

zmienne różnych typów (od liczb całkowitych, poprzez rzeczywiste, aż 

do tablic znaków, a nawet obiektów).

11 / 15

background image

Przemysław Wionczyk

JAVA

Zadanie 1

Napisz publiczną klasę Circle zawierającą metody liczące obwód 

i pole koła (jako parametr tych funkcji mamy mieć promień). W drugim 

pliku napisz klasę Figury z funkcją main i wykorzystaj klasę Circle do 

obliczeń dla podanego przez użytkownika promienia.

12 / 15

background image

Przemysław Wionczyk

JAVA

Zadanie 2

Dopisz   publiczne   klasy   Prostokąt   i  Trójkąt   w   których   zawrzesz 

metody liczące pola i obwody. W klasie Trójkąt skorzystaj z przeciążania 

metod i zawrzyj różne metody o tej samej nazwie liczące pole różniące 

się od siebie argumentami:

podstawa i wysokość (liczby rzeczywiste), 

trzy boki (liczby rzeczywiste, wzór Herona),

dwa boki (liczby rzeczywiste) i kąt między nimi (wartość całkowita 

w stopniach).

13 / 15

background image

Przemysław Wionczyk

JAVA

Rozbuduj główną klasę z zadania 1 o menu w którym użytkownik 

wybiera   figurę,   potem   ewentualnie   wybiera   co   dla   danej   figury   chce 

podać (tylko dla trójkąta) a następnie program wylicza mu pole i obwód 

tej figury.

14 / 15

background image

Przemysław Wionczyk

JAVA

Zadanie 3

Napisz   klasę   Trójmian   z   konstruktorem   bezparametrowym 

(ustawiającym a=1, b=3, c=2) oraz z trzema parametrami a, b, c. Klasa ta 

ma mieć funkcje liczące współrzędne wierzchołka (p i q), deltę, ilość 

miejsc zerowych, pierwsze miejsce zerowe, drugie miejsce zerowe (jeśli 

jest   jedno,   to   wynik   z   obydwóch   powinien   być   taki   sam).   Następnie 

przetestuj tę klasę pisząc kolejną z funkcją main w której użytkownik 

podaje   współczynniki   trójmianu,   program   tworzy   odpowiedni   obiekt 

trójmianu, potem użytkownik z menu wybiera jedną z opcji programu, 

które liczą różne rzeczy przy pomocy tej klasy Trójmian.

15 / 15


Document Outline