Διάλεξη 13: Επανάληψη για ενδιάμεση εξέταση. Διδάσκων: Παναγιώτης Ανδρέου. ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός
|
|
- Ιολανθη Παχής
- 8 χρόνια πριν
- Προβολές:
Transcript
1 Διάλεξη 13: Επανάληψη για ενδιάμεση εξέταση Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 1
2 Προγράμματα Τα προγράμματα (software), είναι βασικά ένα σύνολο από οδηγίες στον υπολογιστή. Χωρίς τα προγράμματα ο υπολογιστής είναι μία άδεια μηχανή. Δεδομένου ότι ο υπολογιστής δεν καταλαβαίνει την φυσική γλώσσα αλλά μόνο την γλώσσα μηχανής (machine language), χρειαζόμαστε κάποιες ειδικές γλώσσες (γλώσσες προγραμματισμού) για να επικοινωνήσουμε μαζί του. Παραδείγματα γλωσσών προγραμματισμού: C, C++, JAVA, C#, Visual Basic, Fortran, κ.τ.λ. ΠΑΡΑΔΕΙΓΜΑ ΠΡΟΓΡΑΜΜΑΤΟΣ σε JAVA public class HelloWorld{ public static void main(string[] args){ System.out.println("Hello World!!!"); ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 2
3 Τυπικός Κύκλος Ζωής ενός Προγράμματος JAVA ΠΑΡΑΔΕΙΓΜΑ ΠΗΓΑΙΟΥ ΚΩΔΙΚΑ public class HelloWorld{ public static void main(string[] args){ System.out.println("Hello World!!!"); Δημιουργία/Ενημέρωση Πηγαίου Κώδικα Πηγαίος Κώδικας (Αποθήκευση στον δίσκο) Μεταγλώττιση Πηγαίου Κώδικα Σε περίπτωση προβλημάτων μεταγλώττισης ΠΑΡΑΔΕΙΓΜΑ BYTE CODE Method HelloWorld() 0 aload_0 Method void main(java.lang.string[]){ 0 getstatic #2 3 ldc #3 < String "Hello World!!!" > 5 invokevirtual #4 ByteCode (Αποθήκευση στον δίσκο) Εκτέλεση Bytecode Σε περίπτωση λάθος αποτελέσματος Αποτέλεσμα ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 3
4 Η πλατφόρμα της JAVA Πλατφόρμα: Περιβάλλον λογισμικού και υλικού στο οποίο εκτελείται ένα πρόγραμμα. Συνήθως είναι συνδυασμός του Λειτουργικού Συστήματος και του Υλικού Υποστρώματος του ΛΣ. Δημοφιλείς πλατφόρμες: Microsoft Windows, Linux, SolarisOS, MacOS. Πλατφόρμα Java: Σύστημα λογισμικού που τρέχει πάνω σε διάφορες πλατφόρμες υλικού. Αποτελείται από: Την Εικονική Μηχανή JAVA: Java Virtual Machine Την Προγραμματιστική Διαπροσωπεία Εφαρμογών της JAVA (Java Application Programming Interface- API) Περιβάλλον Μεταγλώττισης Πλατφόρµα JAVA Πηγαίος Κώδικας(.java) Compiler (javac.exe) Java Bytecode(.class) Class loader and Bytecode verifier Java Class Library The Java Virtual Machine Java Interpreter (java.exe) Run Time System Just-in-time compiler Operating System Hardware ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 4
5 Το παράδειγμα της αποστολής λουλουδιών Ο Χρίστοςθέλει να στείλει λουλούδια στον Βασίλη, ο οποίος βρίσκεται σε άλλη πόλη. Ο Χρίστοςδεν μπορεί να παραδώσει τα λουλούδια ο ίδιος, έτσι χρησιμοποιεί τις υπηρεσίες κάποιου ανθοπώλη (Άθως). Ο Χρίστοςλέει στον Άθωτη διεύθυνση του Βασίλη, το ποσό που μπορεί να διαθέσει και το είδος των λουλουδιών. Ο Άθωςμε τη σειρά του επικοινωνεί με άλλο ανθοπώλη (Γιάννης) στην πόλη του Βασίλη, του μεταφέρει τις πληροφορίες. Ο Γιάννης ετοιμάζει την παραγγελία και ενημερώνει τον αποστολέα (Ανδρέας). Ο Ανδρέας παραδίδει τα λουλούδια. Χρίστος Ανθοκόμος Άθως Χονδρέμπορος Γιάννης Ανδρέας Διακοσμητής Βασίλης ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 5
6 Ιδιότητες Αντικειμενοστρεφή Προγραμματισμού Κλάσεις & Στιγμιότυπα Μία κλάση είναι όπως ένα αρχιτεκτονικό σχέδιο: περιγράφει τις ιδιότητες ενός αντικειμένου Από μία κλάση μπορούν να δημιουργηθούν πολλά στιγμιότυπα (αντικείμενα) Κάθε κλάση περιγράφει μία μοναδική οντότητα με ξεχωριστές ιδιότητες στο πρόγραμμα. Παράδειγμα: Ο Άθως και ο Γιάννης είναι και οι δύο ανθοπώληδες Στιγμιότυπα public class Anthopolis{ Anthopolis Giannis; Anthopolis Athos; Κλάση ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 6
7 Ιδιότητες Αντικειμενοστρεφή Προγραμματισμού Ενθυλάκωση (Encapsulation) Περιορίζει την πρόσβαση στα δεδομένα με τροποποιητές πρόσβασης. Παράδειγμα: Το όνομα του Χρίστου μπορεί να το αλλάξει μόνο ο Χρίστος Αφαιρετικότητα(Abstraction) Κάθε αντικείμενο έχει συγκεκριμένο ρόλο και ευθύνες. Παράδειγμα: Ο Γιάννης και ο Άθως είναι μόνο ανθοπώληδες, ο Ανδρέας είναι μόνο αποστολέας. Αυτό φυσικά εναπόκειται στις καλές σχεδιαστικές ικανότητες του προγραμματιστή public class Person{ private name; private changename(string s){ name=s; public class Anthopolis{ private createbouquet(int noofflowers, Color c){ public class Apostoleas{ private sendbouquet(flowers f, Address a){ ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 7
8 Ιδιότητες Αντικειμενοστρεφή Προγραμματισμού Κληρονομικότητα Περιορίζει την πρόσβαση στα δεδομένα με τροποποιητές πρόσβασης Παράδειγμα: Ο Ανδρέας είναι άτομο, συνεπώς κληρονομεί τα χαρακτηριστικά ενός ατόμου. Πολυμορφισμός Υποστηρίζει πολλές μεθόδους με το ίδιο όνομα, αλλά με διαφορετικές παραμέτρους Παράδειγμα: Ο Ανδρέας μπορεί να στείλει τα λουλούδια με διάφορους τρόπους: Με ποδήλατο Με αυτοκίνητο Με αυτοκίνητο σε συγκεκριμένη ώρα public class Person{ protected name; protected changename(string s){ name=s; public class Anthopolis inherits Person{ public class Anthopolis{ private sendflowers ( (Flowers x, Bicycle c){ private sendflowers ( (Flowers x, Car c){ private sendflowers ( (Flowers x, Car c, Time t){ ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 8
9 Παραδείγματα: Ένα απλό πρόγραμμα JAVA public class HelloWorld{ //Αρχικό Σημείο του Προγράμματος //Ο ερμηνευτής της JAVA εκτελεί το //πρόγραμμα κάνωντας κλήση στην //μέθοδο main public static void main(string[] args){ System.out.println("Hello World!!!"); Παράδειγμα Δήλωσης ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 9
10 Παραδείγματα: Κλάση class Circle { //Η ακτίνα αυτού του κύκλου double radius = 1.0; //Δημιούργησε ένα αντικείμενο τύπου κύκλος Circle () { ; //Δημιούργησε ένα αντικείμενο τύπου κύκλος //με συγκεκριμένη ακτίνα Circle (double newradius) { radius = newradius; ; //Επέστρεψε το εμβαδό αυτόυ του κύκλου double getarea () { return radius * radius * π; Δεδομένα/ Μεταβλητές Κατασκευαστές Μέθοδοι ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 10
11 Παραδείγματα: Αντικείμενα Κλάση Circle Κλάση Test: περιλαμβάνει την μέθοδο main public class Test{ public static void main(string[] args){ Circle a = new Circle(); Circle b = new Circle(5); Circle c = new Circle(20); 3 αντικείμενα a b c της κλάσης Circle object Circle radius = 1.0 object Circle radius = 5.0 object Circle radius = 20.0 ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 11
12 Κατασκευή αντικειμένων Η δήλωση ενός αντικειμένου κάποιου τύπου, π.χ., Circle a δεν σημαίνει και δέσμευσή του στη μνήμη. Η κατασκευή/δημιουργία ενός νέου αντικειμένου γίνεται με τη χρήση της εντολής new. Circle a = new Circle(); Circle a = new Circle(5.0); String s = new String( asdf ); String s = asdf ; Με την κλήση του new, εκτελούνται κάποιες ειδικές μέθοδοι που ονομάζονται κατασκευαστές (constructors) και είναι υπεύθυνοι για την δημιουργία του αντικειμένου και αρχικοποίηση των πεδίων του. Παράδειγμα: class Circle { Circle () { ; Κατασκευαστής ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 12
13 Μετατροπές Τύπων/Μεταβλητών (συν.) Έμμεση Μετατροπή (implicit casting) Παράδειγμα 1 double d = 3; Διεύρυνση/Μεγέθυνση τύπου int double Κανένα πρόβλημα στη μεταγλώττιση Παράδειγμα 2 inti= 3.0; Πρόβλημα στην μεταγλώττιση double int Συμβαίνει όταν γίνεται ανάθεση ενός πιο μικρού τύπου σε μεγαλύτερο (συρρίκνωση) Άμεση Μετατροπή (explicit casting) inti= (int) 3.0; Κανένα πρόβλημα στη μεταγλώττιση Συρρίκνωση δεδομένων Μπορεί να γίνει αφαίρεση κλάσματος/δεκαδικών, π.χ., int i = (int) 3.9; i=3. Τι θα γίνει με το ακόλουθο; intx = 5 / 2.0; intx = (int) (5 / 2.0); ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 13
14 Παραδείγματα προγραμματισμού με βρόγχους Παράδειγμα <while> int i = 0; while (i < 10) { System.out.println( "while"); i ++; while for Παράδειγμα <for> for ( int i=0; i<10; i++) { System.out.println( "for"); dowhile Παράδειγμα <do-while> int i = 0; do { System.out.println( "do-while"); i++; while (i < 10); ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 14
15 Παραδείγματα: break, continue και return for (i = 0; i < SIZE; i++) { break; search1: //search1 is a label for (i = 0; i < SIZE; i++) { for (j = 0; j < SIZE; j++) { break search1; somemethod() { return; for (i = 0; i < SIZE; i++) { continue; search1: //search1 is a label for (i = 0; i < SIZE; i++) { for (j = 0; j < SIZE; j++) { continue search1; Exit somemethod() ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 15
16 Πεδίο/Εμβέλεια ισχύος (scope) Οι μεταβλητές που ορίζονται σε κάποιο Πεδίο/Εμβέλεια ισχύος (scope), είναι υπαρκτές μέχρι το τέλος του πεδίου αυτού. Παράδειγμα: { int x; { int y; Σε αντίθεση με την C και C++, το ακόλουθο είναι συντακτικό σφάλμα { int x; { int x; Inner scope x,y Η yδεν υπάρχει! Outer scope x ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 16
17 Μέθοδοι (methods) Μέθοδος:μία συλλογή από ομαδοποιημένες δηλώσεις οι οποίες εκτελούν κάποια (ες) λειτουργία (ες). Η υπογραφή μίας μεθόδουαποτελείται από το όνομά τηςκαι τη λίστα με της παραμέτρους που δέχεται. Σύνταξη: modifiers return value type method name parameter list public static int max( int num1, int num2 ) { int result = num1; if ( num2 > num1 ) { result = num2; return result; method signature method body return value ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 17
18 Boxing Οι συλλογές ΔΕΝ δέχονται πρωτόγονους τύπους αλλά μόνο δείκτες σε αντικείμενα (reference types). Ερώτηση: Τι γίνεται όταν χρειαζόμαστε πρωτόγονους τύπους; Απάντηση: Boxing Ορισμοί: Box Ένα στιγμιότυπο μίας κλάσης περιτυλίγματος (wrapper) η οποία αποθηκεύει την τιμή ενός πρωτόγονου τύπου. Boxing Δημιουργία ενός box για μία τιμή πρωτόγονος τύπου Unboxing Επιστροφή της τιμής πρωτόγονου τύπου από το box ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 18
19 Manual/Auto boxing and unboxing Οι αρχέγονοι τύποι δεν µπορούν να χρησιµοποιηθούν στις περισσότερες περιπτώσεις -you need a wrapper myvector.add(new Integer(5)); Αντίστοιχα δεν επιτρέπεται να χρησιµοποιηθεί ένα αντικείµενο εκεί που χρειάζεται αρχέγονος τύπος. --you need to unwrap it int n = ((Integer)myVector.lastElement()).intValue(); Integer inumber = new Integer(10); Integer inumber= 10; inumber= new Integer( inumber.intvalue()++ ); inumber++; Manual boxing Auto-boxing Manual unboxing Auto-unboxing ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 19
20 Το <this> <this>:είναι μία λέξη κλειδί η οποία αναφέρεται στο συγκεκριμένο στιγμιότυπο (αντικείμενο)που χρησιμοποιείται μέσα από μία μέθοδο. Είναι ένα χειριστήριο προς το ίδιο το αντικείμενο. Πολλαπλές χρήσεις: 1. Υποδηλώνει ότι θα χρησιμοποιηθεί η μεταβλητή της κλάσης και όχι κάποια static μεταβλητή ή παράμετρος από συνάρτηση class Circle { double radius; Circle( double radius) { this.radius = radius; ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 20
21 Το <this> (συν.) 2. Κλήση κατασκευαστών από κατασκευαστές 3. Πέρασμα χειριστηρίου της κλάσης σαν παράμετρο σε μία μέθοδο 4. Επιστροφή χειριστηρίου από μία μέθοδο class Circle { double radius; Circle() { this( 1.0 ); Circle(double radius) { this.radius = radius; obj.somemethod( this ) ; ClassName somemethod(){ return this ; ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 21
22 Το <this> (συν.) Ερώτηση: Ποια βήματα θα εκτελεστούν με τον κώδικα στα δεξιά, αν δημιουργήσουμε ένα καινούριο αντικείμενο Circle χωρίς παραμέτρους; 1. Circle() this( 1.0 ) 2. Circle(double radius=1.0) this(radius=1.0, no name ); 3. Circle(double radius=1.0, String name= no name ) class Circle { double radius; String name; Circle() { this( 1.0 ); Circle(double radius) { this(radius, no name ); Circle(double radius, String name) { this.radius = radius; this.name = name; ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 22
23 Ανάθεση: Αρχέγονοι Τύποι vs. Τύποι Αντικειμένων Primitive type e.g., inti= 1 i 1 Object (reference) type e.g., Circle c c reference constructor c: Circle radius = 1 Ανάθεση σε Πρωτόγονο Τύπο i=j i j ΠΡΙΝ 1 2 i j ΜΕΤΑ 2 2 ΠΡΙΝ C1 c1:circle radius = 1 Ανάθεση σε Τύπο Αντικείμενο C1 = C2 C2 c2:circle radius = 2??? C1 c1:circle radius = 1 META C2 c2:circle radius = 2 ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 23
24 Αποκομιστής Σκυβάλων (garbage collector) Στο προηγούμενο παράδειγμα, μετά την ανάθεση c1=c2δεν υπάρχει μεταβλητή που να δείχνει στο αντικείμενο του c1. Το αντικείμενο αυτό είναι για τα σκουπίδια H JVM συλλέγει αυτόματα τα σκουπίδια με τον garbage collector. Αυτό σημαίνει αυτόματη διαχείριση μνήμης αντίθετα με C++. Επίσης σημαίνει περισσότερο χρόνο για προγραμματισμό Ένα αντικείμενο θεωρείται επιλέξιμο από τον garbage collector εάν: Όλες οι αναφορές του είναι null Το αντικείμενο είναι δημιουργημένο σε ένα block και η αναφορά είναι out-ofscope μόλις τελειώσει η εκτέλεση του block Το αντικείμενο έχει αναφορά από ένα αντικείμενο πατέρα μόνο, και όλες οι αναφορές στον πατέρα είναι null (αυτό ισχύει αναδρομικά) Το αντικείμενο αναφέρεται μόνο μέσω ενός WeakHashMap Ο garbage collector έχει άμεση σχέση με τα διάφορες στάδια του κύκλος ζωής ενός αντικειμένου ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 24
25 Διαχείριση Μνήμης Στοίβα (stack) Μέρος της μνήμης που παρέχει ταχύτητα. Μεγαλώνει/Μικραίνει ανάλογα με τις μεθόδους που καλούνται Αποθηκεύει τους τοπικούς (method/block) αρχέγονους τύπος Αποθηκεύει τις τοπικές (method/block) reference μεταβλητές Σωρός (Heap) Πιο αργό μέρος της μνήμης που παρέχει όμως χωρητικότητα Αποθηκεύει τις μεταβλητές του αντικειμένου(instanse variables) Αποθηκεύει αντικείμενα που δημιουργούνται με το new Μεγαλώνει/Μικραίνει ανάλογα με τα αντικείμενα που δημιουργούνται Στατική περιοχή (Static Area) (μέρος του Heap) Αποθηκεύει global και static μεταβλητές ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 25
26 Διαχείριση Μνήμης(συν.) class Obj{ int x; int y; Obj (int a, int y) { x=a; y=b; STACK { int x = 1; Obj obj1 = new Obj(3, 4); Obj obj2 = obj1; HEAP x=1 obj1 obj2 x=3 y=4 ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 26
27 Διαχείριση Μνήμης(συν.) class StackMethods{ void method1(){ method2(); void method2(){ method3(); void method3(){ Circle c = new Circle( 5 ); STEP 1 method1() STEP 2 method2() method1() STEP 4 method2() method1() STEP 5 method1() STEP 6 STACK 1-5 method3(), c method2() method1() STEP 3 radius=5 HEAP ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 27
28 Βιβλιοθήκες/Πακέτα (packages) (Συνήθως) Ομαδοποιούμε τις κλάσεις σύμφωνα με τα αντικείμενα που αναπαριστούν και τις λειτουργίες τους. Ένα πακέτο (βιβλιοθήκη) JAVA απαρτίζεται από μια ομάδα κλάσεων, οι οποίες ανήκουν στον ίδιο χώρο ονομάτων (namespace). Για τη δημιουργία μιας βιβλιοθήκης Java, πρέπει να χρησιμοποιήσουμε την λέξη-κλειδί packageμαζί με το όνομα της βιβλιοθήκης, στην αρχή κάθε αρχείου, το οποίο θέλουμε να εντάξουμε στην βιβλιοθήκη. Έτσι, δηλώνοντας : package mypackage F στην αρχή κάποιων αρχείων Java, ορίζουμε ότι τα αρχεία αυτά ανήκουν στην ίδια βιβλιοθήκη, η οποία έχει το όνομα mypackage. Η δημιουργία μιας βιβλιοθήκης Java(«πακέτου») δεν προϋποθέτει ούτε συνεπάγεται την τοποθέτηση αρχείων-κλάσεων σε κάποιο ενιαίο αρχείο. ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 28
29 Βιβλιοθήκες/Πακέτα (packages) (συν.) Παράδειγμα: package test.animals; package test.animals; public class Tiger { public String name; public Tiger(){ public Tiger(String name){ this.name = name; public String getname(){ return name; package test.animals; public class Lion { public String name; public Lion(){ public Lion(String name){ this.name = name; public String getname(){ return name; public String isking(){ return I am the king ; ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 29
30 Βιβλιοθήκες/Πακέτα (packages)(συν.) Η Javaμας δίνει τη δυνατότητα να επαναχρησιμοποιήσουμε τις κλάσεις μιας βιβλιοθήκης JAVA, με χρήση της εντολής importστον κώδικα των αρχείων στα οποία θέλουμε να κάνουμε χρήση των κλάσεων της βιβλιοθήκης. Τρόπος 1 (χρήση import): import test.animals.lion; Lion l = new Lion(); Τρόπος 2(χωρίς τη χρήση import): test.animals.lion l = new test.animals.lion(); ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 30
31 Βιβλιοθήκες/Πακέτα (packages)(συν.) Παράδειγμα: import test.animals.lion; import test.animals.tiger; // OR import test.animals.*; public class TestAnimals{ public static void main(string args[]){ Lion l1 = new Lion("lion"); // OR test.animals.lion l1 = new test.animals.lion("lion"); Tiger t1 = new Tiger("tiger"); // OR test.animals.tiger t1 = new test.animals.tiger( tiger"); ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 31
32 Παράδειγμα: Σύγκρουση Ονομάτων Παράδειγμα: name clash Ερώτηση: Ποια κλάση Lion θα χρησιμοποιηθεί; <root> TestAnimals.java Lion.java 1 test import test.animals.lion; public class TestAnimals{ animals public static void main(string args[]){ Lion l1 = new Lion("lion"); 2 Lion.java Tiger.java ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 32
33 Ενθυλάκωση (encapsulation) (συν.) H Ενθυλάκωση (encapsulation) έχει δύο έννοιες: 1. Συνδυασμός δεδομένων και μεθόδων σε ένα θύλακα (capsule) H κλάση σαν ένας τύπος δεδομένων περιλαμβάνει: Μεταβλητές ή πεδία τα οποία αντιπροσωπεύουν διάφορες ιδιότητες Μεθόδους οι οποίες χρησιμοποιούνται για να κατασκευάσουν στιγμιότυπα της κλάσης (constructors)και Μεθόδους οι οποίες χρησιμοποιούνται για να αναπαραστήσουν τις λειτουργίες της κλάσης (methods) Ανάληψη ( ) Ανάληψη ( ) Υπόλοιπο Υπόλοιπο Κατάθεση ( ) Κατάθεση ( ) Λογαριασμός Τράπεζας Λογαριασμός Τράπεζας (Κλάση) ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 33
34 Ενθυλάκωση (encapsulation)(συν.) 2. Έλεγχος στην πρόσβαση δεδομένων (information hiding) Η κλάση εμφανίζει στους χρήστες και άλλες κλάσεις μία διαπροσωπεία (interface) η οποία παρουσιάζει τις λειτουργίες της κλάσης Με αυτό τον τρόπο, κρύβονται πληροφορίες χαμηλού επιπέδου για τον τρόπο υλοποίησης των λειτουργιών Παράδειγμα, για τον αφηρημένο τύπο δεδομένων Stack, παρουσιάζουμε Push(), Pop(), Top(), IsEmpty(), MakeEmpty() αλλά όχι την δομή δεδομένων Ανάληψη ( ) Ανάληψη ( ) Υπόλοιπο Υπόλοιπο Κατάθεση ( ) Κατάθεση ( ) ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 34
35 Τροποποιητές Πρόσβασης (Access Modifiers) Μία κλάση ελέγχει την πρόσβαση στα διάφορα μέλη της (δεδομένα, μεθόδους) με τους τροποποιητές πρόσβασης Υπάρχουν 4 τροποποιητές πρόσβασης: public: Η πρόσβαση στην κλάση, δεδομένα, μεθόδους είναι ανοικτή σε όλους! private:η πρόσβαση στα δεδομένα και τις μεθόδους είναι περιορισμένη μόνο στην κλάση default(friendly):η πρόσβαση στην κλάση, δεδομένα και μεθόδους είναι περιορισμένη στο σε κλάσεις που βρίσκονται στο ίδιο πακέτο με την κλάση protected:όπως το defaultαλλά και σε κλάσεις που κληρονομούν από την ίδια κλάση (εντός πακέτου ή όχι) ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 35
36 Τροποποιητές Πρόσβασης: Σύγκριση Τροποποιητής Πρόσβασης Ίδια Κλάση Ίδιο Πακέτο Υποκλάση Άλλα Πακέτα public protected (default) friendly private ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 36
37 Τροποποιητές Πρόσβασης: Σύγκριση (συν.) ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 37
38 Στατικότητα (static) (συν.) Τα στατικά δεδομένα (static)περιγράφουν πληροφορίες που ισχύουν για όλα τα αντικείμενα της κλάσης τους Class BankAccount BankAccount ba1 Επιτόκιο =5% Τα στατικά δεδομένα ανήκουν στην κλάση BankAccount ba2 ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 38
39 Στατικά Δεδομένα/Μεταβλητές: Παράδειγμα 1 public class BankAccount { private double balance; public static double interest = 0.05; public class TestBankAccount { public static void main(string args[]) { BankAccount.interest = 0.06; Απευθείας Πρόσβαση Δεν χρειάζεται να δηλώσουμε αντικείμενο τύπου BankAccount ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 39
40 Στατικά Δεδομένα/Μεταβλητές: Παράδειγμα 2 public class BankAccount { private double balance; public static double interest = 0.05; public class TestBankAccount { public static void main(string args[]) { BankAccount ba1 = new BankAccount(); System.out.println(ba1.interest); BankAccount ba2 = new BankAccount(); System.out.println(ba2.interest); // OR ba2.interest OR BankAccount.interest ba1.interest = 0.06; System.out.println(ba2.interest); 0.06 ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 40
41 Στατικές Μέθοδοι: Παράδειγμα 1 public class StaticMethods { int var1; static int var2; public static void main( String args[]) { // NOT OK var1 is NOT static var1 = 5; // OK var2 is static var2 = 5; ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 41
42 Παράδειγμα 2: Στατικές Μέθοδοι public class StaticMethods { public void method1( ) { public static void method2( ) { public static void main(string args[]) { // NOT OK method1() is NOT static method1( ); // OK method2() is static method2( ); ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 42
43 Στατικό Τμήμα Κώδικα (static code block) Το στατικό τμήμα κώδικα, είναι ένα τμήμα με δηλώσεις μέσα σε μία κλάση το οποίο εκτελείται αμέσως μόλις φορτωθεί η κλάση στο JVM Ερώτηση 1: Τι θα τυπωθεί στο πιο κάτω πρόγραμμα; Ερώτηση 2: Τι θα τυπωθεί αν αφαιρέσουμε όλη τη δήλωση new; public class StaticBlock { public StaticBlock() { System.out.println("Constructor"); static { System.out.println("static block"); public static void main(string args[]) { StaticBlock obj = new StaticBlock(); Static block ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 43
44 Τροποποιητής(final) Οι μέθοδοι που ορίζονται σαν final δεν μπορούν να επικαλυφθούν(κληρονομικότητα) Αντίθετα με τις μεταβλητές τύπου constant, δεν είναι ανάγκη να γνωρίζουμε την τιμή των final κατά την ώρα τις μεταγλώττισης Αν δεν γίνει ανάθεση στην μεταβλητή final τότε οι κατασκευαστές αναγκάζονται να την αρχικοποιήσουν Αν μία μεταβλητή δηλωθεί σαν static final τότε η compiled κλάση τρέχει πιο γρήγορα. Γνωστό παράδειγμα final κλάσης: java.lang.math ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 44
45 Παράδειγμα 1: final μεταβλητές public class FinalVariables { final int var1 = 10; final int var2 = 20; final int var3; FinalVariables(){ // NOT OK var2 already has value var2 = 10; // OK var3 was not initialized var3 = 30; public static void main(string args[]) { FinalVariables obj = new FinalVariables(); ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 45
46 Παράδειγμα 2: final κλάσεις public final class Math { // NOT OK Math cannot be inherited public class MyMath extends Math{ ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 46
47 Παράδειγμα 3: final μεθόδοι public class FinalMethods { public void method() { public final void final_method() { public class MyClass extends FinalMethods { // OK method() can be overriden public void method() { // NOT OK final_method() cannot be overriden // declared as final public void final_method() { ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 47
48 Παράδειγμα: Βιβλίο Διευθύνσεων ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 48
49 Αναφορά Απαιτήσεων Βιβλίο Διευθύνσεων: το πρόγραμμα αυτό διατηρεί και συντηρεί ένα βιβλίο διευθύνσεων. Το βιβλίο διευθύνσεων θα είναι μία συλλογή από οντότητες οι οποίες αναπαριστούν άτομα με πληροφορίες για όνομα, επίθετο, διεύθυνση, πόλη, επαρχία, ταχυδρομικό κώδικα και τηλέφωνο Το πρόγραμμα πρέπει να υποστηρίζει προσθήκη ενός ατόμου, ενημέρωση υφιστάμενου ατόμου (εκτός από το όνομα) και διαγραφή ατόμου Επιπρόσθετες λειτουργίες: Ταξινόμηση των ατόμων αλφαβητικά με επίθετο, όνομα ή ταχ. κώδικα Εκτύπωση όλων των ατόμων σε μορφή mailing label Δημιουργία ενός καινούριου και άνοιγμα ενός υφιστάμενου βιβλίου διευθύνσεων από τον δίσκο με τη χρήση διαπροσωπείας με τις συνηθισμένες επιλογές κάτω από το File (New, Open, ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 49 Close, Save and Save As)
50 Αναφορά Απαιτήσεων (συν.) Επιπρόσθετες λειτουργίες (συν.): Το πρόγραμμα θα πρέπει να επεξεργάζεται, ανά πάσα στιγμή, μόνο ένα βιβλίο διευθύνσεων. Στην περίπτωση που ο χρήστης επιλέξει «Νέο Βιβλίο Διευθύνσεων» ή «Άνοιγμα Υφιστάμενου Βιβλίου Διευθύνσεων» τότε το πρόγραμμα θα σταματάει/ κλείνει το υφιστάμενο/τρέχον βιβλίο διευθύνσεων Σε κάποια φάση στο μέλλον, το πρόγραμμα πιθανόν να μπορεί να υποστηρίζει να τρέχουν πολλά γραμματοκιβώτια ταυτόχρονα, το καθένα στο δικό του παράθυρο. Σε αυτή την περίπτωση, όταν ο χρήστης επιλέξει «Νέο Βιβλίο Διευθύνσεων» ή «Άνοιγμα Υφιστάμενου Βιβλίου Διευθύνσεων» τότε το πρόγραμμα δεν θα επηρεάζει τα τρέχοντα βιβλία διευθύνσεων Το πρόγραμμα θα παρακολουθεί τις αλλαγές που γίνονται στο βιβλίο διευθύνσεων και θα παρέχει στο χρήστη την δυνατότητα να αποθηκεύσει τις αλλαγές στο υφιστάμενο ή σε νέο βιβλίο διευθύνσεων ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 50
51 Αναφορά Απαιτήσεων (συν.) Επιπρόσθετες λειτουργίες (συν.): Το πρόγραμμα θα παρακολουθεί το αρχείο από το οποίο έχει διαβαστεί ή που έχει αποθηκευτεί πιο πρόσφατα, θα παρουσιάζει το όνομα του αρχείου στον τίτλο του παραθύρου και θα το χρησιμοποιεί όταν ο χρήστης επιλέξει το «Save» Όταν ένα καινούριο παράθυρο δημιουργηθεί, τότε το παράθυρο θα παρουσιάζει τον τίτλο «Untitled» και η επιλογή «Save» μετατρέπεται σε «Save As»και ο χρήστης θα πρέπει να δώσει ένα όνομα αρχείου ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 51
52 Αναφορά Απαιτήσεων (συν.) Ανάλυση Διαπροσωπείας: Τίτλος Βιβλίου Διευθύνσεων: (π.χ., ΕΠΛ233) Όνομα Αρχείου: (π.χ., C:\ΕΠΛ233.txt) Ανδρέας Ανδρέου Ανδρέας Βάσου Βάσος Βάσου Γεώργιος Γεωργίου Δήμητρα Δημητρίου Ελένη Δημητρίου Add Edit Delete Sort by Name Sort by Zip ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 52
53 Βιβλίο Διευθύνσεων: Use Case Diagram Address Book (AdBook) Application Add a Person Edit a Person Delete a Person Sort by Name Sort by ZIP Print AdBook User Create New AdBook Open Existing AdBook Save AdBook «include» Save AdBook As Quit Program «extend» «extend» «include» «extend» Prompt to save changes ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 53
54 Βιβλίο Διευθύνσεων: Use Case Package Diagram Address Book (AdBook) Application Manage Entries Sort/Print Entries User Manage AddressBook ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 54
55 Βιβλίο Διευθύνσεων: Use Case Diagram (packets) Manage Entries Add a Person Edit a Person Delete a Person User ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 55
56 Βιβλίο Διευθύνσεων: Use Cases Add Person Το εν λόγω usecaseξεκινά όταν ο χρήστης κάνει κλικ στο κουμπί "Προσθήκη" στο κύριο παράθυρο. Εμφανίζεται ένα παράθυρο διαλόγου, με τίτλο "Νέο Άτομο", το οποίο περιέχει πεδία στα οποία πρέπει να συμπληρωθεί το όνομα και το επώνυμο του νέου ατόμου και άλλες πληροφορίες. Το παράθυρο διαλόγου μπορεί να κλείσει είτε κάνοντας κλικ στο κουμπί "OK" ή "Άκυρο". Εάν πατηθεί το κουμπί "OK", ένα νέο άτομο προστίθεται στο τέλος του βιβλίου διευθύνσεων, και το όνομα του ατόμου, προστίθεται στο τέλος της λίστας των ονομάτων στο κύριο παράθυρο. Εάν πατηθεί το κουμπί "Άκυρο", δεν γίνονται αλλαγές ούτε στο βιβλίο διευθύνσεων, ούτε στο κύριο παράθυρο. ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 56
57 Βιβλίο Διευθύνσεων: Use Cases Edit Person Το εν λόγω use caseξεκινά όταν ο χρήστης επιλέξει είτε ένα όνομα από τη λίστα των ονομάτων στο κύριο παράθυρο και, στη συνέχεια κάνει κλικ στο κουμπί "Επεξεργασία", είτε κάνει διπλό κλικ σε ένα όνομα. Σε κάθε περίπτωση, ένα παράθυρο διαλόγου, με τίτλο "Επεξεργασία ονόματος του ατόμου", εμφανίζεται περιέχοντας πληροφορίες σχετικές με το επιλεγμένο πρόσωπο (εκτός από το όνομα του ατόμου, το οποίο εμφανίζεται μόνο στον τίτλο). Ο χρήστης μπορεί στη συνέχεια να επεξεργαστεί τα πεδία με τα χαρακτηριστικά του ατόμου. Το παράθυρο διαλόγου μπορεί να κλείσει είτε κάνοντας κλικ στο "OK" ή "Άκυρο". Εάν πατηθεί το κουμπί "OK", η καταχώρηση στο βιβλίο διευθύνσεων για το επιλεγμένο πρόσωπο ενημερώνεται με τις αλλαγές που έγιναν από το χρήστη. Εάν πατηθεί το κουμπί "Άκυρο", δεν γίνονται αλλαγές στο βιβλίο διευθύνσεων. ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 57
58 Βιβλίο Διευθύνσεων: Use Cases Sort by Name Το εν λόγω use caseξεκινά όταν ο χρήστης κάνει κλικ στο κουμπί Ταξινόμηση κατά Όνομα στο κύριο παράθυρο. Οι καταχωρήσεις στο βιβλίο διευθύνσεων ταξινομούνται αλφαβητικά κατά όνομα, και ο κατάλογος στο κύριο παράθυρο ενημερώνεται ώστε να αντικατοπτρίζει τη ταξινόμηση. ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 58
59 Βιβλίο Διευθύνσεων: Use Cases Prompt to Save Changes Extension Το εν λόγω use caseξεκινά μέσα από τη Δημιουργία νέου βιβλίου διευθύνσεων, Άνοιγμα υπάρχον βιβλίο διευθύνσεων, ή Έξοδος προγράμματος, εφόσον το τρέχον βιβλίο διευθύνσεων έχει αλλάξει από τη τελευταία επιτυχημένη λειτουργία New, Open, Save, ή Save As. Ένα παράθυρο διαλόγου εμφανίζεται, ενημερώνοντας τον χρήστη ότι υπάρχουν μη αποθηκευμένες αλλαγές, και ζητώντας από το χρήστη είτε να αποθηκεύσει τις αλλαγές, να μην αποθηκεύσει τις αλλαγές, ή να ακυρώσει τη λειτουργία. Αν ο χρήστης επιλέξει να αποθηκεύσει τις αλλαγές, τοuse caseαποθήκευση Βιβλίου Διευθύνσεων εκτελείται (το οποίο μπορεί να οδηγήσει στην εκτέλεση του use caseαποθήκευση Βιβλίου Διευθύνσεων ως, σε περίπτωση που δεν υπάρχει τρέχον αρχείο). Εάν ο χρήστης δεν επιλέξει να αποθηκεύσει τις αλλαγές, η αρχική λειτουργία απλά επαναλαμβάνεται. Εάν ο χρήστης επιλέξει να ακυρώσει (ή ακυρώσει το διάλογο Αποθήκευση αρχείου), η αρχική λειτουργία ακυρώνεται. ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 59
60 Βιβλίο Διευθύνσεων: Class Analysis Το πρόγραμμα, ανά πάσα στιγμήδιαχειρίζεται ένα βιβλίο διευθύνσεων(addressbook). οντότητα Κάθε άτομο (Person) μπορεί να αναπαρασταθεί σαν μία οντότητα με τα χαρακτηριστικά της οντότητα Μία διαπροσωπεία(addressbookgui)θα υπάρχει μεταξύ χρήστη και συστήματος. Ο χρήστης δεν θα μπορεί να έχει πρόσβαση διαφορετικά με το σύστημα σύνορο Μία διαπροσωπεία/αντικείμενο(filesystem)θα υπάρχει μεταξύ του συστήματος και του λειτουργικούώστε το σύστημα να μπορεί να διαχειρίζεται αρχεία σύνορο Ένα αντικείμενο διαχειριστής (AddressBookController)χρειάζεται για να αναλάβει την εκτέλεση των use casesσε ανταπόκριση των διαφόρων λειτουργιών που θα επιλέξει ο χρήστης από το μενού. controller *(Για ένα τέτοιο μικρό πρόβλημα, ένας controller είναι αρκετός.) ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 60
61 Βιβλίο Διευθύνσεων: Analysis Class Diagram FileSystem AddressBook Controller User AddressBook GUI Person AddressBook ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 61
62 Βιβλίο Διευθύνσεων: Class Analysis (συν.) Τοuse case Add a Person έχει σχέση με την εισαγωγή νέας πληροφορίας (δηλ. νέο άτομο) από τον χρήστη. Τέλος, θα καλεστεί το αντικείμενο AddressBook ώστε να εισάξει το νέο άτομο στη συλλογή. Τοuse case Edit a Person έχει σχέση με τηνπαρουσίαση της τρέχουσας πληροφορίες κάποιου ατόμου μέσω του αντικειμένου AddressBookκαι παροχή της ικανότητας αλλαγή των στοιχείων αυτού. Στο τέλος, θα καλεστεί το αντικείμενο AddressBook για να αποθηκεύει τις αλλαγές. Τοuse case Delete a Person έχει σχέση με την διαγραφή ενός υπάρχον ατόμου. παρουσίαση της τρέχουσας. Στο τέλος, θα καλεστεί το αντικείμενο AddressBook για να αφαιρέσει το άτομο από την συλλογή. Τοuse case Sort by Name θα καλέσει το αντικείμενο AddressBook για να ταξινομήσει τη συλλογή των ατόμων με το όνομα και επίθετο τους. ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 62
63 Βιβλίο Διευθύνσεων: Class Analysis (συν.) Τοuse case Create New Address Book δημιουργεί ένα καινούριο αντικείμενο τύπου AddressBook. Τοuse case Open Existing Address Book θα ζητήσει από τον χρήστη ένα αρχείο και μετά θα χρησιμοποιήσει το αντικείμενο FileSystem για να διαβάσει ένα αντικείμενο τύπου AddressBookπου έχει αποθηκευτεί στο αρχείο. Τοuse case Save Address Book θα χρησιμοποιήσει το αντικείμενο FileSystem για να αποθηκεύσει ένα αντικείμενο τύπου AddressBook στο πιο πρόσφατο αρχείο που έχει διαβαστεί ή αποθηκευτεί). Αν δεν υπάρχει κάποιο αρχείο τότε θα εκτελέσει το use case Save Address Book As Τοuse case Print Address Book θα ζητήσει από το αντικείμενο AddressBook να τυπώσει την συλλογή της σύμφωνα με την τρέχουσα ταξινόμηση. Τοuse case Quit Program δεν έχει σχέση με τα υπόλοιπα αντικείμενα. ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 63
64 Βιβλίο Διευθύνσεων: Κάρτες CRC FileSystem Responsibilities - Διάβασε ένα αποθηκευμένο βιβλίο διευθύνσεων από το αρχείο - Αποθήκευσεένα βιβλίο διευθύνσεων σε αρχείο Collaborators - AddressBook - AddressBook - ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 64
65 Βιβλίο Διευθύνσεων: Κάρτες CRC Person Responsibilities - Δημιουργία καινούριου ατόμου με τα στοιχεία του - Επιστροφή στοιχείων ατόμου - Ενημέρωση στοιχείων ατόμου (εκτός ονόματος) Collaborators - ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 65
66 Βιβλίο Διευθύνσεων: Κάρτες CRC AddressBookGUI Responsibilities - Παρακολούθηση του τρέχον AddressBook - Παρουσίαση λίστα με ονόματα ατόμων - Παρουσίασητου τίτλου του AddressBook Collaborators - AddressBook - AddressBook - AddressBook - ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 66
67 Βιβλίο Διευθύνσεων: Κάρτες CRC AddressBookControll er Responsibilities Επιτρέπει την εκτέλεση των use case: - Add/Edit/Delete Person - Sort Entries (Name/Zip) - Create new AddressBook - Open Existing AddressB - Save AddressBook Collaborators - AddressBook - AddressBook - AddressBook - FileSystem - FileSystem - ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 67
68 Βιβλίο Διευθύνσεων: Κάρτες CRC AddressBook Responsibilities - Άσκηση για το σπίτι Collaborators - Άσκηση για το σπίτι ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 68
69 Βιβλίο Διευθύνσεων: Sequence Diagrams Use case: Add Person : AddressBook GUI : AddressBook Controller : MultiInput Dialog : AddressBook : Person guiaddperson( ) showdialog() getaddressbook () guiaddperson( ) createperson() setchanged SinceLastSave( ) ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 69
70 Βιβλίο Διευθύνσεων: Sequence Diagrams Use case: Sort by Name : AddressBook GUI : AddressBook Controller : AddressBook : Person. CompareByNam e guisortbyname () getaddressbook () showdialog() comparepersons( ) setchanged SinceLastSave( ) ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 70
71 Βιβλίο Διευθύνσεων: state diagram Start AddressBook Application Display GUI Display: Create New or Open Existing Create New cancel cancel Open existing Save file dialog Display: Enter File Name Open file dialog Display: Select File Manage AddressBook Add/Edit/Delete Person, Print, Sort, ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 71
72 Βιβλίο Διευθύνσεων: Class Diagram MultiInput Pane Address Book Application Address Book Controller File System AddressBook GUI AddressBook Person Person CompareByNam e Person CompareByZip ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 72
73 Παραδείγματα: Σχέσεις ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 73
74 Βιβλίο Διευθύνσεων: Class Diagrams (αναλυτικά) Person - firstname: String - lastname: String - address: String - city: String - state: String - zip: String - phone: String + Person(String firstname, String lastname, String address, String city, String state, String zip, String phone) + getfirstname(): String + getlastname(): String + getaddress(): String + getcity(): String + getstate(): String + getzip(): String + getphone(): String ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 74
75 Βιβλίο Διευθύνσεων: Class Diagrams (αναλυτικά) FileSystem + readfile(file file): AddressBook + savefile(addressbook addressbook, File file) ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 75
76 Βιβλίο Διευθύνσεων: Class Diagrams (αναλυτικά) AddressBookApplication - filesystem: FileSystem - controller: AddressBookController + main() + quitapplication() ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 76
77 Βιβλίο Διευθύνσεων: Class Diagrams (αναλυτικά) AddressBook - collection: Person [ ] or Vector or ArrayList - count: int - file: File - changedsincelastsave: boolean + AddressBook() + getnumberofpersons(): int + addperson(string firstname, String lastname, ) + getfullnameofperson(int index): String + updateperson(int index, String address, String city, String state, ) + removeperson(int index) + sortbyname() + sortbyzip() + printall() + sortbyname() + getfile(): File + gettitle(): String ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 77
78 Βιβλίο Διευθύνσεων: Class Diagrams (αναλυτικά) AddressBookGUI Εργασία για το σπίτι Εργασία για το σπίτι ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 78
79 Βιβλίο Διευθύνσεων: Υλοποίηση import java.io.*; import java.util.*; public class AddressBook { private Vector collection; private File file; private boolean changedsincelastsave; public AddressBook() { collection = new Vector(); file = null; changedsincelastsave = false; public int getnumberofpersons() { return collection.size(); public void addperson(string s, String s1, String s2, String s3, String s4, String s5, String s6) { collection.addelement(new Person(s, s1, s2, s3, s4, s5, s6)); { setchangedsincelastsave(true); public String getfullnameofperson(int i) Person person = (Person)collection.elementAt(i); return person.getfirstname() + " " + person.getlastname(); public void updateperson(int i, String s, String s1, String s2, String s3, String s4) { (Person)collection.elementAt(i)).update(s, s1, s2, s3, s4); setchangedsincelastsave(true); ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 79
80 Βιβλίο Διευθύνσεων: Υλοποίηση public class Person { private String firstname; private String lastname; private String address; private String city; private String state; private String zip; private String phone; public Person(String s, String s1, String s2, String s3, String s4, String s5, String s6) { firstname = s; lastname = s1; address = s2; city = s3; state = s4; zip = s5; phone = s6; public String getfirstname() { return firstname; public String getaddress() { return address; public void update(string s, String s1, String s2, String s3, String s4) { address = s; city = s1; state = s2; zip = s3; phone = s4; ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 80
81 Βιβλίο Διευθύνσεων: Deployment Diagram Desktop Computer File System File Interface Operating System ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 81
82 Βιβλίο Διευθύνσεων: Συντήρηση/Εξέλιξη Το use case Print Entries τυπώνει τα ονόματα στο System.out. Διαφορετικά θα μπορούσε να γράφει σε αρχείο. Το πρόγραμμα μπορεί να διαχειρίζεται πολλαπλά βιβλία διευθύνσεων. Αυτό συμπεριλαμβάνει τις εξής αλλαγές: Το use case Create New Address Book καιopen Existing Address Book Use Cases δεν θα κλείνουν το τρέχον address book. Αντίθετα θα δημιουργούν ένα καινούριο αντίγραφο του GUI και θα το διαχειρίζονται ξεχωριστά. Θα δημιουργηθεί ένα καινούριο use case (Close Address Book) το οποίο θα εκτελείται όταν κλείνει ένα address book αντί του use case Quit Program. ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 82
Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 7: Ενθυλάκωση (encapsulation), Τροποποιητές(modifiers) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ενθυλάκωση -Τροποποιητές Πρόσβασης (Access Modifiers), public, protected, private,
Διάλεξη 5: Κλάσεις και Αντικείμενα. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 5: Κλάσεις και Αντικείμενα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Κλάσεις και Αντικείμενα - Κατασκευή, Πρόσβαση Αντικειμένων - Διαχείριση Μνήμης, Garbage
Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 6: Αφαιρετικότητα, Βιβλιοθήκες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Αφαιρετικότητα -Βιβλιοθήκες (packages) Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός
Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 3: Προγραμματισμός σε JAVA I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Στοιχειώδης Προγραμματισμός - Προγραμματισμός με Συνθήκες - Προγραμματισμός με Βρόγχους
Διάλεξη 11: Αντικειμενοστρεφής Σχεδιασμός ΙII
Διάλεξη 11: Αντικειμενοστρεφής Σχεδιασμός ΙII Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Παράδειγμα Διαδικασίας Ανάπτυξης Λογισμικού: Βιβλίο Διευθύνσεων(συν.) - Φάση 3: Υλοποίηση(αναλυτικά
Το πρόγραμμα 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 υποστηρίζει
Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 12: Κληρονομικότητα (Inheritance) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κληρονομικότητα και Επαναχρησιμοποίηση - Υποκλάσεις/Υπερκλάσεις - Απόκρυψη ονομάτων - Το super, protected
ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008
ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 Κατασκευαστές (Constructors) Ειδικός τύπος μεθόδων, οι οποίες: - είναι public και έχουν το ίδιο όνομα με αυτό της κλάσης - χρησιμοποιούνται για να αρχικοποιήσουν κάποιες
Αντικειμενοστρεφής Σχεδιασμός
ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 1 Αντικειμενοστρεφής Σχεδιασμός Οι διαφάνειες προσαρμόστηκαν από διαλέξεις του μαθήματος «ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός» και παραχωρήθηκαν με την
Διάλεξη 8-9: Αντικειμενοστρεφής Σχεδιασμός Ι
Διάλεξη 8-9: Αντικειμενοστρεφής Σχεδιασμός Ι Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Διαδικασίες Ανάπτυξης Λογισμικού, Μοντέλα -Παράδειγμα Διαδικασίας Ανάπτυξης Λογισμικού: Βιβλίο Διευθύνσεων
Διάλεξη 10: Αντικειμενοστρεφής Σχεδιασμός ΙI. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 10: Αντικειμενοστρεφής Σχεδιασμός ΙI Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Παράδειγμα Διαδικασίας Ανάπτυξης Λογισμικού: Βιβλίο Διευθύνσεων - Φάση 2: Σχεδίαση(Κάρτες CRC, διαγράμματα
Κλάσεις και Αντικείµενα
Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν
Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2
Ανασκόπηση Μια εφαρμογή Java είναι ένα σύνολο από συνεργαζόμενες κλάσεις Διάλεξη #2: Αντικείμενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή
Βασικά Στοιχεία της Java
Βασικά Στοιχεία της Java Παύλος Εφραιμίδης Java Βασικά Στοιχεία της γλώσσας Java 1 Τύποι Δεδομένων Η Java έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) τύπους δεδομένων αναφορές Java Βασικά
Αντικειµενοστρεφής Προγραµµατισµός
16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη
Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών
Εισαγωγή στη γλώσσα προγραμματισμού JAVA Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Το πρώτο φλιτζάνι Java Λίστα με τα απαραίτητα Το πρώτο μου πρόγραμμα(hello World) Συνεχίζοντας
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
Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Υπερφόρτωση (Overloading), Μεθόδων (Method Overloading), Τελεστών (Operator Overloading (C++, C#))
Αντικειμενοστρεφής Προγραμματισμός
Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java
Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java
Εξάμηνο Μάθημα Τίτλος 2017 2018 Εαρινό Αντικειμενοστραφής Προγραμματισμός Ι Ύλη εργαστηρίου, Ασκήσεις Java Ημερομηνία Εργαστήριο 5 ο Α. Ύλη εργαστηρίου 5.1 Έννοιες αντικειμενοστραφούς προγραμματισμού,
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors Μαθήματα από το lab Ένα πρόγραμμα αποτελείται από διάφορες κλάσεις και αντικείμενα αυτών των κλάσεων. Μία από τις κλάσεις
Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;
Εισαγωγή Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; 1. Σελίδα μαθήματος Εγγραφή Ο κάθε φοιτητής πρέπει να κάνει εγγραφή στη σελίδα του μαθήματος στην πλατφόρμα e-class
Διάλεξη 1: Αντικειμενοστρεφής Προγραμματισμός -Εισαγωγή. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 1: Αντικειμενοστρεφής Προγραμματισμός -Εισαγωγή Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Γλώσσες Προγραμματισμού - Μεταγλώττιση και Διερμηνεία -Η πλατφόρμα
ΕΠΛ233 Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA
Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA 2 «Μονάδα Μετάφρασης» 2 «Μονάδα Μετάφρασης» Όταν δημιουργείται ένα αρχείο πηγαίου κώδικα στην Java, το αρχείο καλείται µονάδα µετάφρασης (compilation unit)
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors, equals, tostring Constructors (Δημιουργοί) O Constructor είναι μια «μέθοδος» η οποία καλείται όταν δημιουργούμε το αντικείμενο
Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1
Κλάσεις στη Java Παύλος Εφραιμίδης Java Κλάσεις στη Java 1 Κλάσεις στην Java Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 2
Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack
Κλάσεις στην Java Κλάσεις στη Java Παύλος Εφραιμίδης Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 1 Java Κλάσεις στη Java 2
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΑΝΑΦΟΡΕΣ new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για
Βασικά Στοιχεία της Java
Βασικά Στοιχεία της Παύλος Εφραιμίδης 1 Βασικά Στοιχεία της γλώσσας Τύποι Δεδομένων Η έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) iti τύπους δεδομένων δδ αναφορές 2 Βασικά Στοιχεία της
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για τον πίνακα είπαμε ότι
Τι σημαίνει; n Για την αποδοτική δέσμευση δομών δεδομένων μη. n Για την αποφυγή «διαρροών μνήμης» (memory leaks).
Δέσμευση Μνήμης (memory allocatio) Τι σημαίνει; Διαχείριση Μνήµης Ο καλός προγραμματισμός επιβάλλει την αποδοτική χρήση της μνήμης του Η/Υ. Είναι σημαντικό να καταλαβαίνουμε τις διαδικασίες δέσμευσης μνήμης:
Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6
Ανασκόπηση Μια εφαρµογή Java είναι ένα σύνολο από συνεργαζόµενες κλάσεις Εβδοµάδα 2: Αντικείµενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Προγραµµατισµό,,, Slide 1 Εισαγωγή στον Προγραµµατισµό,,, Slide 2 Ανασκόπηση:
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε
Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι
Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Generic Types Τα Generics έχουν προστεθεί στη JAVA από το 2004 ως μέρος του J2SE 5.0 Με τη χρήση
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Αντικείμενα ως ορίσματα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Αντικείμενα ως ορίσματα Η μνήμη του υπολογιστή Η κύρια μνήμη (main memory - RAM) του υπολογιστή κρατάει τα δεδομένα για την εκτέλεση των προγραμμάτων.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.
Αντικειμενοστρεφής Προγραμματισμός
Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr 1 Δομημένος προγραμματισμός έναντι αντικειμενοστρεφούς
8. Μέθοδοι (Methods)
8. Μέθοδοι (Methods) Χειμερινό εξάμηνο 2012 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Μέθοδοι που παρέχονται από τη τάξη Math του Java API Χρήση στατικών μεθόδων και
Αντικειμενοστρεφής Προγραμματισμός
Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 16/4/2018 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Τύποι της Java Primitives vs References Οι πρωταρχικοί
Διάλεξη 4: Προγραμματισμός σε JAVA IΙ. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 4: Προγραμματισμός σε JAVA IΙ Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: -Μέθοδοι - Πίνακες, Πολυδιάστατοι Πίνακες - Boxing/Unboxing - Χρήσιμες βιβλιοθήκες
Αντικειμενοστρεφής Προγραμματισμός
Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Περιεχόμενα Java Classes Java Objects Java
ΕΠΛ233 Βασικά στοιχεία προγραµµατισµού στη JAVA
Βασικά στοιχεία προγραµµατισµού στη JAVA Διαχείριση Μνήµης 3 Δέσμευση Μνήμης Ο καλός προγραμματισμός επιβάλλει την αποδοτική χρήση της μνήμης του Η/Υ. Είναι σημαντικό να καταλαβαίνουμε τις διαδικασίες
ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος sfetsos@it.teithe.gr
ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr ΕΡΓΑΣΤΗΡΙΟ - 3 ΘΕΜΑΤΑ: Κλάσεις Αντικείμενα Δομητές/Κατασκευαστές - Μέθοδοι - Παράμετροι
Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #12
Διάγραμμα κλάσεων [Class diagram] Διάλεξη #12: Υπο-τύποι και πολυμορφισμός [sub-typing and polymorphism] Database Music Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή
2.1 Αντικειµενοστρεφής προγραµµατισµός
2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας Στην άσκηση αυτή θα υλοποιήσετε μια κλάση Geometric η οποία διαχειρίζεται μια γεωμετρική ακολουθία ακεραίων
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.
Εισαγωγή στον Προγ/μό Η/Υ
Εισαγωγή στον Προγ/μό Η/Υ Ενότητα 7 2ο μέρος: Επιπλέον έννοιες σχετικά με αντικείμενα Διδάσκων: Μιχάλης Τίτσιας Περιεχόμενα Τι μπορεί να περιέχει μια τάξη Μέθοδοι τάξης και σταθερές τάξης Πολυμορφισμός
Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η
Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός
Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ
Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Κων. Κόκκινος Μεταβλητές-1 Οι μεταβλητές αποτελούν θέσεις μνήμης στις οποίες αποθηκεύονται τιμές αντίστοιχες
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Ισότητα Strings class StringTest public static void main(string args[]) String x1 = "java"; String y1 = "java"; System.out.println("1.
Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου
Αντικειμενοστρέφεια Henri Matisse, Harmony in Red, 1908 Κωστής Σαγώνας Νίκος Παπασπύρου Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής
1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι
1 ΕΙΣΑΓΩΓΗ Η γλώσσα προγραµµατισµού Java είναι ισχυρά τυποποιηµένη (strongly typed), που σηµαίνει ότι κάθε µεταβλητή και κάθε έκφραση έχει κάποιο τύπο, ο οποίος πρέπει να είναι γνωστός κατά το χρόνο της
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται πάνω σε μία ευθεία πάντα
Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η
Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις 2 Ανατομία ενός προγράμματος
Βασικά της γλώσσας JAVA
17 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός μνήμης Αντικείμενα παράμετροι String Interning
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός μνήμης Αντικείμενα παράμετροι String Interning Αποθήκευση αντικειμένων Οι θέσεις μνήμης των αντικειμένων κρατάνε μια διεύθυνση στο
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Στην άσκηση αυτή θα υλοποιήσετε μια κλάση RandomVector η οποία διαχειρίζεται ένα τυχαίο διάνυσμα ακεραίων το οποίο μπορεί να έχει οποιοδήποτε
Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#
Εισαγωγή σε αντικειμενοστραφή concepts Και λίγη C# Κλάσεις Κλάση: τύπος δεδομένων που αποτελεί συλλογή πεδίων, ορισμών συναρτήσεων/μεθόδων και ορισμών άλλων τύπων δεδομένων. Αντίστοιχο σκεπτικό με struct
! Ο καλός προγραμματισμός επιβάλλει την αποδοτική χρήση. ! Είναι σημαντικό να καταλαβαίνουμε τις διαδικασίες
Δέσμευση Μνήμης! Ο καλός προγραμματισμός επιβάλλει την αποδοτική χρήση της μνήμης του Η/Υ. Διαχείριση Μνήµης! Είναι σημαντικό να καταλαβαίνουμε τις διαδικασίες δέσμευσης μνήμης:! Για την αποδοτική δέσμευση
Ευφυείς Τεχνολογίες ----Πράκτορες
Ευφυείς Τεχνολογίες ----Πράκτορες Ενότητα 6: Προγραμματισμός Βασισμένος στους πράκτορες Το Περιβάλλον Ανάπτυξης Πολλαπλών Πρακτόρων JADE Δημοσθένης Σταμάτης demos@it.teithe.gr www.it.teithe.gr/~demos Μαθησιακοί
ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07
ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 Αλγόριθμος: Βήμα προς βήμα διαδικασία για την επίλυση κάποιου προβλήματος. Το πλήθος των βημάτων πρέπει να είναι πεπερασμένο. Αλλιώς: Πεπερασμένη
Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java
Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java Δρ. Απόστολος Γκάμας Λέκτορας (407/80) gkamas@uop.gr Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 1 Εισαγωγή
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται πάνω σε μία ευθεία πάντα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο input
ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07
ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1
Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Κλάσεις και Αντικείμενα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Κλάσεις Η γενική μορφή μιας κλάσης είναι η εξής: class class-name { private data and
«ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» Κεφάλαιο 4: Αντικειμενοςτρεφήσ Προγραμματιςμόσ
«ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» Κεφάλαιο 4: Αντικειμενοςτρεφήσ Προγραμματιςμόσ 1 4.1. Οριςμόσ φνθετων τφπων κλάςεων 2 Με εξαίρεςη τουσ βαςικούσ τύπουσ τησ Java (int, float, boolean, κλπ) τα
Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15
Οι βασικές έννοιες που θα καλύψουμε Ομαδοποίηση αντικειμένων Εισαγωγή στις συλλογές Γενικές κλάσεις Iterators Συλλογές (ειδικά την ArrayList) Συνεχίζουμε την αναφορά στο θέμα της αφαίρεσης (abstraction)
Πακέτα (Packages) Φωλιασμένες ή Εσωτερικές Κλάσεις (Inner Classes) Παναγιώτης Σφέτσος, PhD
(Object Oriented Programming) Πακέτα (Packages) Φωλιασμένες ή Εσωτερικές Κλάσεις (Inner Classes) PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr Περιεχόμενα Μαθήματος Πακέτα (Packages) Φωλιασμένες
Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -
ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07
Ακαδ έτος 2007-2008 ΠΛΗΡΟΦΟΡΙΚΗ Ι Φερεντίνος 22/11/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με ΑΜ σε 3, 7, 8 & 9 22/11/07 Παράδειγμα με if/else if και user input: import javautil*; public class Grades public
ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος sfetsos@it.teithe.gr
ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr ΕΡΓΑΣΤΗΡΙΟ - 4 ΘΕΜΑΤΑ: Κλάσεις Αντικείμενα Δομητές/Κατασκευαστές - Μέθοδοι - Παράμετροι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι Μαθήματα από το lab Boolean μεταβλητές: Συνήθως τα ονόματα που δίνουμε στις boolean μεταβλητές περιγράφουν
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το
Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES
Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES Κων. Κόκκινος Αντικειμενοστραφής Προγραμματισμός Η ιδέα του αντικειμενοστραφούς προγραμματισμού Αυτόνομες οντότητες Στιγμιότυπα οντοτήτων Παράδειγμα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές Αντικείμενα ως ορίσματα Μπορούμε να περνάμε αντικείμενα ως ορίσματα σε μία μέθοδο όπως οποιαδήποτε άλλη μεταβλητή
Οντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 5: H ΓΛΩΣΣΑ C++ Διαφορές Java και C++ ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΔΙΑΦΟΡΕΣ JAVA C++ Η
Αρχές Τεχνολογίας Λογισμικού Εργαστήριο
Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Κωδικός Μαθήματος: TP323 Ώρες Εργαστηρίου: 2/εβδομάδα (Διαφάνειες Νίκου Βιδάκη) 1 JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο?
Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε
Εισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Constructors
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργία Κλάσεων και Αντικειμένων Constructors Κλάσεις και αντικείμενα Ορισμός κλάσης: class
Αντικειμενοστρεφής Προγραμματισμός
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 1: Εισαγωγή Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Έλεγχος ισότητας για Strings: Διαβάζουμε το String option και θέλουμε ένα loop να συνεχίσει
ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 26/2/2008
ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 26/2/2008 Τμήμα θεωρίας: Κάθε Τρίτη, 11πμ-2μμ, ΑΜΦ22. Διδάσκων: Ντίνος Φερεντίνος email: kpf3@cornell.edu Μάθημα: Θεωρία + προαιρετικό εργαστήριο (5-6 2ωρα εργαστήρια το εξάμηνο,
Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)
Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE) NetBeans, Πρώτα παραδείγματα ανάπτυξης Java εφαρμογών Στόχοι εργαστηρίου Εξοικείωση με τις βασικές
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 Σχεδίαση-Ανάπτυξη
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι String Interning
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι String Interning new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για τον
ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Περισσότερα για τις Κλάσεις, τα Αντικείμενα και τις Μεθόδους
ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr Περισσότερα για τις Κλάσεις, τα Αντικείμενα και τις Μεθόδους Σύνοψη των βασικών λειτουργιών
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Deep and Shallow Copies
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Deep and Shallow Copies Μαθήματα από το εργαστήριο Όταν η εκφώνηση σας ζητάει να φτιάξετε μία μέθοδο που παίρνει
Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #13
Wrapper Classes, Abstract Classes and Interfaces Διάλεξη #13: Μεταβλητές/μέθοδοι κλάσης, αφηρημένες κλάσεις και διαπροσωπείες Μεταβλητές /πεδία κλάσης [class variables] Τα αντικείμενα ανήκουν σε κλάσεις
Αντικειμενοστρεφής Προγραμματισμός
Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 30/5/2016 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Συλλογή απορριμμάτων Συλλογή απορριμμάτων (Garbage
Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)
Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE) NetBeans, Πρώτα παραδείγματα ανάπτυξης Java εφαρμογών Γαβαλάς Δαμιανός dgavalas@aegean.gr Στόχοι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java Είσοδος Χρησιμοποιούμε την κλάση Scanner της Java import java.util.scanner; Αρχικοποιείται με το ρεύμα εισόδου: Scanner in = new Scanner(System.in);
Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #3
Επισκόπηση Διάλεξη #3: Υλοποίηση μεθόδων Τοπικές μεταβλητές Κλήση μεθόδων Μέθοδοι της κλάσης String Δημιουργία αντικειμένων Στατικές μέθοδοι (μέθοδοι κλάσεων) Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,,
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Αντικείμενα ως ορίσματα Μπορούμε να περνάμε αντικείμενα ως ορίσματα σε μία μέθοδο όπως οποιαδήποτε άλλη μεταβλητή Οποιαδήποτε κλάση
Δομές Δεδομένων. Δημήτρης Μιχαήλ. Υλοποίηση Δυαδικού Σωρού σε γλώσσα Java. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Δομές Δεδομένων Υλοποίηση Δυαδικού Σωρού σε γλώσσα Java Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Σωρός Μεγίστου ως ΑΤΔ Ένας σωρός μεγίστου (max heap) είναι ένας ΑΤΔ που
4 Συλλογές Αντικειμένων
4 Συλλογές Αντικειμένων Πώς χειριζόμαστε αντικείμενα σε ομάδες με επανάληψη Η Απαίτηση Συλλογών Αντικειμένων Πολλές εφαρμογές χρειάζονται πλήθος αντικειμένων: Κατάλογος βιβλίων Φοιτητολόγιο Πελατολόγιο
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java Η εξέλιξη των γλωσσών προγραμματισμού Η εξέλιξη των γλωσσών προγραμματισμού είναι μια διαδικασία αφαίρεσης Στην αρχή ένα πρόγραμμα ήταν μια
Η λέξη κλειδί this. Γαβαλάς Δαμιανός dgavalas@aegean.gr
Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #6 η : Η λέξη κλειδί this, υπερφόρτωση μεθόδων, κληρονομικότητα, πολυμορφισμός, υπερκάλυψη, επίπεδα προσπέλασης Γαβαλάς Δαμιανός dgavalas@aegean.gr