ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 13/12/07

Σχετικά έγγραφα
ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 29/11/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 5: Κατασκευαστές (Constructors)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 10/1/08

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός μνήμης Αντικείμενα παράμετροι String Interning

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

API: Applications Programming Interface

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι String Interning

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 4: Αντικειμενοστραφής Προγραμματισμός (Μέθοδοι, Κλάσεις, Αντικείμενα)

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 26/2/2008

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Έλεγχος ισότητας String Interning Αποαναφοροποίηση - dereferencing

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Δομές ελέγχου ροής προγράμματος

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors).

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Κλάσεις και Αντικείµενα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 8/11/07

CSD Univ. of Crete Φθινόπωρο Άσκηση 1 Εκφώνηση

Συναρτήσεις και διαδικασίες

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές

Διάλεξη 20: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου

Πολλές φορές έχουμε πολλές μεταβλητές του ίδιου τύπου που συσχετίζονται και θέλουμε να τις βάλουμε μαζί.

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Tοπικές μεταβλητές To αντικείμενο this Accessor, Mutator μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Constructors

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 2 η

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 2: Βασικές εντολές

3 Αλληλεπίδραση Αντικειμένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors, equals, tostring Αντικείμενα ως παράμετροι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Αντικείμενα ως ορίσματα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08

Δοκιμή και Αποσφαλμάτωση Testing and Debugging

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Deep and Shallow Copies

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Μαθήματα από τα εργαστήρια

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπερφόρτωση Αντικείμενα σαν ορίσματα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

ΦΥΛΛΑ ΜΗΝΙΑΙΟΥ ΗΜΕΡΟΛΟΓΙΟΥ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 1/4/2008

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 4/3/2008

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι

Βασικά Στοιχεία της Java

ΠΕΡΙΟΔΟΙ ΥΠΟΒΟΛΗΣ ΜΗΝΙΑΙΩΝ ΑΠΔ ΟΙΚΟΔΟΜΟΤΕΧΝΙΚΩΝ ΕΡΓΩΝ ΜΙΣΘΟΛΟΓΙΚΩΝ ΠΕΡΙΟΔΩΝ 01/ /2015

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και αντικείμενα στην Java Strings Πίνακες

public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);

ΘΕΜΑΤΑ ΕΞΕΤΑΣΕΩΝ ΟΜΑΔΑ Α

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 10: Exceptions handling (Χειρισμός εξαιρέσεων)

Αντικειμενοστρεφής Προγραμματισμός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα

Διάλεξη 15: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου

Οντοκεντρικός Προγραμματισμός

Βασικά της γλώσσας JAVA

ΑΔΑ: ΒΙΨΨ4691ΩΓ-Ε30. ΠΕΡΙΟΔΟΣ ΥΠΟΒΟΛΗΣ ΜΗΝΙΑΙΑΣ Α.Π.Δ. ΚΟΙΝΩΝ ΕΠΙΧΕΙΡΗΣΕΩΝ ΙΑΝΟΥΑΡΙΟΣ 2014 (δεν αφορά το Δημόσιο,τα Ν.Π.Δ.Δ και τους Ο.Τ.

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΕΙΣ ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Ιανουάριος 2007 Οι απαντήσεις να είναι καθαρογραμμένες με ευδιάκριτους όλους του χαρακτήρες.

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

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

ΙΑΝΟΥΆΡΙΟΣ 31 ΤΡΊΤΗ 1 ΚΥΡΙΑΚΉ 30 ΔΕΥΤΈΡΑ 20 ΠΑΡΑΣΚΕΥΉ 25 ΤΕΤΆΡΤΗ 26 ΠΈΜΠΤΗ 28 ΣΆΒΒΑΤΟ 22 ΚΥΡΙΑΚΉ 6 ΠΑΡΑΣΚΕΥΉ 7 ΣΆΒΒΑΤΟ 8 ΚΥΡΙΑΚΉ 9 ΔΕΥΤΈΡΑ

Βασικά Στοιχεία της Java

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 11: Vectors (διανύσματα)

Η Μέρα της Εβδομάδας. Πες Μου Πότε

ΠΕΡΙΟΔΟΣ ΥΠΟΒΟΛΗΣ ΜΗΝΙΑΙΑΣ Α.Π.Δ. ΚΟΙΝΩΝ ΕΠΙΧΕΙΡΗΣΕΩΝ ΙΑΝΟΥΑΡΙΟΣ (δεν αφορά το Δημόσιο, τα Ν.Π.Δ.Δ και τους Ο.Τ.Α )

Transcript:

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 13/12/07 Ένα απλό παράδειγμα μιας κλάσης εφαρμογής με δύο μεθόδους (κλήση μεθόδου μέσα στην ίδια κλάση): import java.util.*; public class Example public static double square(double r) double s = x*x; return s; Scanner input = new Scanner(System.in); System.out.println( Please give a number: ); double n = input.nextdouble(); double z = square(n); System.out.println(n + squared is: + z); Παράδειγμα εκτέλεσης του προγράμματος: > Please give a number: > 5 > 5 squared is 25 > 1

Παράδειγμα με κλήση μεθόδου από άλλη κλάση: public class Combi // μέθοδος που υπολογίζει το n! public static int fact(int n) int p = 1; for (int i=1; i<=n; i++) p *= i; return p; // μέθοδος που υπολογίζει το (n ανά k) public static int combinations(int n, int k) return (fact(n)/(fact(k)*fact(n-k))); public class TestCombi System.out.println( 10! = + Combi.fact(10)); System.out.println( 5 ανά 2 = ); System.out.println(Combi.combincations(5,2)); Δηλαδή, το πρόγραμμα αποτελείται από δύο κλάσης: την κλάση εφαρμογής (TestCombi) και την κλάση υποστήριξης (Combi). Η κλάση υποστήριξης περιέχει δύο μεθόδους (fact και combinations) και η κλάση εφαρμογής μία μέθοδο (την main). Η κάθε μία από τις κλάσεις αυτές σώζεται σε ξεχωριστό αρχείο, με το όνομά της.java (Combi.java και TestCombi.java). Κατά την εκτέλεση του προγράμματος, εκτελείται ο κώδικας της μεθόδου main, ο οποίος καλεί τις άλλες δύο μεθόδους (οπότε και η ροή του κώδικα πάει σε αυτές κατά την κλήση τους). Το αποτέλεσμα του συγκεκριμένου παραδείγματος θα είναι το εξής: > 10! = 3628800 > 5 ανά 2 = > 10 2

- Τοπικές μεταβλητές: οι μεταβλητές που ορίζονται μέσα σε κάποια μέθοδο. Έχουν υπόσταση μόνο μέσα στη μέθοδο. o Δημιουργούνται όταν καλείται η μέθοδος o Παύουν να υπάρχουν όταν τελειώσει η εκτέλεση της μεθόδου Οι παράμετροι μιας μεθόδου είναι κι αυτές τοπικές μεταβλητές, οι οποίες αρχικοποιούνται στις τιμές των ορισμάτων τους. (σημείωση: παράμετροι είναι οι μεταβλητές εισόδου μιας μεθόδου, ενώ ορίσματα είναι οι τιμές αυτών των παραμέτρων με τις οποίες (τιμές) καλούνται οι μέθοδοι βλ. προηγούμενο μάθημα) - Μεταβλητές κλάσης: [θα τις δούμε αργότερα] Παράδειγμα τοπικής μεταβλητής: public class Local public static void withlocalvars(int x) System.out.println( 1) x = + x); x = 5; System.out.println( 2) x = + x); int x = 1; System.out.println( 3) x = + x); withlocalvars(x); System.out.println( 4) x = + x); Το πρόγραμμα αυτό θα εκτυπώσει στη οθόνη το εξής: > 3) x = 1 > 1) x = 1 > 2) x = 5 > 4) x = 1 Το x είναι 1 στο τελευταίο System.out.println γιατί αφορά την τοπική μεταβλητή της main και όχι αυτήν της withlocalvars η οποία έχει γίνει 5. 3

- Μέθοδος για τον έλεγχο πρώτων αριθμών public class Primes public static boolean isprime(int n) if ((n%2==0 && n>2) n==1) return false; int limit = (int)math.sqrt(n)+1; for (int div=3; div<=limit; div+=2) if (n%div==0) return false; return true; Η κλάση αυτή είναι κλάση υποστήριξης. Έχουμε πει ότι μια μέθοδος έχει ένα μόνο return. Γιατί αυτή έχει τρία; Γιατί μόνο ένα από αυτά θα εκτελεστεί. Δηλαδή, στην ουσία αυτό που ισχύει είναι ότι μια μέθοδος επιστρέφει μία μόνο μεταβλητή. Πως θα ήταν η κλάση εφαρμογής; import java.util.*; public class TestPrimes Scanner input = new Scanner(System.in); System.out.println( Please give a positive integer: ); int n = input.nextint(); if (Primes.isPrime(n)) System.out.println( The number + n + is prime. ); else System.out.println( This number is not a prime. ); 4

Άσκηση: Να βρεθούν όλα τα ζεύγη πρώτων αριθμών p και q στο διάστημα [3, 200] έτσι ώστε q=2p+1. Αρκεί να ελεγχθεί κάθε περιττός στο διάστημα [3, 99] και για κάθε πρώτο p σε αυτό το διάστημα να ελέγχεται άν ο 2p+1 είναι πρώτος. Θα χρησιμοποιήσουμε τη μέθοδο isprime της κλάσης Primes από πριν. public class PrimePairs for (int p=3; p<=99; p+=2) if (Primes.isPrime(p)) if (Primes.isPrime(2*p+1)) System.out.println(p + + (2*p+1)); - Παράδειγμα Ημερολογίου Ένα πρόγραμμα που θα δέχεται από τον χρήστη τον μήνα (1-12) και το έτος (μετά το 1900) και θα επιστρέφει το ημερολόγιο του μήνα, ως εξής: Δεκέμβριος 2007 Κυ Δε Τρ Τε Πε Πα Σα 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Το πρόγραμμα αποτελείται από διάφορες «εξειδικευμένες» μεθόδους, υπό την έννοια ότι κάθε μία από αυτές επιτελεί κάποιες πολύ συγκεκριμένες εργασίες. α) Μέθοδος που επιστρέφει το όνομα του μήνα: public static String monthname(int month) if (month==1) return Ιανουάριος ; else if (month==2) return Φεβρουάριος ; else if (month==3) return Μάρτιος ; 5

else if (month==4) return Απρίλιος ; else if (month==5) return Μάιος ; else if (month==6) return Ιούνιος ; else if (month==7) return Ιούλιος ; else if (month==8) return Αύγουστος ; else if (month==9) return Σεπτέμβριος ; else if (month==10) return Οκτώβριος ; else if (month==11) return Νοέμβριος ; else return Δεκέμβριος ; β) Μέθοδος που επιστρέφει αν ένα έτος είναι δίσεκτο: public static boolean isleapyear(int year) return ((year%4==0 && year%100!=0) year%400==0); γ) Μέθοδος που επιστρέφει τις ημέρες ενός μήνα: public static int daysinmonth(int month, int year) if (month==2) return (isleapyear(year)? 29:28; else if (month==4 month==6 month==9 month==11) return 30; else return 31; δ) Μέθοδος που επιστρέφει τι μέρα είναι η πρώτη ημέρα ενός μήνα: public static int firstday(int month, int year) int day=1; //η 1/1/1900 ήταν Δευτέρα η Κυρ. θα είναι η 0, //η Δευτ. η 1, η Τρίτη η 2,..., το Σαβ. η 6. // η πρώτη ημέρα του έτους year: for (int i=1900; i<year; i++) day = (day+365) % 7; if (isleapyear(i)) day = (day+1) % 7; // η πρώτη ημέρα του μήνα month του έτους year: for (int i=1; i<month; i++) 6

day = (day + daysinmonth(i, year)) % 7; return day; Πριν δούμε τις υπόλοιπες μεθόδους του προγράμματος, κάποια πράγματα για τη δομή των κλάσεων: Η δομή μιας Κλάσης: Επικεφαλίδα Πεδία (μεταβλητές, αντικείμενα) Μέθοδοι Οι μεταβλητές κλάσης ορίζονται έξω από τις μεθόδους και είναι προσπελάσιμες από όλες τις μεθόδους της κλάσης. - Αν η ορατότητά τους είναι public, τότε είναι προσπελάσιμες και από μεθόδους άλλων κλάσεων. - Αν η ορατότητά τους είναι private, τότε είναι προσπελάσιμες μόνο από τις μεθόδους της κλάσης τους. Τα ίδια περί ορατότητας (public / private) ισχύουν και για τις μεθόδους. Οι μεταβλητές κλάσης, για να μπορούν να προσπελαθούν από static μεθόδους, θα πρέπει να δηλωθούν κι αυτές σαν static. Δηλαδή, οι static μέθοδοι έχουν πρόσβαση μόνο σε static μεταβλητές. [Συνέχεια περί μεταβλητών κλάσεων και η συνέχεια του προγράμματος, την επόμενη εβδομάδα] 7