Programowanie obiektowe w Javie

advertisement
Programowanie obiektowe
w Javie
Nguyen Hung Son
Uniwersytet Warszawski
Spis rzeczy
Klasy
 Metody i pola
 Dziedziczenie klas
 Interfejsy
 Programowanie obiektowozorientowane w Javie

Klasy

Klasy są szablonami dla obiektów
SKŁADNIA KLAS
[ModyfikatorKlasy] class NazwaKlasy
[extends NadKlasa] [implements Interfejsy]
{
/* definicje metod i pól */
}
abstract
final
public
private
Synchronizable
...
Pola:
Modyfikator TypWartości NazwaPola
Metody:
Modyfikator TypZwracanejWartości Nazwa
(Typ Argument1, Typ Argument2, ...)
{
/* implementacja (kod) metody */
}
Pola danych

Deklaracja:
Modyfikator TypWartości NazwaPola

Przykład:
class Punkt {
int m_iWspX; //pole reprezentujące współrzędną x punktu
int m_iWspY; //pole reprezentujące współrzędną y punktu
byte m_bKolor; //pole reprezentujące kolor punktu
}
Metody

Deklaracja
Modyfikator TypWartości Nazwa(Typ Argument1, Typ Argument2, ...)
{
/* implementacja (kod) metody */
}

Przykład
class Punkt {
......
public void info()
{
System.out.println(”To jest punkt (” + m_iWspX +”,” + m_iWspY+”)”);
}
}
Modyfikatory

Modyfikatory dostępu
Modyfikator
private
protected
public
package

klasa
podklasa
pakiet
wszędzie
X
X
X
X
X
X
X
X
X
X
Modyfikatory właściwości
– Dla klas możemy używać modyfikatorów: public,
abstract, final.
– dla metod: abstract, static, final, synchronized, native;
– dla pól danych: final, static, transient, volatile,
Obiekty




Obiekty = elementy pewnego typu danych
opisanego przez klasy.
Zmienne obiektowe = referencje do obiektów
Konstruktor: metoda o nazwie identycznej, jak
nazwa klasy. Konstruktor zostaje wywołany podczas
tworzenia nowego obiektu klasy
Deklaracja:
NazwaKlasy NazwaZmiennej [ = WartośćPoczątkowa ];

Przykład:
Punkt p = new Punkt(2,3,4);
Dziedziczenie

Nieprywatne (private) pola i metody klasy
mogą być dziedziczone przez inną klasę
 super: wskaźnik do nadklasy
 W Javie z jednej klasy bazowej może
dziedziczyć wiele klas pochodnych, ale
każda klasa może dziedziczyć z 1 klasy
bazowej (brak polimorfizmu)
Dziedziczenie
class Figura
// klasa bazowa
{
protected byte Kolor; // kolor
protected int x0,y0; // współrzêdne x,y punktu
protected int bx,by; // wsp. punktu odniesienia
}
class Linia extends Figura
// Ta klasa została utworzona z klasy bazowej "Figura".
{
// dodatkowe współrzędne x, y końcowego punktu linii
protected int x1, y1;
// konstruktor dla inicjalizacji
protected Figura (byte f, int x, int y)
{
this.Kolor=f;
this.x0=x;
this.y0=y;
this.UstawPunktOdniesienia(0, 0);
}
// konstruktor - inicjalizacja linii
public Linia (byte f, int xo_, int y0_, int x1_, int y1_)
{
super(c, x0_, y0_); // wywołanie konstruktora klasy
bazowej
this.x1=x1_;
this.y1=y1_;
}
// metoda ustawiająca punkt odniesienia figury
public UstawPunktOdniesienia (int x, int y)
{
this.x0=x;
this.y0=y;
}
// abstrakcyjna metoda rysująca figurę
public abstract void Rysuj ();
// implementacja abstrakcyjnej metody klasy bazowej
public void Rysuj()
{
// ... wyświetlenie linii na ekranie
}
}
Dziedziczenie w Javie

Każda klasa ma jedną nadklasę (wyjątek: Object)
Interfejs
Interface: prototyp klas
 Klasy, które implementują ten sam
interface, mają podobne struktury.
 W interface:

– Pola są statyczne, finalne i publiczne
– Metody są publiczne i abstrakcyjne
(które zostaną implementowane w
klasach pochodnych)
Implementacja interfeju
Interface może oddziedziczyć od
innego interface lecz nie od innych
klas
 Klasy mogą dziedziczyć od jednej
klasy, ale może implementować wiele
interfejsów

Pakiety
są to podzbiory bibliotek, zawierają
przeważnie funkcje związane
tematycznie.
 Pakiety mogą także zawierać
definicje interfejsów.

Download