JAVA 09 klasy i obiekty(2)

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


Wyszukiwarka

Podobne podstrony:
JP SS 7 Klasy i obiekty
JP SS 6 Klasy i obiekty
Java 05 Klasy(1)
Java 05 Klasy
notatki java 09
JAVA 09 Nieznany
09 Klasy i modulyid 7952 Nieznany
18 klasy i obiekty
07 Programowanie obiektowe klasy, obiekty, ochrona danych
Java 06 Klasy Interfejsy
java 09
JAVA 09

więcej podobnych podstron