Wykorzystanie klas bibliotecznych Java Platform API, dokumentacja
Wprowadzenie
W skład platformy Java wchodzą dwa komponenty - maszyna wirtualna (interpreter bajtkodów) oraz biblioteka klas i interfejsów. W dzisiejszym przykładzie przeanalizujemy sposoby wykorzystania klas bibliotecznych wchodzących w skład każdej pełnej implementacji platformy Java. Dzisiejsze ćwiczenie będzie także związane z wyrobieniem niezbędnej wprawy w posługiwaniu się dokumentacją (Java Platform API Specification). Podobnie jak w pozostałych przykładach, jeżeli w ćwiczeniu wykorzystana została klasa biblioteczna, to jej pierwsze wystąpienie będzie jednocześnie linkiem do jej dokumentacji.
Ćwiczenia
ćw. 1.1
Zapoznaj się z dokumentacją klasy bibliotecznej java.awt.Rectangle. W oparciu o informacje z poprzednich ćwiczeń zidentyfikuj pola, konstruktory i metody tej klasy i odpowiedz na pytanie jaka jest ich interpretacja i do czego służą. Poniżej znajdziesz kod źródłowy programu który tworzy obiekt reprezentujący prostokąt o zadanym wierzchołku, długości i wysokości i wykonuje na nim operację translacji o wektor (1,-1). Przeanalizuj przykład i porównaj użycie klasy bibliotecznej java.awt.Rectangle z użyciem Twojej własnej implementacji klasy Prostokat z poprzednich zajęć. Przypomnij sobie zagadnienia nazewnictwa klas oraz definiowania i importowania pakietów (wykład) i przeanalizuj je w kontekście wykorzystania klas Java Platform API.
import java.awt.Rectangle;
public class Program { public static void main(String[] args) { Rectangle obj=new Rectangle(0,0,4,3);
obj.translate(1,-1);
System.out.println(obj); } } |
ćw. 1.2
Utwórz obiekt obj1 reprezentujący prostokąt o wierzchołku w punkcie o współrzędnych (0,0), długości 4 i wysokości 3 oraz obiekt obj2 reprezentujący prostokąt o wierzchołku w punkcie (1,1), długości 4 i wysokości 3. Posługując się dokumentacją klasy java.awt.Rectangle znajdź odpowiednie metody i napisz program który utworzy obiekt reprezentujący prostokąt będący przecięciem (częścią wspólną) obj1 i obj2. Skompiluj i przetestuj przykład.
ćw. 1.3
Utwórz obiekt obj1 reprezentujący prostokąt o wierzchołku w punkcie o współrzędnych (1,1), długości 4 i wysokości 5 oraz obiekt obj2 reprezentujący prostokąt o wierzchołku w punkcie (2,0), długości 2 i wysokości 3. Posługując się dokumentacją klasy java.awt.Rectangle znajdź odpowiednie metody i napisz program który sprawdzi czy prostokąt obj1 zawiera się w prostokącie obj2. Skompiluj i przetestuj przykład.
ćw. 1.4
Utwórz obiekt obj reprezentujący prostokąt o wierzchołku w punkcie o współrzędnych (-3,0), długości 6 i wysokości 3. Posługując się dokumentacją klasy java.awt.Rectangle znajdź odpowiednie metody i napisz program który sprawdzi czy punkt o współrzędnych (2,-1) leży wewnątrz prostokąta obj. Skompiluj i przetestuj przykład.
ćw. 1.5
Utwórz obiekt obj1 reprezentujący prostokąt o wierzchołku w punkcie o współrzędnych (1,1), długości 4 i wysokości 5 oraz obiekt obj2 reprezentujący prostokąt o wierzchołku w punkcie (4,-3), długości 4 i wysokości 3. Posługując się dokumentacją klasy java.awt.Rectangle znajdź odpowiednie metody i napisz program który sprawdzi czy prostokąt obj1 przecina prostokąt obj2. Skompiluj i przetestuj przykład.
ćw. 1.6
Poniżej znajdziesz kod źródłowy klasy Prostokat, która dziedziczy po bibliotecznej klasie java.awt.Rectangle. Zapoznaj się z dokumentacją klasy java.awt.Rectangle i w oparciu o informacje z wykładu zidentyfikuj elementy składowe które klasa Prostokat odziedziczy po java.awt.Rectangle. Co one reprezentują i/lub do czego służą?
import java.awt.Rectangle;
class Prostokat extends Rectangle { Prostokat(int a,int b) { super(a,b); }
void info() { System.out.println(this); } } |
public class Program { public static void main(String[] args) {
Prostokat a=new Prostokat(3,4); a.info();
Prostokat b=new Prostokat(2,2); b.info();
if(a.intersects(b)) { System.out.println("-- przecinaja sie --\n"); } else { System.out.println("-- NIE przecinaja sie --\n"); }
a.translate(5,3); a.info();
if(a.intersects(b)) { System.out.println("-- przecinaja sie --\n"); } else { System.out.println("-- NIE przecinaja sie --\n"); }
} } |
ćw. 1.7
Przeanalizuj zawartość metody main() klasy Program. Zidentyfikuj miejsca w których utworzone zostały obiekty typu Prostokat oraz miejsca w których znajdują się wywołania metod na rzecz tych obiektów. Które z tych metod zostały zaimplementowane w klasie Prostokat, a które są odziedziczone po klasie java.awt.Rectangle? W oparciu o informacje zawarte w dokumentacji klasy java.awt.Rectangle odpowiedz na pytanie do czego służy każda z tych metod i w jakim celu została wykorzystana w powyższym przykładzie.
ćw. 1.8
Odpowiedz na pytanie czy konstruktory nadklasy są dziedziczone, a także co oznacza super() w wywołaniu konstruktora podklasy. W oparciu o informacje zawarte w dokumentacji klasy java.awt.Rectangle zaimplementuj konstruktor Prostokat(Point wierzcholek,int dlugosc,int szerokosc), gdzie wierzcholek będzie obiektem klasy java.awt.Point. Skompiluj i przetestuj przykład.
ćw. 1.9
W oparciu o informacje zawarte w dokumentacji klasy java.awt.Rectangle zaimplementuj w klasie Prostokat metodę sprawdzającą czy dany prostokąt przylega do innego prostokąta. Skompiluj i przetestuj przykład.
Z. Dendzik 2009, Programowanie dla platformy Java, sem. I, godz. 4-5.