ΕΠΛ233 ΠΟΛΥΜΟΡΦΙΣΜΟΣ
|
|
- Ὠριγένης Γεωργιάδης
- 8 χρόνια πριν
- Προβολές:
Transcript
1 ΠΟΛΥΜΟΡΦΙΣΜΟΣ
2 2 ΠΟΛΥΜΟΡΦΙΣΜΟΣ Από τις βασικότερες έννοιες των αντικειμενοστρεφών γλωσσών προγραμματισμού, μετά την αφαιρετικότητα των δεδομένων (data abstraction) και την κληρονομικότητα (inheritance). Ο πολυμορφισμός σχετίζεται με την αποσύνδεση των μεθόδων από τους τύπους.
3 3 Τα πλεονεκτήματα της αναβάθμισης (upcasting) import java.util.*; class Instrument { public void play() { static void tune(instrument i) { i.play(); class Wind extends Instrument { public static void main(string[] args) { Wind flute = new Wind(); // Upcasting Instrument.tune(flute); Γιατί να μην χρησιμοποιήσουμε υπερφόρτωση στον ορισμό της tune(), ώστε αυτή να δέχεται παράμετρο κλάσης Wind;
4 4 Χωρίς upcasting public class Note { private int value; private Note(int val) { value = val; public static final Note MIDDLE_C = new Note(0), C_SHARP = new Note(1), B_FLAT = new Note(2);
5 4 Χωρίς upcasting public class Note { private int value; private Note(int val) { value = val; public static final Note MIDDLE_C = new Note(0), C_SHARP = new Note(1), B_FLAT = new Note(2); package polymorphism.music; public enum Note { MIDDLE_C, C_SHARP, B_FLAT
6 5 Παράδειγµα (συνέχεια) package polymorphism.music; class Instrument { public void play(note n) { mypr("inst.play()"); package polymorphism.music; class Wind extends Instrument { public void play(note n) { mypr("wind.play()");
7 6 Παράδειγµα (συνέχεια) package polymorphism.music; class Stringd extends Instrument { public void play(note n){ mypr("str.play()"); class Brass extends Instrument { public void play(note n) { mypr("brass.play()");
8 Παράδειγµα (συνέχεια) public class Music2 { public static void tune(wind i) { i.play(note.middle_c); public static void tune(stringd i){ i.play(note.middle_c); public static void tune(brass i){ i.play(note.middle_c); public static void main(string[] args){ Wind flute = new Wind(); Stringed violin = new Stringed(); Brass frenchhorn = new Brass(); tune(flute); // No upcasting tune(violin); tune(frenchhorn); 7
9 8 Συνέπειες απουσίας upcasting Χρειάζεται να γράψουμε ειδικές μεθόδους tune για κάθε νέα κλάση που κληρονομεί από την Instrument. Δηλ. πρέπει να γράψουμε περισσότερο κώδικα. Επίσης, αν θελήσουμε να προσθέσουμε καινούριες μεθόδους (σαν την tune) ή καινούριες κλάσεις (τύπου Instrument), υπάρχει πολλή δουλειά που πρέπει να κάνουμε. Ο μεταφραστής δεν θα μας ενημερώσει αν δεν κάνουμε υπερφόρτωση όλων των μεθόδων της Instrument. Το upcasting και ο πολυμορφισμός μας επιτρέπουν να ορίσουμε µια µέθοδο, στην κλάση-βάσης, και αυτή τη μέθοδο να την χρησιμοποιήσουμε και σε αντικείμενα κλάσεων-κληρονόμων.
10 9 Βασικό Ερώτημα static void tune(instrument i) { i.play(note.middle_c); Όπως είπαμε, στην tune μπορούμε να "περάσουμε" χειριστήρια αντικειμένων που κληρονομούν από την κλάση Instrument. Εφόσον μια κλάση-κληρονόμος καθορίζει τη "δική" της μέθοδο play, η κλήση της play μέσα από την tune θα γίνει σύμφωνα με αυτή την "ειδική" μέθοδο, όταν στην tune περάσουμε χειριστήριο της κλάσης-κληρονόμου. Πώς μπορεί να γνωρίζει ο μεταγλωττιστής ότι η παράμετρος που περνάει σε κάποιο σημείο προς την tune είναι κλάσης Wind και όχι Brass ή Stringed, ώστε να καλέσει την κατάλληλη tune;
11 10 Όψιμη (Καθυστερημένη) Πρόσδεση Ο μεταφραστής δεν μπορεί να γνωρίζει στο χρόνομετάφρασης ποιές παράμετροι θα περαστούν στην tune και πότε... Η λύση που υιοθετείται από τις Α/Σ ΓΠ λέγεται όψιµη πρόσδεση (late binding) ή δυναµική πρόσδεση ή πρόσδεση στον χρόνο εκτέλεσης (run-time binding). Η όψιμη πρόσδεση στηρίζεται σε έναν μηχανισμό, ο οποίος μπορεί να καθορίσει τον τύπο ενός αντικειμένου την στιγμή της εκτέλεσης, και να καλέσει την κατάλληλη μέθοδο. Στην Java η όψιμη πρόσδεση εφαρμόζεται για όλες τις μεθόδους, εκτός των static και των final.
12 Πολυμορφική συμπεριφορά Δεδομένου ότι η Java υποστηρίζει όψιμη πρόσδεση μεθόδων, μπορείτε να αναπτύσσετε μεθόδους για μια βασική κλάση (base class) γνωρίζοντας ότι όλοι οι κληρονόμοι της θα μπορούν να χρησιμοποιούν σωστά τον ίδιο κώδικα. Με άλλα λόγια, μπορείτε να στέλνετε ένα μήνυμα σε ένα αντικείμενο, και να αφήνετε το αντικείμενο ν' αποφασίσει πώς θα «εκτελέσει» το μήνυμα. Μ. Δικαιάκος 11
13 12 Πολυμορφικές κλήσεις Cast "up" Shape draw() erase() Χειριστήριο Circle Circle draw() erase() Square draw() erase() Line draw() erase() Shape s = new Circle(); // upcasting s.draw(); // polymorphic call results to calling Circle.draw Η κλήση της μεθόδου s.draw(), η οποία έχει οριστεί στην κλάσηκληροδότη, έχει ως αποτέλεσμα την κλήση της Circle.draw(), λόγω όψιμης πρόσδεσης.
14 13 Πολυμορφικές κλήσεις Cast "up" Shape draw() erase() Χειριστήριο Circle Circle draw() erase() hello() Square draw() erase() Line draw() erase() Shape s = new Circle(); // upcasting s.hello(); Προκαλεί σφάλµα µετάφρασης
15 14 Πολυμορφικές κλήσεις public class Shapes { public static Shape randshape() { switch((int)(math.random() * 3)) { default: case 0: return new Circle(); // upcasting case 1: return new Square(); // upcasting case 2: return new Triangle(); // upcasting public static void main(string[] args) { Shape[] s = new Shape[9]; for (int i = 0; i < s.length; i++) s[i] = randshape(); for (int i = 0; i < s.length; i++) s[i].draw(); // polymorphic calls
16 Πολυμορφισμός κ. επεκτασιμότητα Η κληρονομικότητα και ο πολυμορφισμός απλοποιούν την πρόσθεση νέων κλάσεων, που κληρονομούν από την κοινή κλάση-κληροδότη. Οι μέθοδοι που διατίθενται στην διαπροσωπεία της κλάσης-κληροδότη δεν χρειάζεται ν' αλλάξουν για την εξυπηρέτηση των νέων κλάσεων. Μ. Δικαιάκος 15
17 16 Πολυμορφισμός κ. επεκτασιμότητα Instrument void play() String what() void adjust() Wind void play() String what() void adjust() Percussion void play() String what() void adjust() Stringed void play() String what() void adjust() WoodWind void play() String what() void adjust() Brass void play() String what() void adjust()
18 17 Πολυμορφισμός κ. επεκτασιμότητα Π.χ. οι κλάσεις Brass και WoodWind μπορούν να χρησιμοποιήσουν την tune, η οποία έχει οριστεί πριν καν την δημιουργία τους. Ακόμη κι αν η tune() βρίσκεται σε διαφορετικό αρχείο και προσθέσουμε νέες μεθόδους στην διαπροσωπεία τής Instrument, η tune() θα δουλέψει σωστά χωρίς επαναμετάφραση.
19 18 Επεκτασιµότητα (παράδειγµα) import java.util.*; class Instrument { public void play() { public String what() { public void adjust() { class Wind extends Instrument { public void play() { public String what() { public void adjust() { class Percussion extends Instrument { public void play() { public String what() { public void adjust() {
20 19 Επεκτασιµότητα (παράδειγµα) class Stringed extends Instrument { public void play() { public String what() { public void adjust() { class Brass extends Wind { public void play() { public void adjust() { class Woodwind extends Wind { public void play() { public String what() {
21 20 Επεκτασιµότητα (παράδειγµα) public class Music3 { static void tune(instrument i) { //... i.play(); static void tuneall(instrument[] e) { for(int i = 0; i < e.length; i++) tune(e[i]); public static void main(string[] args){ Instrument[] orchestra = new Instrument[5]; int i = 0; orchestra[i++] = new Wind(); orchestra[i++] = new Percussion(); orchestra[i++] = new Stringed(); orchestra[i++] = new Brass(); orchestra[i++] = new Woodwind(); tuneall(orchestra); Doesn't care about type, so new types added to the system still work right Upcasting during addition to the array
22 21 Παρατηρήσεις για κληρονομικότητα Μια υποκλάση κληρονομεί όλα τα μέλη (πεδία δεδομένων και μεθόδους) της υπερκλάσης της. Ωστόσο, η υποκλάση μπορεί να μην έχει πρόσβαση σε κάποιο κληρονομημένο μέλος, όπως π.χ. στα ιδιωτικά (private) μέλη που κληρονομούνται από την υπερκλάση. Σημείωση: οι κατασκευαστές δεν θεωρούνται μέλη των κλάσεων και γιʼ αυτό δεν κληρονομούνται.
23 22 Κληρονομικότητα και προσδιοριστές πρόσβασης Η κλάση-κληρονόμος μπορεί να υπερσκελίσει (override) την λειτουργικότητα μιας μεθόδου της υπερκλάσης της δηλώνοντας μια μέθοδο με την ίδια υπογραφή και τον ίδιο τύπο επιστροφής με αυτόν της μεθόδου της υπερκλάσης. Η δυνατότητα της υπερσκέλισης μας επιτρέπει να κληρονομούμε συμπεριφορές από τις υπερκλάσεις μας και να τροποποιούμε αυτές τις συμπεριφορές μόνο όταν το κρίνουμε αναγκαίο. Ο προσδιοριστής πρόσβασης της υπερσκελίζουσας μεθόδου μιας υποκλάσης, μπορεί να δίνει τα ίδια ή περισσότερα δικαιώματα πρόσβασης με αυτά της μεθόδου της υπερκλάσης, όχι όμως λιγότερα. Π.χ: μια friendly μέθοδος της υπερκλάσης μπορεί να γίνει public αλλά όχι private
24 23 Κληρονομικότητα και προσδιοριστές πρόσβασης Shape public draw() erase() Circle draw() private erase() Square public draw() public erase() Line public draw() private erase() Αν επιχειρήσουμε να αλλάξουμε (περιορίσουµε) τις δικαιοδοσίες πρόσβασης σε μεθόδους της Shape: θα πάρουμε μύνημα σφάλματος: δεν μπορούμε να περιορίσουμε την ορατότητα των μελών της διαπροσωπείας της Shape!
25 Πολυμορφισμός και Πεδία Δεδομένων class Super { public int field = 0; public int getfield() { return field; class Sub extends Super { public int field = 1; public int getfield() { return field; public int getsuperfield() { return super.field; public class Field Access { public static void main(string[] args) { Super sup = new Sub(); // upcasting System.out.println(sup.field + + sup.getfield()); Sub sub = new Sub(); System.out.println(sub.field + + sub.getfield() + + sub.getsuperfield()); Μ. Δικαιάκος Η απευθείας πρόσβαση σε ένα πεδίο δεδομένων επιλύεται στον χρόνο 24
26 Επισκίαση (hiding) vs. Υπερσκέλιση (overriding) Αν μια υποκλάση ορίζει μια στατική μέθοδο με την ίδια υπογραφή με μια επίσης στατική μέθοδο τής υπερκλάσης της, η στατική μέθοδος της υποκλάσης επισκιάζει (hides) την ομώνυμη μέθοδο της υπερκλάσης. Η διαφοροποίηση ανάμεσα στην επισκίαση (hiding) και την υπερσκέλιση (overriding) είναι λεπτή και έχει σημαντικές προεκτάσεις. Μ. Δικαιάκος 25
27 26 Επισκίαση vs. Υπερσκέλιση (παράδειγμα) public class Animal { public static void hide() { System.out.println( hide() in Animal"); public void override() { System.out.println("override() in Animal");
28 27 Επισκίαση vs. Υπερσκέλιση (παράδειγμα) public class Cat extends Animal { public static void hide() { System.out.println("hide() in Cat."); public void override() { System.out.format( override() in Cat."); public static void main(string[] args) { Animal myanimal = new Cat(); myanimal.hide(); // BAD STYLE Animal.hide(); // Better! myanimal.override();
29 28 Επισκίαση vs. Υπερσκέλιση Στην περίπτωση κλήσης μιας στατικής μεθόδου πάνω σε χειριστήριο x κάποιας κλάσης Α, το σύστημα εκτέλεσης θα καλέσει τη στατική μέθοδο που δηλώνεται ως μέλος της κλασης Α, ασχέτως του τύπου του αντικειµένου στο οποίο παραπέµπει το χειριστήριο. Στην περίπτωση κλήσης μιας μη-στατικής μεθόδου πάνω σε χειριστήριο x κάποιας κλάσης Α, το σύστημα εκτέλεσης θα καλέσει τη μέθοδο που ανήκει στην κλάση του αντικειμένου στο οποίο παραπέμπει το x. Μια μη στατική μέθοδος δεν επιτρέπεται να υπερσκελίσει μια στατική μέθοδο. Μια στατική μέθοδος δεν επιτρέπεται να επισκιάσει μια μη στατική μέθοδο.
30 29 Defining a Method with the Same Signature as a Superclass's Method Instance Method Static Method Superclass Instance Method Overrides (return type must be a subtype of the return type of the superclass's method) - υπερσκελίζει Generates a compiletime error Superclass Static Method Compile-time error Hides - Επισκιάζει
31 30 Κατασκευαστές και Πολυμορφισμός Ο κατασκευαστής ενός κληροδότη καλείται πάντοτε μέσα από τον κατασκευαστή του κληρονόμου του. Έτσι, δημιουργείται μια αλυσίδα κλήσεων προς τα ανώτερα στρώματα της ιεραρχίας κληρονομικότητας. Η αλυσίδα αυτή των κλήσεων διασφαλίζεται από τον μεταγλωττιστή, ώστε να εξασφαλιστεί η σωστή κατασκευή αντικειμένων κλάσεων-κληρονόμων. Η σειρά των κλήσεων στην περίπτωση κατασκευής ενός αντικειμένου κάποιας κλάσης κληρονόμου Α, είναι η ακόλουθη: Κλήση του κατασκευαστή της υπερκλάσης της Α. Αναδρομική επανάληψη της κλήσης ώστε να κατασκευαστεί πρώτα το υποαντικείμενο της ρίζας της ιεραρχίας, ακολουθούμενο από το υποαντικείμενο του επόμενου κληρονόμου, κοκ. Εκτέλεση των αρχικοποιητών (initializers) της Α, με βάση την σειρά δήλωσης των αντίστοιχων πεδίων της κλάσης. Κλήση του «σώματος» του κατασκευαστή Α().
32 31 Παράδειγμα class Meal { Meal() { System.out.println("Meal()"); class Bread { Bread() { System.out.println("Bread()"); class Cheese { Cheese() { System.out.println("Cheese()"); class Lettuce {Lettuce() { System.out.println("Lettuce()"); class Lunch extends Meal { Lunch() { System.out.println("Lunch()"); class PortableLunch extends Lunch { PortableLunch() {System.out.println("PortableLunch()"); class Sandwich extends PortableLunch { Bread b = new Bread(); Cheese c = new Cheese(); Lettuce l = new Lettuce(); Sandwich() { System.out.println("Sandwich()"); public static void main(string[] args) { new Sandwich();
33 32 Παράδειγμα (έξοδος) Meal() Lunch() ProtableLunch() Bread() Cheese() Lettuce() Sandwitch()
34 33 Παράδειγμα ΙΙ class Test extends Object { /** Creates new Test */ public Test() { System.out.println("Test()"); void foo() { System.out.println("foo in Test");
35 34 Παράδειγμα ΙΙ public class Test1 extends Test { public Test1() { System.out.println("Test1"); public Test1(Test tt) { System.out.println("Test1.2"); tt.foo(); void foo() { System.out.println("foo in Test1"); public static void main(string args[]) { System.out.println("main"); Test tt1 = new Test(); Test tt2 = new Test1(); Test tt3 = new Test1(tt1); Test tt4 = new Test1(tt2);
36 35 Πολυμορφικές κλήσεις μέσα σε κατασκευαστές abstract class Glyph { abstract void draw(); Glyph() { System.out.println("Glyph() before draw()"); draw(); System.out.println("Glyph() after draw()");
37 Πολυμορφικές κλήσεις μέσα σε κατασκευαστές class RoundGlyph extends Glyph { int radius = 1; RoundGlyph(int r) { radius = r; System.out.println("RoundGlyph.RoundGlyph(), radius = " + radius); void draw() { System.out.println("RoundGlyph.draw(), radius = " + radius); Μ. Δικαιάκος public class PolyConstructors { public static void main(string[] args) { new RoundGlyph(5); 36
38 37 Πολυμορφικές κλήσεις μέσα σε κατασκευαστές Glyph() before draw() RoundGlyph.draw(), radius = 0 Glyph() after draw() RoundGlyph.RoundGlyph(), radius = 5 Η κλήση μιας δυναμικά προσδενόμενης (αφαιρετικής) μεθόδου μέσα στον κατασκευαστή ενός αντικειμένου, χρησιμοποιεί την υπερσκελισμένη έκδοση της μεθόδου. Η διαδικασία αρχικοποίησης αντικειμένου έχει ως εξής: Δέσμευση χώρου για το αντικείμενο και αρχικοποίηση των πεδίων του σε μηδέν. Κλήση κατασκευαστών κληροδοτών. Κλήση υπερσκελισμένων μεθόδων (π.χ. tης draw()). Αρχικοποίηση πεδίων δεδομένων, με τη σειρά της δήλωσής τους. Κλήση του σώματος του κατασκευαστή του κληρονόμου.
39 38 Πολυμορφικές κλήσεις μέσα σε κατασκευαστές Για να αποφεύγουμε αυτές τις «δυσάρεστες» συνέπειες, καλό είναι να ακολουθούμε τον ακόλουθο κανόνα για τους κατασκευαστές των αντικειμένων: Κάνε όσο λιγότερα μπορείς για να φέρεις ένα αντικείμενο σε καλή κατάσταση, κι αν είναι δυνατόν μην καλείς καμιά μέθοδο στο σώμα του κατασκευαστή. Οι μόνες ασφαλείς μέθοδοι για να κληθούν μέσα σε ένα κατασκευαστή, είναι οι τελικές μέθοδοι της κλάσης κληροδότη του.
40 Συμμεταβλητοί τύποι επιστροφής Covariant return types: Μια υπερσκελισμένη μέθοδος σε κάποια κλάσηκληρονόμο μπορεί να επιστρέφει τιμή τύπου, ο οποίος τύπος να είναι κληρονόμος του τύπου που επιστρέφει η μέθοδος της κλάσης κληροδότη: class Grain { public String tostring() { return "Grain"; class Wheat extends Grain { public String tostring() { return "Wheat"; class Mill { Grain process() { return new Grain(); class WheatMill extends Mill { Wheat process() { return new Wheat(); public class CovariantReturn { public static void main(string[] args) { Mill m = new Mill(); Grain g = m.process(); System.out.println(g); m = new WheatMill(); g = m.process(); System.out.println(g); Μ. Δικαιάκος 39
41 Σχεδιασμός με κληρονομικότητα Κληρονομικότητα και πολυμορφισμός δεν είναι ο μοναδικός τρόπος για την επαναχρησιμοποίηση μιας υπάρχουσας κλάσης. Σε αρκετές περιπτώσεις είναι προτιμότερη η χρήση της σύνθεση, καθώς τότε είναι δυνατή η δυναµική επιλογή τύπου (άρα και συμπεριφοράς). Π.χ. State design pattern: class Actor { public void act() { class HappyActor extends Actor { public void act() { print("happyactor"); class SadActor extends Actor { public void act() { print("sadactor"); class Stage { private Actor actor = new HappyActor(); public void change() { actor = new SadActor(); public void performplay() { actor.act(); public class Transmogrify { public static void main(string[] args) { Stage stage = new Stage(); stage.performplay(); stage.change(); stage.performplay(); 40
42 41 Καθαρή κληρονομικότητα vs. Επέκταση Οι κληρονόμοι δεν επεκτείνουν την διαπροσωπεία του κληροδότη (υπερσκέλιση). Οι κληρονόµοι επεκτείνουν την διαπροσωπεία του κληροδότη. Αδύνατη η χρήση των νέων µεθόδων, µέσω Upcasting
43 42 Υποβάθμιση (downcasting)
44 42 Υποβάθμιση (downcasting) Όταν χρησιμοποιούμε upcasting (αναβάθμιση), ανεβαίνουμε την κλίμακα της κληρονομικότητας και χάνουμε την πληροφορία σχετικά με τον τύπο του αντικειμένου που γίνεται upcast.
45 42 Υποβάθμιση (downcasting) Όταν χρησιμοποιούμε upcasting (αναβάθμιση), ανεβαίνουμε την κλίμακα της κληρονομικότητας και χάνουμε την πληροφορία σχετικά με τον τύπο του αντικειμένου που γίνεται upcast. Η αναβάθμιση είναι ασφαλής, αφού ο κληροδότης δεν μπορεί να έχει ευρύτερη διαπροσωπεία από τους κληρονόμους του.
46 42 Υποβάθμιση (downcasting) Όταν χρησιμοποιούμε upcasting (αναβάθμιση), ανεβαίνουμε την κλίμακα της κληρονομικότητας και χάνουμε την πληροφορία σχετικά με τον τύπο του αντικειμένου που γίνεται upcast. Η αναβάθμιση είναι ασφαλής, αφού ο κληροδότης δεν μπορεί να έχει ευρύτερη διαπροσωπεία από τους κληρονόμους του. Σε περιπτώσεις που χρησιμοποιήσουμε αναβάθμιση, είναι χρήσιμο να μπορούμε να κατεβούμε την κλίμακα της κληρονομικότητας και να βρούμε τον τύπο του αντικειμένου που αναβαθμίστηκε.
47 42 Υποβάθμιση (downcasting) Όταν χρησιμοποιούμε upcasting (αναβάθμιση), ανεβαίνουμε την κλίμακα της κληρονομικότητας και χάνουμε την πληροφορία σχετικά με τον τύπο του αντικειμένου που γίνεται upcast. Η αναβάθμιση είναι ασφαλής, αφού ο κληροδότης δεν μπορεί να έχει ευρύτερη διαπροσωπεία από τους κληρονόμους του. Σε περιπτώσεις που χρησιμοποιήσουμε αναβάθμιση, είναι χρήσιμο να μπορούμε να κατεβούμε την κλίμακα της κληρονομικότητας και να βρούμε τον τύπο του αντικειμένου που αναβαθμίστηκε. Η διαδικασία αυτή λέγεται downcasting-υποβάθμιση και εμπεριέχει τον κίνδυνο να υποβαθμίσουμε ένα χειριστήριο στο λάθος τύπο, στέλνοντας στο αντίστοιχο αντικείμενο ένα μήνυμα που δεν μπορεί να γίνει δεκτό.
48 42 Υποβάθμιση (downcasting) Όταν χρησιμοποιούμε upcasting (αναβάθμιση), ανεβαίνουμε την κλίμακα της κληρονομικότητας και χάνουμε την πληροφορία σχετικά με τον τύπο του αντικειμένου που γίνεται upcast. Η αναβάθμιση είναι ασφαλής, αφού ο κληροδότης δεν μπορεί να έχει ευρύτερη διαπροσωπεία από τους κληρονόμους του. Σε περιπτώσεις που χρησιμοποιήσουμε αναβάθμιση, είναι χρήσιμο να μπορούμε να κατεβούμε την κλίμακα της κληρονομικότητας και να βρούμε τον τύπο του αντικειμένου που αναβαθμίστηκε. Η διαδικασία αυτή λέγεται downcasting-υποβάθμιση και εμπεριέχει τον κίνδυνο να υποβαθμίσουμε ένα χειριστήριο στο λάθος τύπο, στέλνοντας στο αντίστοιχο αντικείμενο ένα μήνυμα που δεν μπορεί να γίνει δεκτό. Χρειάζεται λοιπόν κάποιος τρόπος ελέγχου αν η υποβάθμιση είναι έγκυρη. Ο έλεγχος αυτός γίνεται από την JAVA
49 43 Υποβάθμιση (downcasting)
50 44 Downcasting import java.util.*; class Useful { public void f() { public void g() { class MoreUseful extends Useful { public void f() { public void g() { public void u() { public void v() { public void w() {
51 45 Downcasting public class RTTI { public static void main(string[] args) { Useful[] x = { new Useful(), new MoreUseful() ; x[0].f(); x[1].g(); x[1].u(); // Compile-time: method not found in Useful ((MoreUseful)x[1]).u(); // Downcast/RTTI ((MoreUseful)x[0]).u(); // Exception thrown
ΑΤΕΙ Θεσσαλονίκης Τμήμα Πληροφορικής
Αντικειμενοστρεφής Προγραμματισμός adamidis@it.teithe.gr Abstract classes, δομητές και πολυμορφισμός, finalize, downcasting Αφηρημένες (abstract) κλάσεις Είναι πάντα βασικές κλάσεις μιας ιεραρχίας κλάσεων.
Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Υπερφόρτωση (Overloading), Μεθόδων (Method Overloading), Τελεστών (Operator Overloading (C++, C#))
Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 12: Κληρονομικότητα (Inheritance) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κληρονομικότητα και Επαναχρησιμοποίηση - Υποκλάσεις/Υπερκλάσεις - Απόκρυψη ονομάτων - Το super, protected
ΠΟΛΥΜΟΡΦΙΣΜΟΣ. Chapter 8, Savitch. Περίγραμμα. Introduction to Polymorphism. Introduction to Polymorphism. Βασικό Ερώτημα
Περίγραμμα ΠΟΛΥΜΟΡΦΙΣΜΟΣ Chapter 8, Savitch Itroductio to polymorphism Bidig Polymorphism ad Extesibility Example of Polymorphism: Sale ad DiscoutSale Polymorphism ad static methods Iheritace ad access
ΕΠΛ233 ΔΙΑΠΡΟΣΩΠΕΙΕΣ
ΔΙΑΠΡΟΣΩΠΕΙΕΣ Αφαιρετικές Μέθοδοι Στα προηγούμενα παραδείγματα, οι μέθοδοι της κλάσεως-κληροδότη Instrument είναι "πλασματικές", με την έννοια ότι ο ορισμός τους γίνεται για τον καθορισμό μιας διαπροσωπείας
Υπερφόρτωση (Overloading) Υπέρβαση (Overriding) - Upcasting Downcasting Final classes, methods
(Object Oriented Programming) Υπερφόρτωση (Overloading) Υπέρβαση (Overriding) - Upcasting Downcasting Final classes, methods PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr Περιεχόμενα Μαθήματος
ΕΠΛ233 Επαναχρησιμοποίηση Κλάσεων
Επαναχρησιμοποίηση Κλάσεων 2 Επαναχρησιμοποίηση Κλάσεων Σύνθεση (composition): σε μια κλάση εντάσσουμε ως στοιχεία χειριστήρια άλλων κλάσεων. Κληρονοµικότητα (inheritance): επεκτείνουμε υπάρχουσες κλάσεις,
Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #12
Διάγραμμα κλάσεων [Class diagram] Διάλεξη #12: Υπο-τύποι και πολυμορφισμός [sub-typing and polymorphism] Database Music Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή
Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA
Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Τι θα συζητήσουμε σήμερα Πώς υλοποιούμε συσχετίσεις μεταξύ κλάσεων απλές και πολλαπλές συσχετίσεις κληρονομικότητα Static, final Overloading Overriding Hiding
class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video
ιάγραµµα κλάσεων [Class diagram] Εβδοµάδα 2: Υπο-τύποι και πολυµορφισµός [sub-typing and polymorphism] Database Music Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 1 Σχεδίαση-Ανάπτυξη
ΕΠΛ233 ΠΛΗΡΟΦΟΡΙΑ ΤΥΠΟΥ. Type Information. Μ. Δικαιάκος
ΕΠΛ233 ΠΛΗΡΟΦΟΡΙΑ ΤΥΠΟΥ Type Information 2 Δυναμική Πληροφορία Τύπου Runtime type information (RTTI): μας επιτρέπει να ανακαλύπτουμε και να χρησιμοποιούμε δυναμικά (at run time) πληροφορίες για τον τύπο
ΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ
ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ Μηχανισµός υλοποίησης των σχέσεων γενίκευσης/εξειδίκευσης µεταξύ κλάσεων Η σχέση εξειδίκευσης «υποκλάση-της» (subclass-of)είναι γνωστή σαν σχέση «είναι ένα» (isa) ή «είναι ένα είδος» (ako:
public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);
Κληρονομικότητα Η κληρονομικότητα (inheritance) αποτελεί έναν από τους χαρακτηριστικότερους μηχανισμούς των αντικειμενοστρεφών γλωσσών προγραμματισμού. Επιτρέπει την δημιουργία μιας νέας κλάσης απορροφώντας
Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου
Αντικειμενοστρέφεια Henri Matisse, Harmony in Red, 1908 Κωστής Σαγώνας Νίκος Παπασπύρου Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής
Κληρονομικότητα. Επαναχρησιμοποίηση Κλάσεων. Σύνθεση (παράδειγμα) Σύνθεση. χειριστήρια άλλων κλάσεων.
Επαναχρησιμοποίηση Κλάσεων! Σύνθεση (composition): σε μια κλάση εντάσσουμε ως στοιχεία χειριστήρια άλλων κλάσεων. Κληρονομικότητα Mailbox Message Queue! Κληρονομικότητα (inheritance): επεκτείνουμε υπάρχουσες
Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.
Το πρόγραμμα HelloWorld.java Σχόλια στη Java HelloWorld Παύλος Εφραιμίδης pefraimi ee.duth.gr Java Το πρόγραμμα HelloWorld 1 Java Το πρόγραμμα HelloWorld 2 Σχόλια στη Java ΗγλώσσαJava υποστηρίζει
Οντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 2: Η ΓΛΩΣΣΑ JAVA Κληρονομικότητα ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ
Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι
Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Generic Types Τα Generics έχουν προστεθεί στη JAVA από το 2004 ως μέρος του J2SE 5.0 Με τη χρήση
ΑΤΕΙΘ - ΣΤΕΦ Τμήμα Πληροφορικής
Αντικειμενοστρεφής Προγραμματισμός Παναγιώτης Αδαμίδης adamidis@it.teithe.gr Διασυνδέσεις/Διεπαφές (Interfaces) Γενικά περί διασυνδέσεων (1/2) An interface is a named collection of method declarations
Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA
Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Τι θα συζητήσουμε σήμερα Πώς υλοποιούμε συσχετίσεις μεταξύ κλάσεων απλές και πολλαπλές συσχετίσεις κληρονομικότητα Static, final Overloading Overriding Hiding
ΕΠΛ233 Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA
Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA 2 «Μονάδα Μετάφρασης» 2 «Μονάδα Μετάφρασης» Όταν δημιουργείται ένα αρχείο πηγαίου κώδικα στην Java, το αρχείο καλείται µονάδα µετάφρασης (compilation unit)
Κληρονομικότητα. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Java Κληρονομικότητα 1
Κληρονομικότητα Παύλος Εφραιμίδης pefraimi ee.duth.gr Java Κληρονομικότητα 1 Ιεραρχίες Κλάσεων Στην Java (και γενικότερα στον αντικειμενοστραφή προγραμματισμό) μπορεί από μία να κλάση να δημιουργηθεί
Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#
Εισαγωγή σε αντικειμενοστραφή concepts Και λίγη C# Κλάσεις Κλάση: τύπος δεδομένων που αποτελεί συλλογή πεδίων, ορισμών συναρτήσεων/μεθόδων και ορισμών άλλων τύπων δεδομένων. Αντίστοιχο σκεπτικό με struct
Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #13
Wrapper Classes, Abstract Classes and Interfaces Διάλεξη #13: Μεταβλητές/μέθοδοι κλάσης, αφηρημένες κλάσεις και διαπροσωπείες Μεταβλητές /πεδία κλάσης [class variables] Τα αντικείμενα ανήκουν σε κλάσεις
Αντικειμενοστρεφής Προγραμματισμός
Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Περιεχόμενα Java Classes Java Objects Java
2.1 Αντικειµενοστρεφής προγραµµατισµός
2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί
02 Αντικειμενοστρεφής Προγραμματισμός
02 Αντικειμενοστρεφής Προγραμματισμός Τεχνολογία Λογισμικού Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Εαρινό εξάμηνο 2016 17 Δρ. Κώστας Σαΐδης saiko@di.uoa.gr Αντικειμενοστρέφεια Στον προγραμματισμό object
Αρχές Τεχνολογίας Λογισμικού Εργαστήριο
Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Κωδικός Μαθήματος: TP323 Ώρες Εργαστηρίου: 2/εβδομάδα (Διαφάνειες Νίκου Βιδάκη) 1 JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο?
Κλάσεις. Τροποποιητές, ιασυνδέσεις, Πακέτα. Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων
Κλάσεις Τροποποιητές, ιασυνδέσεις, Πακέτα Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων Υπάρχουν 4τροποποιητές: default, public, private, protected. Default: εν προηγείται τροποποιητής του ονόµατος
Κλάσεις και Αντικείµενα
Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν
Διασυνδέσεις / Διεπαφές. Παναγιώτης Σφέτσος, PhD
(Object Oriented Programming) Διασυνδέσεις / Διεπαφές PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr Περιεχόμενα Μαθήματος Διεπαφές/Διασυνδέσεις (Interfaces) 2 Διεπαφές/Διασυνδέσεις (Interfaces)
Προγράμματα με δομή Κληρονομικότητας
Προγράμματα με δομή Κληρονομικότητας Η μέθοδος print της εφαρμογής DoME Η μέθοδος print στην κλάση Item τυπώνει: title: A Swingin Affair (64 mins) my favorite Sinatra album title: O Brother, Where Art
Βασικά της γλώσσας JAVA
17 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη
ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης
ΠΟΛΥΜΟΡΦΙΣΜΟΣ Λόγω της θεμελιώδους σημασίας της έννοιας του πολυμορφισμού (polymorphism) στην αντικειμενοστρεφή σχεδίαση, κρίνεται σκόπιμο στο σημείο αυτό του βιβλίου να αναλυθεί εκτενέστερα. Ο πολυμορφισμός
HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1
HelloWorld Παύλος Εφραιμίδης Java Το πρόγραμμα HelloWorld 1 Το πρόγραμμα HelloWorld.java Σχόλια στη Java /** * The HelloWorld class */ class HelloWorld { public static void main(string[] args) { System.out.println("Hello
Εισαγωγή στον Προγ/μό Η/Υ
Εισαγωγή στον Προγ/μό Η/Υ Ενότητα 7 2ο μέρος: Επιπλέον έννοιες σχετικά με αντικείμενα Διδάσκων: Μιχάλης Τίτσιας Περιεχόμενα Τι μπορεί να περιέχει μια τάξη Μέθοδοι τάξης και σταθερές τάξης Πολυμορφισμός
Αντικειµενοστραφής Προγραµµατισµός
Κλάσεις Αντικειµενοστραφής Προγραµµατισµός Κλάσεις Αντικείµενα Ιεραρχία κλάσεων Κλάσεις. Ιδιότητες Συµπεριφορά Ιδιότητες (Μεταβλητές) Συµπεριφορά (Μέθοδοι) Κληρονοµικότητα Μέθοδοι επικάλυψης Η χρήση του
Παύλος Εφραιµίδης. Java. Κληρονοµικότητα
κληρονοµικότητα Παύλος Εφραιµίδης 1 ιεραρχίες κλάσεων Στην (και γενικότερα στον αντικειµενοστρεφή προγραµµατισµό) µπορεί από µία κλάση να δηµιουργηθεί µια νέα κλάση απόγονος που κληρονοµεί όλα τα χαρακτηριστικά
Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 6: Αφαιρετικότητα, Βιβλιοθήκες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Αφαιρετικότητα -Βιβλιοθήκες (packages) Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός
. Μεθοδολογία Προγραμματισμού. Abstract Κλάσεις και Interfaces. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014
.. Μεθοδολογία Προγραμματισμού Abstract Κλάσεις και Interfaces Νικόλαος Πεταλίδης Τμήμα Μηχανικών Η/Υ ΤΕΙ Κεντρικής Μακεδονίας Εισαγωγή Εαρινό Εξάμηνο 2014 Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία
Μέθοδοι. Μέθοδοι ηµιουργοί, Υπερφόρτωση και Υπέρβαση Μεθόδων
Μέθοδοι Μέθοδοι ηµιουργοί, Υπερφόρτωση και Υπέρβαση Μεθόδων Μέθοδοι Οιµέθοδοικαθορίζουντηνσυµπεριφοράενόςαντικειµένου. Τα βασικά µέρη από τα οποία αποτελείται µία µέθοδος είναι τα εξής: Το όνοµα της µεθόδου
ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07
Πρώτοι αριθμοί ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Ένας ακέραιος μεγαλύτερος του 1 είναι πρώτος αν έχει ακριβώς δύο διαιρέτες (τη μονάδα και τον εαυτό του). Πρόβλημα: έλεγχος
Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #11
Κληρονομικότητα [inheritance] Διάλεξη #11: Κληρονομικότητα [inheritance] Τι είναι η κληρονομικότητα; Γιατί είναι σημαντική; Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή
Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 7: Ενθυλάκωση (encapsulation), Τροποποιητές(modifiers) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ενθυλάκωση -Τροποποιητές Πρόσβασης (Access Modifiers), public, protected, private,
(Διαφάνειες Νίκου Βιδάκη)
(Διαφάνειες Νίκου Βιδάκη) JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο? Ανάλυση αντικειμένων Πραγματικά αντικείμενα Καταστάσεις Συμπεριφορές Αντικείμενα στον προγραμματισμό
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κληρονομικότητα Παράδειγμα Στο προηγούμενο παράδειγμα οι φοιτητές και οι καθηγητές είχαν κάποια κοινά στοιχεία Και οι δύο είχαν όνομα Και οι δύο είχαν κάποιο
Σύνθεση και Κληρονομικότητα
Σύνθεση και Κληρονομικότητα Σύνθεση (composition) Κληρονομικότητα (inheritance) Υπερφόρτωση κληρονομημένων μελών Εικονικές συναρτήσεις και Πολυμορφισμός Αφηρημένες (abstract) βασικές κλάσεις 1 Σύνθεση
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΑΝΑΦΟΡΕΣ new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής - Εβδομάδα 1
Στόχοι Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής (Αντικειμενοστρεφής Προγραμματισμός) Αντώνιος Συμβώνης www.math.ntua.gr/~symvonis Καλή γνώση βασικών αρχών προγραμματισμού Καλή γνώση βασικών αρχών αντικειμενοστρεφή
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για τον πίνακα είπαμε ότι
Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 8 : ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ & ΠΟΛΥΜΟΡΦΙΣΜΟΣ
Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 8 : ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ & ΠΟΛΥΜΟΡΦΙΣΜΟΣ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ (1/3) Στην αρχή της κληρονομικότητας βασίζεται ο σχεδιασμός και η υλοποίηση συστημάτων Η κληρονομικότητα χρησιμοποιείται
Η λέξη κλειδί this. Γαβαλάς Δαμιανός dgavalas@aegean.gr
Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #6 η : Η λέξη κλειδί this, υπερφόρτωση μεθόδων, κληρονομικότητα, πολυμορφισμός, υπερκάλυψη, επίπεδα προσπέλασης Γαβαλάς Δαμιανός dgavalas@aegean.gr
I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.
I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κληρονομικότητα Παράδειγμα Στο προηγούμενο παράδειγμα οι φοιτητές και οι καθηγητές είχαν κάποια κοινά στοιχεία Και οι δύο είχαν όνομα Και οι δύο είχαν κάποιο
Κλάσεις. Κατηγορίες Αντικειµένων. Κλάσεις. Φυσικά Αντικείµενα. Χώρος = Οµάδα Φυσικών Αντικειµένων. Πρόγραµµα = Οµάδα
Αντικειµενοστραφής Προγραµµατισµός Αντικείµενα Ιεραρχία κλάσεων. Ιδιότητες Συµπεριφορά Ιδιότητες (Μεταβλητές) Συµπεριφορά (Μέθοδοι) Κληρονοµικότητα Μέθοδοι επικάλυψης Η χρήση του this και του super Αντικειµενοστραφής
Wrapper Classes, Abstract Classes and Interfaces
Wrapper Classes, Abstract Classes and Interfaces Εβδοµάδα 3: Κλάσεις συσκευαστές, αφηρηµένες κλάσεις και διαπροσωπείες Αντικείµενα και µη-αντικείµενα Η Java παρέχει τύπους αντικειµένων και απλούς τύπους
Αρχικοποίηση Αντικειµένων & Κλάσεων στη Java Object Instantiation & Class Initialisation Κώστας Σαΐδης saiko@di.uoa.gr http://daemon.di.uoa.gr/daemon/issue4 Μάρτιος 2004 Η Αρχή είναι το ήµισυ του Παντός
Διάλεξη 5: Κλάσεις και Αντικείμενα. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 5: Κλάσεις και Αντικείμενα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Κλάσεις και Αντικείμενα - Κατασκευή, Πρόσβαση Αντικειμένων - Διαχείριση Μνήμης, Garbage
Αντικειµενοστρεφής Προγραµµατισµός
16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη
Αντικειμενοστρεφής Προγραμματισμός
Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 3/4/2017 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Γιατί έλεγχος πρόσβασης? Προστασία ιδιωτικής πληροφορίας
ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008
ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 Κατασκευαστές (Constructors) Ειδικός τύπος μεθόδων, οι οποίες: - είναι public και έχουν το ίδιο όνομα με αυτό της κλάσης - χρησιμοποιούνται για να αρχικοποιήσουν κάποιες
I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.
I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)
8. Μέθοδοι (Methods)
8. Μέθοδοι (Methods) Χειμερινό εξάμηνο 2012 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Μέθοδοι που παρέχονται από τη τάξη Math του Java API Χρήση στατικών μεθόδων και
Σύνθεση και Κληρονομικότητα
Σύνθεση και Κληρονομικότητα Σύνθεση (composition) Κληρονομικότητα (inheritance) Υπερφόρτωση κληρονομημένων μελών Εικονικές συναρτήσεις και Πολυμορφισμός Αφηρημένες (abstract) βασικές κλάσεις 1 Σύνθεση
Οντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 2: Η ΓΛΩΣΣΑ JAVA Βασικά Δομικά Στοιχεία ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΔΟΜΙΚΑ ΣΤΟΙΧΕΙΑ ΔΟΜΙΚΑ
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κληρονομικότητα Παράδειγμα Στο παράδειγμα με το τμήμα πανεπιστημίου οι φοιτητές και οι καθηγητές είχαν κάποια κοινά στοιχεία Και οι δύο είχαν όνομα Και οι δύο
ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 9: Κληρονομικότητα (Inheritance)
ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 9: Κληρονομικότητα (Inheritance) Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 9 Κληρονομικότητα (Inheritance) Υπάρχουν κλάσεις που
Ειδικά Θέματα Προγραμματισμού
Ειδικά Θέματα Προγραμματισμού Ενότητα 2: Εισαγωγή στον Αντικειμενοστραφή Προγραμματισμό Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης
Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java
Εξάμηνο Μάθημα Τίτλος 2017 2018 Εαρινό Αντικειμενοστραφής Προγραμματισμός Ι Ύλη εργαστηρίου, Ασκήσεις Java Ημερομηνία Εργαστήριο 5 ο Α. Ύλη εργαστηρίου 5.1 Έννοιες αντικειμενοστραφούς προγραμματισμού,
Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES
Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES Κων. Κόκκινος Αντικειμενοστραφής Προγραμματισμός Η ιδέα του αντικειμενοστραφούς προγραμματισμού Αυτόνομες οντότητες Στιγμιότυπα οντοτήτων Παράδειγμα
Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA
Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Τι θα συζητήσουμε σήμερα Αφαιρέσεις στη Java Abstract μέθοδοι και abstract κλάσεις Interfaces (=διασυνδέσεις, διεπαφές) Instanceof Παραδείγματα κώδικα Αφηρημένες
Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2
Ανασκόπηση Μια εφαρμογή Java είναι ένα σύνολο από συνεργαζόμενες κλάσεις Διάλεξη #2: Αντικείμενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή
Υπερφόρτωση Μεθόδων και Πέρασμα Ορισμάτων
6 Υπερφόρτωση Μεθόδων και Πέρασμα Ορισμάτων Τι θα δούμε σε αυτό το μάθημα 1. Μεταβίβαση ορισμάτων σε μέθοδο 1. μεταβίβαση τύπου τιμής 2. μεταβίβαση αναφοράς τιμής-ref και out 3. μεταβίβαση αναφοράς αντικειμένου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις Στατικές μέθοδοι Τι σημαίνει το keyword static στον ορισμό της main μεθόδου? Τι είναι μια στατική μέθοδος?
Προγράμματα με δομή Κληρονομικότητας
Προγράμματα με δομή Κληρονομικότητας Επέκταση ιεραρχίας με νέες κλάσεις Επέκταση ιεραρχίας με νέες κλάσεις Οι κλάσεις που δεν προορίζονται για δημιουργία στιγμιοτύπων, αλλά προορίζονται να χρησιμοποιηθούν
ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Περισσότερα για τις Κλάσεις, τα Αντικείμενα και τις Μεθόδους
ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr Περισσότερα για τις Κλάσεις, τα Αντικείμενα και τις Μεθόδους Σύνοψη των βασικών λειτουργιών
ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ. Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών
ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών ΜΟΡΥΕ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ Διαδικασιακός ή Διαδικαστικός (Procedural)
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors, equals, tostring Constructors (Δημιουργοί) O Constructor είναι μια «μέθοδος» η οποία καλείται όταν δημιουργούμε το αντικείμενο
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Έλεγχος ισότητας για Strings: Διαβάζουμε το String option και θέλουμε ένα loop να συνεχίσει
API: Applications Programming Interface
ÒØ Ñ ÒÓ ØÖ ÔÖÓ» Ñ ÒØ Ñ ÒÓ ØÖ ÔÖÓ Ö ÑÑ Ø Ñ ½ Ö Ø Ò Ô Ö Ø ÒØ Ñ ÒÛÒ ÒÒÓ ôòøóù ÔÖ Ñ Ø Ó ÑÓÙ Ì ÔÓ ÓÑ ÒÛÒ Ì µ (i) ÒÓÐÓØ ÑôÒ (ii)ôö Ü º Ð ØÖ Ò Ò ÖÛÔÓ ØÖ ÔÐ Ò Ø Ó Ó Ù Ø Ñ Ø ººº ½ºÈÖÛØ ÓÒØ Ø ÔÓ int double char
Κάποιες γενικές παρατηρήσεις:
Αντικειμενοστρέφεια Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής γλώσσα προγραμματισμού Αντικειμενοστρεφής προγραμματισμός Αλλά από την άλλη μεριά, για ποιο λόγο
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας Στην άσκηση αυτή θα υλοποιήσετε μια κλάση Geometric η οποία διαχειρίζεται μια γεωμετρική ακολουθία ακεραίων
Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:
Εργαστήριο Java Διδάσκουσα: Πρέντζα Ανδριάνα aprentza@unipi.gr Εργαστηριακοί Συνεργάτες: Γεωργιοπούλου Ρούλα Λύβας Χρήστος roulageorio@ssl-unipi.gr clyvas@unipi.gr Εργαστήριο 3 Java Classes Java Objects
2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008
Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.
Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΑΦΗΡΗΜΕΝΕΣ ΚΛΑΣΕΙΣ
Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΑΦΗΡΗΜΕΝΕΣ ΚΛΑΣΕΙΣ INTERFACES ΕΣΩΤΕΡΙΚΕΣ ΚΛΑΣΕΙΣ (INNER CLASSES) Αφηρημένες Κλάσεις (Abstract Classes) (1/6) Οι αφηρημένες κλάσεις χρησιμοποιούνται για την
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο input
Κληρονομικότητα. Κληρονομικότητα (inheritance) είναι ο τρόπος µε τον οποίο μία τάξη μπορεί να κληρονομήσει ιδιότητες και συμπεριφορά από άλλες τάξεις.
Κληρονομικότητα (inheritance) είναι ο τρόπος µε τον οποίο μία τάξη μπορεί να κληρονομήσει ιδιότητες και συμπεριφορά από άλλες τάξεις. Μέσω της κληρονομικότητας μπορούμε να δημιουργήσουμε µια νέα τάξη (θυγατρική)
Αντικειμενοστρέφεια. Ορισμοί αντικειμενοστρέφειας. Κάποιες γενικές παρατηρήσεις: Περιεχόμενα. Ποιοι είναι οι ορισμοί των παρακάτω;
Αντικειμενοστρέφεια Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής γλώσσα προγραμματισμού Αντικειμενοστρεφής προγραμματισμός Αλλά από την άλλη μεριά, για ποιο λόγο
Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, 1908
Αντικειμενοστρέφεια Henri Matisse, Harmony in Red, 1908 Κωστής Σαγώνας Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής γλώσσα προγραμματισμού Αντικειμενοστρεφής
Πακέτα (Packages) Φωλιασμένες ή Εσωτερικές Κλάσεις (Inner Classes) Παναγιώτης Σφέτσος, PhD
(Object Oriented Programming) Πακέτα (Packages) Φωλιασμένες ή Εσωτερικές Κλάσεις (Inner Classes) PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr Περιεχόμενα Μαθήματος Πακέτα (Packages) Φωλιασμένες
Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6
Ανασκόπηση Μια εφαρµογή Java είναι ένα σύνολο από συνεργαζόµενες κλάσεις Εβδοµάδα 2: Αντικείµενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Προγραµµατισµό,,, Slide 1 Εισαγωγή στον Προγραµµατισµό,,, Slide 2 Ανασκόπηση:
Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA
Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Τι θα συζητήσουμε σήμερα Αφαιρέσεις στη Java Abstract μέθοδοι και abstract κλάσεις Interfaces (=διασυνδέσεις, διεπαφές) Instanceof Παραδείγματα κώδικα Αφηρημένες
ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07
ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1
Διαγράμματα Κλάσεων στη Σχεδίαση
Διαγράμματα Κλάσεων στη Σχεδίαση περιεχόμενα παρουσίασης Αφηρημένες κλάσεις Ιδιότητες Λειτουργίες Απλοί τύποι Συσχετίσεις Εξάρτηση Διεπαφές αφηρημένες κλάσεις Οι αφηρημένες κλάσεις δεν μπορούν να δημιουργήσουν
Αντικειμενοστρεφής Προγραμματισμός
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 6: Σχεδίαση Κλάσεων Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό
ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008
ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008 - Παράδειγμα με switch (το οποίο δείχνει επίσης πότε σε μια άσκηση χρησιμοποιούμε user-input και System.out.println() για έξοδο και πότε χρησιμοποιούμε είσοδο σε μέθοδο
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.