Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 25

Εισαγωγή στον Προγ/μό Η/Υ

Ενότητα 2
Περιεχόμενα
• Το 1ο μας πρόγραμμα σε JAVA
• Μεταγλώττιση, εκτέλεση
• Τάξεις και ιεραρχίες
• Παραδείγματα προγραμμάτων
1ο πρόγραμμα JAVA
import acm.program.*;

public class test extends Program {


public void run() {
println(”Hello world!!!”);
}
}
1ο πρόγραμμα JAVA
import acm.program.*; οδηγία προς μεταγλωττιστή

public class test extends Program {


public void run() { ορισμός τάξης
println(”Hello world!!!”);
}
}
1ο πρόγραμμα JAVA
import acm.program.*; οδηγία προς μεταγλωττιστή

public class test extends Program {


public void run() { ορισμός τάξης
println(”Hello world!!!”);
} ορισμός συνάρτησης
}
1ο πρόγραμμα JAVA
import acm.program.*; οδηγία προς μεταγλωττιστή

public class test extends Program {


public void run() { ορισμός τάξης
println(”Hello world!!!”);
} ορισμός συνάρτησης
(πάντα μέσα σε τάξη)
}
εντολή
(πάντα μέσα
σε συνάρτηση)
Προγράμματα JAVA
Τί περιέχει ένα αρχείο κώδικα Java;

1. Οδηγίες προς μεταγλωττιστή


2. Ορισμούς τάξεων
1. Ορισμούς συναρτήσεων
1. εντολές ή δηλώσεις μεταβλητών
2. Δηλώσεις μεταβλητών
Βήμα 1 από 2: Μεταγλώττιση
test.java
test.class
import acm.program.*; javac 01110001110
10001010111
public class test extends Program { 00011101010
public void run() { JAVA 00111100001
println(“Hello world!!!”); 00010100111
} Compiler 00101010111
} 00000000011

acm.jar

• Windows:
00111100001
00010100111
00101010111

javac –classpath acm.jar test.java00000000011

• Unix:
javac –classpath ’acm.jar’ test.java
Βήμα 2 από 2: Εκτέλεση
test.class
01110001110 Hello world!!!
10001010111
java
00011101010
00111100001
00010100111 JVM
00101010111
00000000011

acm.jar
00111100001
00010100111
• Περιβάλλον Windows: 00101010111
00000000011

java –classpath .;acm.jar test


• Unix:
java –classpath ’.:acm.jar’ test
The Add2Integers Program
class Add2Integers extends ConsoleProgram {
public void run() {
println("This program adds two numbers.");
int n1 = readInt("Enter n1: ");
int n2 = readInt("Enter n2: ");
int total = n1 + n2;
println("The total is " + total + ".");
}
} n1 n2 total
17
17 25
25 42
42

Add2Integers

This program adds two numbers.


Enter n1: 17
Enter n2: 25
The total is 42.
Τρόποι και πρότυπα προγραμματισμού
 Οι καλοί προγραμματιστές μπορούν να αναγνωρίσουν μια
ποικιλία συχνών προβλημάτων και έχουν μάθει μια
καθιερωμένη λύση για κάθε ένα. Ο κώδικας που υλοποιεί
κάτι τέτοιο ονομάζεται προγραμματιστικό ιδίωμα ή
προγραμματιστικό πρότυπο. Μαθαίνοντας τα
χρησιμοποιείτε σας απαλλάσσει από το να σκέφτεστε μικρο-
λεπτομέρειες.
 Ως παράδειγμα, είναι σημαντικό να βλέπετε την δήλωση
int n1 = readInt("Enter n1: ");
όχι από την μεριά του τι σημαίνει κάθε μέρος της, αλλά ως
ένα ολιστικό πρότυπο λήψης ενός ακέραιου από το
χρήστη::
int variable = readInt("prompt");
Τάξεις και αντικείμενα
 Τα προγράμματα Java γράφονται ως συλλογές τάξεων, οι
οποίες χρησιμεύουν ως πρότυπα για επιμέρους
αντικειμένα. Κάθε αντικείμενο είναι ένα στιγμιότυπο μιας
συγκεκριμένης τάξης.
 Οι τάξεις (class) στην Java μετέχουν σε ιεραρχίες. Εκτός από
την τάξη Object, που βρίσκεται στην κορυφή της ιεραρχίας,
κάθε τάξη στη Java είναι μια υποτάξη κάποιας άλλης τάξης,
η οποία ονομάζεται υπερτάξη. Μια τάξη μπορεί να έχει
πολλές υποτάξεις, αλλά μόνο μία υπερτάξη.
 Κάθε τάξη αποτελεί εξειδίκευση της υπερταξης της. Αν έχετε
δημιουργήσει ένα αντικείμενο που είναι ένα στιγμιότυπο
μιας τάξης, αυτό το αντικείμενο είναι επίσης στιγμιότυπο
όλων των άλλων τάξεων στην ιεραρχία πάνω από αυτή.
 Όταν ορίζετε μια νέα τάξη στην Java αυτή κληρονομεί
αυτόματα τη συμπεριφορά των υπερτάξεων της.
Βιολογικά μοντέλα ταξονομίας
Η δομή της ιεραρχίας των κλάσεων της Java
μοιάζει με το βιολογικό σύστημα
ταξινόμησης που εισήγαγε ο Σκανδιναβος
βοτανολόγος Carl Linnaeus τον 18ο αιώνα.
Η συνεισφορά του Linnaeus ήταν να
αναγνωρίσει ότι οι οργανισμοί εντάσσονται
σε ένα ιεραρχικό σύστημα ταξινόμησης στο
οποίο η τοποθέτηση των μεμονωμένων
ειδών αντανακλά ανατομικές ομοιότητες.

Carl Linnaeus (1707–1778)


Ιεραρχία βιολογιών τάξεων
Living Things

Kingdom Plants Animals Fungi

Phylum Annelida Brachiopoda Arthropoda Mollusca Chordata

Order Crustacea Insecta Arachnida

Class Hymenoptera

Ταξινόμηση του κόκκινου


Family μυρμηγκιού Iridomyrmex Formicidae Σημειώστε
Κάθε ότι υπάρχουν
κόκκινο μυρμήγκι πολλά
είναι
purpureus κόκκινα μυρμήγκια, καθένα
επίσης ζώο, αρθρόποδο, έντομο,από
τα οποία
και όλα ταείναι
άλλαστιγμιότυπο της
στην αλυσίδα
Genus Iridomyrmex ίδιας βασικής κατηγορίας.
υπερκλάσεων

Species purpureus
Η ιεραρχία του προγράμματος
Οι ιεραρχίες ταξεων στην Java Κάθε ConsoleProgram είναι,
είναι παρόμοιες με την Applet επίσης, ένα Program, ένα JApplet,
βιολογική ιεραρχία από την και ένα Applet. Αυτό σημαίνει ότι
προηγούμενη διαφάνεια. Αυτό κάθε ConsoleProgram μπορεί να
το διάγραμμα, για παράδειγμα, τρέξει σαν ένα applet στο
δείχνει την ιεραρχία που διαδίκτυο. Το ίδιο ισχύει για
σχηματίζεται από τις τάξεις στο JApplet οποιαδήποτε DialogProgram ή
πακέτο acm.program. GraphicsProgram.

Program

ConsoleProgram DialogProgram GraphicsProgram


Η τάξη DialogProgram
Στις αντικειμενοστρεφείς γλώσσες όπως η Java, ο ορισμός μιας ταξης
καθορίζει τη συμπεριφορά των αντικειμένων της κατηγορίας αυτής. Η
κλάση DialogProgram έχει ακριβώς τις ίδιες λειτουργίες με την
κατηγορία ConsoleProgram . Η διαφορά είναι ότι οι εργασίες εισόδου
και εξόδου χρησιμοποιούν διαλόγους popup αντί για μια κονσόλα,
όπως φαίνεται από τo ακόλουθο παράδειγμα του AddTwoIntegers:

public class Add2Integers extends DialogProgram {


public void run() {
println("This program adds two numbers.");
int n1 = readInt("Enter n1: ");
int n2 = readInt("Enter n2: ");
int total = n1 + n2;
println("The total is " + total + ".");
}
}
Γραφικά Προγράμματα
 Η τάξη GraphicsProgram καθιστά δυνατή τη δημιουργία
απλών εικόνων στην οθόνη. Η βασική ιδέα είναι αυτή ενός
κολλάζ που αποτελείται από αντικείμενα που επικολλούνται
σε έναν καμβά.
 Εκτελώντας ένα GraphicsProgram δημιουργούμε ένα
παράθυρο που είναι ο καμβάς μας για το κολλάζ. Η εικόνα
εμφανίζεται όταν δημιουργούμε οπτικά αντικείμενα
διαφόρων ειδών και επικολλώντας τα στον καμβά.
 Κατ’αρχήν θα μάθουμε πώς να χρησιμοποιούμε ετικέτες,
ορθογώνια, ελλείψεις, και γραμμές χρησιμοποιώντας τις
τάξεις GLabel, GRect, GOval, and GLine. Η πλήρης σειρά των
γραφικών τάξεων θα μας απασχολήσει προς το τέλος του
εξαμήνου.
Στέλνοντας μηνύματα σε αντικείμενα
 Σε πολλές εφαρμογές, θα χρειαστεί να αλλάξετε την
εμφάνιση ενός γραφικού αντικειμένου αφού το έχετε
δημιουργήσει. Για παράδειγμα, μπορεί να θέλετε να
αλλάξετε το χρώμα του ή να το μετακινήσετε σε μια νέα
θέση.
 Στις αντικειμενοστρεφείς γλώσσες όπως η Java, τέτοιες
αλλαγές είναι ευθύνη του αντικειμένου. Για να αλλάξετε το
χρώμα ενός αντικειμένου στέλνετε ένα μήνυμα στο
αντικείμενο ζητώντας του να αλλάξει χρώμα.
 Η Java έχει τον ακόλουθο τρόπο να στέλνει μνήματα:
receiver.name(arguments);

Όπου receiver είναι το αντικείμενο που πάει το μήνυμα, το


name προσδιορίζει τον τύπο του μηνύματος, και το
arguments είναι μια λίστα τιμών που χρησιμεύουν για να
προσδιοριστεί κάθε άλλη πληροφορία που χρειάζεται
Αποστολή μηνυμάτων στο GLabel
Το ακόλουθο πρόγραμμα επεξηγεί την αποστολή ενός
μηνύματος σε ένα αντικείμενο. Σημειώστε ότι η ετικέτα δεν
εμφανίζεται μέχρι να προστεθεί στον καμβά (με την
εντολή/μέθοδο add).
public class HelloProgram extends GraphicsProgram {
public void run() {
GLabel label = new GLabel("hello, world", 100, 75);
label.setFont("SansSerif-36");
label.setColor(Color.RED);
add(label);
} label
}
hello, world
hello, world

HelloProgram

hello, world
skip simulation
To σύστημα συντεταγμένων της JAVA
 Οι θέσεις και οι αποστάσεις σε ένα πρόγραμμα γραφικών
μετρούνται με βάση pixels, τα οποία είναι οι μεμονωμένες
κουκίδες που καλύπτουν την οθόνη.
 Αντίθετα με τα παραδοσιακά μαθηματικά η java ορίζει την
αρχή των αξόνων στην επάνω αριστερή γωνία της οθόνης. Οι
τιμές του x αυξάνουν όσο μετακινούμαστε δεξιότερα στην
οθόνη, και αυτές του y αυξάνουν όσο κατεβαίνουμε προς τα
κάτω.
 Δημιουργώντας ένα JLabel σε μια συγκεκριμένη θέση x και y
σημαίνει ότι η baseline του πρώτου χαρακτήρα θα
εμφανιστεί σε αυτό το σημείο ως ακολούθως:
HelloProgram

(100, 75) Hello


Η Ιεραρχία του GΟbject
Οι τάξεις που αντιπροσωπεύουν γραφικά αντικείμενα
σχηματίζουν μια ιεραρχία, μέρος της οποίας παρουσιάζεται:

GObject

GLabel GRect GOval GLine

Η τάξη
Οι στα αντιπροσωπεύει
GObject
ενέργειες γραφικά αντικείμενατην συλλογή
ορίζονται όλων των
σε κάθε
γραφικώντης αντικειμένων.
επίπεδο ιεραρχείς. Οι Οι τέσσερις
ενέργειες υποτάξειςόλαπου
που αφορούν τα
εμφανίζονται
γραφικά σε αυτό
αντικείμενα το στο
ορίζονται διάγραμμα αντιστοιχούν
επίπεδο του σε
GObject, από
συγκεκριμένους
όπου τύπους αντικειμένων:
και κληρονομούνται ετικέτες,
στις υποτάξεις. ορθογώνια,
Ενέργειες που
ελλείψεις και
αφορούν μιαγραμμές. Το διάγραμμα
συγκεκριμένη υπόταξητάξεων καθιστά σαφές
προσδιορίζονται ότι
στον
οποιαδήποτε
ορισμό αυτής. GLabel, GRect, GOval, ή GLine είναι επίσης ένα
GObject.
Ενέργειες με την τάξη GObject
Οι ακόλουθες ενέργειες μπορούν να γίνουν σε όλα τα GObjects:
object.setColor(color)
Θέτει το χρώμα του αντικειμένου στη συγκεκριμένη χρωματική σταθερά.
object.setLocation(x, y)
Θέτει την τοποθεσία του αντικειμένου στο σημείο (x, y).
object.move(dx, dy)
Μετακινεί το αντικείμενο στην οθόνη προσθέτοντας dx και dy στις συντεταγμένες του

Τα προκαθορισμένα ονόματα των χρωμάτων είναι ορισμένα στο


java.awt package:
Color.BLACK Color.RED Color.BLUE
Color.DARK_GRAY Color.YELLOW Color.MAGENTA
Color.GRAY Color.GREEN Color.ORANGE
Color.LIGHT_GRAY Color.CYAN Color.PINK
Color.WHITE
Ενέργειες με την τάξη GLabel
Κατασκευαστής
new GLabel(text, x, y)
Δημιουργεί μια ετικέττα που περιέχει το κείμενο text που ξεκινά στο σημείο (x, y).

Μέθοδοι ειδικά της τάξης GLabel


label.setFont( font)
Θέτει τη γραμματοσειρά που χρησιμοποιείται για να δείξει την ετικέττα.

Η Γραμματοσειρά συνήθως ορίζεται σαν ένα String, δηλαδή


συμβολοσειρά, της μορφής:
"family-style-size"
Όπου
family είναι το όνομα της οικογένειας της γραμματοσειράς
style είναι PLAIN, BOLD, ITALIC, ή BOLDITALIC
size είναι ένας ακέραιος που υποδηλώνει μέγεθος σε στιγμές
(points)
Σχεδιάζοντας γεωμετρικά αντικείμενα
Κατασκευαστές
new GRect( x, y, width, height)
Δημιουργεί ορθογώνιο παραλληλόγραμμο του οποίου η πάνω αριστερή γωνία
είναι το σημείο (x, y) και έχει τις δοθείσες διαστάσεις.
new GOval( x, y, width, height)
Δημιουργεί ένα οβάλ που χωράει μέσα στο ορθογώνιο παραλληλόγραμμο με τις
ίδιες διαστάσεις.
new GLine( x0, y0, x1, y1)
Δημιουργεί ευθεία γραμμή από το (x0, y0) στο (x1, y1).

Κοινές μέθοδοι των τάξεων GRect και Goval


object.setFilled( fill)
Αν το fill έχει τιμή true, γεμίζει το εσωτερικό του αντικειμένου. Αν είναι false,
δείχνει μόνο το περίγραμμα
object.setFillColor( color)
Θέτει το χρώμα με το οποίο γεμίζει το εσωτερικό, που μπορεί να είναι
διαφορετικό από το περιθώριο.
Tο πρόγραμμα GRectPlusGOval
public class GRectPlusGOval extends GraphicsProgram {
public void run() {
GRect rect = new GRect(100, 50, 125, 60);
rect.setFilled(true);
rect.setColor(Color.RED);
add(rect);
GOval oval = new GOval(100, 50, 125, 60);
oval.setFilled(true);
oval.setFillColor(Color.GREEN);
add(oval); rect oval
}
}

GRectPlusGOval

skip simulation

You might also like