Lab05


Programowanie obiektowe /Java/
Laboratorium nr 5
1 Pakiety
Pakiet1  to grupa klas zebranych razem we wspólnej przestrzeni nazw. Zaleca się, aby nazwa pakietu
powinna być odwróconą nazwą domeny internetowej autora. np.
1 package pl.kielce.tu.lab5;
2
3 public class MyClass {
4 public static void main(String[] args) {
5 System.out.println("package pl.kielce.tu.lab5");
6 System.out.println(MyClass.class.getPackage());
7 }
8 }
Przykład 1: src/pl/kielce/tu/lab5/MyClass.java{link}
Podczas wyszukiwania klas na dysku wszystkie kropki w nazwie pakietu zostają zamienione na / lub\
(zależnie od systemu operacyjnego), a każdy element nazwy pakietu zostanie zamieniony na podkatalog.
Kompilacja dla Windows (z poziomu katalogu src):
javac pl\kielce\tu\lab5\*.java
Kompilacja dla Linux (z poziomu katalogu src):
javac pl/kielce/tu/lab5/*.java
Uruchomienie:
java pl.kielce.tu.lab5.MyClass
Jeżeli podczas tworzenia klasy nie podamy nazwy pakietu zostanie ona umieszczona w pakiecie domyślnym
( nienazwanym ).
Użycie klasy z tego samego pakietu (np. domyślnego) jest możliwe bez podawania nazwy pakietu:
Complex c = new Complex(1, 2);
Użycie klasy z innego pakietu (bez użycia słowa kluczowego import):
pl.kielce.tu.lab5.MyClass c1 = new pl.kielce.tu.lab5.MyClass();
Użycie klasy z innego pakietu (z użyciem słowa kluczowego import):
import pl.kielce.tu.java.MyClass2;
...
MyClass2 c2 = new MyClass2();
Import wszystkich klas z pakietu:
import pl.kielce.tu.lab5.*;
Dlaczego klasy takie jak np. System możemy używać bez wcześniejszego importu lub podania pełnej
nazwy pakietowej?
1
Thinking in Java, Bruce Eckel, Wydanie IV, Helion, 2006
1
2 Zmienna CLASSP AT H
Zmienna CLASSP AT H2 zawiera ścieżki do katalogów lub archiwów (jar, zip) używanych jako korzenie
przy wyszukiwaniu plików z rozszerzeniem class.
Jeżeli założymy, że system operacyjny to Windows, a skompilowane pliki class znajdują się w katalogu:
D:\java\src
to instrukcja służąca do uruchomienia aplikacji wygląda następująco:
java -cp D:\java\src pl.kielce.tu.lab5.MyClass
java -classpath d:\java\src pl.kielce.tu.lab5.MyClass
Jeżeli założymy, że system operacyjny to Linux, a skompilowane pliki class znajdują się w katalogu:
/home/java/src
to instrukcja służąca do uruchomienia aplikacji wygląda następująco:
java -cp /home/java/src pl.kielce.tu.lab5.MyClass
java -classpath /home/java/src pl.kielce.tu.lab5.MyClass
3 Modyfikatory dostępu
Modyfikatory dostępu:
- public  dostępne dla wszystkich,
- protected  dostępne dla klas znajdujących się w tym samym pakiecie wszystkich oraz dla klas dziedzi-
czących po tej klasie,
- brak słowa kluczowego (dostęp pakietowy, przyjazny, domyślny)  dostępne dla klas znajdujących się
w tym samym pakiecie,
- private  dostępne tylko wewnątrz danej klasy.
Przykład:
Plik AAA.java znajdujący się w pakiecie aaa.bbb.ccc.
1 package aaa.bbb.ccc;
2
3 public class AAA {
4 public int publicAccess = 1;
5 protected int protectedAccess = 2;
6 int packageAccess = 3;
7 private int privateAccess = 4;
8
9 public static void main(String[] args) {
10 AAA a = new AAA();
11 System.out.println("public access " + a.publicAccess);
12 System.out.println("protected access " + a.protectedAccess);
13 System.out.println("package access " + a.packageAccess);
14 System.out.println("private access " + a.privateAccess);
15 }
16 }
Przykład 2: src/aaa/bbb/ccc/AAA.java{link}
Plik BBB.java znajdujący się w pakiecie aaa.bbb.ccc.
2
Thinking in Java, Bruce Eckel, Wydanie IV, Helion, 2006
2
1 package aaa.bbb.ccc;
2
3 public class BBB {
4 public static void main(String[] args) {
5 AAA a = new AAA();
6 System.out.println("public access " + a.publicAccess);
7 System.out.println("protected access " + a.protectedAccess);
8 System.out.println("package access " + a.packageAccess);
9 // ERROR The field AAA.privateAccess is not visible
10 System.out.println("private access " + a.privateAccess);
11 }
12 }
Przykład 3: src/aaa/bbb/ccc/BBB.java{link}
Plik Y Y Y.java znajdujący się w pakiecie xxx.yyy.zzz.
1 package xxx.yyy.zzz;
2
3 import aaa.bbb.ccc.AAA;
4
5 //klasa YYY dziedziczy po klasie AAA
6 public class YYY extends AAA {
7 public static void main(String[] args) {
8 AAA a = new AAA();
9 System.out.println("public access " + a.publicAccess);
10 // ERROR The field AAA.protectedAccess is not visible
11 System.out.println("protected access " + a.protectedAccess);
12 // ERROR The field AAA.packageAccess is not visible
13 System.out.println("package access " + a.packageAccess);
14 // ERROR The field AAA.privateAccess is not visible
15 System.out.println("private access " + a.privateAccess);
16 YYY y = new YYY();
17 System.out.println("public access " + y.publicAccess);
18 System.out.println("protected access " + y.protectedAccess);
19 // ERROR The field YYY.packageAccess is not visible
20 System.out.println("package access " + y.packageAccess);
21 // ERROR The field YYY.privateAccess is not visible
22 System.out.println("private access " + y.privateAccess);
23 }
24 }
Przykład 4: src/xxx/yyy/zzz/YYY.java{link}
Plik ZZZ.java znajdujący się w pakiecie xxx.yyy.zzz.
1 package xxx.yyy.zzz;
2
3 import aaa.bbb.ccc.AAA;
4
5 public class ZZZ {
6 public static void main(String[] args) {
7 AAA a = new AAA();
8 System.out.println("public access " + a.publicAccess);
9 // ERROR The field AAA.protectedAccess is not visible
10 System.out.println("protected access " + a.protectedAccess);
11 // ERROR The field AAA.packageAccess is not visible
12 System.out.println("package access " + a.packageAccess);
13 // ERROR The field AAA.privateAccess is not visible
14 System.out.println("private access " + a.privateAccess);
15 }
16 }
3
Przykład 5: src/xxx/yyy/zzz/ZZZ.java{link}
4 Klasy wewnętrzne i statyczne
 Java3 pozwala na umieszczanie definicji klasy w obrębie definicji innej klasy. Mowa wtedy o klasie we-
wnętrznej.
Tworzenie obiektu klasy wewnętrznej:
obiektKlasyZewnętrznej.new KonstruktorKlasyWewnętrznej()
Dostęp do obiektu klasy zewnętrznej z obiektu klasy wewnętrznej:
NazwaKlasyZewnętrznej.this
1 package pl.kielce.tu.lab5;
2
3 public class OuterClass {
4
5 private String name = "OuterClassName";
6
7 class InnerClass {
8 String name = "InnerClassName";
9
10 void print() {
11 String name = "LocalVariableName";
12 System.out.println(name);
13 System.out.println(this.name);
14 System.out.println(OuterClass.this.name);
15 }
16 }
17
18 public static void main(String[] args) throws Exception {
19 OuterClass o = new OuterClass();
20 InnerClass i = o.new InnerClass();
21 i.print();
22 }
23 }
Przykład 6: src/pl/kielce/tu/lab5/OuterClass.java{link}
 Jeżeli nie potrzebujemy połączenia między obiektem klasy wewnętrznej a obiektem jego klasy zewnętrz-
nej, możemy uczynić klasę wewnętrzną statyczną. Takie klasy są powszechnie określane jako klasy zagnież-
dżone.
1 package pl.kielce.tu.lab5;
2
3 public class OuterClass2 {
4
5 static private String name = "OuterClass2Name";
6
7 static class StaticClass {
8 String name = "StaticClassName";
9
10 void print() {
11 String name = "LocalVariableName";
12 System.out.println(name);
13 System.out.println(this.name);
3
Thinking in Java, Bruce Eckel, Wydanie IV, Helion, 2006
4
14 System.out.println(OuterClass2.name);
15 }
16 }
17
18 public static void main(String[] args) throws Exception {
19 StaticClass i = new StaticClass();
20 i.print();
21 }
22 }
Przykład 7: src/pl/kielce/tu/lab5/OuterClass2.java{link}
5 Import statyczny
1 package pl.kielce.tu.lab5;
2
3 import static java.lang.System.out;
4
5 public class StaticImport {
6 public static void main(String[] args) {
7 System.out.println("package pl.kielce.tu.lab5");
8 // !!!
9 out.println("package pl.kielce.tu.lab5");
10 }
11 }
Przykład 8: src/pl/kielce/tu/lab5/StaticImport.java{link}
6 Przykładowa treść laboratorium
Proszę zapoznać się z następującymi klasami z pakiet java.lang: Boolean, Byte, Character, Double,
F loat, Integer, Long, Math, Object, Short, String, System oraz V oid.
Przykładowa treść laboratorium:
1. Proszę stworzyć, skompilować oraz uruchomić (bez użycia środowiska programistycznego takiego jak
NetBeans czy Eclipse) aplikację zgodną ze specyfikacją podaną przez prowadzącego. Klasy aplikacji
powinny znajdować się w pakiecie o podanej nazwie. Dodatkowo należy uruchomić aplikację z lokalizacji
innej (np. C:\) niż lokalizacja klas.
2. Proszę opracować przykład dotyczący klas wewnętrznych i statycznych.
3. Korzystając z metod klas dostępnych w bibliotece standardowej proszę:
- policzyć sinus podanego kąta,
- sprawdzić czy dana liczba typu F loat jest NaN (ang. Not a Number),
- sprawdzić czy obiekt klasy String rozpoczyna się od podanego prefiksu,
- znalezć indeks pierwszego wystąpienia podanego tekstu,
- usunąć początkowe i końcowe białe znaki (spacje, tabulacje, itd.) w tekście,
- przekształcić podany tekst tak, aby zawierał tylko małe litery,
- podzielić podany tekst na poszczególne wyrazy.
4. Inne
5


Wyszukiwarka

Podobne podstrony:
tpd lab05
Lab05 11
sop 2009 lab05
CAD 15 LAB05 Parametry fizyczne Bloki
AiP Lab05
BO Lab05
java lab05 inheritance
Inf Lab05
so lab05
Lab05 Sprawozdanie
Inf Lab05
Lab05 ATM

więcej podobnych podstron