Εισαγωγή στον...

Click here to load reader

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

of 33

  • date post

    19-Mar-2016
  • Category

    Documents

  • view

    54
  • download

    1

Embed Size (px)

description

Κλάσεις και αντικείμενα Κληρονομικότητα (inheritance) Υπερκάλυψη ( overriding) Υπερφόρτωση (overloading) Κατασκευαστές κλάσεων (constructors) Προσδιοριστές πρόσβασης (access specifiers) Τροποποιητές (modifiers) Διασυνδέσεις ( interfaces) Πακέτα (packages). - PowerPoint PPT Presentation

Transcript of Εισαγωγή στον...

Εισαγωγ στον αντικειμενοστραφ προγραμματισμΜια κλση περιχει ως μλη της μεταβλητς (member variables) και συναρτσεις-μθοδοι (member functions)
Ορισμς κλσης:
class myClass
Κλσεις και Αντικεμενα
Το αντικεμενο αυτ καθ' εαυτ εναι μια ονττητα στη μνμη η οποα περιχει δεδομνα καθς και μεθδους.
Mσω των μεθδων μπορομε να επικοινωνσουμε με το αντικεμενο και να αλλξουμε τα δεδομνα του.
Αντθετα η κλση εναι απλς να πρτυπο για την δημιουργα αντιγρφων του διου αντικειμνου.
Μια κλση εναι το αντστοιχο των τπων δεδομνων για τις μεταβλητς (στον δομημνο προγραμματισμ).
*
class EmployeeRecord
{ salary = employeeSalary; }
Μηνιαες αποδοχς
*
Πρσβαση σε δεδομνα και μεθδους αντικειμνων κλσεων (που χουν δηλωθε public)
Πρσβαση σε public μεταβλητς μλη:
<object>.<member variable>
Π.χ. someEmployeeRecord.salary = 1500;
Κλση μεθδων:
( Η μεταβλητ income λαμβνει την τιμ που επιστρφει η getSalary ( ) )
2. someEmployeeRecord.setSalary(1500);
*
{ salary = employeeSalary }
int getSalary ( )
{ return salary; }
John =new Employee ( ); //Sos αγνοετε πντα τις εντολς με κκκινο !!!!!!!!!
//Εναι απαρατητες αλλ εξηγονται σε επμενες // διαφνειες!!!
John.setSalary (1200);
John.bonus = 500;
*
myChild.a = someInteger ;
γκυρες κλσεις, εφσον η κλση Child κληρονομε μεταβλητς και μεθδους της κλσης Parent
// Please ignore this red line for now
Parent
Child
class Parent
myChild.foo();
*
Η λξη super
Η δεσμευμνη λξη super προσφρει πρσβαση σε μεταβλητς και μεθδους της υπερκλσης
class Parent
public void someChildFunction( )
}
}
*
Η δεσμευμνη λξη this
Η δεσμευμνη λξη this αποτελε ναν τρπο αναφορς στο τρχον αντικεμενο.
Χρσιμη για τον διαχωρισμ μεταβλητν-μελν απ ορσματα συναρτσεων σε περπτωση που τα ονματ τους ταυτζονται.
class EmployeeRecord
{ this.salary = salary; }
Υπερφρτωση (overloading)
Στις object oriented γλσσες επιτρπεται ο ορισμς μας μεθδου με τo διο νομα δο περισστερες φορς αρκε να χουν διαφορετικς λστες παραμτρων.  
class number {
int a;
a = x+y;
N1.add(3, 5); // καλε την 2η add
N1.add(N2); // καλε την 3η add
*
int a
Συναρτσεις που εκτελονται κατ την αρχικοποηση του αντικειμνου μιας κλσης. Χρησιμοποιονται για την απδοση τιμν στις μεταβλητς-μλη ενς αντικειμνου κατ τη δημιουργα του.
χουν το διο νομα με την κλση την οποα αρχικοποιον.
Οι κατασκευαστς ΔΕΝ ΕΠΙΣΤΡΕΦΟΥΝ ΤΙΜΗ.
*
{
Πολλαπλο κατασκευαστς
Για μια κλση μπορον να οριστον περισστεροι του ενς κατασκευαστς και να επιλεγε νας απ αυτος κατ την αρχικοποηση (constructor overloading)
Αν ο προγραμματιστς δεν ορσει κατασκευαστ, υφσταται ο default constructor (κατασκευαστς χωρς ορσματα). Υλοποηση ενς κατασκευαστ απ τον προγραμματιστ αυτομτως αναιρε τον default constructor.
*
{
a = 0
b = 0
a = 2
b = 3
Επιτελεται διαδοχικ εκτλεση των κατασκευαστν με τρπο ιεραρχικ (απ τις υπερκλσεις προς τις υποκλσεις).
class Parent
Πχ. Child Nik = new Child( );
Eκτελεται αρχικ πντα ο default constructor της υπερκλσης (εκτς κι αν ο προγραμματιστς αλλξει τη συμπεριφορ του constructor της υποκλσης)
Parent ( )
Child ( )
{ super (alpha,beta); }
Καλε τον default constructor του Parent, ρα α = b = 0
Child myChild = new Child ( 1 , 2 );
a = 1, b = 2
Καταστροφ αντικειμνων
Σε αντθεση με τη γλσσα C, στη Java η κατργηση αντικειμνων δεν επιτελεται απ το χρστη αλλ απ το rutime system της Java.
Garbage collector: Εντοπζει αντικεμενα που δεν πρκειται να ξαναχρησιμοποιηθον στο μλλον και τα καταργε, αποδεσμεοντας τη μνμη που καταλαμβνουν.
*
Προσδιοριστς πρσβασης
Καθορζουν τα δικαιματα πρσβασης στις μεταβλητς και στις μεθδους της κλσης
public: ορατ απ οποιασδποτε κλση
private: ορατ μνο απ την κλση στην οποα
ανκουν
ανκουν και απ υποκλσεις της
Χωρς δλωση: ορατ απ κλσεις που ανκουν
στο διο package
Παρατηρσεις:
Αν και η μεταβλητ a εναι private, η τιμ της μπορε να παραληφθε απ την κλση B μσω της public συνρτησης getInt ().
*
public: κλση ορατ απο οποιαδποτε λλη κλση
*
α) Για μεταβλητς: Δεν αλλζει η τιμ τους μετ την
αρχικοποησ τους
γ) Για κλσεις: Δεν κληρονομονται
*
a = 6 ; ΛΑΘΟΣ
*
abstract <returned type> methodName( ) ;
Κλσεις μσα στις οποες δηλνεται στω και μα abstract μθοδος, χαρακτηρζονται επσης abstract.
abstract public class A
*
{
public void Draw ( )
{ κδικας σχεδασης ορθογωνου}
Κθε αντικεμενο χει τις δικς του μεταβλητς και μεθδους
ΟΜΩΣ: Μεταβλητς και μθοδοι που δηλνονται ως static εναι κοινς για λα τα αντικεμενα της διας κλσης
*
}
first.a = 2 ;
*
class Child extrends Parent1 extends Parent2 ΛΑΘΟΣ
Εναλλακτικ προσγγιση: η χρση των interfaces ( κλσεις που περιχουν μνο abstract μεθδους )
Οι abstract μθοδοι των interfaces υλοποιονται στις υποκλσεις που τα υλοποιον.
Ορισμς ενς interface:
}
Ορισμς υποκλσης που υλοποιε να interface:
class myClass extends someParentClass implements myInterface
*
}
{
{ Function code here…}
Κλσεις του διου πακτου βρσκονται στο διο directory
Η δλωση του πακτου στο οποο ανκει μια κλση γνεται στην αρχ του πηγαου κδικα
package <packageName>;
να πακτο χει το διο νομα με το νομα του directory στο οποο αποθηκεονται οι κλσεις του.
*