Programowanie w języku Java - Klasy

Transkrypt

Programowanie w języku Java - Klasy
Programowanie w języku Java
Klasy v1.00 130203
Klasy
Klasa jest przepisem na obiekt. Aby utworzyć obiekt pewnej klasy należy użyć
definicji klasy.
Elementami składowymi klasy są:
 zmienne – elementy, które wyróżniają poszczególne obiekty klasy,
 metody – elementy, które określają działania, jakie można wykonywać na zmiennych
Zmienne w definicji klasy
Każdy obiekt danej klasy jest instancją tej klasy i zawiera wszystkie elementy
(zmienne i metody) danej klasy. Zmienne zdefiniowane w klasie można podzielić na:
 zmienne instancyjne – każda instancja klasy ma swoją kopię zmiennych
instancyjnych. Wartości tych zmiennych wyróżniają obiekty spośród innych obiektów.
 zmienne klasowe – są wspólne dla wszystkich instancji danej klasy. Istnieją nawet
wtedy, gdy nie istnieje żadna instancja danej klasy. Metody klasy mogą modyfikować
zmienne klasowe, ale wtedy zmienna ta jest widoczna we wszystkich instancjach
klasy. Zmienne klasowe muszą być zadeklarowane ze słowem kluczowym static.
Przykład
class Kolo
{
public static double PI = 3.14;
double x;
double y;
double r;
}
Zmienna PI powinna mieć tę samą wartość dla wszystkich kół, zatem została ona
zadeklarowana jako zmienna klasowa.
Metody w definicji klasy
Podobnie jak w przypadku zmiennych istnieją metody klasowe i metody
instancyjne. Metody klasowe są wspólne dla wszystkich obiektów danej klasy. Można z nich
korzystać nawet jeśli nie istnieje żaden obiekt danej klasy. Metody klasowe nie mogą
operować na zmiennych instancyjnych.
Możemy zdefiniować poprzedni przykład w następujący sposób:
class Kolo
{
public static final double PI = 3.14;
double x;
double y;
double r;
static int licznikkol = 0;
static int ileKol()
{
return licznikKol;
}
}
1z2
Programowanie w języku Java
Klasy v1.00 130203
Definiowanie metod.
Ogólna deklaracja metody wygląda następująco:
atrybut_dostępu
typ_wyniku nazwa (lista argumentów)
{
// implementacja metody
}
Każda metoda musi mieć określony typ zwracanego wyniku. Jeśli metoda nie zwraca
wyniku to typ_wyniku musi być zadeklarowany jako void. Przed typem wyniku możemy
podać atrybut_dostępu do danej metody. Atrybut ten określa czy metoda będzie
dostępna z innych klas, klas potomnych i innych pakietów. Jeśli metoda nie posiada listy
argumentów to należy zapisać puste nawiasy po nazwie metody, np.:. ileKol().
Jeśli zadeklarowaliśmy metodę z typem wyniku różnym od void, to metoda musi zwrócić
wartość zadeklarowanego typu. Wartość ta jest zwracana słowem kluczowym return.
Każda taka metoda musi zawierać przynajmniej jedno wystąpienie return. W Java zmienne
typów podstawowych przekazywane są przez wartość. Natomiast zmienne pozostałych
typów przez zmienną. Oznacza to, że jeśli metoda zmodyfikuje argument to modyfikuje
również oryginalny obiekt. Jeśli chcemy przekazać typy podstawowe przez zmienną musimy
utworzyć dla zmiennych typów podstawowych odpowiednią zmienna typu obiektowego.
Przykład
Jeśli mamy daną metodę klasy Kolo:
double obliczPole()
{ return 2*Math.PI*r;}
to wywołanie metody dla obiektu klasy Kolo wygląda następująco:
kolo.obliczPole();
Aby uzyskać dostęp do zmiennej r konkretnego obiektu kolo klasy Kolo kompilator
zastępuje r przez this.r. W niektórych sytuacjach programista może, a nawet musi użyć
jawnie słowa kluczowego this. Zmienna this wskazuje na aktualny obiekt.
Zadanie
Dokończyć implementacje klasy Kolo, tzn. zaimplementować metodę obliczPole() oraz
obliczObwod() oraz napisać program sprawdzający poprawność działania klasy.
2z2

Podobne dokumenty