Διάλεξη #7: Συμβολοσειρές.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Τύποι δεδομένων και τελεστές,
Advertisements

Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
Στοιχειώδεις Δομές Δεδομένων TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Τύποι δεδομένων στη Java • Ακέραιοι.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Αντικείμενα ως ορίσματα.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα.
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 9: Διανύσματα και λίστες.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Constructors, equals, toString Αντικείμενα ως παράμετροι.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 3: Υλοποίηση μεθόδων.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Εβδομάδα 2: Υπο-τύποι και πολυμορφισμός [sub-typing and polymorphism]
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 7: Συμβολοσειρές.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Συλλογές.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 11: Εκτέλεση Java χωρίς το BlueJ.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές.
ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ ΠΟΛΥΜΟΡΦΙΣΜΟΣ. ΑΝΑΚΕΦΑΛΑΙΩΣΗ Θεματολόγιο Κληρονομικότητα Παράδειγμα Κληρονομικότητα – Βελτιωμένο Παράδειγμα Ενθυλάκωση : public – private.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Copy Constructor Deep and Shallow Copies.
ΟΣΣ Δεκεμβρίου 2004 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Deep and Shallow Copies.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 4: Συμβολοσειρές και Δομές Ελέγχου. Διδάσκων: Νικόλαος Θ Λιόλιος,
Βασικά στοιχεία της Java
Κεφάλαιο 3 Τύποι Δεδομένων - Τελεστές. Πρωτογενείς τύποι δεδομένων: int, float, double, chars ΤύποςΌνομαΜέγεθος byte 8-bit signed, short 16-bit.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 8: Κατασκευαστές. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής. Τμήμα.
Αντικειμενοστραφής Προγραμματισμός Ι
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Εισαγωγή στον Προγ/μό Η/Υ
Εισαγωγή στον Προγ/μό Υπολογιστών
Βασικές έννοιες Αντικειμενοστραφούς Προγραμματισμού ΙΙ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Κλάσεις και αντικείμενα
Βασικές έννοιες Αντικειμενοστραφούς Προγραμματισμού ΙΙ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΔΟΜΕΣ ΕΛΕΓΧΟΥ(if-else, switch) και Λογικοί τελεστές / παραστάσεις
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγ/μό Υπολογιστών
Πρωτογενείς τύποι δεδομένων
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Κεφάλαιο 10 Streams.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Ειδικά Θέματα στον προγραμματισμό Υπολογιστών
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στη Java (Μέρος Α’)
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Τύποι δεδομένων και τελεστές,
Εξαιρέσεις [Exceptions]
Διάλεξη #3: Υλοποίηση μεθόδων.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Μεταγράφημα παρουσίασης:

Διάλεξη #7: Συμβολοσειρές

Τιμές βασικών τύπων και αναφορές Δεδομένα βασικών τύπων αποθηκεύονται κατ’ αξία ενώ τα αντικείμενα αποθηκεύονται κατ΄αναφορά: age = 42; father = new Person(); name = "Fred"; 42 Person "Fred"

Η εντολή καταχώρησης (για 3η φορά) Η εντολή καταχώρησης (για 3η φορά) Η καταχώρηση γίνεται κατ’ αξία για τους βασικούς τύπους δεδομένων και κατ’ αναφορά για τύπους αντικειμένων age = 42; myAge = age; p1 = new Person(); p2 = p1; 42 42 age myAge Person p1 p2

Ψευδωνυμία (Aliasing) Person p1 = new Person("Jack"); Person p2; p2 = p1; p2.changeName("Jill"); p1.printName(); Τι θα τυπωθεί;

Jill Ψευδωνυμία "Jack" "Jill" Person p1 = new Person("Jack"); p2 = p1; p2.changeName("Jill"); p1.printName(); p1 "Jack" "Jill" p2 Jill

Βασικοί τύποι Τι θα τυπωθεί; int i1 = 42; int i2; i2 = i1; i2++; System.out.println(i1); Τι θα τυπωθεί;

System.out.println(i1); Βασικοί τύποι int i1 = 42; int i2; i2 = i1; i2++; System.out.println(i1); i1 42 i2 42 43 42

Ψευδωνυμία μέσω παραμέτρων Ψευδωνυμία μέσω παραμέτρων Board board = new Board("Blocks"); GameEngine engine = new GameEngine(board); System.out.println(board.getTitle()); public GameEngine(Board theBoard) { gameBoard = theBoard; theBoard.setTitle("My Game"); } Τι θα τυπωθεί;

Ψευδωνυμία μέσω παραμέτρων Ψευδωνυμία μέσω παραμέτρων class Game Board board = new Board("Blocks"); GameEngine engine = new GameEngine(board); System.out.println(board.getTitle()); public GameEngine(Board theBoard) { } class GameEngine gameBoard = theBoard; My Game theBoard.setTitle("My Game"); [Board] "Blocks" method: GameEngine: theBoard "My Game" board [GameEngine] gameBoard engine

Τι ισχύει για αντικείμενα τύπου String;

Τα Strings δεν μπορεί να μεταλλαχθούν Τα Strings δεν μπορεί να μεταλλαχθούν [immutable] Τα αντικείμενα που δεν μπορεί να μεταλλαχθούν έχουν σταθερή κατάσταση; Η κατάστασή τους δεν μπορεί να μεταβληθεί.

Βασικές μέθοδοι Οι πιο συχνά χρησιμοποιούμενες μέθοδοι είναι: public int length(); public char charAt(int index); public int indexOf(char ch); public int indexOf(char ch, int start); public int lastIndexOf(char ch); public int lastIndexOf(char ch, int start);

Μεταβολή αντικειμένων τύπου String "Fred" String String s1, s2; s1 = "Fred"; s2 = s1; s2.toUpperCase(); System.out.println(s1); s1 s2 Fred ή FRED ?

Μεταβολή αντικειμένων τύπου String "Fred" String String s1, s2; s1 = "Fred"; s2 = s1; s2.toUpperCase(); System.out.println(s1); ΛΑΘΟΣ! s1 s2 Fred ή FRED ?

Μεταβολή αντικειμένων τύπου String Τα αντικείμενα τύπου String δεν μπορεί να μεταβληθούν. Όλες οι «τροποποιήσεις» επιστρέφουν ένα νέο αντικείμενο τύπου String. String s1, s2; s1 = "Fred"; s2 = s1; s2 = s2.toUpperCase(); System.out.println(s1); "Fred" String "FRED" String s1 s2

«Τροποποίηση» των Strings Αντικείμενα τύπου String δεν μπορεί ποτέ να τροποποιηθούν. Για μεγαλύτερη ακρίβεια, θα έπρεπε να αναφερόμαστε στη «δημιουργία συναφών Strings».

Δημιουργία συναφών Strings String replace(char oldChar, char newChar); String toLowerCase(); String toUpperCase(); String trim();

Ταύτιση σε αντιπαράθεση με ισότητα Για αντικείμενα τύπου διαφορετικού από String: “Jill” Person “Fred” Person person1 person2 person1 == person2 ?

Ταύτιση σε αντιπαράθεση με ισότητα Για αντικείμενα τύπου διαφορετικού από String: "Fred" Person "Fred" Person person1 person2 person1 == person2 ?

Ταύτιση σε αντιπαράθεση με ισότητα Για αντικείμενα τύπου διαφορετικού από String: "Fred" Person "Fred" Person person1 person2 person1 == person2 ?

Ταύτιση σε αντιπαράθεση με ισότητα για Strings String command="quit"; if (command == "quit") return true; else return false; if ("qui" + "t"== "quit") return true; else return false;  True  True Αποφύγετε την χρήση "==" με String String command="qui"; if (command + "t" == "quit") return true; else return false;  False

Ταύτιση σε αντιπαράθεση με ισότητα για Strings command = "quit"; if(command.equals("quit")) { ... } equals ελέγχει για ισότητα "quit" String "quit" String equals ? command  true

Μετατροπή από/σε String • Συχνά είναι αναγκαία η μετατροπή ενός αντικειμένου τύπου String σε αντικείμενα άλλων τύπων (Integer, Boolean, …), και αντίστροφα. • Ο τύπος-αποτέλεσμα της μετατροπής περιέχει την μέθοδο που θα κληθεί για να πραγματοποιήσει την μετατροπή. (Παράδειγμα: μετατροπή από String σε Integer μια μέθοδο στην κλάση Integer.)

Μέθοδοι μετατροπής από/σε String boolean String.valueOf(boolean) int String.valueOf(int) long String.valueOf(long) float String.valueOf(float) double String.valueOf(double) Μετατροπή σε από String boolean new Boolean(String).booleanValue() int Integer.parseInt(String, int base) long Long.ParseLong(String, int base) float new Float(String).floatValue() double new Double(String).doubleValue()

Το πρόβλημα της συνεχούς μετατροπής name = title + " " + firstName + " " + lastName; "Mr" "Fred" "Simpson" Η δημιουργία πολλών ενδιάμεσων αντικειμένων είναι αντιπαραγωγική "Mr " "Mr Fred" "Mr Fred " "Mr Fred Simpson" H κλάση StringBuffer: “Mutable Strings”.