Professional Documents
Culture Documents
Ontok 10 1 Java-Labexercises
Ontok 10 1 Java-Labexercises
1) Αλνίμηε ην εξγαιείν BlueJ, δεκηνπξγήζηε έλα λέν project (Project New Project) θαη ζώζηε ην
(όλνκα Askisi1), αθνύ επηιέμεηε ηνλ θαηάινγν απνζήθεπζεο ηνπ project. Σηελ νζόλε ζα
εκθαληζηεί έλα εηθνλίδην εγγξάθνπ πνπ παξηζηάλεη ην project πνπ κόιηο δεκηνπξγήζαηε.
Γεκηνπξγήζηε ηώξα κία λέα θιάζε ζην project, θάλνληαο θιηθ ζην θνπκπί “New Class”, θαη
νλνκάζηε ηελ Age. Σηε ζπλέρεηα, θάλεηε δηπιό θιηθ πάλσ ζην εηθνλίδην ηεο θιάζεο (πνπ ήδε
έρεη εκθαληζηεί ζηελ νζόλε) νπόηε θαη εκθαλίδεηαη ν θώδηθαο ηεο θιάζεο. Απηόο είλαη θώδηθαο
πνπ δεκηνπξγείηαη απηόκαηα από ην BlueJ. Σβήζηε ό,ηη ππάξρεη θαη αληηθαηαζηήζηε ην κε ηνλ
παξαθάησ θώδηθα:
2) Σηε ζπλέρεηα πξέπεη λα ζώζεηε ηελ θιάζε Age. Οπόηε, ζην παξάζπξν ηεο Age επηιέγνπκε
«Class Save». To αξρείν ζώδεηαη ζαλ «Age.java». Μπνξείηε λα ην δείηε αλ πάηε ζηνλ
θαηάινγν πνπ δεκηνπξγήζαηε ην project. Τώξα κεηαθξάζηε ην αξρείν παηώληαο ηελ επηινγή
compile. Αλ όια γίλνπλ ζσζηά ζα εκθαληζηεί ην κήλπκα «Class compiled – no syntax errors»
ζην θάησ κέξνο ηεο νζόλεο. Τώξα έρεη παξαρζεί ην αξρείν «Age.class». Μπνξείηε λα ην δείηε
θαη απηό ζηνλ θαηάινγν ηνπ project.
3) Τώξα ζα δνθηκάζεηε λα ηξέμεηε ην πξόγξακκά ζαο. Κιείλεηε ην παξάζπξν ηεο θιάζεο Age θαη
πεγαίλεηε ζην παξάζπξν ηνπ project. Δθεί, θάλνληαο δεμί θιηθ ζηελ θιάζε Age, επηιέγνπκε ην
«void main(args)» νπόηε αλνίγεη έλα παξάζπξν, όπνπ πξέπεη λα δώζεηε θάπνην όξηζκα ηύπνπ
String. Γώζηε θάπνην όξηζκα (ρξεηάδνληαη θαη νη αγθύιεο, νπόηε αλ ζέιεηε λα δώζεηε ην 12 ζα
γξάςεηε {“12”}). Παηήζηε ΟΚ. Τη ζπλέβε; Δπαλαιάβεηε δύν θνξέο ηε δηαδηθαζία γηα
δηαθνξεηηθά νξίζκαηα. Τη γίλεηαη όηαλ δελ δνζεί ε ειηθία (δει. δελ δνζεί όξηζκα); Απνηππώζηε
ηα απνηειέζκαηα γηα θάζε πεξίπησζε ζηελ αλαθνξά ζαο.
4) Αιιάμηε ηηο ηξεηο εληνιέο εθηύπσζεο ζηελ νζόλε κε ηηο παξαθάησ (εληνπίζαηε ηε δηαθνξά;)
5) Πξνζζέζηε ην παξαθάησ ηκήκα θώδηθα ζηελ θαηάιιειε ζέζε ώζηε, όηαλ δε δίλεηαη όξηζκα λα
εθηππώλεηαη έλα κήλπκα:
Ξαλακεηαθξάζηε θαη ηξέμηε ην πξόγξακκα ρσξίο λα δώζεηε όξηζκα, γηα λα δηαπηζηώζεηε όηη
ιεηηνπξγεί ζσζηά. Γξάςηε ην απνηέιεζκα.
if (args.length == 1)
{
System.out.print("You are ");
System.out.print(args[0]);
System.out.println(" years old.");
}
else if (args.length == 0)
{
System.out.println("You forgot to give your age.");
}
else
{
System.out.print(args[1]);
System.out.print(" is ");
System.out.print(args[0]);
System.out.println(" years old.");
}
Ξαλακεηαθξάζηε θαη ηξέμηε ην πξόγξακκα δίλνληαο δύν νξίζκαηα απηή ηε θνξά, ηελ ειηθία
θαη έλα όλνκα, θαη ζεκεηώζηε ην απνηέιεζκα. Βεβαησζείηε όηη ην πξόγξακκα εμαθνινπζεί λα
δνπιεύεη θαη όηαλ δώζνπκε έλα ή θαλέλα όξηζκα. Καηαγξάςηε ηα απνηειέζκαηα.
7) Μπνξείηε λα θάλεηε θάπνηα αιιαγή ζην ζώκα ηεο main ώζηε λα δίλνπκε πξώηα ην όλνκα θαη
κεηά ηελ ειηθία; Καηαγξάςηε ηελ αιιαγή.
Αληηθαηαζηήζηε θαη όζεο από ηηο ππόινηπεο εληνιέο εθηύπσζεο είλαη δπλαηόλ λα
αληηθαηαζηαζνύλ κε κηα εληνιή. Γξάςηε ην λέν πξόγξακκα. Ξαλακεηαθξάζηε ην θαη ηξέμηε ην.
Βεβαησζείηε όηη ηξέρεη όπσο θαη πξηλ γηα όιεο ηηο πεξηπηώζεηο. Σεκεηώζηε ηα απνηειέζκαηα.
ΕΡΓΑΣΗΡΙΟ JAVA
ΑΚΗΗ 2
Σθνπόο ηεο άζθεζεο απηήο είλαη:
a. λα δεκηνπξγήζεηε έλα λέν αξρείν Java, λα εηζάγεηε θάπνηνλ θώδηθα, λα ηνλ
κεηαγισηηίζεηε θαη λα δείηε ηα απνηειέζκαηα, κε ρξήζε ηνπ πεξηβάιινληνο BlueJ,
b. λα κειεηήζεηε ηε δεκηνπξγία ζηηγκηόηππσλ θαη ηελ θιήζε κεζόδσλ (απνζηνιή κελπκάησλ)
κέζσ απηώλ θαη
c. λα δηαπηζηώζεηε ην ξόιν ηεο ιέμεο-θιεηδί “this”.
1) Αλνίμηε ην εξγαιείν BlueJ, δεκηνπξγήζηε έλα λέν project (Project New Project) θαη ζώζηε ην
(όλνκα Askisi2), αθνύ επηιέμεηε ηνλ θαηάινγν απνζήθεπζεο ηνπ project. Σηελ νζόλε ζα
εκθαληζηεί έλα εηθνλίδην εγγξάθνπ πνπ παξηζηάλεη ην project πνπ κόιηο δεκηνπξγήζαηε.
Γεκηνπξγήζηε ηώξα κία λέα θιάζε ζην project, θάλνληαο θιηθ ζην θνπκπί “New Class”, θαη
νλνκάζηε ηε Window. Σηε ζπλέρεηα, θάλεηε δηπιό θιηθ πάλσ ζην εηθνλίδην ηεο θιάζεο (πνπ
ήδε έρεη εκθαληζηεί ζηελ νζόλε) νπόηε θαη εκθαλίδεηαη ν θώδηθαο ηεο θιάζεο. Απηόο είλαη
θώδηθαο πνπ δεκηνπξγείηαη απηόκαηα από ην BlueJ. Σβήζηε ό,ηη ππάξρεη θαη αληηθαηαζηήζηε ην
κε ηνλ παξαθάησ θώδηθα:
public Window ()
{
}
2) Σηε ζπλέρεηα πξέπεη λα ζώζεηε ηελ θιάζε Window. Οπόηε, ζην παξάζπξν ηεο Window
επηιέγνπκε «Class Save». To αξρείν ζώδεηαη ζαλ «Window.java». Μπνξείηε λα ην δείηε αλ
πάηε ζηνλ θαηάινγν πνπ δεκηνπξγήζαηε ην project. Τώξα κεηαθξάζηε ην αξρείν παηώληαο ηελ
επηινγή compile. Αλ όια γίλνπλ ζσζηά ζα εκθαληζηεί ην κήλπκα «Class compiled – no syntax
errors» ζην θάησ κέξνο ηεο νζόλεο. Τώξα έρεη παξαρζεί ην αξρείν «Window.class». Μπνξείηε
λα ην δείηε θαη απηό ζηνλ θαηάινγν ηνπ project.
3) Τώξα ζα δνθηκάζεηε λα ηξέμεηε ην πξόγξακκά ζαο. Κιείλεηε ην παξάζπξν ηεο θιάζεο Window
θαη πεγαίλεηε ζην παξάζπξν ηνπ project. Δθεί, θάλνληαο δεμί θιηθ ζηελ θιάζε Window,
επηιέγνπκε ην «void main(args)» νπόηε αλνίγεη έλα παξάζπξν, όπνπ ζαο δεηά λα δώζεηε
θάπνην όξηζκα ηύπνπ String. Με δώζεηε/γξάςεηε ηίπνηε, παηήζηε ΟΚ. Απνηππώζηε ηα
απνηειέζκαηα
4) Φξεζηκνπνηείζηε ηελ εληνιή “this.size = x;” αληί ηεο “size = x;” ζην δεύηεξν δεκηνπξγό,
μαλακεηαθξάζηε θαη ηξέμηε ην πξόγξακκα. Τη παξαηεξείηε ζε ζρέζε κε ηα πξνεγνύκελα
απνηειέζκαηα; Δμεγήζηε γηαηί ηα απνηειέζκαηα είλαη (ή δελ είλαη) δηαθνξεηηθά. (Έπαημε ξόιν
ε εηζαγσγή ηνπ „this‟;)
public Window ()
{
}
6) Αληηθαηαζηήζηε ηελ εληνιή “return size” κε ηελ εληνιή “return this.size” ζηε κέζνδν „getSize‟,
μαλακεηαθξάζηε θαη ηξέμηε ην πξόγξακκα. Τη παξαηεξείηε ζε ζρέζε κε ηα πξνεγνύκελα
απνηειέζκαηα; Δμεγήζεηε. (Τη ξόιν παίδεη ε εηζαγσγή ηνπ „this‟;)
ΕΡΓΑΣΗΡΙΟ JAVA
ΑΚΗΗ 3
1) Αλνίμηε ην εξγαιείν BlueJ, δεκηνπξγήζηε έλα λέν project (Project New Project) θαη ζώζηε ην
(όλνκα Askisi3), αθνύ επηιέμεηε ηνλ θαηάινγν απνζήθεπζεο ηνπ project. Σηελ νζόλε ζα
εκθαληζηεί έλα εηθνλίδην εγγξάθνπ πνπ παξηζηάλεη ην project πνπ κόιηο δεκηνπξγήζαηε.
(α) Γεκηνπξγήζηε ηώξα κία θιάζε ζην project θαη νλνκάζηε ηε Window. Σηε ζπλέρεηα
γξάςηε ζηελ θιάζε ηνλ παξαθάησ θώδηθα, ζώζηε ηε θαη κεηαθξάζηε ηε:
public Window()
{
size=1;
System.out.println("Window size="+size);
}
public Window(int size)
{
this.size=size;
System.out.println("Window size="+size);
}
(β) Γεκηνπξγήζηε ηώξα κία άιιε θιάζε ζην project θαη νλνκάζηε ηε ΜWindow. Σηε ζπλέρεηα
γξάςηε ζηελ θιάζε ηνλ παξαθάησ θώδηθα, ζώζηε ηε θαη κεηαθξάζηε ηε:
κεηαθξάζηε ηελ θιάζε θαη ηξέμηε ηε. Απνηππώζηε ηα απνηειέζκαηα θαη εμεγήζηε ηα.
(β) Σπκπιεξώζηε ηνλ παξαπάλσ θώδηθα κε ηηο παξαθάησ πξνηάζεηο ζην ηέινο ηεο main:
(γ) Σηε ζπλέρεηα πξνζζέζηε θαη ηνλ παξαθάησ θώδηθα ζην ηέινο ηεο main:
mw1.setSize1(4);
System.out.println(mw1.size);
mw1.setSize2(2);
System.out.println(mw1.size);
mw1.setSize(2);
System.out.println(mw1.size);
3) Παξεκβάιεηε ζηνλ θώδηθα ηεο θιάζεο MWindow, ακέζσο κεηά ηελ πξόηαζε «private String
message = "No message";», ηελ εμήο δήισζε:
4) Τώξα πξνζζέζηε πάιη ζην ηέινο ηεο main (θιάζε RunWindow) ηηο παξαθάησ πξνηάζεηο:
w1.printSize();
mw1.printSize();
mw1.printSize1();
mw1.printSize2();
5) Αιιάμηε ηηο κεζόδνπο printSize1() θαη printSize2() ηεο MWindow σο εμήο (γηα ηελ έλλνηα ησλ
λέσλ εθθξάζεσλ ζηα νξίζκαηα ησλ πξνηάζεσλ εθηύπσζεο αλαηξέμηε ζηηο ζειίδεο 193-194
ηνπ βηβιίνπ “Αληηθεηκελνζηξεθήο Πξνγξακκαηηζκόο - Java” ηνπ Κ. Θξακπνπιίδε):
6) Μπνξείηε λα πινπνηήζεηε ην παξαπάλσ πξόγξακκα ζε κηα θιάζε (αξρείν) αληί ζε ηξία, όπσο
ην θάλακε παξαπάλσ. Γηα λα ην θάλεηε απηό, δεκηνπξγήζηε έλα λέν project θαη ζώζηε ην
(όλνκα Askisi3a). Γεκηνπξγήζηε κηα θιάζε κε όλνκα RunWindow (δηόηη απηή πεξηέρεη ηε main
θαη επνκέλσο είλαη ε πξσηεύνπζα θιάζε). Αληηγξάςηε ηνπο θώδηθεο από ηηο ηξεηο
πξνεγνύκελεο θιάζεηο (αξρεία) ζ‟ απηήλ κε ηε ζεηξά (Window, MWindow, RunWindow).
Γηαγξάςηε ηνλ πξνζδηνξηζηή public από ηνπο νξηζκνύο ησλ Window θαη MWindow (πνπ δελ
ήηαλ απαξαίηεηνο θαη πξνεγνπκέλσο, ειιείςεη main), δηόηη κόλν κηα θιάζε (ε πξσηεύνπζα)
επηηξέπεηαη/πξέπεη λα είλαη public ζ‟ έλα αξρείν. Μεηαθξάζηε θαη ηξέμηε ηε θιάζε RunWindow.
Βεβαησζείηε όηη παξάγνληαη ηα ίδηα αθξηβώο απνηειέζκαηα. Μηα δηαθνξά κεηαμύ ησλ δύν
πινπνηήζεσλ είλαη όηη πιένλ ζηελ απεηθόληζε ηνπ project βιέπεηε κόλν κηα θιάζε θαη όρη ηξεηο
(κε ηηο ζπλδέζεηο ηνπο), όπσο πξηλ.
ΕΡΓΑΣΗΡΙΟ JAVA
ΑΚΗΗ 4
1) Αλνίμηε ην εξγαιείν BlueJ, δεκηνπξγήζηε έλα λέν project θαη ζώζηε ην (όλνκα Askisi4), αθνύ
επηιέμεηε ηνλ θαηάινγν απνζήθεπζεο ηνπ project.
(α) Γεκηνπξγήζηε θαη‟ αξρήλ κία θιάζε ζην project θαη νλνκάζηε ηε Person. Σηε ζπλέρεηα
γξάςηε ζηελ θιάζε ηνλ παξαθάησ θώδηθα, ζώζηε ηε θαη κεηαθξάζηε ηε:
public Person (String lastname, String firstname, int age, boolean married,
float salary) {
this.lastname = new String(lastname);
this.firstname = new String(firstname);
this.age = age;
this.married = married;
this.salary = salary;
}
(β) Γεκηνπξγήζηε κία δεύηεξε θιάζε ζην project θαη νλνκάζηε ηε MarriedPerson. Σηε
ζπλέρεηα γξάςηε ζηελ θιάζε ηνλ παξαθάησ θώδηθα, ζώζηε ηε θαη κεηαθξάζηε ηε:
(γ) Γεκηνπξγήζηε ηέινο ηελ θιάζε MyTester. Σηε ζπλέρεηα γξάςηε ζηελ θιάζε ηνλ
παξαθάησ θώδηθα, ζώζηε ηε θαη κεηαθξάζηε ηε:
abstract class MyTester {
public static void main(String[] args) {
Person p1 = new Person("Kings", "Paul", 22, true, 1200f);
MarriedPerson mp1 = new MarriedPerson("Tront", "Betty", 31,
980.5f, 3);
System.out.print(p1.getFirstName()+" "+p1.getLastName()+" is "
+p1.getAge()+" years old, gets a "+p1.getSalary()
+" Euros salary and is");
if (p1.isMarried() == false)
System.out.print(" not");
System.out.println(" married.");
System.out.print(mp1.getFirstName()+" "+mp1.getLastName()
+" is " +mp1.getAge()+ " years old, gets a " + mp1.getSalary()
+" Euros salary and is" + " married with ");
if (mp1.getNoOfChildren() > 0)
System.out.print(mp1.getNoOfChildren());
else System.out.print("no");
System.out.println(" children.");
}
}
2) Καηαζθεπάζηε κηα κέζνδν printInfo ζηελ θιάζε Person πνπ λα εθηππώλεη όιε ηελ πιεξνθνξία
πνπ δηαζέηνπκε (ην ζώκα ηεο ζα είλαη παξόκνην κε ηνλ θώδηθα ζηελ MyTester πνπ αθνξά ην
p1). Αληηθαηαζηήζηε ηώξα ηε main ηεο MyTester κε ηνλ αθόινπζν θώδηθα:
Τξέμηε ηώξα μαλά ηελ MyTester θαη ζπγθξίλεηε ηα απνηειέζκαηα κε απηά πνπ εθηππώζεθαλ
πξηλ. Τη παξαηεξείηε; Λείπεη θάηη;
3) Υπεξθαιύςηε ηε κέζνδν printInfo ηεο Person κέζα ζηελ MarriedPerson (δει. γξάςηε κηα λέα
κέζνδν κε ηελ ίδηα επηθεθαιίδα), ώζηε λα εθηππώλεη θαη ηελ πιεξνθνξία πνπ ιείπεη (αλ
ζέιεηε, εμεηάζηε ηελ πεξίπησζε λα θάλεηε ρξήζε ηνπ super, γηα λα κελ επαλαιακβάλεηε ίδην
θώδηθα). Τξέμηε θαη πάιη ηε MyTester θαη ζεκεηώζηε ηηο παξαηεξήζεηο ζαο (κήπσο μεράζαηε λα
ηελ μαλακεηαθξάζεηε;;;).
(β) Αιιάμηε θαηάιιεια ηνπο δεκηνπξγνύο ζηηο θιάζεηο Person θαη MarriedPerson έηζη, ώζηε
λα αξρηθνπνηείηαη θαη ε λέα κεηαβιεηή σο εμήο:
public Person (String lastname, String firstname, int age, boolean married,
float salary, int sex) {
this.lastname = new String(lastname);
this.firstname = new String(firstname);
this.age = age;
this.married = married;
this.salary = salary;
this.sex = sex;
}
(γ) Αληηθαηαζηήζηε ηώξα ην ζώκα ηεο main ζηε MyTester κε ηνλ αθόινπζν θώδηθα:
(ε) Τξνπνπνηήζηε θαηάιιεια ηηο κεζόδνπο printInfo θαη μαλαηξέμηε ηε MyTester. Σεκεηώζηε
θαη πάιη ηα απνηειέζκαηα.
5) (α) Καηαζθεπάζηε ζε θάζε θιάζε γηα θάζε κέζνδν get ή is κηα αληίζηνηρε κέζνδν set (γηα
αλάζεζε ηηκήο ζηελ αληίζηνηρε κεηαβιεηή). Έηζη, κπνξείηε πιένλ λα αιιάδεηε ηηο ηηκέο ησλ
ραξαθηεξηζηηθώλ ησλ ζηηγκηόηππσλ (κέζσ θιήζεο ησλ κεζόδσλ απηώλ).
(β) Αληηθαηαζηήζηε ην ζώκα ηεο main ζηε MyTester κε ηνλ αθόινπζν θώδηθα:
(γ) Πξνζνρή! Η κεηαβιεηή married γηα ζηηγκηόηππα ηεο θιάζεο MarriedPerson δελ πξέπεη λα
αιιάδεη! Υπεξθαιύςηε θαηάιιεια ηε κέζνδν setMarried ζηελ θιάζε MarriedPerson γηα λα κε
ζπκβαίλεη απηό. Τξέμηε πάιη ηε MyTester γηα λα δείηε αλ ην θαηαθέξαηε. Σεκεηώζηε ηη θάλαηε.
6) Πξνζζέζηε κία κέζνδν setSalary θαη ζηελ θιάζε MarriedPerson ε νπνία ζα παίξλεη ζαλ όξηζκα
κηα κεηαβιεηή spouse ηνπ ηύπνπ MarriedPerson θαη ζα θάλεη ηα εμήο:
(β) Αλ είλαη αληίζεην από ηε κεηαβιεηή sex, ηόηε ζηελ ηηκή ηεο κεηαβιεηήο salary ζα
πξνζηίζεηαη θαη ε αληίζηνηρε ηηκή ηνπ ζηηγκηόηππνπ spouse.
Η κέζνδνο setSalary πνπ γξάςαηε ηη ζρέζε έρεη κε ηελ κέζνδν setSalary ηεο θιάζεο Person;
Γηθαηνινγήζηε.
7) Μηα Λίστα (List) είλαη κηα δνκή δεδνκέλσλ ζηελ Java πνπ επηηξέπεη ηελ νκαδνπνίεζε
ζηηγκηνηύπσλ νπνηνπδήπνηε ηύπνπ. Μηα πινπνίεζε ιίζηαο είλαη ε θιάζε ArrayList, ηνπ
παθέηνπ java.util, ε νπνία παξέρεη κεηαμύ άιισλ ηηο κεζόδνπο add, remove θαη get γηα ηελ
πξνζζήθε, δηαγξαθή θαη αλάθηεζε αληίζηνηρα ζηνηρείσλ από ηε ιίζηα.
(α) Αξρηθά, δεκηνπξγήζηε έλαλ πίλαθα (array) κε όλνκα mpArray θαη πξνζζέζηε ζε απηόλ ηα
δύν πξώηα ζηνηρεία ηεο θιάζεο ΜarriedPerson πνπ δεκηνπξγήζαηε ζην πξνεγνύκελν εξώηεκα.
Μπνξείηε λα πξνζζέζεηε εθ ησλ πζηέξσλ θαη ην ηξίην ζηηγκηόηππν; Γηα πνην ιόγν;
Με ρξήζε βξόρνπ “for” πξνζπειάζηε ηα ζηνηρεία ηνπ πίλαθα θαη θαιέζηε ηελ printInfo() γηα
θάζε έλα από απηά.
(β) Γεκηνπξγήζηε ηώξα έλα ζηηγκηόηππν ηεο θιάζεο ArrayList κε όλνκα mpList.
Πξνζζέζηε ζηε ιίζηα πνπ κόιηο δεκηνπξγήζαηε ηα ηξία ζηηγκηόηππα ηεο θιάζεο ΜarriedPerson
πνπ δεκηνπξγήζαηε ζην πξνεγνύκελν εξώηεκα. Τη πιενλέθηεκα παξαηεξείηε ζε ζρέζε κε ηε
ρξήζε πίλαθα;
(γ) Φξεζηκνπνηώληαο βξόρν επαλάιεςεο while δηαπεξάζηε όια ηα ζηνηρεία ηεο mpList θαη γηα
θαζέλα θαιέζηε ηε κέζνδν printInfo(). Γηα λα ην πεηύρεηε απηό, δεκηνπξγήζηε έλα ζηηγκηόηππν
Iterator γηα ηε ιίζηα θαη ρξεζηκνπνηήζηε ηηο κεζόδνπο ηνπ, hasNext θαη next:
while(iter.hasNext()){
MarriedPerson mp = iter.next();
mp.printInfo();
}
Γηνξζώζηε ην ζθάικα νξίδνληαο ξεηά ηνλ ηύπν ηνπ αληηθεηκέλνπ mp (θάλνληαο δειαδή cast):
MarriedPerson mp = (MarriedPerson)iter.next();
(δ) Από ηε Java 5.0 θαη κεηά ην πξόβιεκα απηό ιύλεηαη κε ηε ρξήζε γενικεύσεων (generics).
Με ηηο γεληθεύζεηο, κπνξνύκε λα νξίζνπκε π.ρ. κηα Λίζηα, δίλνληαο ηνλ ηύπν ησλ
πεξηερνκέλσλ ηεο σο παξάκεηξν:
Γεκηνπξγήζηε ηελ mpList δίλνληαο ηνλ ηύπν σο παξάκεηξν. Δπηβεβαηώζηε όηη απηή ηε θνξά ην
cast δελ είλαη απαξαίηεην.
(ε) Γηαπεξάζηε ηα ζηνηρεία ηεο mpList ρσξίο ηε ρξήζε iterator, αιιά ρξεζηκνπνηώληαο ηελ
επαυξημένη μοπυή ηεο “for”:
1) Αλνίμηε ην εξγαιείν BlueJ, δεκηνπξγήζηε έλα λέν project θαη ζώζηε ην (όλνκα Askisi5), αθνύ
επηιέμεηε ηνλ θαηάινγν απνζήθεπζεο ηνπ project.
(α) Γεκηνπξγήζηε θαη‟ αξρήλ κία θιάζε ζην project θαη νλνκάζηε ηε IO_Tester. Σηε
ζπλέρεηα γξάςηε ζηελ θιάζε ηνλ παξαθάησ θώδηθα, ζώζηε ηε θαη κεηαθξάζηε ηε:
import java.io.*;
System.in.read(b);
str = (new String(b)).trim();
return Integer.parseInt(str);
}
}
(β) Η κεηάθξαζε έγηλε ζσζηά ή ν κεηαθξαζηήο έβγαιε θάπνην κήλπκα ιάζνπο; Σηε δεύηεξε
πεξίπησζε ζεκεηώζηε ην κήλπκα ηνπ κεηαθξαζηή.
(γ) Αληηθαηαζηήζηε, ηώξα, ηo ζώκα ηεο readInt κε ηνλ αθόινπζν θώδηθα, ζώζηε ηε θαη
κεηαθξάζηε ηε μαλά.
try {
System.in.read(b);
str = (new String(b)).trim();
return Integer.parseInt(str);
} catch (IOException e) {
System.out.println("Exception: " + e.toString());
return 0;
}
(δ) Πξνζζέζηε ηώξα ζηελ θιάζε ηηο αθόινπζεο κεζόδνπο, ζώζηε ηε θαη κεηαθξάζηε ηε.
try {
System.in.read(b);
str = (new String(b)).trim();
return Float.parseFloat(str);
} catch (IOException e) {
System.out.println("Exception: " + e.toString());
return 0;
}
}
try {
System.in.read(b);
str = (new String(b)).trim();
return str;
} catch (IOException e) {
System.out.println("Exception: " + e.toString());
return "";
}
}
try {
System.in.read(b);
str = (new String(b)).trim();
Boolean bool = new Boolean(str);
return bool.booleanValue();
} catch (IOException e) {
System.out.println("Exception: " + e.toString());
return false;
}
}
2) Καηαζθεπάζηε ηε κέζνδν main ζηελ θιάζε IO_Tester, ώζηε λα πεξηέρεη ην παξαθάησ ζώκα:
Τξέμηε ηώξα ηελ IO_Tester δύν θνξέο, δίλνληαο ηηο ηηκέο '3' θαη '2.2' ηελ πξώηε θαη 'zzz' θαη
'9' ηε δεύηεξε θαη ζεκεηώζηε ην απνηέιεζκα θάζε εθηέιεζεο.
3) Αληηθαηαζηήζηε ηελ readInt() κε ηελ παξαθάησ θαη κεηαθξάζηε ηελ θιάζε μαλά.
try {
System.in.read(b);
str = (new String(b)).trim();
return Integer.parseInt(str);
} catch (IOException e) {
System.out.println("Exception: " + e.toString());
return 0;
} catch (NumberFormatException e) {
System.out.println("Exception: " + e.toString() + "\nReturned
value: -1");
return -1;
}
}
Πξνζζέζηε ηνλ θαηάιιειν θώδηθα ζηε κέζνδν readFloat (παξόκνην κε απηόλ ηεο readInt)
έηζη, ώζηε λα αληηκεησπίδνληαη παξόκνηα πξνβιήκαηα εμαίξεζεο. Μεηαθξάζηε ην πξόγξακκα.
Τξέμηε ηε πάιη γηα ηηο ηηκέο 'zzz' θαη 'yyy' θαη ζεκεηώζηε ην απνηέιεζκα.
4) Αληηθαηαζηήζηε ην ζώκα ηεο main κε ηηο αθόινπζεο εληνιέο θαη κεηαθξάζηε ην πξόγξακκα.
Σεκεηώζηε απηό πνπ εθηππώλεηαη ζηελ νζόλε θάζε θνξά θαη δηθαηνινγήζηε ην.
5) Πξνζζέζηε ζην ηέινο ηεο main ηνλ αθόινπζν θώδηθα, ζώζηε ηελ θιάζε θαη κεηαθξάζηε ηε.
(α) Έγηλε ζσζηά ε κεηάθξαζε ή όρη. Αλ ν κεηαθξαζηήο έβγαιε θάπνην ιάζνο ζεκεηώζηε ην.
(β) Αληηθαηαζηήζηε ηνλ παξαπάλσ θώδηθα κε ηνλ αθόινπζν, ζώζηε ηελ θιάζε θαη κεηαθξάζηε
ηε πάιη.
try {
FileOutputStream fil = new FileOutputStream(s);
BufferedOutputStream buf = new BufferedOutputStream(fil);
DataOutputStream dat = new DataOutputStream(buf);
} catch (FileNotFoundException e) {}
(γ) Αληηθαηαζηήζηε πάιη ηνλ παξαπάλσ θώδηθα κε ηνλ παξαθάησ, ζώζηε ηελ θιάζε θαη
κεηαθξάζηε ηε.
try {
FileOutputStream fil = new FileOutputStream(s);
BufferedOutputStream buf = new BufferedOutputStream(fil);
DataOutputStream dat = new DataOutputStream(buf);
dat.writeInt(i);
dat.writeFloat(f);
dat.writeBoolean(b);
dat.close();
} catch (FileNotFoundException e) {}
(δ) Πξνζζέζηε ηελ αθόινπζε εληνιή ζην ηέινο ηεο main, ζώζηε ηελ θιάζε θαη κεηαθξάζηε
ηε.
catch (IOException e) {}
(ε) Κνηηάμηε ζηνλ θαηάινγν ηνπ project γηα ην αξρείν test.log. Αλ ππάξρεη, αλνίμηε ην θαη
θαηαγξάςηε ηα πεξηερόκελά ηνπ. Τη παξαηεξείηε; Μπνξείηε λα βγάιεηε θάπνην λόεκα;
Σρνιηάζηε.
6) (α) Πξνζζέζηε ηνλ παξαθάησ θώδηθα ζην ηέινο ηεο main, ζώζηε ηελ IO_Tester θαη
κεηαθξάζηε ηε.
try {
FileInputStream fil = new FileInputStream(s);
BufferedInputStream buf = new BufferedInputStream(fil);
DataInputStream dat = new DataInputStream(buf);
i+=dat.readInt();
f*=dat.readFloat();
b=!dat.readBoolean();
dat.close();
} catch (FileNotFoundException e) {}
catch (IOException e) {}
System.out.println("i="+i+"\tf="+f+"\ts="+s+"\tb="+b);
(β) Τξέμηε πάιη ην πξόγξακκα, γηα ηα ίδηα κε πξηλ δεδνκέλα, θαη ζεκεηώζηε ηα θαηλνύξηα
απνηειέζκαηα. Σρνιηάζηε. Τη θάλεη ν θώδηθαο πνπ πξνζηέζεθε;
(γ) Πξνζζέζηε ηνλ αθόινπζν θώδηθα ζηελ main, ζώζηε θαη κεηαθξάζηε ηελ θιάζε.
Βεβαησζείηε όηη ε κεηάθξαζε έγηλε ζσζηά.
try {
FileWriter fw = new FileWriter(s);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(Integer.toString(i), 0, Integer.toString(i).length());
bw.write(Float.toString(f), 0, Float.toString(f).length());
bw.write(s.concat(s), 0, s.concat(s).length());
bw.write(Boolean.toString(b), 0, Boolean.toString(b).length());
bw.close();
} catch(IOException e) { System.out.println(e.toString()); }
(δ) Αλνίμηε ην αξρείν test.log θαη θαηαγξάςηε ηα πεξηερόκελά ηνπ, αθνύ ην ηξέμεηε πάιη γηα
ηα ίδηα δεδνκέλα. Τη θάλεη ν παξαπάλσ θώδηθαο; Σρνιηάζηε.
ΕΡΓΑΣΤΗΡΙΟ JAVA
ΑΣΚΗΣΗ 6
Σθνπόο ηεο άζθεζεο απηήο είλαη λα εμνηθεησζείηε κε ηηο εμαηξέζεηο ζηελ Java.
1) Αλνίμηε ην εξγαιείν BlueJ, δεκηνπξγήζηε έλα λέν project θαη ζώζηε ην (όλνκα Askisi6), αθνύ
επηιέμεηε ηνλ θαηάινγν απνζήθεπζεο ηνπ project.
(α) Γεκηνπξγήζηε θαη‟ αξρήλ κία θιάζε ζην project θαη νλνκάζηε ηε Exception_Tester. Σηε
ζπλέρεηα γξάςηε ζηελ θιάζε ηνλ παξαθάησ θώδηθα, ζώζηε ηε θαη κεηαθξάζηε ηε:
(γ) Αξρηθνπνηήζηε ηώξα ηε x2 κε ηελ ηηκή 0, κεηαθξάζηε θαη εθηειέζηε πάιη ην πξόγξακκα. Τη
απνηειέζκαηα βγάδεη; Τη παξαηεξείηε;
2) Αληηθαηαζηήζηε ηε γξακκή:
System.out.println("Div: "+(a/b));
try {
System.out.println("Div: "+(a/b));
}
catch (ArithmeticException ae) {
System.out.println(ae.toString());
}
5) (α) Αληηθαηαζηήζηε ηνλ θώδηθα ηεο main κε ηνλ αθόινπζν θώδηθα, ζώζηε ηελ θιάζε θαη
κεηαθξάζηε ηε.
try {
et.printResults(x1, x2);
}
catch (ArithmeticException ae) {
System.out.println(ae.toString());
}
finally {
System.out.println("The numbers are: "+x1+" "+x2);
}
}
(β) Αξρηθνπνηήζηε ηελ x2 κε ηελ ηηκή 2 θαη πάιη. Μεηαθξάζηε ηελ θιάζε, ηξέμηε ηε θαη
ζεκεηώζηε ηα λέα απνηειέζκαηα.
(γ) Σεκεηώζηε ηελ παξαηήξεζή ζαο ζρεηηθά κε ηα απνηειέζκαηα ζην (α) θαη ζην (β) θαη ηελ
παξνπζία ηεο πξόηαζεο finally.
System.out.println(ae.toString());
ae.printStackTrace();
7) Γεκηνπξγήζηε κία λέα θιάζε DivideByZeroException, κε ηνλ παξαθάησ θώδηθα, ζώζηε ηε θαη
κεηαθξάζηε ηε.
public DivideByZeroException() {}
public DivideByZeroException(String msg) {super(msg);}
}
Σώζηε ηηο θιάζεηο, κεηαθξάζηε ηηο, ηξέμηε ην πξόγξακκα θαη ζεκεηώζηε ηα απνηειέζκαηα.
(γ) Αιιάμηε ηώξα ηελ ηηκή ηεο x2 από 2 ζε 0 θαη πάιη. Σώζηε ην πξόγξακκα, κεηαθξάζηε ην
θαη ηξέμηε ην. Τη ζπκβαίλεη; Σρνιηάζηε.
Σθνπόο ηεο άζθεζεο απηήο είλαη λα εμνηθεησζείηε κε ην γξαθηθό πεξηβάιινλ ηεο Java.
1) Αλνίμηε ην εξγαιείν BlueJ, δεκηνπξγήζηε έλα λέν project θαη ζώζηε ην (όλνκα Askisi7), αθνύ
επηιέμεηε ηνλ θαηάινγν απνζήθεπζεο ηνπ project.
Γεκηνπξγήζηε κία θιάζε MyAppBord, εηζάγεηε ηνλ αθόινπζν θώδηθα, ζώζηε ηε θαη
κεηαθξάζηε ηε.
import java.awt.*;
import java.awt.event.*;
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
System.exit(0);
}
});
}
(β) Βγάιηε ηα ζρόιηα από ηελ main θαη ηξέμηε μαλά. Σεκεηώζηε ην απνηέιεζκα.
2) Γεκηνπξγήζηε κία θιάζε MyAppButton, εηζάγεηε ηνλ αθόινπζν θώδηθα, ζώζηε ηε θαη
κεηαθξάζηε ηε. Πξνζνρή: ζα πξέπεη λα δεκηνπξγήζεηε έλα αξρείν κε ην όλνκα icon_01.jpg
ζην θάθειν πνπ βξίζθεηαη θαη ην αξρείν ηεο θιάζεο.
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
System.exit(0);
}
});
}
(β) Βγάιηε ηα ζρόιηα από ηε main, ηξέμηε μαλά θαη δνθηκάζηε λα θάλεηε resize ην παξάζπξν.
Σεκεηώζηε ην απνηέιεζκα.
3) Γεκηνπξγήζηε κία θιάζε MyAppCheck, εηζάγεηε ηνλ αθόινπζν θώδηθα, ζώζηε ηε θαη
κεηαθξάζηε ηε.
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
add(cboxes);
add(cboxgrp);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
System.exit(0);
}
});
}
Τξέμηε ηε θαη ζεκεηώζηε ην απνηέιεζκα. Τη παξαηεξείηε γηα ηα δύν panels; (ηόζν από ζέκα
ζηηγκηόηππνπ όζν θαη εκθάληζεο)
4) Γεκηνπξγήζηε κία θιάζε MyAppListLabel, εηζάγεηε ηνλ αθόινπζν θώδηθα, ζώζηε ηε θαη
κεηαθξάζηε ηε.
import java.awt.*;
import java.awt.event.*;
5) Γεκηνπξγήζηε κία θιάζε MyAppText, εηζάγεηε ηνλ αθόινπζν θώδηθα, ζώζηε ηε θαη
κεηαθξάζηε ηε.
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
MyUpPanel.add(appName);
MyUpPanel.add(app);
MyUpPanel.add(userName);
MyUpPanel.add(user);
MyUpPanel.add(passWord1);
MyUpPanel.add(pwd1);
MyUpPanel.add(passWord2);
MyUpPanel.add(pwd2);
MyDownPanel.add(comments1);
MyDownPanel.add(area1);
MyDownPanel.add(comments2);
MyDownPanel.add(pane);
add("North", MyUpPanel);
add("South", MyDownPanel);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
System.exit(0);
}
});
}
6) Γεκηνπξγήζηε κία θιάζε PLAFDemo, εηζάγεηε ηνλ αθόινπζν θώδηθα, ζώζηε ηε θαη
κεηαθξάζηε ηε.
import javax.swing.*;
import java.awt.*;
int choice = 0;
if(args.length > 0)
choice = Integer.parseInt(args[0]);
switch(choice)
{
case 1: laf = "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
break;
case 2: laf = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
break;
case 3: laf = "com.sun.java.swing.plaf.mac.MacLookAndFeel";
break;
default: laf = "javax.swing.plaf.metal.MetalLookAndFeel";
}
try
{
System.out.println("Setting the look and feel");
UIManager.setLookAndFeel(laf);
}catch(Exception e)
{
System.out.println("Could not set look and feel");
e.printStackTrace();
}
Τξέμηε ηε 3 θνξέο πεξλώληαο σο παξάκεηξν «1», «2», ή «3» θαζώο θαη κηα θνξά ρσξίο
παξακέηξνπο. Σεκεηώζηε ηα απνηειέζκαηα.
7) Γεκηνπξγήζηε κία θιάζε CardWindow, εηζάγεηε ηνλ αθόινπζν θώδηθα, ζώζηε ηε θαη
κεηαθξάζηε ηε.
import java.awt.*;
import java.awt.event.*;
Panel cards;
Choice c = new Choice();
final static String BUTTONPANEL = "Panel with Buttons";
final static String TEXTPANEL = "Panel with TextField";
public CardWindow() {
setLayout(new BorderLayout());
setFont(new Font("Helvetica", Font.PLAIN, 14));
cp.add(c);
add("North", cp);
cards.add(BUTTONPANEL, p1);
cards.add(TEXTPANEL, p2);
add("Center", cards);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
System.exit(0);
}
});
}
((CardLayout)cards.getLayout()).show(cards,(String)c.getSelectedItem());
// }
}
(β) Δπηρεηξήζηε λα αιιάμεηε ηελ ηηκή ζηε ιίζηα επηινγήο. Σεκεηώζηε ηη παξαηεξείηε.
(Σημ.: Απηή ε κέζνδνο ρξεζηκνπνηείηαη γηα λα πινπνηήζνπκε menu Tags, όπνπ νη νζόλεο
επηθαιύπηνληαη).
8) Γεκηνπξγήζηε κία θιάζε MenuDemo, εηζάγεηε ηνλ αθόινπζν θώδηθα, ζώζηε ηε θαη
κεηαθξάζηε ηε.
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
createMenu(changer);
}
menuBar.add(fileMenu);
menuBar.add(colorMenu);
menuBar.add(helpMenu);
//add one menu item and one menu to the "Help" menu
JMenuItem about = new JMenuItem("About MenuDemo...");
helpMenu.add(about);
JMenu cascade = new JMenu("Tip of the day");
helpMenu.add(cascade);
JCheckBoxMenuItem show = new JCheckBoxMenuItem("Show");
cascade.add(show);
}
Γεκηνπξγήζηε κία θιάζε MenuColorChanger, εηζάγεηε ηνλ αθόινπζν θώδηθα, ζώζηε ηε θαη
κεηαθξάζηε ηε.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
(β) Αιιειεπηδξάζηε κε ηα menu θαη ηα buttons θαη πεξηγξάςηε ηε ιεηηνπξγία ηεο εθαξκνγήο.
9) Γεκηνπξγήζηε κία θιάζε MyAppEv, εηζάγεηε ηνλ αθόινπζν θώδηθα, ζώζηε ηε θαη κεηαθξάζηε
ηε.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
b1.addActionListener(this);
b2.addActionListener(this);
try {
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
} catch (Exception e) {
System.err.println("Can't set look and feel: " + e);
}
MyAppEv app = new MyAppEv("Real Madrid " + g + ":" + h + " Barcelona");
app.setVisible(true);
}
}
10) Γεκηνπξγήζηε κία θιάζε MyAppDialog, εηζάγεηε ηνλ αθόινπζν θώδηθα, ζώζηε ηε θαη
κεηαθξάζηε ηε.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
setContentPane(myPanel);
}
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
System.err.println("Can't set look and feel: " + e);
}
MyAppDialog app = new MyAppDialog("Application Window");
(δ) Τξέμηε πάιη ηελ εθαξκνγή θαη απηή ηε θνξά παηήζηε no. Σεκεηώζηε πάιη ην απνηέιεζκα.
ΕΡΓΑΣΗΡΙΟ JAVA
ΑΚΗΗ 8
Σθνπόο ηεο άζθεζεο απηήο είλαη λα εμνηθεησζείηε κε ηηο κηθξνεθαξκνγέο ζηελ Java.
1) Αλνίμηε ην εξγαιείν BlueJ, δεκηνπξγήζηε έλα λέν project θαη ζώζηε ην (όλνκα Askisi8), αθνύ
επηιέμεηε ηνλ θαηάινγν απνζήθεπζεο ηνπ project.
(α) Γεκηνπξγήζηε θαη‟ αξρήλ κία θιάζε ζην project θαη νλνκάζηε ηε MyApplet. Σηε ζπλέρεηα
γξάςηε ζηελ θιάζε ηνλ παξαθάησ θώδηθα, ζώζηε ηε θαη κεηαθξάζηε ηε:
import java.awt.Graphics;
(β) Τξέμηε ηε ζηνλ AppletViewer κε ύςνο θαη πιάηνο 600 pixels θαη ζεκεηώζηε ην απνηέιεζκα.
import java.awt.Graphics;
import java.awt.Font;
import java.awt.Color;
int fsize, x, y, r, g, b;
String font;
Font f;
Color c;
3) Πξνζζέζηε ηελ επόκελε κέζνδν ζηελ θιάζε, ζώζηε ηε θαη κεηαθξάζηε ηε.
4) Πξνζζέζηε θαη ηελ επόκελε κέζνδν ζηελ θιάζε, ζώζηε ηε θαη κεηαθξάζηε ηε.
import java.awt.Graphics;
import java.awt.*;
import java.awt.Color;
int fsize, x, y, r, g, b;
String font;
Font f;
Color c;
Font[] fonts;
public void init() {
x = 20;
y = 30;
font = getParameter("font_name");
if (font == null) font = "SansSerif";
fsize = 18;
f = new Font(font, Font.PLAIN, fsize);
c = Color.red;
}
GraphicsEnvironment env =
GraphicsEnvironment.getLocalGraphicsEnvironment();
Font[] allfonts = env.getAllFonts();
(α) Δθηειέζηε ηώξα ηε κηθξνεθαξκνγή θαη πξνζζέζηε κηα παξάκεηξν κε όλνκα font_name θαη
ηηκή ην όλνκα κηαο γξακκαηνζεηξάο, π.ρ. Serif, Monospaced.
(β) Κιείζηε ηελ εθαξκνγή θαη εθηειέζηε ηε πάιη, αιιά απηή ηε θνξά αιιάμηε ην όλνκα ηεο
παξακέηξνπ από font_name ζε fontname. Τη ζπλέβε ηώξα;
6) Αληηθαηαζηήζηε όιε ηελ θιάζε κε ηνλ αθόινπζν θώδηθα, ζώζηε ηελ θαη κεηαθξάζηε ηε.
import java.awt.Graphics;
import java.awt.Font;
import java.awt.Color;
int fsize, x, y, r, g, b;
String font;
Font f;
Color c;
(β) Αληηθαηαζηήζηε ηηο 2 ηειεπηαίεο εληνιέο ηεο paint κε ηηο αθόινπζεο, ζώζηε ηελ θιάζε θαη
κεηαθξάζηε ηε.
(γ) Πξνζζέζηε ζηνλ θώδηθα ηεο paint ηνλ αθόινπζν θώδηθα, ζώζηε ηελ θιάζε θαη
κεηαθξάζηε ηε.
(δ) Πξνζζέζηε επηπιένλ ηνλ αθόινπζν θώδηθα ζηελ paint, ζώζηε ηελ θιάζε θαη κεηαθξάζηε
ηε.
7) Αληηθαηαζηήζηε ηελ ηειεπηαία εληνιή ηεο paint κε ηνλ αθόινπζν θώδηθα. Σώζηε ηελ θιάζε θαη
κεηαθξάζηε ηε.
g.setColor(c);
g.drawPolygon(poly);
g.copyArea(0, 0, 120, 220, 150, 250);
g.clearRect(0, 0, 120, 220);
(α) Τξέμηε ηε κηθξνεθαξκνγή θαη ζεκεηώζηε ην απνηέιεζκα.
(β) Σηακαηήζηε θαη εθθηλήζηε ηελ κηθξνεθαξκνγή 3-4 θνξέο. Σεκεηώζηε ηηο παξαηεξήζεηο
ζαο.
(γ) Πξνζζέζηε ηελ επόκελε εληνιή ζην ηέινο ηεο paint, ζώζηε ηελ θιάζε θαη κεηαθξάζηε ηε.
setBackground(c2);
(δ) Αιιάμηε ηηο ηηκέο 150 θαη 250 ζηε κέζνδν copyArea ζε 50 θαη 100. Σώζηε ηελ θιάζε,
κεηαθξάζηε ηε θαη ηξέμηε πάιη ηε κηθξνεθαξκνγή. Τη παξαηεξείηε;
(ε) Σηακαηήζηε θαη εθθηλήζηε ηε κηθξνεθαξκνγή 3-4 θνξέο. Σεκεηώζηε ηηο παξαηεξήζεηο ζαο.
ΕΡΓΑΣΗΡΙΟ JAVA
ΑΚΗΗ 9
Σθνπόο ηεο άζθεζεο απηήο είλαη λα εμνηθεησζείηε κε ηα παθέηα θαη ηηο δηαζπλδέζεηο ζηε Java.
1) Αλνίμηε ην εξγαιείν BlueJ, δεκηνπξγήζηε έλα λέν project θαη ζώζηε ην (όλνκα Askisi9), αθνύ
επηιέμεηε ηνλ θαηάινγν απνζήθεπζεο ηνπ project.
Σην BlueJ επηιέμηε Edit New Package… θαη δεκηνπξγήζηε έλα παθέην κε ην όλνκα javalab.
Πεγαίλεηε ζηνλ θαηάινγν ηνπ project θαη ειέγμηε αλ δεκηνπξγήζεθε έλαο θαηάινγνο javalab.
Σην BlueJ επηιέμηε ηνλ θαηάινγν ηνπ παθέηνπ (κε δηπιό θιηθ) θαη εθεί δεκηνπξγήζηε κία θιάζε
Vector ε νπνία ζα πεξηέρεη ηνλ παξαθάησ θώδηθα:
package javalab;
import java.awt.*;
public Vector(Vector v) {
end = v.getEnd();
}
import java.util.*;
import javalab.*;
(β) Αληηθαηαζηήζηε ηνλ θώδηθα ηεο RunMe κε ηνλ αθόινπζν, ζώζηε ηε θαη κεηαθξάζηε ηε.
import javalab.*;
3) Αληηθαηαζηήζηε ηνλ θώδηθα ηεο RunMe κε ηνλ αθόινπζν, ζώζηε ηε θαη κεηαθξάζηε ηε.
import java.awt.*;
import javalab.*;
4) Πεγαίλεηε ηώξα ζηνλ root θαηάινγν ηνπ project θαη δεκηνπξγήζηε έλα λέν παθέην κε όλνκα
my_interfaces. Πεγαίλεηε ζε απηόλ ηνλ θαηάινγν πνπ κόιηο δεκηνπξγήζαηε θαη θηηάμηε έλα
λέν interface (New Class Interface) κε όλνκα Operations. Ο θώδηθαο ηεο δηαζύλδεζεο ζα
είλαη ν αθόινπζνο:
package my_interfaces;
public interface Operations {
public abstract void add(Operations ο);
public abstract void sub(Operations ο);
public abstract int dotProduct(Operations ο);
public abstract int crossProduct(Operations ο);
}
import my_interfaces.*;
1) Αλνίμηε ην εξγαιείν BlueJ, δεκηνπξγήζηε έλα λέν project θαη ζώζηε ην (όλνκα Askisi10), αθνύ
επηιέμεηε ηνλ θαηάινγν απνζήθεπζεο ηνπ project.
(α) Γεκηνπξγήζηε κία λέα Applet θιάζε κε όλνκα MyClock κε ηνλ παξαθάησ θώδηθα:
import javax.swing.JApplet;
import java.awt.*;
import java.util.Date;
2) (α) Αιιάμηε ηνλ θώδηθα ηεο MyClock κε ηνλ παξαθάησ, ζώζηε ηελ θιάζε θαη κεηαθξάζηε ηε.
import javax.swing.JApplet;
import java.awt.*;
import java.util.*;
import java.text.DateFormat;
(β) Τξέμηε πάιη ην Applet θαη πείηε πνηα ε δηαθνξά πνπ παξαηεξείηε.
(δ) Αληηθαηαζηήζηε ην ζώκα ηεο main κε ηνλ αθόινπζν θώδηθα, ζώζηε θαη κεηαθξάζηε ηελ
θιάζε.
4) (α) Φηηάμηε κία λέα θιάζε Locker κε ηνλ παξαθάησ θώδηθα ζώζηε ηε θαη κεηαθξάζηε ηε:
(β) Φηηάμηε κία λέα θιάζε Storer πνπ λα πεξηέρεη ηνλ παξαθάησ θώδηθα, ζώζηε ηε θαη
κεηαθξάζηε ηε.
(γ) Γεκηνπξγήζηε θαη κία άιιε θιάζε Remover κε ηνλ αθόινπζν θώδηθα θαη ζώζηε θαη
κεηαθξάζηε ηελ θιάζε.
(δ) Γεκηνπξγήζηε κία θιάζε LockerStory κε ηνλ αθόινπζν θώδηθα, ζώζηε ηε θαη κεηαθξάζηε
ηε.
s.start();
r.start();
}
}
(ζη) Σεκεηώζηε, κε βάζε ηα απνηειέζκαηα πνπ πήξαηε, ηνλ ηξόπν κε ηνλ νπνίν ν Storer
απνζεθεύεη θάηη ζηνλ Locker θαη ν Remover ην παίξλεη από απηόλ. Θα είλαη ν ίδηνο θαη ηελ
επόκελε θνξά ή είλαη θαηά θάπνην ηξόπν ηπραίνο;
5) (α) Αιιάμηε ηνλ θώδηθα ηεο θιάζεο Locker κε ηνλ αθόινπζν, ζώζηε ηε θαη κεηαθξάζηε ηε.
System.out.println("GET "+thing);
notifyAll();
return thing;
}
(γ) Τη παξαηεξείηε ηώξα ζε ζρέζε κε ηνλ ηξόπν πνπ ν Storer ηνπνζεηεί θαη ν Remover παίξλεη
αληηθείκελα; Σρνιηάζηε…
(δ) Αιιάμηε ηνλ θώδηθα ηεο κεζόδνπ main ηεο θιάζεο LockerStory κε ηνλ αθόινπζν, ζώζηε
ηελ θιάζε θαη κεηαθξάζηε ηε:
s1.start();
r1.start();
s2.start();
r2.start();
(ε) Αιιάμηε θαη πάιη ηνλ θώδηθα ηεο κεζόδνπ main ηεο θιάζεο LockerStory κε ηνλ αθόινπζν,
ζώζηε ηελ θιάζε θαη κεηαθξάζηε ηε:
s1.start();
r1.start();
s2.start();
r2.start();
ημείωμα Αναθοράς
ημείωμα Αδειοδόηηζης
Το παρόν υλικό διατίκεται με τουσ όρουσ τθσ άδειασ χριςθσ CreativeCommons Αναφορά, Μθ Εμπορικι
Χριςθ Παρόμοια Διανομι 4.0 *1+ ι μεταγενζςτερθ, Διεκνισ Ζκδοςθ. Εξαιροφνται τα αυτοτελι ζργα τρίτων
π.χ. φωτογραφίεσ, διαγράμματα κ.λ.π., τα οποία εμπεριζχονται ςε αυτό και τα οποία αναφζρονται μαηί με
τουσ όρουσ χριςθσ τουσ ςτο «Σθμείωμα Χριςθσ Ζργων Τρίτων».
[1] http://creativecommons.org/licenses/by-nc-sa/4.0/
που δεν περιλαμβάνει άμεςο ι ζμμεςο οικονομικό όφελοσ από τθν χριςθ του ζργου, για το
διανομζα του ζργου και αδειοδόχο
που δεν περιλαμβάνει οικονομικι ςυναλλαγι ωσ προχπόκεςθ για τθ χριςθ ι πρόςβαςθ ςτο ζργο
που δεν προςπορίηει ςτο διανομζα του ζργου και αδειοδόχο ζμμεςο οικονομικό όφελοσ (π.χ.
διαφθμίςεισ) από τθν προβολι του ζργου ςε διαδικτυακό τόπο
Ο δικαιοφχοσ μπορεί να παρζχει ςτον αδειοδόχο ξεχωριςτι άδεια να χρθςιμοποιεί το ζργο για εμπορικι
χριςθ, εφόςον αυτό του ηθτθκεί.
Διαηήρηζη ημειωμάηων
Εικόνεσ/Σχιματα/Διαγράμματα/Φωτογραφίεσ
Πίνακεσ
Χρημαηοδόηηζη
• Το παρόν εκπαιδεσηικό σλικό έτει αναπηστθεί ζηo πλαίζιo ηοσ εκπαιδεσηικού έργοσ ηοσ
διδάζκονηα.
• Το έργο σλοποιείηαι ζηο πλαίζιο ηοσ Δπιτειρηζιακού Προγράμμαηος «Δκπαίδεσζη και Για
Βίοσ Μάθηζη» και ζσγτρημαηοδοηείηαι από ηην Δσρωπαϊκή Ένωζη (Δσρωπαϊκό Κοινωνικό
Ταμείο) και από εθνικούς πόροσς.