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

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

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

Transcript

1 Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 15/5/2017 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια

2 Τα πλεονεκτήματα της κληρονομικότητας Αποφυγή πανομοιότυπων τμημάτων κώδικα: η χρήση της κληρονομικότητας εξαλείφει την ανάγκη να γράφουμε πανομοιότυπα ή πολύ όμοια τμήματα κώδικα δύο φορές (ή ακόμα περισσότερες). Επαναχρησιμοποίηση κώδικα: μπορούμε να χρησιμοποιούμε εκ νέου υπάρχοντα κώδικα. Αν υπάρχει ήδη μια κλάση παρόμοια με αυτή που χρειαζόμαστε, μπορούμε ορισμένες φορές να δηλώσουμε την υπάρχουσα κλάση και ως υποκλάση, και να επαναχρησιμοποιήσουμε τμήμα του υπάρχοντος κώδικα, αντί να υλοποιούμε τα πάντα ξανά. Ευκολότερη συντήρηση: διευκολύνεται η συντήρηση της εφαρμογής, αφού η σχέση μεταξύ των κλάσεων εκφράζεται με σαφήνεια. Κάποια αλλαγή σε ένα πεδίο ή μια μέθοδο που μοιράζεται μεταξύ διαφορετικών τύπων υποκλάσεων χρειάζεται να γίνει μόνο μία φορά. Επεκτασιμότητα: η χρήση της κληρονομικότητας, καθιστά πολύ ευκολότερη την επέκταση μιας υπάρχουσας εφαρμογής με συγκεκριμένους τρόπους.

3 Η κλάση Object Η κλάση java.lang.object είναι η superclass όλων των κλάσεων! Αν μία κλάση δεν λέει ρητά από ποια κλάση προκύπτει, τότε προκύπτει από την κλάση Object

4 Η κλάση Object Όλες οι κλάσεις στη Java κληρονομούν έμμεσα ή άμεσα από την κλάση Object (πακέτο java.lang ), συνεπώς οι 11 μέθοδοί της κληρονομούνται από όλες τις άλλες κλάσεις! Οι μέθοδοι της κλάσης Object clone equals finalize getclass hashcode notify, notifyall, wait tostring 2005 Pearson Education, Inc. All rights reserved.

5 Η κλάση Object Method Description Clone This protected method, which takes no arguments and returns an Object reference, makes a copy of the object on which it is called. When cloning is required for objects of a class, the class should override method clone as a public method and should implement interface Cloneable (package java.lang). The default implementation of this method performs a socalled shallow copy instance variable values in one object are copied into another object of the same type. For reference types, only the references are copied. A typical overridden clone method s implementation would perform a deep copy that creates a new object for each reference type instance variable. There are many subtleties to overriding method clone. You can learn more about cloning in the following article: java.sun.com/developer/jdctechtips/2001/tt0306.html 2005 Pearson Education, Inc. All rights reserved.

6 Η κλάση Object Method Description Equals This method compares two objects for equality and returns true if they are equal and false otherwise. The method takes any Object as an argument. When objects of a particular class must be compared for equality, the class should override method equals to compare the contents of the two objects. The method s implementation should meet the following requirements: It should return false if the argument is null. It should return true if an object is compared to itself, as in object1.equals( object1 ). It should return true only if both object1.equals( object2 ) and object2.equals( object1 ) would return true. For three objects, if object1.equals( object2 ) returns true and object2.equals( object3 ) returns true, then object1.equals( object3 ) should also return true. If equals is called multiple times with the two objects and the objects do not change, the method should consistently return true if the objects are equal and false otherwise. A class that overrides equals should also override hashcode to ensure that equal objects have identical hashcodes. The default equals implementation uses operator == to determine whether two references refer to the same object in memory. Section demonstrates class String s equals method and differentiates between comparing String objects with == and with equals Pearson Education, Inc. All rights reserved.

7 Η κλάση Object Method Description finalize This protected method (introduced in Section 8.10 and Section 8.11) is called by the garbage collector to perform termination housekeeping on an object just before the garbage collector reclaims the object s memory. It is not guaranteed that the garbage collector will reclaim an object, so it cannot be guaranteed that the object s finalize method will execute. The method must specify an empty parameter list and must return void. The default implementation of this method serves as a placeholder that does nothing. getclass Every object in Java knows its own type at execution time. Method getclass (used in Section 10.5 and Section 21.3) returns an object of class Class (package java.lang) that contains information about the object s type, such as its class name (returned by Class method getname). You can learn more about class Class in the online API documentation at java.sun.com/j2se/5.0/docs/api/java/lang/class.html Pearson Education, Inc. All rights reserved.

8 Η κλάση Object Method hashcode notify, notifyall, wait tostring Description A hashtable is a data structure (discussed in Section 19.10) that relates one object, called the key, to another object, called the value. When initially inserting a value into a hashtable, the key s hashcode method is called. The hashcode value returned is used by the hashtable to determine the location at which to insert the corresponding value. The key s hashcode is also used by the hashtable to locate the key s corresponding value. Methods notify, notifyall and the three overloaded versions of wait are related to multithreading, which is discussed in Chapter 23. In J2SE 5.0, the multithreading model has changed substantially, but these features continue to be supported. This method (introduced in Section 9.4.1) returns a String representation of an object. The default implementation of this method returns the package name and class name of the object s class followed by a hexadecimal representation of the value returned by the object s hashcode method Pearson Education, Inc. All rights reserved.

9 Πολυμορφισμός Ορισμός Webster: pol-y-mor-phism n. : a genetic variation that produces differing characteristics in individuals of the same population or species pol-y-mor-phous adj. : having, assuming, or passing through many or various forms, stages, or the like Η βασική αρχή και στόχοι της γενίκευσης και της αφαίρεσης είναι : Επαναχρησιμοποίηση (Reuse) Διαλειτουργικότητα (Interoperability)

10 Πολυμορφισμός Πολυμορφισμός Επιτρέπει «programming in the general» Η ίδια κλήση μπορεί να παράγει «πολλούς τύπους» αποτελεσμάτων Interfaces υλοποιούνται από κλάσεις για να εκχωρούν κοινή λειτουργικότητα σε πιθανώς μη σχετιζόμενες κλάσεις

11 Παράδειγμα Πρόγραμμα προσομοίωσης κίνησης διαφόρων τύπων ζώων για βιολογική μελέτη Υπερκλάση Animal Υποκλάσεις Fish, Frog, Bird H υπερκλάση Animal περιλαμβάνει τη μέθοδο move και διατηρεί την τρέχουσα θέση ενός ζώoυ Κάθε τύπος ζώου αντιδρά με μοναδικό τρόπο στη μέθοδο move Το Fish κολυμπά τρία μέτρα Το Frog πηδάει πέντε πόδια Το Bird πετάει δέκα μέτρα

12 Πολυμορφισμός Πολυμορφισμός Όταν ένα πρόγραμμα καλεί μία μέθοδο μέσω μιας μεταβλητής υπερκλάσης κατά την εκτέλεση, καλείται η σωστή έκδοση υποκλάσης της μεθόδου, με βάση τον τύπο αναφοράς που αποθηκεύεται στη μεταβλητή υπερκλάσης Το ίδιο μήνυμα (μέθοδος και υπογραφή μεθόδου) στέλνεται σε διαφορετικά αντικείμενα που έχει «πολλές μορφές» αποτελεσμάτων Διευκολύνει την προσθήκη νέων κλάσεων στο σύστημα με ελάχιστες τροποποιήσεις στον κώδικα του συστήματος 2005 Pearson Education, Inc. All rights reserved.

13 Παρατήρηση Ο πολυμορφισμός επιτρέπει να χειριζόμαστε τις γενικότητες και να αφήνουμε το περιβάλλον εκτέλεσης να χειριστεί τα ειδικά θέματα. Μπορούμε να δίνουμε εντολή στα αντικείμενα ώστε να συμπεριφέρονται με τρόπους κατάλληλους για αυτά τα αντικείμενα, χωρίς να γνωρίζουν τους τύπους των αντικειμένων (εφόσον τα αντικείμενα ανήκουν στην ίδια ιεραρχία κληρονομικότητας) Pearson Education, Inc. All rights reserved.

14 Παρατήρηση Ο πολυμορφισμός προωθεί την επεκτασιμότητα: το λογισμικό που καλεί πολυμορφική συμπεριφορά είναι ανεξάρτητο του τύπου αντικειμένου, στο οποίο στέλνονται τα μηνύματα. Σε ένα σύστημα μπορούν να ενσωματωθούν νέοι τύποι αντικειμένων που μπορούν να αποκριθούν σε κλήσεις υπαρχουσών μεθόδων χωρίς να απαιτείται τροποποίηση στο βασικό σύστημα. Μόνο ο κώδικας του πελάτη που δημιουργεί νέα αντικείμενα πρέπει να τροποποιηθεί για τους νέους τύπους Pearson Education, Inc. All rights reserved.

15 Παρουσίαση πολυμορφικής συμπεριφοράς Μία αναφορά υπερκλάσης χρησιμοποιείται σε αντικείμενο υποκλάσης! Αυτό είναι δυνατό γιατί κάθε αντικείμενο της υποκλάσης είναι ένα αντικείμενο της υπερκλάσης ΤΟ ΑΝΤΙΣΤΡΟΦΟ ΔΕΝ ΙΣΧΥΕΙ 2005 Pearson Education, Inc. All rights reserved.

16 1 // Fig. 10.1: PolymorphismTest.java 2 // Assigning superclass and subclass references to superclass and 3 // subclass variables. 4 5 public class PolymorphismTest 6 { 7 public static void main( String args[] ) 8 { 9 // εκχωρεί την αναφορά υπερκλάσης στη μεταβλητή υπερκλάσης 10 CommissionEmployee3 commissionemployee = new CommissionEmployee3( 11 "Sue", "Jones", " ", 10000,.06 ); // εκχωρεί την αναφορά υποκλάσης στη μεταβλητή υποκλάσης 14 BasePlusCommissionEmployee4 basepluscommissionemployee = 15 new BasePlusCommissionEmployee4( 16 "Bob", "Lewis", " ", 5000,.04, 300 ); // καλεί την tostring στο αντικείμενο υπερκλάσης με μεταβλητή υπερκλάσης 19 System.out.printf( "%s %s:\n\n%s\n\n", 20 "Call CommissionEmployee3's tostring with superclass reference ", 21 "to superclass object", commissionemployee.tostring() ); // καλεί την tostring στο αντικείμενο υποκλάσης με μεταβλητή υποκλάσης 24 System.out.printf( "%s %s:\n\n%s\n\n", 25 "Call BasePlusCommissionEmployee4's tostring with subclass", 26 "reference to subclass object", 27 basepluscommissionemployee.tostring() ); 28 Εκχώρηση αναφορών υπερκλάσης και υποκλάσης σε μεταβλητές υπερκλάσης και υποκλάσης Τυπικές εκχωρήσεις αναφορών

17 29 // invoke tostring on subclass object using superclass variable 30 CommissionEmployee3 commissionemployee2 = 31 basepluscommissionemployee; 32 System.out.printf( "%s %s:\n\n%s\n", 33 "Call BasePlusCommissionEmployee4's tostring with superclass", 34 "reference to subclass object", commissionemployee2.tostring() ); 35 } // end main 36 } // end class PolymorphismTest Call CommissionEmployee3's tostring with superclass reference to superclass object: commission employee: Sue Jones social security number: gross sales: commission rate: 0.06 Call BasePlusCommissionEmployee4's tostring with subclass reference to subclass object: base-salaried commission employee: Bob Lewis social security number: gross sales: commission rate: 0.04 base salary: Call BasePlusCommissionEmployee4's tostring with superclass reference to subclass object: base-salaried commission employee: Bob Lewis social security number: gross sales: commission rate: 0.04 base salary: Εκχωρεί την αναφορά στο αντικείμενο υποκλάσης basepluscommissionemployee σε μία μεταβλητή υπερκλάσης CommissionEmployee3 Polymorphically call basepluscommissionemployee s tostring method ΠΡΟΣΟΧΗ Όταν μία μεταβλητή υπερκλάσης περιέχει αναφορά σε αντικείμενο υποκλάσης και αυτή η αναφορά χρησιμοποιείται για να καλέσει μία μέθοδο, στην πραγματικότητα καλεί την έκδοση υποκλάσης της μεθόδου

18 Abstract κλάσεις και μέθοδοι Abstract κλάσεις Κλάσεις οι οποίες είναι πολύ γενικές για να δημιουργήσουν πραγματικά αντικείμενα Χρησιμοποιούνται μόνο ως abstract υπερκλάσεις για τον ορισμό ειδικών (concrete) υποκλάσεων και για τη δήλωση μεταβλητών αναφοράς Πολλές ιεραρχίες κληρονομικότητας έχουν abstract υπερκλάσεις στα υψηλότερα επίπεδα Keyword abstract Χρησιμοποιείται για να δηλώσει μία κλάση abstract Χρησιμοποιείται επίσης για να δηλώσει μία μέθοδο abstract Οι abstract κλάσεις συνήθως περιέχουν abstract μεθόδους Όλες οι ειδικές υποκλάσεις πρέπει να δηλώνουν «τα κομμάτια που λείπουν» παρέχοντας υλοποιήσεις για κάθε μέθοδο που δηλώνουν 2005 Pearson Education, Inc. All rights reserved.

19 Abstract κλάσεις Μία abstract κλάση δεν μπορεί να γίνει instantiated Χρησιμοποιείται στην ιεραρχία των κλάσεων για να οργανώσει κοινά χαρακτηριστικά σε κατάλληλα επίπεδα Μια abstract μέθοδος δεν έχει υλοποίηση, έχει μόνο όνομα και υπογραφή (signature) Μία abstract κλάση συχνά περιλαμβάνει abstract μεθόδους Οι abstract μέθοδοι μπορούν να εμφανίζονται σε κλάσεις που έχουν οι ίδιες δηλωθεί abstract Ο modifier abstract χρησιμοποιείται να ορίσει abstract κλάσεις & μεθόδους Τα παιδιά μίας abstract κλάσης αναμένεται να ορίσουν υλοποιήσεις των abstract μεθόδων Αν μία child κλάση δεν ορίσει όλες τις abstract μεθόδους του γονέα, τότε το παιδί είναι επίσης abstract

20 Παράδειγμα Παραγωγή ειδικών κλάσεων Circle, Square, Triangle από την abstract υπερκλάση TwoDimensionalShape Παραγωγή ειδικών κλάσεων Sphere, Cube, Tetrahedron από την abstract υπερκλάση ThreeDimensionalShape Αν η abstract κλάση TwoDimensionalShape λάβει το μήνυμα draw γνωρίζει ότι τα δισδιάστατα σχήματα πρέπει να σχεδιάζονται αλλά δεν γνωρίζει ποιο συγκεκριμένο σχήμα να σχεδιάσει, συνεπώς δεν μπορεί να υλοποιήσει μία πραγματική μέθοδο draw

21 Παράδειγμα Έστω μία εφαρμογή paint-brush: Θέλουμε να αναπαραστήσουμε το drawing ως συλλογή αντικειμένων, που το καθένα αναπαριστά συγκεκριμένο σχήμα Θέλουμε να αναπαραστήσουμε κάθε τύπο σχήματος με μία κατάλληλη κλάση. Αντικείμενα αυτών των κλάσεων θα ξέρουν πως να ζωγραφίσουν τον εαυτό τους Οι κλάσεις έχουν κοινές ιδιότητες (location, size, color,...) και κοινές συμπεριφορές (moveto(), resize(),...). Θέλουμε να έχουμε μία κοινή υπερκλάση για όλες αυτές τις κλάσεις

22 Abstract κλάσεις Δεν θα δημιουργήσουμε όμως στιγμιότυπο της κλάσης Figure. Επομένως:

23 Abstract κλάσεις Επίσης ορίζουμε ως abstract τη μέθοδο draw() γιατί δεν έχει νόημα η υλοποίησή της στην κλάση Figure

24 Abstract κλάσεις Μία υποκλάση της κλάσης Figure πρέπει είτε να είναι abstract είτε να υλοποιήσει όλες τις abstract μεθόδους της κλάσης Figure Μία abstract μέθοδος δεν μπορεί να οριστεί ως final, γιατί πρέπει να γίνει overridden σε μία child κλάση Μία abstract μέθοδος δεν μπορεί να δηλωθεί ως static, γιατί δεν μπορεί να επικαλεστεί χωρίς υλοποίηση

25 Παρατήρηση Μία abstract class δηλώνει τα κοινά χαρακτηριστικά και συμπεριφορές (αφαιρετικές και ειδικές) διαφόρων κλάσεων σε μία ιεραρχία κλάσεων. Μία abstract class τυπικά περιέχει μία ή περισσότερες abstract methods που πρέπει να επικαλύψουν οι υποκλάσεις αν πρέπει να είναι ειδικές. Οι μεταβλητές στιγμιότυπου (πεδία) και οι μέθοδοι μιας abstract class υπόκεινται στους συνηθισμένους κανόνες κληρονομικότητας Pearson Education, Inc. All rights reserved.

26 Προγραμματιστικό λάθος Η προσπάθεια δημιουργίας ενός αντικειμένου μίας abstract class αποτελεί λάθος μεταγλώττισης Οι constructors και οι static μέθοδοι δεν μπορούν να δηλωθούν abstract Οι constructors δεν κληρονομούνται, συνεπώς ένας abstract constructor δεν θα μπορούσε να υλοποιηθεί ποτέ. Αν και οι μη private static μέθοδοι μπορούν να κληρονομηθούν, δεν μπορούν να επικαλυφθούν. Αφού οι abstract μέθοδοι δημιουργούνται για να επικαλυφθούν, δεν θα είχε νόημα να δηλώσουμε μία static μέθοδο ως abstract Αποτελεί λάθος μεταγλώττισης αν δεν υλοποιήσετε τις abstract μεθόδους μιας υπερκλάσης σε μία υποκλάση εκτός και αν η υποκλάση δηλωθεί επίσης abstract 2005 Pearson Education, Inc. All rights reserved.

27 final μέθοδοι και κλάσεις final methods Δεν μπορούν να επικαλυφθούν Οι private και static μέθοδοι είναι έμμεσα final Οι final μέθοδοι αναλύονται κατά τη μεταγλώττιση, αυτό είναι γνωστό ως στατική σύνδεση final classes Δεν μπορούν να επεκταθούν από μία υποκλάση Όλες οι μέθοδοι σε μία final class είναι έμμεσα final

28 Προγραμματιστικό λάθος Η προσπάθεια δήλωσης υποκλάσης μιας final class αποτελεί λάθος μεταγλώττισης 2005 Pearson Education, Inc. All rights reserved.

29 Παρατήρηση Στο Java API, η μεγάλη πλειονότητα των κλάσεων δεν δηλώνονται ως final. Αυτό επιτρέπει την κληρονομικότητα και τον πολυμορφισμό. Ωστόσο σε μερικές περιπτώσεις, είναι σημαντικό να δηλώνετε τις κλάσεις ως final γενικά για λόγους ασφαλείας.

30 Παραδείγματα Τι συμβαίνει κατά τη μετάφραση του παρακάτω προγράμματος Java: final class A {...} class B extends A {... } Compile error: We can t extend final classes

31 Παραδείγματα Shape είναι μια αφηρημένη (abstract) κλάση που ορίζεται ως ακολούθως: abstract class Shape { abstract void draw(); abstract void move(int x, int y); abstract void scale(double factor); int x,y; int width, height; } Τι συμβαίνει κατά τη μετάφραση της παρακάτω ειδικής κλάσης Square που εξειδικεύει την Shape? class Square extends Shape { void move(int x, int y) {this.x = x; this.y = y;}; } Compile error: Concrete classes extending an abstract class should implement all its abstract methods

32 Διάγραμμα κλάσεων UML της ιεραρχίας Employee Μία εταιρεία πληρώνει τους εργαζόμενους σε εβδομαδιαία βάση. Οι εργαζόμενοι είναι τεσσάρων κατηγοριών: - Μισθωτοί (salaried) πληρώνονται με σταθερές εβδομαδιαίες αποδοχές - Ωρομίσθιοι (hourly) πληρώνονται με ώρες εργασίας και υπερωρίες (1,5 φορά το ωρομίσθιο) - Εργαζόμενοι με προμήθεια (commission) πληρώνονται με ποσοστό επί των πωλήσεων - Εργαζόμενοι με προμήθεια και μισθό (base-salaried commission) παίρνουν βασικό μισθό και ποσοστό επί των πωλήσεων Η εταιρεία θέλει να επιβραβεύσει τους εργαζόμενους με μισθό και προμήθεια προσθέτοντας 10% στους βασικούς μισθούς

33 Δημιουργία abstract υπερκλάσης Employee abstract υπερκλάση Employee η μέθοδος earnings δηλώνεται abstract Δεν μπορεί να δοθεί υλοποίηση για την earnings στην abstract κλάση Employee Διατηρούμε ένα πίνακα μεταβλητών Employee όπου κάθε μία περιέχει αναφορά σε αντικείμενο υποκλάσης Κλήσεις της μεθόδου earnings θα έχουν ως αποτέλεσμα την κλήση της κατάλληλης έκδοσης της μεθόδου earnings

34 Πολυμορφική διασύνδεση για την ιεραρχία κλάσεων Employee Ορισμός μεθόδου earnings Πεδία κλάσεων

35 1 // Fig. 10.4: Employee.java 2 // Employee abstract superclass. 3 4 public abstract class Employee 5 { 6 private String firstname; 7 private String lastname; 8 private String socialsecuritynumber; 9 10 // three-argument constructor 11 public Employee( String first, String last, String ssn ) 12 { 13 firstname = first; 14 lastname = last; 15 socialsecuritynumber = ssn; 16 } // end three-argument Employee constructor 17 Declare abstract class Employee Attributes common to all employees

36 18 // set first name 19 public void setfirstname( String first ) 20 { 21 firstname = first; 22 } // end method setfirstname // return first name 25 public String getfirstname() 26 { 27 return firstname; 28 } // end method getfirstname // set last name 31 public void setlastname( String last ) 32 { 33 lastname = last; 34 } // end method setlastname // return last name 37 public String getlastname() 38 { 39 return lastname; 40 } // end method getlastname 41

37 42 // set social security number 43 public void setsocialsecuritynumber( String ssn ) 44 { 45 socialsecuritynumber = ssn; // should validate 46 } // end method setsocialsecuritynumber // return social security number 49 public String getsocialsecuritynumber() 50 { 51 return socialsecuritynumber; 52 } // end method getsocialsecuritynumber // return String representation of Employee object 55 public String tostring() 56 { 57 return String.format( "%s %s\nsocial security number: %s", 58 getfirstname(), getlastname(), getsocialsecuritynumber() ); 59 } // end method tostring // abstract method overridden by subclasses 62 public abstract double earnings(); // no implementation here 63 } // end abstract class Employee abstract method earnings has no implementation

38 1 // Fig. 10.5: SalariedEmployee.java 2 // SalariedEmployee class extends Employee. 3 4 public class SalariedEmployee extends Employee 5 { 6 private double weeklysalary; 7 8 // four-argument constructor 9 public SalariedEmployee( String first, String last, String ssn, 10 double salary ) 11 { 12 super( first, last, ssn ); // pass to Employee constructor 13 setweeklysalary( salary ); // validate and store salary 14 } // end four-argument SalariedEmployee constructor // set salary 17 public void setweeklysalary( double salary ) 18 { 19 weeklysalary = salary < 0.0? 0.0 : salary; 20 } // end method setweeklysalary 21 Call superclass constructor Class SalariedEmployee extends class Employee Call setweeklysalary method Validate and set weekly salary value

39 22 // return salary 23 public double getweeklysalary() 24 { 25 return weeklysalary; 26 } // end method getweeklysalary // calculate earnings; override abstract method earnings in Employee 29 public double earnings() 30 { 31 return getweeklysalary(); 32 } // end method earnings // return String representation of SalariedEmployee object 35 public String tostring() 36 { 37 return String.format( "salaried employee: %s\n%s: $%,.2f", 38 super.tostring(), "weekly salary", getweeklysalary() ); 39 } // end method tostring 40 } // end class SalariedEmployee Override earnings method so SalariedEmployee can be concrete Override tostring method Call superclass s version of tostring Αν δεν υλοποιήσουμε την earnings, η κλάση SalariedEmployee πρέπει να δηλώνεται ως abstract, αλλιώς δε θα μεταγλωττιστεί

40 1 // Fig. 10.6: HourlyEmployee.java 2 // HourlyEmployee class extends Employee. 3 4 public class HourlyEmployee extends Employee 5 { 6 private double wage; // wage per hour 7 private double hours; // hours worked for week 8 9 // five-argument constructor 10 public HourlyEmployee( String first, String last, String ssn, 11 double hourlywage, double hoursworked ) 12 { 13 super( first, last, ssn ); 14 setwage( hourlywage ); // validate hourly wage 15 sethours( hoursworked ); // validate hours worked 16 } // end five-argument HourlyEmployee constructor // set wage 19 public void setwage( double hourlywage ) 20 { 21 wage = ( hourlywage < 0.0 )? 0.0 : hourlywage; 22 } // end method setwage // return wage 25 public double getwage() 26 { 27 return wage; 28 } // end method getwage 29 Class HourlyEmployee extends class Employee Call superclass constructor Validate and set hourly wage value

41 30 // set hours worked 31 public void sethours( double hoursworked ) 32 { 33 hours = ( ( hoursworked >= 0.0 ) && ( hoursworked <= ) )? 34 hoursworked : 0.0; 35 } // end method sethours // return hours worked 38 public double gethours() 39 { 40 return hours; 41 } // end method gethours // calculate earnings; override abstract method earnings in Employee 44 public double earnings() 45 { 46 if ( gethours() <= 40 ) // no overtime 47 return getwage() * gethours(); 48 else 49 return 40 * getwage() + ( gethours() - 40 ) * getwage() * 1.5; 50 } // end method earnings // return String representation of HourlyEmployee object 53 public String tostring() 54 { 55 return String.format( "hourly employee: %s\n%s: $%,.2f; %s: %,.2f", 56 super.tostring(), "hourly wage", getwage(), 57 "hours worked", gethours() ); 58 } // end method tostring 59 } // end class HourlyEmployee Validate and set hours worked value Override earnings method so HourlyEmployee can be concrete Override tostring method Call superclass s tostring method

42 1 // Fig. 10.7: CommissionEmployee.java 2 // CommissionEmployee class extends Employee. 3 4 public class CommissionEmployee extends Employee 5 { 6 private double grosssales; // gross weekly sales 7 private double commissionrate; // commission percentage 8 9 // five-argument constructor 10 public CommissionEmployee( String first, String last, String ssn, 11 double sales, double rate ) 12 { 13 super( first, last, ssn ); 14 setgrosssales( sales ); 15 setcommissionrate( rate ); 16 } // end five-argument CommissionEmployee constructor // set commission rate 19 public void setcommissionrate( double rate ) 20 { 21 commissionrate = ( rate > 0.0 && rate < 1.0 )? rate : 0.0; 22 } // end method setcommissionrate 23 Class CommissionEmployee extends class Employee Call superclass constructor Validate and set commission rate value

43 24 // return commission rate 25 public double getcommissionrate() 26 { 27 return commissionrate; 28 } // end method getcommissionrate // set gross sales amount 31 public void setgrosssales( double sales ) 32 { 33 grosssales = ( sales < 0.0 )? 0.0 : sales; 34 } // end method setgrosssales // return gross sales amount 37 public double getgrosssales() 38 { 39 return grosssales; 40 } // end method getgrosssales 41 Validate and set the gross sales value

44 42 // calculate earnings; override abstract method earnings in Employee 43 public double earnings() 44 { 45 return getcommissionrate() * getgrosssales(); 46 } // end method earnings // return String representation of CommissionEmployee object 49 public String tostring() 50 { 51 return String.format( "%s: %s\n%s: $%,.2f; %s: %.2f", 52 "commission employee", super.tostring(), 53 "gross sales", getgrosssales(), 54 "commission rate", getcommissionrate() ); 55 } // end method tostring 56 } // end class CommissionEmployee Override earnings method so CommissionEmployee can be concrete Override tostring method Call superclass s tostring method

45 1 // Fig. 10.8: BasePlusCommissionEmployee.java 2 // BasePlusCommissionEmployee class extends CommissionEmployee. 3 4 public class BasePlusCommissionEmployee extends CommissionEmployee 5 { 6 private double basesalary; // base salary per week 7 8 // six-argument constructor 9 public BasePlusCommissionEmployee( String first, String last, 10 String ssn, double sales, double rate, double salary ) 11 { 12 super( first, last, ssn, sales, rate ); 13 setbasesalary( salary ); // validate and store base salary 14 } // end six-argument BasePlusCommissionEmployee constructor // set base salary 17 public void setbasesalary( double salary ) 18 { 19 basesalary = ( salary < 0.0 )? 0.0 : salary; // non-negative 20 } // end method setbasesalary 21 Class BasePlusCommissionEmployee extends class CommissionEmployee Call superclass constructor Validate and set base salary value

46 22 // return base salary 23 public double getbasesalary() 24 { 25 return basesalary; 26 } // end method getbasesalary // calculate earnings; override method earnings in CommissionEmployee 29 public double earnings() 30 { 31 return getbasesalary() + super.earnings(); 32 } // end method earnings // return String representation of BasePlusCommissionEmployee object 35 public String tostring() 36 { 37 return String.format( "%s %s; %s: $%,.2f", 38 "base-salaried", super.tostring(), 39 "base salary", getbasesalary() ); 40 } // end method tostring 41 } // end class BasePlusCommissionEmployee Override earnings method Call superclass s earnings method Override tostring method Call superclass s tostring method

47 1 // Fig. 10.9: PayrollSystemTest.java 2 // Employee hierarchy test program. 3 4 public class PayrollSystemTest 5 { 6 public static void main( String args[] ) 7 { 8 // create subclass objects 9 SalariedEmployee salariedemployee = 10 new SalariedEmployee( "John", "Smith", " ", ); 11 HourlyEmployee hourlyemployee = 12 new HourlyEmployee( "Karen", "Price", " ", 16.75, 40 ); 13 CommissionEmployee commissionemployee = 14 new CommissionEmployee( 15 "Sue", "Jones", " ", 10000,.06 ); 16 BasePlusCommissionEmployee basepluscommissionemployee = 17 new BasePlusCommissionEmployee( 18 "Bob", "Lewis", " ", 5000,.04, 300 ); System.out.println( "Employees processed individually:\n" ); 21

48 22 System.out.printf( "%s\n%s: $%,.2f\n\n", 23 salariedemployee, "earned", salariedemployee.earnings() ); 24 System.out.printf( "%s\n%s: $%,.2f\n\n", 25 hourlyemployee, "earned", hourlyemployee.earnings() ); 26 System.out.printf( "%s\n%s: $%,.2f\n\n", 27 commissionemployee, "earned", commissionemployee.earnings() ); 28 System.out.printf( "%s\n%s: $%,.2f\n\n", 29 basepluscommissionemployee, 30 "earned", basepluscommissionemployee.earnings() ); // create four-element Employee array 33 Employee employees[] = new Employee[ 4 ]; // initialize array with Employees 36 employees[ 0 ] = salariedemployee; 37 employees[ 1 ] = hourlyemployee; 38 employees[ 2 ] = commissionemployee; 39 employees[ 3 ] = basepluscommissionemployee; System.out.println( "Employees processed polymorphically:\n" ); // generically process each element in array employees 44 for ( Employee currentemployee : employees ) 45 { 46 System.out.println( currentemployee ); // invokes tostring 47 Παρατηρείστε ότι η μέθοδος tostring καλείται έμμεσα από την printf όταν εμφανίζεται το αντικείμενο ως String με το προσδιοριστικό μορφοποίησης %s Αναφορά υπερκλάσης σε αντικείμενο υποκλάσης επιτρέπεται γιατί ένα SalariedEmployee είναι ένα Employee Implicitly and polymorphically call tostring εδώ αποφασίζει κατά την εκτέλεση ποιας κλάσης η μέθοδος tostring θα κληθεί και όχι κατά τη μεταγλώττιση

49 48 // determine whether element is a BasePlusCommissionEmployee 49 if ( currentemployee instanceof BasePlusCommissionEmployee ) 50 { 51 // downcast Employee reference to 52 // BasePlusCommissionEmployee reference 53 BasePlusCommissionEmployee employee = 54 ( BasePlusCommissionEmployee ) currentemployee; double oldbasesalary = employee.getbasesalary(); 57 employee.setbasesalary( 1.10 * oldbasesalary ); 58 System.out.printf( 59 "new base salary with 10%% increase is: $%,.2f\n", 60 employee.getbasesalary() ); 61 } // end if System.out.printf( 64 "earned $%,.2f\n\n", currentemployee.earnings() ); 65 } // end for // get type name of each object in employees array 68 for ( int j = 0; j < employees.length; j++ ) 69 System.out.printf( "Employee %d is a %s\n", j, 70 employees[ j ].getclass().getname() ); 71 } // end main 72 } // end class PayrollSystemTest If the currentemployee variable points to a BasePlusCommissionEmployee object Downcast currentemployee to a BasePlusCommissionEmployee reference για να μπορούμε να καλέσουμε την getbasesalary της BasePlusCommissionEmployee στο τρέχον αντικείμενο Employee Give BasePlusCommissionEmploye es a 10% base salary bonus Polymorphically call earnings method Call getclass and getname methods to display each Employee subclass object s class name Κατά την πολυμρφική επεξεργασία των αντικειμένων, το πρόγραμμα αυξάνει το βασικό μισθό κάθε BasePlusCommissionEmployee κατά 10% (αυτό απαιτεί να προσδιοριστεί ο τύπος αντικειμένου κατά την εκτέλεση

50 Employees processed individually: salaried employee: John Smith social security number: weekly salary: $ earned: $ hourly employee: Karen Price social security number: hourly wage: $16.75; hours worked: earned: $ commission employee: Sue Jones social security number: gross sales: $10,000.00; commission rate: 0.06 earned: $ base-salaried commission employee: Bob Lewis social security number: gross sales: $5,000.00; commission rate: 0.04; base salary: $ earned: $500.00

51 Employees processed polymorphically: salaried employee: John Smith social security number: weekly salary: $ earned $ hourly employee: Karen Price social security number: hourly wage: $16.75; hours worked: earned $ commission employee: Sue Jones social security number: gross sales: $10,000.00; commission rate: 0.06 earned $ base-salaried commission employee: Bob Lewis social security number: gross sales: $5,000.00; commission rate: 0.04; base salary: $ new base salary with 10% increase is: $ earned $ Employee 0 is a SalariedEmployee Employee 1 is a HourlyEmployee Employee 2 is a CommissionEmployee Employee 3 is a BasePlusCommissionEmployee Same results as when the employees were processed individually Base salary is increased by 10% Each employee s type is displayed

52 Πολυμορφική επεξεργασία, τελεστής instanceof & υποβιβασμός τύπου Δυναμική δέσμευση Επίσης γνωστή ως σύνδεση με καθυστέρηση Κλήσεις σε μεθόδους επικάλυψης αναλύονται κατά την εκτέλεση, με βάση τον τύπο του αντικειμένου instanceof τελεστής Προσδιορίζει αν ένα αντικείμενο είναι στιγμιότυπο συγκεκριμένου τύπου

53 Προγραμματιστικό λάθος Η εκχώρηση μιας μεταβλητής υπερκλάσης σε μία μεταβλητή υποκλάσης (χωρίς άμεση αλλαγή τύπου) αποτελεί λάθος μεταγλώττισης!!! Κατά τον υποβιβασμό τύπου αντικειμένου, θα συμβεί μία ClassCastException, αν κατά την εκτέλεση το αντικείμενο δεν έχει μία σχέση «είναι-ένα» με τον τύπο που καθορίστηκε στον τελεστή αλλαγής τύπου. Μία αναφορά μπορεί να αλλάξει τύπο μόνο στο δικό της τύπο ή στον τύπο μιας των υπερκλάσεών της Pearson Education, Inc. All rights reserved.

54 Παρατήρηση Αν κατά την εκτέλεση η αναφορά ενός αντικειμένου υποκλάσης έχει εκχωρηθεί σε μεταβλητή των άμεσων ή έμμεσων υπερκλάσεών της, είναι αποδεκτή η αλλαγή τύπου της αναφοράς που αποθηκεύεται σε αυτή τη μεταβλητή υπερκλάσης σε μία αναφορά ξανά του τύπου της υποκλάσης. Πριν εκτελέσετε μία τέτοια αλλαγή τύπου, χρησιμοποιείστε τον τελεστή instanceof ώστε να εξασφαλίσετε ότι το αντικείμενο είναι πράγματι αντικείμενο κατάλληλου τύπου υποκλάσης Pearson Education, Inc. All rights reserved.

55 Πολυμορφική επεξεργασία, τελεστής instanceof & υποβιβασμός τύπου Downcasting Convert a reference to a superclass to a reference to a subclass Allowed only if the object has an is-a relationship with the subclass getclass method Inherited from Object Returns an object of type Class getname method of class Class Returns the class s name

56 Περίληψη επιτρεπτών εκχωρήσεων μεταξύ μεταβλητών υπερκλάσεων και υποκλάσεων Κανόνες εκχώρησης αναφοράς υπερκλάσεων και υποκλάσεων Εκχώρηση αναφοράς υπερκλάσης σε μεταβλητή υπερκλάσης είναι οκ Εκχώρηση αναφοράς υποκλάσης σε μεταβλητή υποκλάσης είναι οκ Εκχώρηση αναφοράς υποκλάσης σε μεταβλητή υπερκλάσης (widening) είναι ασφαλής λόγω της «είναι μία» σχέσης Αναφορά σε μέλη υποκλάσης μόνο μέσω μεταβλητών υπερκλάσης είναι σφάλμα μεταγλώττισης Εκχώρηση αναφοράς υπερκλάσης σε μεταβλητή υποκλάσης (narrowing) είναι σφάλμα μεταγλώττισης Ο υποβιβασμός τύπου λύνει αυτό το πρόβλημα

57 Πηγές/Acknowledgements H. M. Deitel, P. J. Deitel, Java Προγραμματισμός, 6η έκδοση, Μ. Γκιούρδας, 2006 D. Barnes, M. Kolling, Αντικειμενοστρεφής Προγραμματισμός σε Java, Κλειδάριθμος, 2008 Βασίλης Χριστοφίδης, Αντικειμενοστρεφής Προγραμματισμός, Πανεπιστήμιο Κρήτης Κ. Τσαγκάρης, Εισαγωγή στις εφαρμογές της Java, Πανεπιστήμιο Πειραιώς Jones, Evan, Adam Marcus, and Eugene Wu Introduction to Programming in Java,January IAP (Massachusetts Institute of Technology: MIT OpenCourseWare), (Accessed 10 Mar, 2013). License: Creative Commons BY-NC-SA

Ανάλυση άσκησης. Employee. SalariedEmployee CommissionEmployee HourlyEmployee. BasePlusCommissionEmployee

Ανάλυση άσκησης. Employee. SalariedEmployee CommissionEmployee HourlyEmployee. BasePlusCommissionEmployee Μία εταιρεία πληρώνει τους εργαζόμενους της σε εβδομαδιαία βάση. Οι αποδοχές των εργαζόμενων υπολογίζονται με τέσσερις διαφορετικούς τρόπους : Α) Μισθωτοί (SalariedEmployee), πληρώνονται με σταθερό ποσό

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 30/4/2018 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Τα πλεονεκτήματα της κληρονομικότητας Αποφυγή

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 14/5/2018 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr INTERFACES Μελέτη περίπτωσης: δημιουργία και χρήση

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 29/5/2017 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Περίληψη επιτρεπτών εκχωρήσεων μεταξύ μεταβλητών

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 3/4/2017 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Γιατί έλεγχος πρόσβασης? Προστασία ιδιωτικής πληροφορίας

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 30/5/2016 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Συλλογή απορριμμάτων Συλλογή απορριμμάτων (Garbage

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 16/4/2018 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Τύποι της Java Primitives vs References Οι πρωταρχικοί

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 23/4/2018 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Υπερφόρτωση μεθόδων Υπερφόρτωση μεθόδων Πολλαπλές

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 9/5/2016 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Κληρονομικότητα Τροποποιητικά πρόσβασης κλάσεων

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 18/4/216 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Τύποι της Java Primitives vs References Οι πρωταρχικοί

Διαβάστε περισσότερα

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Τι θα συζητήσουμε σήμερα Αφαιρέσεις στη Java Abstract μέθοδοι και abstract κλάσεις Interfaces (=διασυνδέσεις, διεπαφές) Instanceof Παραδείγματα κώδικα Αφηρημένες

Διαβάστε περισσότερα

Κληρονομικότητα. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Java Κληρονομικότητα 1

Κληρονομικότητα. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Java Κληρονομικότητα 1 Κληρονομικότητα Παύλος Εφραιμίδης pefraimi ee.duth.gr Java Κληρονομικότητα 1 Ιεραρχίες Κλάσεων Στην Java (και γενικότερα στον αντικειμενοστραφή προγραμματισμό) μπορεί από μία να κλάση να δημιουργηθεί

Διαβάστε περισσότερα

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Κωδικός Μαθήματος: TP323 Ώρες Εργαστηρίου: 2/εβδομάδα (Διαφάνειες Νίκου Βιδάκη) 1 JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο?

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

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

Διαβάστε περισσότερα

(Διαφάνειες Νίκου Βιδάκη)

(Διαφάνειες Νίκου Βιδάκη) (Διαφάνειες Νίκου Βιδάκη) JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο? Ανάλυση αντικειμένων Πραγματικά αντικείμενα Καταστάσεις Συμπεριφορές Αντικείμενα στον προγραμματισμό

Διαβάστε περισσότερα

Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Υπερφόρτωση (Overloading), Μεθόδων (Method Overloading), Τελεστών (Operator Overloading (C++, C#))

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

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

Διαβάστε περισσότερα

Παύλος Εφραιµίδης. Java. Κληρονοµικότητα

Παύλος Εφραιµίδης. Java. Κληρονοµικότητα κληρονοµικότητα Παύλος Εφραιµίδης 1 ιεραρχίες κλάσεων Στην (και γενικότερα στον αντικειµενοστρεφή προγραµµατισµό) µπορεί από µία κλάση να δηµιουργηθεί µια νέα κλάση απόγονος που κληρονοµεί όλα τα χαρακτηριστικά

Διαβάστε περισσότερα

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

public void printstatement() { System.out.println(Employee:  + name +  with salary:  + salary); Κληρονομικότητα Η κληρονομικότητα (inheritance) αποτελεί έναν από τους χαρακτηριστικότερους μηχανισμούς των αντικειμενοστρεφών γλωσσών προγραμματισμού. Επιτρέπει την δημιουργία μιας νέας κλάσης απορροφώντας

Διαβάστε περισσότερα

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

Το πρόγραμμα 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 υποστηρίζει

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

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

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Περιεχόμενα Java Classes Java Objects Java

Διαβάστε περισσότερα

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Τι θα συζητήσουμε σήμερα Αφαιρέσεις στη Java Abstract μέθοδοι και abstract κλάσεις Interfaces (=διασυνδέσεις, διεπαφές) Instanceof Παραδείγματα κώδικα Αφηρημένες

Διαβάστε περισσότερα

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης ΠΟΛΥΜΟΡΦΙΣΜΟΣ Λόγω της θεμελιώδους σημασίας της έννοιας του πολυμορφισμού (polymorphism) στην αντικειμενοστρεφή σχεδίαση, κρίνεται σκόπιμο στο σημείο αυτό του βιβλίου να αναλυθεί εκτενέστερα. Ο πολυμορφισμός

Διαβάστε περισσότερα

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

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #13 Wrapper Classes, Abstract Classes and Interfaces Διάλεξη #13: Μεταβλητές/μέθοδοι κλάσης, αφηρημένες κλάσεις και διαπροσωπείες Μεταβλητές /πεδία κλάσης [class variables] Τα αντικείμενα ανήκουν σε κλάσεις

Διαβάστε περισσότερα

Υπερφόρτωση (Overloading) Υπέρβαση (Overriding) - Upcasting Downcasting Final classes, methods

Υπερφόρτωση (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 Περιεχόμενα Μαθήματος

Διαβάστε περισσότερα

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος sfetsos@it.teithe.gr

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος sfetsos@it.teithe.gr ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr ΕΡΓΑΣΤΗΡΙΟ - 3 ΘΕΜΑΤΑ: Κλάσεις Αντικείμενα Δομητές/Κατασκευαστές - Μέθοδοι - Παράμετροι

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΑΦΗΡΗΜΕΝΕΣ ΚΛΑΣΕΙΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΑΦΗΡΗΜΕΝΕΣ ΚΛΑΣΕΙΣ INTERFACES ΕΣΩΤΕΡΙΚΕΣ ΚΛΑΣΕΙΣ (INNER CLASSES) Αφηρημένες Κλάσεις (Abstract Classes) (1/6) Οι αφηρημένες κλάσεις χρησιμοποιούνται για την

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 27/3/2017 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Κλάσεις και Αντικείμενα Εισαγωγή Στατικότητα Κλάσης

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial Introduction Το Javadoc είναι ένα εργαλείο που παράγει αρχεία html (παρόμοιο με τις σελίδες στη διεύθυνση http://docs.oracle.com/javase/8/docs/api/index.html) από τα σχόλια

Διαβάστε περισσότερα

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες: Εργαστήριο Java Διδάσκουσα: Πρέντζα Ανδριάνα aprentza@unipi.gr Εργαστηριακοί Συνεργάτες: Γεωργιοπούλου Ρούλα Λύβας Χρήστος roulageorio@ssl-unipi.gr clyvas@unipi.gr Εργαστήριο 3 Java Classes Java Objects

Διαβάστε περισσότερα

Η λέξη κλειδί this. Γαβαλάς Δαμιανός dgavalas@aegean.gr

Η λέξη κλειδί this. Γαβαλάς Δαμιανός dgavalas@aegean.gr Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #6 η : Η λέξη κλειδί this, υπερφόρτωση μεθόδων, κληρονομικότητα, πολυμορφισμός, υπερκάλυψη, επίπεδα προσπέλασης Γαβαλάς Δαμιανός dgavalas@aegean.gr

Διαβάστε περισσότερα

HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1

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

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 30/5/2016 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Χειρισμός Εξαιρέσεων Εξαίρεση (Exception) ένδειξη

Διαβάστε περισσότερα

2.1 Αντικειµενοστρεφής προγραµµατισµός

2.1 Αντικειµενοστρεφής προγραµµατισµός 2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί

Διαβάστε περισσότερα

ΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ

ΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ Μηχανισµός υλοποίησης των σχέσεων γενίκευσης/εξειδίκευσης µεταξύ κλάσεων Η σχέση εξειδίκευσης «υποκλάση-της» (subclass-of)είναι γνωστή σαν σχέση «είναι ένα» (isa) ή «είναι ένα είδος» (ako:

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγ/μό Η/Υ Εισαγωγή στον Προγ/μό Η/Υ Ενότητα 7 2ο μέρος: Επιπλέον έννοιες σχετικά με αντικείμενα Διδάσκων: Μιχάλης Τίτσιας Περιεχόμενα Τι μπορεί να περιέχει μια τάξη Μέθοδοι τάξης και σταθερές τάξης Πολυμορφισμός

Διαβάστε περισσότερα

The Simply Typed Lambda Calculus

The Simply Typed Lambda Calculus Type Inference Instead of writing type annotations, can we use an algorithm to infer what the type annotations should be? That depends on the type system. For simple type systems the answer is yes, and

Διαβάστε περισσότερα

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Generic Types Τα Generics έχουν προστεθεί στη JAVA από το 2004 ως μέρος του J2SE 5.0 Με τη χρήση

Διαβάστε περισσότερα

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων Εξάμηνο 7 ο Procedures and Functions Stored procedures and functions are named blocks of code that enable you to group and organize a series of SQL and PL/SQL

Διαβάστε περισσότερα

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Τι θα συζητήσουμε σήμερα Πώς υλοποιούμε συσχετίσεις μεταξύ κλάσεων απλές και πολλαπλές συσχετίσεις κληρονομικότητα Static, final Overloading Overriding Hiding

Διαβάστε περισσότερα

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

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #12 Διάγραμμα κλάσεων [Class diagram] Διάλεξη #12: Υπο-τύποι και πολυμορφισμός [sub-typing and polymorphism] Database Music Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java

Διαβάστε περισσότερα

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 12: Κληρονομικότητα (Inheritance) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κληρονομικότητα και Επαναχρησιμοποίηση - Υποκλάσεις/Υπερκλάσεις - Απόκρυψη ονομάτων - Το super, protected

Διαβάστε περισσότερα

Ειδικά Θέματα Προγραμματισμού

Ειδικά Θέματα Προγραμματισμού Ειδικά Θέματα Προγραμματισμού Ενότητα 2: Εισαγωγή στον Αντικειμενοστραφή Προγραμματισμό Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

Διαβάστε περισσότερα

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

Κλάσεις και Αντικείμενα Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 4/4/2016 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Κλάσεις και Αντικείμενα Εισαγωγή 1 Στατικότητα

Διαβάστε περισσότερα

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 5: Component Adaptation Environment (COPE)

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 5: Component Adaptation Environment (COPE) EPL 603 TOPICS IN SOFTWARE ENGINEERING Lab 5: Component Adaptation Environment (COPE) Performing Static Analysis 1 Class Name: The fully qualified name of the specific class Type: The type of the class

Διαβάστε περισσότερα

Wrapper Classes, Abstract Classes and Interfaces

Wrapper Classes, Abstract Classes and Interfaces Wrapper Classes, Abstract Classes and Interfaces Εβδοµάδα 3: Κλάσεις συσκευαστές, αφηρηµένες κλάσεις και διαπροσωπείες Αντικείµενα και µη-αντικείµενα Η Java παρέχει τύπους αντικειµένων και απλούς τύπους

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 2: Η ΓΛΩΣΣΑ JAVA Βασικά Δομικά Στοιχεία ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΔΟΜΙΚΑ ΣΤΟΙΧΕΙΑ ΔΟΜΙΚΑ

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 2: Η ΓΛΩΣΣΑ JAVA Κληρονομικότητα ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ

Διαβάστε περισσότερα

8. Μέθοδοι (Methods)

8. Μέθοδοι (Methods) 8. Μέθοδοι (Methods) Χειμερινό εξάμηνο 2012 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Μέθοδοι που παρέχονται από τη τάξη Math του Java API Χρήση στατικών μεθόδων και

Διαβάστε περισσότερα

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

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Κλάσεις και Αντικείμενα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Κλάσεις Η γενική μορφή μιας κλάσης είναι η εξής: class class-name { private data and

Διαβάστε περισσότερα

Διασυνδέσεις / Διεπαφές. Παναγιώτης Σφέτσος, PhD

Διασυνδέσεις / Διεπαφές. Παναγιώτης Σφέτσος, PhD (Object Oriented Programming) Διασυνδέσεις / Διεπαφές PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr Περιεχόμενα Μαθήματος Διεπαφές/Διασυνδέσεις (Interfaces) 2 Διεπαφές/Διασυνδέσεις (Interfaces)

Διαβάστε περισσότερα

ΗΥ-252 Οντοκεντρικός Προγραµµατισµός Βασίλης Χριστοφίδης. Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 12 Σεπτεµβρίου 2002

ΗΥ-252 Οντοκεντρικός Προγραµµατισµός Βασίλης Χριστοφίδης. Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 12 Σεπτεµβρίου 2002 Πανεπιστήµιο Κρήτης Τµήµα Επιστήµης Υπολογιστών ΗΥ-252 Οντοκεντρικός Προγραµµατισµός Βασίλης Χριστοφίδης Ονοµατεπώνυµο: Αριθµός Μητρώου: Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 12 Σεπτεµβρίου 2002 Άσκηση

Διαβάστε περισσότερα

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

Αντικειµενοστραφής Προγραµµατισµός Κλάσεις Αντικειµενοστραφής Προγραµµατισµός Κλάσεις Αντικείµενα Ιεραρχία κλάσεων Κλάσεις. Ιδιότητες Συµπεριφορά Ιδιότητες (Μεταβλητές) Συµπεριφορά (Μέθοδοι) Κληρονοµικότητα Μέθοδοι επικάλυψης Η χρήση του

Διαβάστε περισσότερα

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

02 Αντικειμενοστρεφής Προγραμματισμός 02 Αντικειμενοστρεφής Προγραμματισμός Τεχνολογία Λογισμικού Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Εαρινό εξάμηνο 2016 17 Δρ. Κώστας Σαΐδης saiko@di.uoa.gr Αντικειμενοστρέφεια Στον προγραμματισμό object

Διαβάστε περισσότερα

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 9η 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

Διαβάστε περισσότερα

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video

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 Σχεδίαση-Ανάπτυξη

Διαβάστε περισσότερα

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2 Ανασκόπηση Μια εφαρμογή Java είναι ένα σύνολο από συνεργαζόμενες κλάσεις Διάλεξη #2: Αντικείμενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή

Διαβάστε περισσότερα

(C) 2010 Pearson Education, Inc. All rights reserved.

(C) 2010 Pearson Education, Inc. All rights reserved. Connectionless transmission with datagrams. Connection-oriented transmission is like the telephone system You dial and are given a connection to the telephone of fthe person with whom you wish to communicate.

Διαβάστε περισσότερα

ΑΤΕΙ Θεσσαλονίκης Τμήμα Πληροφορικής

ΑΤΕΙ Θεσσαλονίκης Τμήμα Πληροφορικής Αντικειμενοστρεφής Προγραμματισμός adamidis@it.teithe.gr Abstract classes, δομητές και πολυμορφισμός, finalize, downcasting Αφηρημένες (abstract) κλάσεις Είναι πάντα βασικές κλάσεις μιας ιεραρχίας κλάσεων.

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κληρονομικότητα Η ΜΕΤΑΒΛΗΤΗ THIS Η μεταβλητή this Η μεταβλητή (παράμετρος) this Μια κρυφή παράμετρος η οποία περνάει σε κάθε μέθοδο και κρατάει μια αναφορά

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 8 : ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ & ΠΟΛΥΜΟΡΦΙΣΜΟΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 8 : ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ & ΠΟΛΥΜΟΡΦΙΣΜΟΣ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ (1/3) Στην αρχή της κληρονομικότητας βασίζεται ο σχεδιασμός και η υλοποίηση συστημάτων Η κληρονομικότητα χρησιμοποιείται

Διαβάστε περισσότερα

Δομές Δεδομένων - Εργαστήριο 2. Λίστες

Δομές Δεδομένων - Εργαστήριο 2. Λίστες Λίστες Λίστες (Lists) : Συλλογή δεδομένων σε δυναμικά δεσμευμένους κόμβους. Κάθε κόμβος περιέχει συνδέσεις προς άλλους κόμβους. Προσπέλαση -στού κόμβου διατρέχοντας όλους τους προηγούμενους. Πολλές παραλλαγές

Διαβάστε περισσότερα

Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012

Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012 Πανεπιστήµιο Κρήτης Τµήµα Επιστήµης Υπολογιστών ΗΥ-252 Αντικειµενοστρεφής Προγραµµατισµός Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012 Θέμα 1 Θέμα 2 Θέμα 3 Θέμα 4 Θέμα

Διαβάστε περισσότερα

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής - Εβδομάδα 1

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής - Εβδομάδα 1 Στόχοι Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής (Αντικειμενοστρεφής Προγραμματισμός) Αντώνιος Συμβώνης www.math.ntua.gr/~symvonis Καλή γνώση βασικών αρχών προγραμματισμού Καλή γνώση βασικών αρχών αντικειμενοστρεφή

Διαβάστε περισσότερα

5. Ανασκόπηση αντικειμενοστραφούς προγραμματισμού

5. Ανασκόπηση αντικειμενοστραφούς προγραμματισμού 5. Ανασκόπηση αντικειμενοστραφούς προγραμματισμού Χειμερινό εξάμηνο 2013 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Αντικειμενοστραφής προγραμματισμός Τάξεις (classes)

Διαβάστε περισσότερα

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 7: Ενθυλάκωση (encapsulation), Τροποποιητές(modifiers) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ενθυλάκωση -Τροποποιητές Πρόσβασης (Access Modifiers), public, protected, private,

Διαβάστε περισσότερα

Κλάσεις. Τροποποιητές, ιασυνδέσεις, Πακέτα. Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων

Κλάσεις. Τροποποιητές, ιασυνδέσεις, Πακέτα. Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων Κλάσεις Τροποποιητές, ιασυνδέσεις, Πακέτα Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων Υπάρχουν 4τροποποιητές: default, public, private, protected. Default: εν προηγείται τροποποιητής του ονόµατος

Διαβάστε περισσότερα

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007 Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Αν κάπου κάνετε κάποιες υποθέσεις να αναφερθούν στη σχετική ερώτηση. Όλα τα αρχεία που αναφέρονται στα προβλήματα βρίσκονται στον ίδιο φάκελο με το εκτελέσιμο

Διαβάστε περισσότερα

Instruction Execution Times

Instruction Execution Times 1 C Execution Times InThisAppendix... Introduction DL330 Execution Times DL330P Execution Times DL340 Execution Times C-2 Execution Times Introduction Data Registers This appendix contains several tables

Διαβάστε περισσότερα

Κλάσεις. Κατηγορίες Αντικειµένων. Κλάσεις. Φυσικά Αντικείµενα. Χώρος = Οµάδα Φυσικών Αντικειµένων. Πρόγραµµα = Οµάδα

Κλάσεις. Κατηγορίες Αντικειµένων. Κλάσεις. Φυσικά Αντικείµενα. Χώρος = Οµάδα Φυσικών Αντικειµένων. Πρόγραµµα = Οµάδα Αντικειµενοστραφής Προγραµµατισµός Αντικείµενα Ιεραρχία κλάσεων. Ιδιότητες Συµπεριφορά Ιδιότητες (Μεταβλητές) Συµπεριφορά (Μέθοδοι) Κληρονοµικότητα Μέθοδοι επικάλυψης Η χρήση του this και του super Αντικειµενοστραφής

Διαβάστε περισσότερα

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου Αντικειμενοστρέφεια Henri Matisse, Harmony in Red, 1908 Κωστής Σαγώνας Νίκος Παπασπύρου Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής

Διαβάστε περισσότερα

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Τι θα συζητήσουμε σήμερα Πώς υλοποιούμε συσχετίσεις μεταξύ κλάσεων απλές και πολλαπλές συσχετίσεις κληρονομικότητα Static, final Overloading Overriding Hiding

Διαβάστε περισσότερα

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6 Ανασκόπηση Μια εφαρµογή Java είναι ένα σύνολο από συνεργαζόµενες κλάσεις Εβδοµάδα 2: Αντικείµενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Προγραµµατισµό,,, Slide 1 Εισαγωγή στον Προγραµµατισµό,,, Slide 2 Ανασκόπηση:

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 7: Βελτίωση Δομής με Κληρονομικότητα Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν

Διαβάστε περισσότερα

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

Βασικά της γλώσσας JAVA 17 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα Downcasting Πολυμορφισμός Late Binding

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα Downcasting Πολυμορφισμός Late Binding ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κληρονομικότητα Downcasting Πολυμορφισμός Late Binding tostring και equals Είπαμε ότι η Java για κάθε αντικείμενο «περιμένει» να δει τις μεθόδους tostring και

Διαβάστε περισσότερα

10. Αντικειμενοστραφής Προγραμματισμός (Object Oriented Programming - OOP)

10. Αντικειμενοστραφής Προγραμματισμός (Object Oriented Programming - OOP) 10. Αντικειμενοστραφής Προγραμματισμός (Object Oriented Programming - OOP) Χειμερινό εξάμηνο 2016 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Έλεγχος πρόσβασης στα μέλη

Διαβάστε περισσότερα

ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ. Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών

ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ. Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών ΜΟΡΥΕ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ Διαδικασιακός ή Διαδικαστικός (Procedural)

Διαβάστε περισσότερα

Από τη UML στον Κώδικα. Μέρος Α

Από τη UML στον Κώδικα. Μέρος Α Από τη UML στον Κώδικα Μέρος Α περιεχόμενα παρουσίασης Κλάσεις Ισότητα αντικειμένων Μονόδρομες συσχετίσεις με πολλαπλότητα «ένα» Μονόδρομες συσχετίσεις με πολλαπλότητα «πολλά» Συλλογές από το σχέδιο στον

Διαβάστε περισσότερα

Προγραμματισμός Διαδικτύου

Προγραμματισμός Διαδικτύου 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Προγραμματισμός Διαδικτύου Ενότητα 3 : Κατηγορίες και κληρονομικότητα Ιωάννης Τσούλος 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Τμήμα Μηχανικών Πληροφορικής

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors, equals, tostring Constructors (Δημιουργοί) O Constructor είναι μια «μέθοδος» η οποία καλείται όταν δημιουργούμε το αντικείμενο

Διαβάστε περισσότερα

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack Κλάσεις στην Java Κλάσεις στη Java Παύλος Εφραιμίδης Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 1 Java Κλάσεις στη Java 2

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

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

Διαβάστε περισσότερα

Διαγράμματα Κλάσεων στη Σχεδίαση

Διαγράμματα Κλάσεων στη Σχεδίαση Διαγράμματα Κλάσεων στη Σχεδίαση περιεχόμενα παρουσίασης Αφηρημένες κλάσεις Ιδιότητες Λειτουργίες Απλοί τύποι Συσχετίσεις Εξάρτηση Διεπαφές αφηρημένες κλάσεις Οι αφηρημένες κλάσεις δεν μπορούν να δημιουργήσουν

Διαβάστε περισσότερα

Μέθοδοι. Υποσυστήµατα και πακέτα. Μοντέλα αντικειµενοστραφούς σχεδίασης. Αντικειµενοστραφής Σχεδίαση. Στα πρώτα στάδια της ανάλυσης

Μέθοδοι. Υποσυστήµατα και πακέτα. Μοντέλα αντικειµενοστραφούς σχεδίασης. Αντικειµενοστραφής Σχεδίαση. Στα πρώτα στάδια της ανάλυσης Αντικειµενοστραφής Σχεδίαση Αντώνης Καραγεώργος Τµήµα Μηχανικών Η/Υ και ικτύων Πανεπιστήµιο Θεσσαλίας karageorgos@inf.uth.gr Μέθοδοι Στα πρώτα στάδια της γράφουµε µόνο τα ονόµατα των µεθόδων Γράφουµε τις

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 9: Κληρονομικότητα (Inheritance)

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 9: Κληρονομικότητα (Inheritance) ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 9: Κληρονομικότητα (Inheritance) Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 9 Κληρονομικότητα (Inheritance) Υπάρχουν κλάσεις που

Διαβάστε περισσότερα

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1 Κλάσεις στη Java Παύλος Εφραιμίδης Java Κλάσεις στη Java 1 Κλάσεις στην Java Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 2

Διαβάστε περισσότερα

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

Κλάσεις και Αντικείµενα Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν

Διαβάστε περισσότερα

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες: Εργαστήριο Java Διδάσκουσα: Πρέντζα Ανδριάνα aprentza@unipi.gr Εργαστηριακοί Συνεργάτες: Γεωργιοπούλου Ρούλα Λύβας Χρήστος roulageorio@ssl-unipi.gr clyvas@unipi.gr Εργαστήριο 8 Πακέτα (Packages) Access

Διαβάστε περισσότερα

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5 Περιεχόµενα 1 Εισαγωγή στις οµές εδοµένων 3 2 Στοίβα (Stack) 5 i ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ ii Πληροφορίες Εργαστηρίου Σκοπός του εργαστηρίου Το εργαστήριο οµές εδοµένων αποσκοπεί στην εφαρµογή των τεχνολογιών

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 1: Αντικειμενοστραφής Προγραμματισμός Εισαγωγή OBJECT-ORIENTED PROGRAMMING ΔΙΔΑΣΚΟΝΤΕΣ: Iωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Section 8.3 Trigonometric Equations

Section 8.3 Trigonometric Equations 99 Section 8. Trigonometric Equations Objective 1: Solve Equations Involving One Trigonometric Function. In this section and the next, we will exple how to solving equations involving trigonometric functions.

Διαβάστε περισσότερα

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

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C# Εισαγωγή σε αντικειμενοστραφή concepts Και λίγη C# Κλάσεις Κλάση: τύπος δεδομένων που αποτελεί συλλογή πεδίων, ορισμών συναρτήσεων/μεθόδων και ορισμών άλλων τύπων δεδομένων. Αντίστοιχο σκεπτικό με struct

Διαβάστε περισσότερα

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D.

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 9η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

Διαβάστε περισσότερα