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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Copy Constructor Deep and Shallow Copies

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ. Προγραμματιστικές Ασκήσεις, Εργαστήριο 1 Να ολοκληρωθούν μέχρι τη λήξη του εργαστηρίου

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αρχεία

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 8/4/2008. Πίνακες (Arrays)

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

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

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

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

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

Προγραμματισμός 2 Σημειώσεις εργαστηρίου

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

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

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

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

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

Εισαγωγή στον αντικειμενοστραφή προγραμματισμό με τη Java

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

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

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ. Πρώτη Σειρά ασκήσεων Ημερομηνία Παράδοσης: 24 Απριλίου 2018, 12 μ.μ.

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

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

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

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

2.1. Εντολές Σχόλια Τύποι Δεδομένων

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 7: Πίνακες (Arrays)

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

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

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

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

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

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

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

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

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

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές

Transcript:

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

ΕΡΓΑΣΤΗΡΙΟ 1

Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο input είναι η σύνδεση του προγράμματος μας με το πληκτρολόγιο. Έχουμε ένα πληκτρολόγιο θα δημιουργήσουμε ένα αντικείμενο Scanner το οποίο θα χρησιμοποιήσουμε για να διαβάσουμε οτιδήποτε πληκτρολογηθεί. Δεν έχει νόημα να κάνουμε ένα αντικείμενο για κάθε μεταβλητή που διαβάζουμε. Μέθοδοι της Scanner: next(): επιστρέφει το επόμενο String από την είσοδο (όλοι οι χαρακτήρες από το σημείο που σταμάτησε την προηγούμενη φορά μέχρι να βρει white space: κενο, tab, αλλαγή γραμμής) nextint(): διαβάζει το επόμενο String και το μετατρέπει σε int και επιστρέφει ένα int αριθμό. nextdouble(): διαβάζει το επόμενο String και το μετατρέπει σε double και επιστρέφει τον double αριθμό. nextline(): Διαβάζει ότι υπάρχει μέχρι να βρει newline και το επιστρέφει ως String.

Μαθήματα από το πρώτο εργαστήριο Διάβασμα από την είσοδο: Θέλουμε να διαβάσουμε ένα πραγματικό αριθμό ακολουθούμενο από ένα string. ΣΩΣΤΟ! Scanner in = new Scanner(System.in); double d = in.nextdouble(); String s = in.next(); ΛΑΘΟΣ! Scanner in = new Scanner(System.in); double d = in.nextdouble(); String s = in.nextline(); To nextline() δεν μας κάνει γιατί διαβάζει ότι ακολουθεί τον αριθμό μέχρι να βρει \n Αν πατήσουμε το enter μετά από τον ακέραιο, στην είσοδο μένει το κενό String και το \n Το nextline() επιστρέφει λοιπόν το κενό String.

Μαθήματα από το πρώτο εργαστήριο Ορισμός και χρήση μεταβλητών: Μια μεταβλητή ορίζεται μόνο μία φορά μέσα σε ένα λογικό μπλοκ του κώδικα μας Όταν θέλουμε να την χρησιμοποιήσουμε δεν χρειάζεται και δεν μπορούμε να την ορίσουμε ξανά. import java.util.scanner; class VariableTest public static void main(string[] args) Ορισμός μεταβλητής: <τύπος> <όνομα> String s; Η γραμμή αυτή κάνει δύο πράγματα: 1. Ορίζει την μεταβλητή s: String s 2. Εκχωρεί στην s το αποτέλεσμα της in.nextline() Scanner in = new Scanner(System.in); String s = in.nextline(); while (!s.equals("exit") System.out.println("You entered:"+s); s = in.nextline(); Εφόσον έχουμε ήδη ορίσει την μεταβλητή String s, δεν μπορούμε να την ορίσουμε ξανά. Εδώ απλά την χρησιμοποιούμε για να εκχωρήσουμε νέα τιμή

Μαθήματα από το πρώτο εργαστήριο Στοίχιση κώδικα: Κάθε φορά που ανοίγετε ένα καινούριο μπλοκ οι εντολές θα πρέπει να πηγαίνουν ένα tab πιο μέσα Χρησιμοποιείτε τα tabs και όχι κενά. Τα άγκιστρα που σηματοδοτούν την αρχή και το τέλος του μπλοκ είναι στοιχισμένα με τις προηγούμενες εντολές. import java.util.scanner; class VariableTest 1 tab 2 tabs public static void main(string[] args) 3 tabs Scanner in = new Scanner(System.in); String s = in.nextline(); while (!s.equals("exit")) System.out.println("You entered:"+s); s = in.nextline();

ΕΡΓΑΣΤΗΡΙΟ 2

Μαθήματα από το lab Όταν ορίζουμε ένα πίνακα, για να μπορούμε να τον χρησιμοποιήσουμε θα πρέπει να του δώσουμε χώρο, δηλαδή να δεσμεύσουμε μνήμη για τις θέσεις που χρειαζόμαστε Αυτό γίνεται με την new. Δεσμεύουμε τόσες θέσεις μνήμης όσο το μέγεθος του πίνακα Η κάθε θέση μνήμης αποθηκεύει μια μεταβλητή τύπου τον τύπο του πίνακα int[] array = new int[3], δεσμεύει τρεις θέσεις που κρατάνε ακεραίους Car[] array = new Car[n], δεσμεύει n θέσεις που κρατάνε αντικείμενα τύπου Car. Αν δεν καλέσουμε την new για τον πίνακα τότε η μεταβλητή μας είναι κενή (φανταστείτε το σαν ένα πίνακα με μηδέν θέσεις).

Μαθήματα από το lab Ένας δισδιάστατος πίνακας είναι ένας πίνακας από πίνακες. Για να του δώσουμε χώρο το κάνουμε ανά μία διάσταση. Π.χ., για ένα n m πίνακα με ακεραίους, πρώτα θα δεσμεύσουμε n θέσεις μνήμης που η κάθε μία θα κρατάει πίνακες από ακεραίους, μετά για κάθε θέση θα δεσμεύσουμε m θέσεις που θα κρατάνε ακεραίους. int[][] array; array null Ορισμός κενού πινάκα array = new int[n][]; array for(int i = 0; i < n; i ++) array[i] = new int[m]; array

Μαθήματα από το lab Στην περίπτωση σας η κάθε γραμμή είχε μεταβλητή διάσταση n = 4; int[][] array = new int[n][]; for(int i = 0; i < n; i ++) array[i] = new int[n-i]; array array

ΕΡΓΑΣΤΗΡΙΟ 3

Ένα ιστόγραμμα τιμών μετράει για ένα σύνολο από τιμές πόσες φορές εμφανίστηκε η κάθε τιμή. Για παράδειγμα αν έχω τις τιμές: 1,2,1,2,4,5,3,3,3,2,4 το ιστόγραμμα τους είναι 2,3,3,2,1, και είναι ο αριθμός εμφανίσεων των τιμών 1,2,3,4,5 αντίστοιχα (η τιμή 1 εμφανίζεται 2 φορές, η τιμή 2, 3 φορές, κοκ). Στην άσκηση αυτή θα υλοποιήσετε μια κλάση GradeHistogram η οποία κρατάει ένα ιστόγραμμα για τους βαθμούς ενός μαθήματος. Η κλάση σας θα πρέπει να κρατάει το μέγιστο βαθμό για το μάθημα, και ένα πίνακα τον αριθμό εμφανίσεων του κάθε βαθμού. Αν ο μέγιστος βαθμός είναι maxgrade τότε οι πιθανοί βαθμοί θα είναι όλοι οι ακέραιοι στο διάστημα [1,maxGrade]. Η κλάση θα πρέπει να έχει και τις εξής μεθόδους: 1. Ένα constructor, ο οποίος θα παίρνει σαν όρισμα τον μέγιστο βαθμό και ένα πίνακα με βαθμούς και δημιουργεί το ιστόγραμμα των βαθμών. 2. Μια μέθοδο tostring, η οποία θα επιστρέφει ένα String που αναπαριστά το ιστόγραμμα. Για το ιστόγραμμα στο παραπάνω παράδειγμα θα επιστρέφει το String: «1:2 2:3 3:3 4:2 5:1». 3. Την μέθοδο equals, η οποία θα συγκρίνει αν δύο ιστογράμματα είναι ίδια. 4. Μια μέθοδο addhistogram η οποία παίρνει σαν όρισμα ένα άλλο ιστόγραμμα (ένα αντικείμενο τύπου GradeHistogram) και, εφόσον έχουν τον ίδιο μέγιστο βαθμό, το προσθέτει στο υπάρχον ιστόγραμμα. Σας δίνεται η κλάση GradeHistogramTest, για να τεστάρετε την κλάση σας. Όταν υλοποιήσετε τις μεθόδους που καλούνται στην main, βγάλετε τα σχόλια από τις αντίστοιχες εντολές για να τεστάρετε τις μεθόδους. Τεστάρετε τον κώδικα σας σταδιακά όπως φαίνεται στα σχόλια.

Μαθήματα από το lab Τι πληροφορία (δεδομένα) θέλουμε να κρατάει η κλάση μας? Το μέγιστο βαθμό Τις τιμές του ιστογράμματος Η πληροφορία (τα δεδομένα) που θέλουμε να κρατάει η κλάση θα είναι τα πεδία της κλάσης Έναν ακέραιο maxgrade με το μέγιστο βαθμό που θα είναι και το μήκος του πίνακα Ένα πίνακα ακεραίων histogram με τις συχνότητες για τον κάθε βαθμό

Κατασκευή ιστογράμματος Πως φτιάχνουμε ένα ιστόγραμμα από ένα πίνακα με βαθμούς? Κάθε φορά που βλέπουμε τον βαθμό x θα πρέπει να αυξήσουμε την x-θέση του ιστογράμματος κατά ένα. for (int i = 0; i < grades.length; i ++) int x = grades[i]; histogram[x-1] ++;

H μέθοδος tostring Στην μέθοδο tostring πρέπει να δημιουργήσουμε το String το οποίο θα αναπαριστά το ιστόγραμμα. Για να το κάνουμε αυτό θα πρέπει να διατρέξουμε τον πίνακα με τις τιμές και να φτιάξουμε το String αυξητικά. H μέθοδος tostring ορίζεται πάντα έτσι public String tostring() String output = ""; for (int i = 0; i < maxgrade; i ++) output = output + (i+1) + ":" + histogram[i] + " "; return output;

class GradeHistogram Σωστό ή λάθος? public GradeHistogram(int maxgrade, int[] grades) int[] histogram = new int[maxgrade]; for (int i = 0; i < grades.length; i ++) int x = grades[i]; histogram[x-1] ++; public String tostring() String output = ""; for (int i = 0; i < maxgrade; i ++) output = output + (i+1) + ":" + histogram[i] + " "; return output; Οι μεταβλητές maxgrade και histogram δεν είναι ορισμένες. Για να μπορεί να τις βλέπει η μέθοδος print (ή οποιαδήποτε άλλη μέθοδος) θα πρέπει να είναι ορισμένες ως πεδία της κλάσης

class GradeHistogram private int maxgrade; private int[] histogram; Σωστό? public GradeHistogram(int maxgrade, int[] grades) int[] histogram = new int[maxgrade]; for (int i = 0; i < grades.length; i ++) int x = grades[i]; histogram[x-1] ++; public String tostring() String output = ""; for (int i = 0; i < maxgrade; i ++) output = output + (i+1) + ":" + histogram[i] + " "; return output; O constructor δεν αρχικοποιεί τα πεδία της κλάσης. Οι μεταβλητές maxgrade και histogram που ορίζονται μέσα στον constructor είναι τοπικές μεταβλητές και δεν αλλάζουν την τιμή των πεδίων.

class GradeHistogram private int maxgrade; private int[] histogram; public GradeHistogram(int maxgrade, int[] grades) this.maxgrade = maxgrade; for (int i = 0; i < grades.length; i ++) int x = grades[i]; histogram[x-1] ++; public String tostring() String output = ""; for (int i = 0; i < maxgrade; i ++) output = output + (i+1) + ":" + histogram[i] + " "; return output; Σωστό? H μεταβλητή maxgrade αρχικοποιείται σωστά. Ο πίνακας histogram όμως όχι. Τον έχουμε ορίσει σωστά αλλά δεν τον έχουμε δημιουργήσει (δεν του έχουμε δώσει χώρο)! Δεν έχουμε προσδιορίσει το μέγεθος του

class GradeHistogram private int maxgrade; private int[] histogram = new int[maxgrade]; Σωστό? public GradeHistogram(int maxgrade, int[] grades) this.maxgrade = maxgrade; for (int i = 0; i < grades.length; i ++) int x = grades[i]; histogram[x-1] ++; public String tostring() String output = ""; for (int i = 0; i < maxgrade; i ++) output = output + (i+1) + ":" + histogram[i] + " "; return output; Θυμηθείτε ότι οι εντολές αυτές θα εκτελεστούν πριν από τις εντολές του constructor. Εκείνη τη στιγμή δεν ξέρουμε το μέγιστο βαθμό και άρα δημιουργούμε ένα πίνακα μηδενικού μεγέθους!

class GradeHistogram private int maxgrade; private int[] histogram; public GradeHistogram(int maxgrade, int[] grades) histogram = new int[maxgrade]; for (int i = 0; i < grades.length; i ++) int x = grades[i]; histogram[x-1] ++; public String tostring() String output = ""; for (int i = 0; i < maxgrade; i ++) output = output + (i+1) + ":" + histogram[i] + " "; return output; Σωστό? O Constructor θα αρχικοποιήσει σωστά τον πίνακα histogram, αλλά δεν θα αλλάξει το πεδίο maxgrade μιας και χρησιμοποιεί την τοπική μεταβλητή - παράμετρο To maxgrade εδώ αναφέρεται στο πεδίο και έχει τιμή μηδέν.

class GradeHistogram private int maxgrade; private int[] histogram; public GradeHistogram(int maxgrade, int[] grades) this.maxgrade = maxgrade; histogram = new int[maxgrade]; for (int i = 0; i < grades.length; i ++) int x = grades[i]; histogram[x-1] ++; Σωστό? Πρώτα δηλώνουμε τα πεδία μέσα στην κλάση Στον Constructor δίνουμε τιμή στο maxgrade και αφού πλέον ξέρουμε το μήκος του πίνακα τον δημιουργούμε και του δίνουμε χώρο για να κρατάει τις τιμές. public String tostring() String output = ""; for (int i = 0; i < maxgrade; i ++) output = output + (i+1) + ":" + histogram[i] + " "; return output; Τώρα μπορούμε και να κάνουμε και την αρχικοποίηση του πίνακα

Ορισμός και δημιουργία μεταβλητών Τι σημαίνει ορίζω μια μεταβλητή? Οπουδήποτε έχουμε κώδικα της μορφής <τυπος> <όνομα μεταβλητής> ορίζουμε μια καινούρια μεταβλητή με αυτό το όνομα. Π.χ., int maxgrade int[] histogram GradeHistogram hist Τι σημαίνει δημιουργώ μια μεταβλητή/αντικείμενο Δημιουργώ σημαίνει ότι δίνω χώρο στην μνήμη και αυτό γίνεται με την new. Χωρίς την κλήση της new το αντικείμενο δεν υπάρχει. Εξαίρεση, οι βασικοί τύποι (int, double, boolean). histogram = new int[maxgrade]; hist = new GradeHistogram(maxGrade, grades);

Εμβέλεια μεταβλητών Η κάθε μεταβλητή έχει εμβέλεια μέσα στο block στο οποίο ορίζεται. Τις μεταβλητές-πεδία της κλάσης μπορούν να τις χρησιμοποιήσουν όλες οι μέθοδοι της κλάσης Οι μεταβλητές έχουν ζωή όσο υπάρχει το αντίστοιχο αντικείμενο της κλάσης Οι μεταβλητές που ορίζονται μέσα σε μία μέθοδο μπορούν να χρησιμοποιηθούν μόνο μέσα στη μέθοδο. Οι μεταβλητές χάνονται όταν βγούμε από τη μέθοδο. Οι παράμετροι μιας μεθόδου είναι σαν τοπικές μεταβλητές της μεθόδου.

Παράδειγμα Ορισμός μεταβλητής πίνακα Δημιουργία πίνακα class GradeHistogram private int maxgrade; private int[] histogram; public GradeHistogram(int maxgrade, int[] grades) this.maxgrade = maxgrade; histogram = new int[maxgrade]; for (int i = 0; i < grades.length; i ++) int x = grades[i]; histogram[x-1] ++; Οι κόκκινες μεταβλητές υπάρχουν μόνο μέσα στο μπλοκ της μεθόδου Οι μπλε μεταβλητές είναι πεδία

Παράδειγμα (λάθος) class GradeHistogram private int maxgrade; private int[] histogram; Το πεδίο-πίνακας histogram έχει οριστεί αλλά δεν έχει δημιουργηθεί Ορισμός τοπικής μεταβλητής και δημιουργία της public GradeHistogram(int maxgrade, int[] grades) this.maxgrade = maxgrade; int[] histogram = new int[maxgrade]; for (int i = 0; i < grades.length; i ++) int x = grades[i]; histogram[x-1] ++; Οι κόκκινες μεταβλητές υπάρχουν μόνο μέσα στο μπλοκ της μεθόδου Η τοπική μεταβλητή histogram χάνεται μόλις βγούμε από τον constructor Οι μπλε μεταβλητές είναι πεδία

Η μέθοδος equals public boolean equals(gradehistogram other) if (this.maxgrade!= other.maxgrade) return false; for (int i = 0; i < maxgrade; i ++) if (this.histogram[i]!= other.histogram[i]) return false; H μέθοδος equals ορίζεται πάντα έτσι return true; Δεν κάνουμε έλεγχο ισότητας χρησιμοποιώντας την tostring! To String που επιστρέφουμε μπορεί να μην ικανοποιεί τον έλεγχο ισότητας Είναι πιο εύκολο να ελέγξουμε για την περίπτωση της ανισότητας παρά της ισότητας. Μόλις μία από τις συνθήκες δεν ικανοποιείται επιστρέφουμε false. Αν φτάσουμε μέχρι τέλους ικανοποιούνται όλες και άρα επιστρέφουμε true

Η μέθοδος addhistogram H μέθοδος δεν επιστρέφει κάτι μιας και το αποτέλεσμα της πρόσθεσης θα αποθηκευτεί στο αντικείμενο H μέθοδος παίρνει σαν όρισμα ένα αντικείμενο GradeHistogram το οποίο θα προσθέσει public void addhistogram(gradehistogram other) if (this.maxgrade!= other.maxgrade) return; for (int i=0; i < maxgrade; i++) this.histogram[i] += other.histogam[i]; Έχουμε πρόσβαση στα πεδία του other γιατί είναι της ίδιας κλάσης με το αντικείμενο που καλεί την addhistogram

Κλάσεις και αντικείμενα GradeHistogram maxgrade hist2 = new GradeHistogram(5,grades2) GradeHistogram maxgrade = 5 histogram = 1,2,1,1,1 Ορισμός της κλάσης hist3 = new GradeHistogram(5,grades3) GradeHistogram maxgrade = 5 histogram = 1,1,2,1,0 histogram[] GradeHistogram(int,int[]) tostring() addhistogram(gradehistogram) equals(gradehistogram) GradeHistogram(int,int[]) tostring() addhistogram(gradehistogram) equals(gradehistogram) GradeHistogram(int,int[]) tostring() addhistogram(gradehistogram) equals(gradehistogram)

Κλάσεις και αντικείμενα GradeHistogram maxgrade hist2.addhistogram(hist3); hist2 = new GradeHistogram(5,grades2) Ορισμός της κλάσης hist3 = new GradeHistogram(5,grades3) histogram[] GradeHistogram(int,int[]) tostring() addhistogram(gradehistogram) equals(gradehistogram) GradeHistogram maxgrade = 5 histogram = 2,3,3,2,1 GradeHistogram(int,int[]) tostring() addhistogram(gradehistogram) equals(gradehistogram) GradeHistogram maxgrade = 5 histogram = 1,1,2,1,0 GradeHistogram(int,int[]) tostring() addhistogram(gradehistogram) equals(gradehistogram)

class GradeHistogram private int maxgrade; private int[] histogram; private String output = ; public Geometric(int maxgrade, int[] grades) this.maxgrade = maxgrade; histogram = new int[maxgrade]; for (int i = 0; i < grades.length; i ++) x = grades[i]; histogram[x-1] ++; Σωστό? H μεταβλητή output πλέον είναι πεδίο. Οι αλλαγές της τιμής της παραμένουν στο αντικείμενο Τι γίνεται αν κάνουμε πολλαπλές κλήσεις της μεθόδου tostring? public String tostring() for (int i = 0; i < maxgrade; i ++) output = output + (i+1) + ":" + histogram[i] + " "; return output;

ΕΡΓΑΣΤΗΡΙΟ 4

Μαθήματα από το Εργαστήριο 4 Υπερφορτώστε την deposit ώστε να παίρνει όρισμα μια επιταγή και να προσθέτει το ποσό της επιταγής στον λογαριασμό, εφόσον η επιταγή έχει παραλήπτη τον κάτοχο του λογαριασμού. Επιστρέφει boolean τιμή αν έγινε σωστά η κατάθεση. Στην άσκηση μας έχουμε φτιάξει μια κλάση Check η οποία κρατάει πληροφορίες για μία επιταγή Όταν σας ζητάει μια άσκηση να περάσετε σαν όρισμα μια επιταγή αυτό σημαίνει ότι θα περάσετε σαν όρισμα ένα αντικείμενο Check. Όχι String, όχι το όνομα και το ποσό αλλά το αντικείμενο Check. Το αντικείμενο αυτό περιέχει όλη την πληροφορία που χρειαζόμαστε Δεν μπορούμε να προσπελάσουμε αυτή την πληροφορία άμεσα όμως γιατί η κλάση Check είναι διαφορετική από την κλάση Account που έχει την μέθοδο. Γι αυτό ορίζουμε της μεθόδους προσπέλασης στην κλάση Check ώστε να διαβάσουμε τα πεδία που χρειαζόμαστε. Μια μέθοδος πρόσβασης έχει το όνομα get<όνομα Πεδίου> όπου το πεδίο είναι αυτό που θέλουμε να διαβάσουμε. getname() getammount()

Η μέθοδος deposit H παράμετρος στην μέθοδο είναι ένα αντικείμενο Check. Μην χρησιμοποιείτε συνέχεια το other για το όνομα της παραμέτρου. Η ιδέα του other είναι να το χρησιμοποιούμε όταν η παράμετρος είναι αντικείμενο της ίδιας κλάσης. public boolean deposit(check depositcheck) if (depositcheck.getname().equals(this.name)) this.amount += depositcheck.getamount(); return true; return false; Έλεγχος ισότητας με equals Το getname() και getammount() είναι μέθοδοι της κλάσης Check, όχι πεδία. Άρα χρειαζόμαστε να τις καλέσουμε με τα ορίσματα τους. Στην περίπτωση αυτή δεν έχουν ορίσματα άρα απλά βάζουμε κενές παρενθέσεις.