ΠΟΛΥΜΟΡΦΙΣΜΟΣ. Chapter 8, Savitch. Περίγραμμα. Introduction to Polymorphism. Introduction to Polymorphism. Βασικό Ερώτημα

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

Download "ΠΟΛΥΜΟΡΦΙΣΜΟΣ. Chapter 8, Savitch. Περίγραμμα. Introduction to Polymorphism. Introduction to Polymorphism. Βασικό Ερώτημα"

Transcript

1 Περίγραμμα ΠΟΛΥΜΟΡΦΙΣΜΟΣ Chapter 8, Savitch Itroductio to polymorphism Bidig Polymorphism ad Extesibility Example of Polymorphism: Sale ad DiscoutSale Polymorphism ad static methods Iheritace ad access specifiers Polymorphism ad istace variables Polymorphism ad costructors Polymorphism vs State Desig Patter Upcastig ad Dowcastig: Pitfalls The use of the cloe method 1 2 Itroductio to Polymorphism There are three mai programmig mechaisms that costitute object-orieted programmig (OOP) Ecapsulatio (Ενθυλάκωση) Iheritace (Κληρονομικότητα) Polymorphism (Πολυμορφισμός) Polymorphism is the ability to associate may meaigs to oe method It does this through a special mechaism kow as late bidig or dyamic bidig import java.util.*; class Istrumet { public void play() { static void tue(istrumet i) { i.play(); class Wid exteds Istrumet { public static void mai(strig[] args) { Wid flute = ew Wid(); Istrumet.tue(flute); // Upcastig Copyright 2017 Pearso Ltd. All rights reserved. 3 Μ. Δικαιάκος, EΠΛ233 4 Βασικό Ερώτημα Itroductio to Polymorphism static void tue(istrumet i) { i.play(note.middle_c); Όπως είπαμε, στην tue μπορούμε να "περάσουμε" χειριστήρια αντικειμένων που κληρονομούν από την κλάση Istrumet. Εφόσον μια κλάση-κληρονόμος (π.χ. Wid) καθορίζει τη "δική" της μέθοδο play, η κλήση της play μέσα από την tue θα γίνει σύμφωνα με αυτή την μέθοδο της κλάσηςκληρονόμου, όταν στην tue περάσουμε χειριστήριο της κληρονόμου. Iheritace allows a base class to be defied, ad other classes derived from it Code for the base class ca the be used for its ow objects, as well as objects of ay derived classes Polymorphism allows chages to be made to method defiitios i the derived classes, ad have those chages apply to the so3ware wri6e for the base class 5 Copyright 2017 Pearso Ltd. All rights reserved. 6

2 Ερώτημα Περίγραμμα static void tue(istrumet i) { i.play(note.middle_c); Πώς μπορεί να γνωρίζει ο μεταγλωττιστής ότι η παράμετρος που περνάει σε κάποιο σημείο προς την tue είναι κλάσης Wid και όχι Brass ή Striged, ώστε να καλέσει την κατάλληλη tue; Itroductio to polymorphism Bidig Polymorphism ad Extesibility Example of Polymorphism: Sale ad DiscoutSale Polymorphism ad static methods Iheritace ad access specifiers Polymorphism ad costructors Polymorphism vs State Desig Patter Upcastig ad Dowcastig: Pitfalls The use of the cloe method 7 8 Πρόσδεση μεθόδου - bidig Early vs Late Bidig static void tue(istrumet i) { i.play(note.middle_c); public void play(note ) { mypr("brass.play()"); H διασύνδεση μιας κλήσης μεθόδου με το «σώμα» της μεθόδου (δηλαδή τον κώδικα που θα εκτελεστεί). The process of associatig a method defiitio with a method ivocatio is called bidig If the method defiitio is associated with its ivocatio whe the code is compiled, that is called early bidig -πρώιμη/στατική πρόσδεση (early bidig): Γίνεται πριν την εκτέλεση του προγράμματος, από τον μεταγλωττιστή (compiler) και τoν συνδετήρα (liker). If the method defiitio is associated with its ivocatio whe the method is ivoked (at ru time), that is called late bidig or dyamic bidig Λόγω κληρονομικότητας ο μεταφραστής δεν μπορεί να γνωρίζει στο χρόνο-μετάφρασης ποιές παράμετροι θα περαστούν στην tue και πότε... Η λύση που υιοθετείται από τις Α/Σ ΓΠ λέγεται όψιμη πρόσδεση (late bidig) ή δυναμική πρόσδεση ή πρόσδεση στον χρόνο εκτέλεσης (ru-time bidig) Όψιμη (Καθυστερημένη) Πρόσδεση Πολυμορφική συμπεριφορά Η όψιμη πρόσδεση στηρίζεται σε έναν μηχανισμό, ο οποίος μπορεί να καθορίσει τον τύπο ενός αντικειμένου την στιγμή της εκτέλεσης, και να καλέσει την κατάλληλη μέθοδο. Χάρη στην όψιμη πρόσδεση, μια μέθοδος μπορεί να γραφτεί σε μια κλάση βάσης για την εκτέλεση μιας λειτουργίας, ακόμα και αν αποσπάσματα αυτής της λειτουργίας δεν έχουν ακόμα καθοριστεί. Δεδομένου ότι η Java υποστηρίζει όψιμη πρόσδεση μεθόδων, μπορείτε να: αναπτύσετε τον κώδικά σας για να συνεργάζεται με μια κλάση βάσης(base class) γνωρίζοντας ότι ο κώδικάς σας θα μπορεί να συνεργαστεί σωστά και με όλoυς τους κληρονόμους της κλάσης βάσης. Με άλλα λόγια, μπορείτε να στέλνετε ένα μήνυμα σε ένα αντικείμενο, και αφήνετε το αντικείμενο ν' αποφασίσει πώς θα «εκτελέσει» το μήνυμα

3 Πολυμορφικές κλήσεις Χειριστήριο Circle Cast "up" Circle Shape s = ew Circle(); // upcastig Shape Square Lie s.; // polymorphic call results to callig Circle.draw Η κλήση της μεθόδου s.πάνω σε χειριστήριο της κλάσης-κληροδότη, προκαλεί την κλήση της Circle. του κληρονόμου, λόγω όψιμης πρόσδεσης. Πολυμορφικές κλήσεις public class Shapes { public static Shape radshape() { switch((it)(math.radom() * 3)) { default: case 0: retur ew Circle(); // upcastig case 1: retur ew Square(); // upcastig case 2: retur ew Triagle(); // upcastig public static void mai(strig[] args) { Shape[] s = ew Shape[9]; for (it i = 0; i < s.legth; i++) s[i] = radshape(); for (it i = 0; i < s.legth; i++) s[i].; // polymorphic calls Περίγραμμα Πολυμορφισμός κ. επεκτασιμότητα Itroductio to polymorphism Bidig Polymorphism ad Extesibility Example of Polymorphism: Sale ad DiscoutSale Polymorphism ad static methods Iheritace ad access specifiers Polymorphism ad costructors Polymorphism vs State Desig Patter Upcastig ad Dowcastig: Pitfalls The use of the cloe method Η κληρονομικότητα και ο πολυμορφισμός απλοποιούν την πρόσθεση νέων κλάσεων, που κληρονομούν από την κοινή κλάση-κληροδότη. Οι μέθοδοι που διατίθενται στην διαπροσωπεία της κλάσηςκληροδότη δεν χρειάζεται ν' αλλάξουν για την εξυπηρέτηση των νέων κλάσεων Πολυμορφισμός κ. επεκτασιμότητα Πολυμορφισμός κ. επεκτασιμότητα Wid void play() Strig what() void adjust() Istrumet void play() Strig what() void adjust() Percussio void play() Strig what() void adjust() Striged void play() Strig what() void adjust() Π.χ. οι κλάσεις Brass και WoodWid μπορούν να χρησιμοποιήσουν την tue, η οποία έχει οριστεί πριν καν την δημιουργία τους. Ακόμη κι αν η tue() βρίσκεται σε διαφορετικό αρχείο και προσθέσουμε νέες μεθόδους στην διαπροσωπεία τής Istrumet, η tue() θα δουλέψει σωστά χωρίς επαναμετάφραση. WoodWid void play() Strig what() void adjust() Brass void play() Strig what() void adjust() 17 18

4 Επεκτασιµότητα (παράδειγµα) import java.util.*; class Istrumet { public void play() { public Strig what() { public void adjust() { class Wid exteds Istrumet { public void play() { public Strig what() { public void adjust() { class Percussio exteds Istrumet { public void play() { public Strig what() { public void adjust() { Επεκτασιµότητα (παράδειγµα) class Striged exteds Istrumet { public void play() { public Strig what() { public void adjust() { class Brass exteds Wid { public void play() { public void adjust() { class Woodwid exteds Wid { public void play() { public Strig what() { Επεκτασιµότητα (παράδειγµα) Καθαρή κληρονομικότητα vs. Επέκταση public class Music3 { static void tue(istrumet i) { //... i.play(); Does't care about type, so ew types added to the system still work right static void tueall(istrumet[] e) { for(it i = 0; i < e.legth; i++) tue(e[i]); public static void mai(strig[] args){ Istrumet[] orchestra = ew Istrumet[5]; it i = 0; orchestra[i++] = ew Wid(); orchestra[i++] = ew Percussio(); orchestra[i++] = ew Striged(); orchestra[i++] = ew Brass(); orchestra[i++] = ew Woodwid(); tueall(orchestra); Upcastig durig additio to the array 21 Οι κληρονόμοι δεν επεκτείνουν την διαπροσωπεία του κληροδότη (υπερσκέλιση). l l Οι κληρονόμοι επεκτείνουν την διαπροσωπεία του κληροδότη. Αδύνατη η χρήση των νέων μεθόδων, μέσω Upcastig 22 Πολυμορφικές κλήσεις Περίγραμμα Χειριστήριο Circle Cast "up" Circle hello() Shape s = ew Circle(); // upcastig Shape Square Lie Itroductio to polymorphism Bidig Polymorphism ad Extesibility Example of Polymorphism: Sale ad DiscoutSale Polymorphism ad static methods Iheritace ad access specifiers Polymorphism ad costructors Polymorphism vs State Desig Patter Upcastig ad Dowcastig: Pitfalls The use of the cloe method s.hello(); Προκαλεί σφάλμα μετάφρασης 23 24

5 Polymorphism example The Sale ad DiscoutSale Classes For a example, the relatioship betwee a base class called Sale ad its derived class DiscoutSale will be examied Sale DiscoutSale The Sale class cotais two istace variables ame: the ame of a item (Strig) price: the price of a item (double) It cotais three costructors A o-argumet costructor that sets ame to "No ame yet", ad price to 0.0 A two-parameter costructor that takes i a Strig (for ame) ad a double (for price) A copy costructor that takes i a Sale object as a parameter Copyright 2017 Pearso Ltd. All rights reserved. 25 Copyright 2017 Pearso Ltd. All rights reserved. 26 The Sale ad DiscoutSale Classes The Sale class also has a set of accessors - μέθοδοι προσπέλασης (getname, getprice), mutators - μέθοδοι μεταλλαγής (setname, setprice), overridde (αναιρεμένες) equals ad tostrig methods, ad a static aoucemet method The Sale class has a method bill, that determies the bill for a sale, which simply returs the price of the item It has two methods, equaldeals ad lesstha, each of which compares two sale objects by comparig their bills ad returs a boolea value The Sale ad DiscoutSale Classes The DiscoutSale class iherits the istace variables ad methods from the Sale class I additio, it has its ow istace variable, discout (a percet of the price), ad its ow suitable costructor methods, accessor method (getdiscout), mutator method (setdiscout), override tostrig method, ad static aoucemet method The DiscoutSale class has its ow bill method which computes the bill as a fuctio of the discout ad the price Copyright 2017 Pearso Ltd. All rights reserved. 27 Copyright 2017 Pearso Ltd. All rights reserved. 28 The Sale ad DiscoutSale Classes The Sale ad DiscoutSale Classes The Sale class lesstha method The Sale class bill() method: Note the bill() method ivocatios: public double bill( ) { public boolea lesstha (Sale othersale){ if (othersale == ull) { System.out.pritl("Error: ull object"); System.exit(0); retur (bill( ) < othersale.bill( )); retur price; The DiscoutSale class bill() method: public double bill( ) { double fractio = discout/100; retur (1 - fractio) * getprice( ); Copyright 2017 Pearso Ltd. All rights reserved. 29 Copyright 2017 Pearso Ltd. All rights reserved. 30

6 The Sale ad DiscoutSale Classes Give the followig i a program:... Sale simple = ew sale("floor mat", 10.00); DiscoutSale discout = ew DiscoutSale("floor mat", 11.00, 10);... if (discout.lesstha(simple)) System.out.pritl("$" + discout.bill() + " < " + "$" + simple.bill() + " because late-bidig works!");... Output would be: $9.90 < $10 because late-bidig works! The Sale ad DiscoutSale Classes I the previous example, the boolea expressio i the if statemet returs true As the output idicates, whe the lesstha method i the Sale class is executed, it kows which bill() method to ivoke The DiscoutSale class bill() method for discout, ad the Sale class bill() method for simple Note that whe the Sale class was created ad compiled, the DiscoutSale class ad its bill() method did ot yet exist These results are made possible by late-bidig Copyright 2017 Pearso Ltd. All rights reserved. 31 Copyright 2017 Pearso Ltd. All rights reserved. 32 Περίγραμμα Pitfall: No Late Bidig for Static Methods Itroductio to polymorphism Bidig Polymorphism ad Extesibility Example of Polymorphism: Sale ad DiscoutSale Polymorphism ad static methods Iheritace ad access specifiers Polymorphism ad costructors Polymorphism vs State Desig Patter Upcastig ad Dowcastig: Pitfalls The use of the cloe method Whe the decisio of which defiitio of a method to use is made at compile time, that is called sta8c bidig This decisio is made based o the type of the variable amig the object Java uses static (early) bidig with private, fial, ad static methods I the case of private ad fial methods, late bidig would serve o purpose, as such methods are ot iherited However, i the case of a static method ivoked usig a callig object, it does make a differece 33 Copyright 2017 Pearso Ltd. All rights reserved. 34 Pitfall: No Late Bidig for Static Methods The Sale class aoucemet() method: public static void aoucemet( ){ System.out.pritl("Sale class"); The DiscoutSale class aoucemet() method: public static void aoucemet( ){ System.out.pritl("DiscoutSale class"); Copyright 2017 Pearso Ltd. All rights reserved. Pitfall: No Late Bidig for Static Methods Sale simple = ew sale("floor mat", 10.00); DiscoutSale discout = ew DiscoutSale("floor mat", 11.00, 10); I the previous example, the simple (Sale class) ad discout (DiscoutClass) objects were created Give the followig assigmet: simple = discout; Now the two variables poit to the same object I particular, a Sale class variable ames a DiscoutClass object 35 Copyright 2017 Pearso Ltd. All rights reserved. 36

7 Pitfall: No Late Bidig for Static Methods Give the ivocatio: simple.aoucemet(); The output is: Sale class Note that here, aoucemet is a static method ivoked by a callig object (istead of its class ame) Therefore the type of simple is determied by its variable ame, ot the object that it refereces Pitfall: No Late Bidig for Static Methods There are other cases where a static method has a callig object i a more icospicuous way For example, a static method ca be ivoked withi the defiitio of a ostatic method, but without ay explicit class ame or callig object I this case, the callig object is the implicit this Copyright 2017 Pearso Ltd. All rights reserved. Copyright 2017 Pearso Ltd. All rights reserved Aν προστεθεί ο ακόλoυθος κώδικας στη Sale: Ποιά θα είναι η έξοδος του ακόλoυθου προγράμματος; Sale s = ew Sale ( fm,10); s.showadvertisemet(); DiscoutSale dis = ew DiscoutSale( fm, 11, 10); dis.showadvertisemet(); Sale class fm Price ad total cost=$10.0 Discout class fm Price = $11 Discout=10.0% Total cost=$9.9 public void showadvertisemet() { aoucemet(); System.out.pritl(toStrig()); Sale class fm Price ad total cost=$10.0 Sale class fm Price = $11 Discout=10.0% Total cost=$9.9 Επισκίαση (hidig) vs. Υπερσκέλιση (overridig) Αν μια υποκλάση ορίζει μια στατική μέθοδο με την ίδια υπογραφή με μια επίσης στατική μέθοδο τής υπερκλάσης της, η στατική μέθοδος της υποκλάσης επισκιάζει (hides) την ομώνυμη μέθοδο της υπερκλάσης. Η διαφοροποίηση ανάμεσα στην επισκίαση (hidig) και την υπερσκέλιση (overridig) είναι λεπτή και έχει σημαντικές προεκτάσεις. See: override.html EΠΛ133 Compile error Ru-time error Επισκίαση vs. Υπερσκέλιση (παράδειγμα) public class Aimal { public static void hide() { System.out.pritl( hide() i Aimal"); public void override() { System.out.pritl("override() i Aimal"); 41 Επισκίαση vs. Υπερσκέλιση (παράδειγμα) public class Cat exteds Aimal { public static void hide() { System.out.pritl("hide() i Cat."); public void override() { System.out.format( override() i Cat."); public static void mai(strig[] args) { Aimal myaimal = ew Cat(); myaimal.hide(); // BAD STYLE Aimal.hide(); // Better! myaimal.override(); 42

8 Επισκίαση vs. Υπερσκέλιση Στην περίπτωση κλήσης μιας στατικής μεθόδου πάνω σε χειριστήριο x κάποιας κλάσης Α, το σύστημα εκτέλεσης θα καλέσει τη στατική μέθοδο που δηλώνεται ως μέλος της κλασης Α, ασχέτως του τύπου του αντικειµένου στο οποίο παραπέµπει το χειριστήριο. Στην περίπτωση κλήσης μιας μη-στατικής μεθόδου πάνω σε χειριστήριο x κάποιας κλάσης Α, το σύστημα εκτέλεσης θα καλέσει τη μέθοδο που ανήκει στην κλάση του αντικειμένου στο οποίο παραπέμπει το x. Μια μη στατική μέθοδος δεν επιτρέπεται να υπερσκελίσει (override) μια στατική μέθοδο. Μια στατική μέθοδος δεν επιτρέπεται να επισκιάσει (hide) μια μη στατική μέθοδο. Defiig a Method with the Same Sigature as a Superclass's Method Istace Method Static Method Superclass Istace Method Overrides (retur type must be a subtype of the retur type of the superclass's method) - υπερσκελίζει Geerates a compiletime error Superclass Static Method Compile-time error Hides - Επισκιάζει The fial Modifier A method marked fial idicates that it caot be overridde with a ew defiitio i a derived class If fial, the compiler ca use early bidig with the method public fial void somemethod() {... A class marked fial idicates that it caot be used as a base class from which to derive ay other classes Late Bidig with tostrig If a appropriate tostrig method is defied for a class, the a object of that class ca be output usig System.out.pritl Sale asale = ew Sale("tire gauge", 9.95); System.out.pritl(aSale); Output produced: tire gauge Price ad total cost = $9.95 This works because of late bidig Copyright 2017 Pearso Ltd. All rights reserved. 45 Copyright 2017 Pearso Ltd. All rights reserved. 46 Late Bidig with tostrig Oe defiitio of the method pritl takes a sigle argumet of type Object: public void pritl(object theobject) { System.out.pritl(theObject.toStrig()); I tur, It ivokes the versio of pritl that takes a Strig argumet Note that the pritl method was defied before the Sale class existed Yet, because of late bidig, the tostrig method from the Sale class is used, ot the tostrig from the Object class A Object kows the Defiitios of its Methods The type of a class variable determies which method ames ca be used with the variable However, the object amed by the variable determies which defiitio with the same method ame is used A special case of this rule is as follows: The type of a class parameter determies which method ames ca be used with the parameter The argumet determies which defiitio of the method ame is used Copyright 2017 Pearso Ltd. All rights reserved. 47 Copyright 2017 Pearso Ltd. All rights reserved. 48

9 Περίγραμμα Ιδιωτικές μέθοδοι και κληρονομικότητα Itroductio to polymorphism Bidig Polymorphism ad Extesibility Example of Polymorphism: Sale ad DiscoutSale Polymorphism ad static methods Iheritace ad access specifiers Polymorphism ad istace variables Polymorphism ad costructors Polymorphism vs State Desig Patter Upcastig ad Dowcastig: Pitfalls The use of the cloe method public class PrivateOverride { private void f() {prit( private f() ); public static void mai(strig[] args) { PrivateOverride po = ew Derived(); po.f(); class Derived exteds PrivateOverride { public void f() {prit( public f() ); Κληρονομικότητα και προσδιοριστές πρόσβασης Η κλάση-κληρονόμος μπορεί να υπερσκελίσει (override) την λειτουργικότητα μιας μεθόδου της υπερκλάσης της δηλώνοντας μια μέθοδο με την ίδια υπογραφή και τον ίδιο τύπο επιστροφής με αυτόν της μεθόδου της υπερκλάσης. Η δυνατότητα της υπερσκέλισης μας επιτρέπει να κληρονομούμε συμπεριφορές από τις υπερκλάσεις μας και να τροποποιούμε αυτές τις συμπεριφορές μόνο όταν το κρίνουμε αναγκαίο. Ο προσδιοριστής πρόσβασης της υπερσκελίζουσας μεθόδου μιας υποκλάσης, μπορεί να δίνει τα ίδια ή περισσότερα δικαιώματα πρόσβασης με αυτά της μεθόδου της υπερκλάσης, όχι όμως λιγότερα. Π.χ: μια friedly μέθοδος της υπερκλάσης μπορεί να γίνει public αλλά όχι private Κληρονομικότητα και προσδιοριστές πρόσβασης Circle private Shape public Square public public Lie public private Αν επιχειρήσουμε να αλλάξουμε (περιορίσουµε) τις δικαιοδοσίες πρόσβασης σε μεθόδους της Shape: θα πάρουμε μύνημα σφάλματος: δεν μπορούμε να περιορίσουμε την ορατότητα των μελών της διαπροσωπείας της Shape! Παρατηρήσεις για κληρονομικότητα Περίγραμμα Μια υποκλάση κληρονομεί όλα τα μέλη (πεδία δεδομένων και μεθόδους) της υπερκλάσης της. Ωστόσο, η υποκλάση δεν έχει πρόσβαση στα ιδιωτικά (private) μέλη που κληρονομούνται από την υπερκλάση. Σημείωση: οι κατασκευαστές δεν θεωρούνται μέλη των κλάσεων και γι αυτό δεν κληρονομούνται. Itroductio to polymorphism Bidig Polymorphism ad Extesibility Example of Polymorphism: Sale ad DiscoutSale Polymorphism ad static methods Iheritace ad access specifiers Polymorphism ad istace variables Polymorphism ad costructors Polymorphism vs State Desig Patter Upcastig ad Dowcastig: Pitfalls The use of the cloe method 53 54

10 Πολυμορφισμός και Πεδία Δεδομένων class Super { public it field = 0; public it getfield() { retur field; class Sub exteds Super { public it field = 1; public it getfield() { retur field; public it getsuperfield() { retur super.field; public class Field Access { public static void mai(strig[] args) { Super sup = ew Sub(); // upcastig System.out.pritl(sup.field + + sup.getfield()); Sub sub = ew Sub(); System.out.pritl(sub.field + + sub.getfield() + + sub.getsuperfield()); Μ. Δικαιάκος, EΠΛ EΠΛ133 Ποιά είναι η έξοδος του προηγούμενου παραδείγματος; sup.field =0, sup.getfield() = 1 sub.field = 1, sub.getfield()=1, sub.getsuperfield=0 sup.field =1, sup.getfield() = 1 sub.field = 1, sub.getfield()=1, sub.getsuperfield=0 sup.field =0, sup.getfield() = 1 sub.field = 1, sub.getfield()=1, sub.getsuperfield=1 Σφάλμα εκτέλεσης 56 Πολυμορφισμός και Πεδία Δεδομένων Περίγραμμα Στο παράδειγμα, όπου ένα αντικείμενο Sub αναβαθμίζεται (upcast) σε χειριστήριο Super, όλες οι προσβάσεις σε πεδία δεδομένων «επιλύονται» από τον μεταγλωττιστή και δεν είναι πολυμορφικές. Η απευθείας πρόσβαση σε ένα πεδίο δεδομένων επιλύεται στον χρόνο μεταγλώττισης και συνεπώς δεν είναι πολυμορφική. Itroductio to polymorphism Bidig Polymorphism ad Extesibility Example of Polymorphism: Sale ad DiscoutSale Polymorphism ad static methods Iheritace ad access specifiers Polymorphism ad istace variables Polymorphism ad costructors Polymorphism vs State Desig Patter Upcastig ad Dowcastig: Pitfalls The use of the cloe method Κατασκευαστές και Πολυμορφισμός Παράδειγμα Ο κατασκευαστής ενός κληροδότη καλείται πάντοτε μέσα από τον κατασκευαστή του κληρονόμου του.έτσι, δημιουργείται μια αλυσίδα κλήσεων προς τα ανώτερα στρώματα της ιεραρχίας κληρονομικότητας. Η αλυσίδα αυτή των κλήσεων διασφαλίζεται από τον μεταγλωττιστή, ώστε να εξασφαλιστεί η σωστή κατασκευή αντικειμένων κλάσεων-κληρονόμων. Η σειρά των κλήσεων στην περίπτωση κατασκευής ενός αντικειμένου κάποιας κλάσης κληρονόμου Α, είναι η ακόλουθη: Κλήση του κατασκευαστή της υπερκλάσης της Α. Επανάληψη της κλήσης ώστε τελικά να κατασκευαστεί πρώτα το υποαντικείμενο της ρίζας της ιεραρχίας, ακολουθούμενο από το υποαντικείμενο του επόμενου κληρονόμου, κοκ. Εκτέλεση των αρχικοποιητών (iitializers) της Α, με βάση την σειρά δήλωσης των αντίστοιχων πεδίων της κλάσης. Κλήση του «σώματος» του κατασκευαστή Α(). class Meal { Meal() { System.out.pritl("Meal()"); class Bread { Bread() { System.out.pritl("Bread()"); class Cheese { Cheese() { System.out.pritl("Cheese()"); class Lettuce {Lettuce() { System.out.pritl("Lettuce()"); class Luch exteds Meal { Luch() { System.out.pritl("Luch()"); class PortableLuch exteds Luch { PortableLuch() {System.out.pritl("PortableLuch()"); class Sadwich exteds PortableLuch { Bread b = ew Bread(); Cheese c = ew Cheese(); Lettuce l = ew Lettuce(); Sadwich() { System.out.pritl("Sadwich()"); public static void mai(strig[] args) { ew Sadwich(); 59 60

11 Παράδειγμα (έξοδος) Meal() Luch() ProtableLuch() Bread() Cheese() Lettuce() Sadwitch() Παράδειγμα ΙΙ class Test exteds Object { /** Creates ew Test */ public Test() { System.out.pritl("Test()"); void foo() { System.out.pritl("foo i Test"); public class Test1 exteds Test { public Test1() { System.out.pritl("Test1"); public Test1(Test tt) { System.out.pritl("Test1.2"); tt.foo(); void foo() { System.out.pritl("foo i Test1"); public static void mai(strig args[]) { System.out.pritl("mai"); Test tt = ew Test(); Test tt1 = ew Test1(); Test tt2 = ew Test1(tt); Test tt3 = ew Test1(tt1); Ποια η έξοδος αυτού του κώδικα; Μ. Δικαιάκος, EΠΛ mai Test() Test() Test1 Test() Test1.2 foo i Test Test() Test1.2 foo i Test1 Μ. Δικαιάκος, EΠΛ Πολυμορφικές κλήσεις μέσα σε κατασκευαστές Πολυμορφικές κλήσεις μέσα σε κατασκευαστές class X { class X { void foo() { goo(); Πότε θα πραγματοποιηθεί η κλήση αυτή της goo()? Πώς θα γίνει η πρόσδεση της goo() και σε ποιό αντικείμενο; Η πρόσδεση θα γίνει δυναμικά (στο χρόνο εκτέλεσης) γιατί δεν μπορεί το αντικείμενο στο οποίο καλείται η foo() (και συνεπώς η goo()) να γνωρίζει εκ των προτέρων την κλάση του 65 X() { goo(); Πότε θα πραγματοποιηθεί η κλήση αυτή της goo()? Πώς θα γίνει η πρόσδεση της goo() και σε ποιό αντικείμενο; Aκόμα και αν η κλήση της goo() γίνει μέσα στον κατασκευαστή, θα χρησιμοποιηθεί δυναμική πρόσδεση σε ενδεχομένως υπερσκελισμένη έκδοση της goo(), ακόμα κι αν το αντικείμενο στο οποίο γίνεται η κλήση δεν έχει αρχικοποιηθεί πλήρως! 66

12 Πολυμορφικές κλήσεις μέσα σε κατασκευαστές class Glyph { void { System.out.pritl( Glyph. ); Glyph() { System.out.pritl("Glyph() before "); ; System.out.pritl("Glyph() after "); class RoudGlyph exteds Glyph { it radius = 1; RoudGlyph(it r) { radius = r; System.out.pritl("RoudGlyph.RoudGlyph(), radius = " + radius); void { System.out.pritl("RoudGlyph., radius = " + radius); public class PolyCostructors { public static void mai(strig[] args) { ew RoudGlyph(5); Ποια η έξοδος αυτού του κώδικα; 67 Μ. Δικαιάκος, EΠΛ Glyph() before RoudGlyph., radius = 0 Glyph() after RoudGlyph.RoudGlyph(), radius = 5 l l Πολυμορφικές κλήσεις μέσα σε κατασκευαστές Η κλήση μιας δυναμικά προσδενόμενης (αφαιρετικής) μεθόδου μέσα στον κατασκευαστή ενός αντικειμένου, χρησιμοποιεί την υπερσκελισμένη έκδοση της μεθόδου. Η διαδικασία αρχικοποίησης αντικειμένου έχει ως εξής: 1. Δέσμευση χώρου για το αντικείμενο και αρχικοποίηση των πεδίων του σε μηδέν. 2. Κλήση κατασκευαστών κληροδοτών. Κλήση υπερσκελισμένων μεθόδων (π.χ. tης ). 3. Αρχικοποίηση πεδίων δεδομένων, με τη σειρά της δήλωσής τους. 4. Κλήση του σώματος του κατασκευαστή του κληρονόμου. Μ. Δικαιάκος, EΠΛ Πολυμορφικές κλήσεις μέσα σε κατασκευαστές Για να αποφεύγουμε αυτές τις «δυσάρεστες» συνέπειες, καλό είναι να ακολουθούμε τον ακόλουθο κανόνα για τους κατασκευαστές των αντικειμένων: Κάνε όσο λιγότερα μπορείς για να φέρεις ένα αντικείμενο σε καλή κατάσταση, κι αν είναι δυνατόν μην καλείς καμιά μέθοδο στο σώμα του κατασκευαστή. Οι μόνες ασφαλείς μέθοδοι για να κληθούν μέσα σε ένα κατασκευαστή, είναι οι τελικές μέθοδοι της κλάσης κληροδότη του. l Συμμεταβλητοί τύποι επιστροφής Covariat retur types: Μια υπερσκελισμένη μέθοδος σε κάποια κλάσηκληρονόμο μπορεί να επιστρέφει τιμή τύπου, ο οποίος τύπος να είναι κληρονόμος του τύπου που επιστρέφει η μέθοδος της κλάσης κληροδότη: class Grai { public Strig tostrig() { retur "Grai"; class Wheat exteds Grai { public Strig tostrig() { retur "Wheat"; class Mill { Grai process() { retur ew Grai(); class WheatMill exteds Mill { Wheat process() { retur ew Wheat(); public class CovariatRetur { public static void mai(strig[] args) { Mill m = ew Mill(); Grai g = m.process(); System.out.pritl(g); m = ew WheatMill(); g = m.process(); System.out.pritl(g); 71 72

13 Περίγραμμα Σχεδιασμός με κληρονομικότητα Itroductio to polymorphism Bidig Polymorphism ad Extesibility Example of Polymorphism: Sale ad DiscoutSale Polymorphism ad static methods Iheritace ad access specifiers Polymorphism ad istace variables Polymorphism ad costructors Polymorphism vs State Desig Patter Upcastig ad Dowcastig: Pitfalls The use of the cloe method Κληρονομικότητα και πολυμορφισμός δεν είναι ο μοναδικός τρόπος για την επαναχρησιμοποίηση μιας υπάρχουσας κλάσης. Σε αρκετές περιπτώσεις είναι προτιμότερη η χρήση της σύνθεσης, καθώς τότε είναι δυνατή η δυναµική επιλογή τύπου (άρα και συμπεριφοράς). Π.χ. State desig patter: class Actor { public void act() { class HappyActor exteds Actor { public void act() { prit( HappyActor"); class SadActor exteds Actor { public void act() { prit("sadactor"); class Stage { private Actor actor = ew HappyActor(); public void chage() { actor = ew SadActor(); public void performplay() { actor.act(); public class Trasmogrify { public static void mai(strig[] args) { Stage stage = ew Stage(); stage.performplay(); stage.chage(); stage.performplay(); Περίγραμμα Itroductio to polymorphism Bidig Polymorphism ad Extesibility Example of Polymorphism: Sale ad DiscoutSale Polymorphism ad static methods Iheritace ad access specifiers Polymorphism ad istace variables Polymorphism ad costructors Polymorphism vs State Desig Patter Upcastig ad Dowcastig: Pitfalls The use of the cloe method Μ. Δικαιάκος, EΠΛ Upcastig ad Dowcastig Υποβάθμιση (dowcastig) Upcas8g is whe a object of a derived class is assiged to a variable of a base class (or ay acestor class) Sale salevariable; //Base class DiscoutSale discoutvariable = ew DiscoutSale("pait", 15,10); //Derived class salevariable = discoutvariable; //Upcastig System.out.pritl(saleVariable.toStrig()); Because of late bidig, tostrig above uses the defiitio give i the DiscoutSale class Copyright 2017 Pearso Ltd. All rights reserved. 77 Μ. Δικαιάκος, EΠΛ233 Όταν χρησιμοποιούμε upcastig (αναβάθμιση), ανεβαίνουμε την κλίμακα της κληρονομικότητας και χάνουμε την πληροφορία σχετικά με τον τύπο του αντικειμένου που γίνεται upcast. Η αναβάθμιση είναι ασφαλής, αφού ο κληροδότης δεν μπορεί να έχει ευρύτερη διαπροσωπεία από τους κληρονόμους του. Σε περιπτώσεις που έχουμε χρησιμοποιήσει αναβάθμιση, είναι χρήσιμο να μπορούμε να κατεβούμε την κλίμακα της κληρονομικότητας και να βρούμε τον τύπο του αντικειμένου που αναβαθμίστηκε. Η διαδικασία αυτή λέγεται dowcastig-υποβάθμιση και εμπεριέχει τον κίνδυνο να υποβαθμίσουμε ένα χειριστήριο στο λάθος τύπο, στέλνοντας στο αντίστοιχο αντικείμενο ένα μήνυμα που δεν μπορεί να γίνει δεκτό. Χρειάζεται λοιπόν κάποιος τρόπος ελέγχου αν η υποβάθμιση είναι έγκυρη. Ο έλεγχος αυτός γίνεται από την JAVA 78

14 Upcastig ad Dowcastig Υποβάθμιση (dowcastig) Dowcas8g is whe a type cast is performed from a base class to a derived class (or from ay acestor class to ay descedet class) Dowcastig has to be doe very carefully I may cases it does't make sese, or is illegal: discoutvariable = //will produce (DiscoutSale)saleVariable;//ru-time error discoutvariable = salevariable //will produce //compiler error There are times, however, whe dowcastig is ecessary, e.g., iside the equals method for a class: Sale othersale = (Sale)otherObject;//dowcastig Copyright 2017 Pearso Ltd. All rights reserved. 79 Μ. Δικαιάκος, EΠΛ Dowcastig import java.util.*; class Useful { public void f() { public void g() { class MoreUseful exteds Useful { public void f() { public void g() { public void u() { public void v() { public void w() { Dowcastig public class RTTI { public static void mai(strig[] args) { Useful[] x = { ew Useful(), ew MoreUseful() ; x[0].f(); x[1].g(); x[1].u(); // Compile-time: method ot foud i Useful ((MoreUseful)x[1]).u(); // Dowcast/RTTI ((MoreUseful)x[0]).u(); // Exceptio throw Μ. Δικαιάκος, EΠΛ Μ. Δικαιάκος, EΠΛ Pitfall: Dowcastig Tip: Checkig to See if Dowcastig is Legitimate It is the resposibility of the programmer to use dowcastig oly i situatios where it makes sese The compiler does ot check to see if dowcastig is a reasoable thig to do Usig dowcastig i a situatio that does ot make sese usually results i a ru-time error Dowcastig to a specific type is oly sesible if the object beig cast is a istace of that type This is exactly what the istaceof operator tests for: object istaceof ClassName It will retur true if object is of type ClassName I particular, it will retur true if object is a istace of ay descedet class of ClassName 83 84

15 Περίγραμμα A First Look at the cloe Method Itroductio to polymorphism Bidig Polymorphism ad Extesibility Example of Polymorphism: Sale ad DiscoutSale Polymorphism ad static methods Iheritace ad access specifiers Polymorphism ad istace variables Polymorphism ad costructors Polymorphism vs State Desig Patter Upcastig ad Dowcastig: Pitfalls The use of the cloe method Every object iherits a method amed cloe from the class Object The method cloe has o parameters It is supposed to retur a deep copy of the callig object However, the iherited versio of the method was ot desiged to be used as is Istead, each class is expected to override it with a more appropriate versio 85 Copyright 2017 Pearso Ltd. All rights reserved. 86 A First Look at the cloe Method A First Look at the cloe Method The headig for the cloe method defied i the Object class is as follows: protected Object cloe() The headig for a cloe method that overrides the cloe method i the Object class ca differ somewhat from the headig above A chage to a more permissive access, such as from protected to public, is always allowed whe overridig a method defiitio Chagig the retur type from Object to the type of the class beig cloed is allowed because every class is a descedet class of the class Object This is a example of a covariat retur type If a class has a copy costructor, the cloe method for that class ca use the copy costructor to create the copy retured by the cloe method public Sale cloe() { retur ew Sale(this); ad aother example: public DiscoutSale cloe() { retur ew DiscoutSale(this); Copyright 2017 Pearso Ltd. All rights reserved. 87 Copyright 2017 Pearso Ltd. All rights reserved. 88 Pitfall: Sometime the cloe Method Retur Type is Object Prior to versio 5.0, Java did ot allow covariat retur types There were o chages whatsoever allowed i the retur type of a overridde method Therefore, the cloe method for all classes had Object as its retur type Sice the retur type of the cloe method of the Object class was Object, the retur type of the overridig cloe method of ay other class was Object also Pitfall: Sometime the cloe Method Retur Type is Object Prior to Java versio 5.0, the cloe method for the Sale class would have looked like this: public Object cloe() { retur ew Sale(this); Therefore, the result must always be type cast whe usig a cloe method writte for a older versio of Java Sale copy = (Sale)origial.cloe(); Copyright 2017 Pearso Ltd. All rights reserved. 89 Copyright 2017 Pearso Ltd. All rights reserved. 90

16 Pitfall: Sometime the cloe Method Retur Type is Object It is still perfectly legal to use Object as the retur type for a cloe method, eve with classes defied after Java versio 5.0 Whe i doubt, it causes o harm to iclude the type cast For example, the followig is legal for the cloe method of the Sale class: Sale copy = origial.cloe(); However, addig the followig type cast produces o problems: Sale copy = (Sale)origial.cloe(); Pitfall: Limitatios of Copy Costructors Although the copy costructor ad cloe method for a class appear to do the same thig, there are cases where oly a cloe will work For example, give a method badcopy i the class Sale that copies a array of sales If this array of sales cotais objects from a derived class of Sale(i.e., DiscoutSale), the the copy will be a plai sale, ot a true copy b[i] = ew Sale(a[i]); //plai Sale object Copyright 2017 Pearso Ltd. All rights reserved. 91 Copyright 2017 Pearso Ltd. All rights reserved. 92 Pitfall: Limitatios of Copy Costructors However, if the cloe method is used istead of the copy costructor, the (because of late bidig) a true copy is made, eve from objects of a derived class (e.g., DiscoutSale): b[i] = (a[i].cloe());//discoutsale object The reaso this works is because the method cloe has the same ame i all classes, ad polymorphism works with method ames The copy costructors amed Sale ad DiscoutSale have differet ames, ad polymorphism does't work with methods of differet ames 93

ΕΠΛ233 ΠΟΛΥΜΟΡΦΙΣΜΟΣ

ΕΠΛ233 ΠΟΛΥΜΟΡΦΙΣΜΟΣ ΠΟΛΥΜΟΡΦΙΣΜΟΣ 2 ΠΟΛΥΜΟΡΦΙΣΜΟΣ Από τις βασικότερες έννοιες των αντικειμενοστρεφών γλωσσών προγραμματισμού, μετά την αφαιρετικότητα των δεδομένων (data abstraction) και την κληρονομικότητα (inheritance).

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

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

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

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

ΔΙΑΠΡΟΣΩΠΕΙΕΣ. Αφαιρετικές Μέθοδοι. Αφαιρετικές Μέθοδοι. Αφαιρετικές Κλάσεις

ΔΙΑΠΡΟΣΩΠΕΙΕΣ. Αφαιρετικές Μέθοδοι. Αφαιρετικές Μέθοδοι. Αφαιρετικές Κλάσεις Αφαιρετικές Μέθοδοι Istrumet Strig what() ΔΙΑΠΡΟΣΩΠΕΙΕΣ Wid Strig what() Percussio Strig what() Striged Strig what() WoodWid Strig what() Brass Strig what() Στα προηγούμενα παραδείγματα, οι μέθοδοι της

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 5η: 29/03/2006 & 30/03/2006

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

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

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

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

1. For each of the following power series, find the interval of convergence and the radius of convergence:

1. For each of the following power series, find the interval of convergence and the radius of convergence: Math 6 Practice Problems Solutios Power Series ad Taylor Series 1. For each of the followig power series, fid the iterval of covergece ad the radius of covergece: (a ( 1 x Notice that = ( 1 +1 ( x +1.

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

Τι σημαίνει; n Για την αποδοτική δέσμευση δομών δεδομένων μη. n Για την αποφυγή «διαρροών μνήμης» (memory leaks).

Τι σημαίνει; n Για την αποδοτική δέσμευση δομών δεδομένων μη. n Για την αποφυγή «διαρροών μνήμης» (memory leaks). Δέσμευση Μνήμης (memory allocatio) Τι σημαίνει; Διαχείριση Μνήµης Ο καλός προγραμματισμός επιβάλλει την αποδοτική χρήση της μνήμης του Η/Υ. Είναι σημαντικό να καταλαβαίνουμε τις διαδικασίες δέσμευσης μνήμης:

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

SUPERPOSITION, MEASUREMENT, NORMALIZATION, EXPECTATION VALUES. Reading: QM course packet Ch 5 up to 5.6

SUPERPOSITION, MEASUREMENT, NORMALIZATION, EXPECTATION VALUES. Reading: QM course packet Ch 5 up to 5.6 SUPERPOSITION, MEASUREMENT, NORMALIZATION, EXPECTATION VALUES Readig: QM course packet Ch 5 up to 5. 1 ϕ (x) = E = π m( a) =1,,3,4,5 for xa (x) = πx si L L * = πx L si L.5 ϕ' -.5 z 1 (x) = L si

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

Κληρονομικότητα. Περίγραμμα. Σύνθεση. Επαναχρησιμοποίηση Κλάσεων. Περίγραμμα. Σύνθεση (παράδειγμα) Code re-use through composition and inheritance

Κληρονομικότητα. Περίγραμμα. Σύνθεση. Επαναχρησιμοποίηση Κλάσεων. Περίγραμμα. Σύνθεση (παράδειγμα) Code re-use through composition and inheritance Περίγραμμα Κληρονομικότητα Code re-use through compositio ad iheritace Iheritace ad hierarchy Οbject cass Exampe of iheritace Iheritace ad object costructio Code re-use through deegatio Iheritace ad access

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

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

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

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

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

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

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

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

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

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

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

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

Περίγραμμα. n Αν θέλουμε να χρησιμοποιείται μόνο μια θέση αποθήκευσης για. n Δηλ., αν θέλουμε να καλούμε μια μέθοδο χωρίς να έχουμε

Περίγραμμα. n Αν θέλουμε να χρησιμοποιείται μόνο μια θέση αποθήκευσης για. n Δηλ., αν θέλουμε να καλούμε μια μέθοδο χωρίς να έχουμε Περίγραμμα ΕΠΛ133 - Διάλεξη 6η Στατικές Μεταβλητές και Μέθοδοι Περιβάλλουσες Κλάσεις Αρχικοποιήσεις Αντικειμένων Αποκομιδή Σκυβάλων Αναφορές και Παράμετροι Κλάσεων Αναλλοίωτοι Περιορισμοί Σωστή και Λάθος

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

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

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

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

Last Lecture. Biostatistics Statistical Inference Lecture 19 Likelihood Ratio Test. Example of Hypothesis Testing.

Last Lecture. Biostatistics Statistical Inference Lecture 19 Likelihood Ratio Test. Example of Hypothesis Testing. Last Lecture Biostatistics 602 - Statistical Iferece Lecture 19 Likelihood Ratio Test Hyu Mi Kag March 26th, 2013 Describe the followig cocepts i your ow words Hypothesis Null Hypothesis Alterative Hypothesis

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

ΕΞΑΙΡΕΣΕΙΣ στη JAVA. Σφάλματα προγραμμάτων. Μειονεκτήματα. Προσέγγιση της JAVA

ΕΞΑΙΡΕΣΕΙΣ στη JAVA. Σφάλματα προγραμμάτων. Μειονεκτήματα. Προσέγγιση της JAVA ΕΞΑΙΡΕΣΕΙΣ στη JAVA Σφάλματα προγραμμάτων Τα σφάλματα ενός προγράμματος προκαλούνται από διάφορες καταστάσεις, όπως: Εξάντληση διαθέσιμης ιδεατής μνήμης, προσπάθεια ανάγνωσης εκτός των ορίων ενός πίνακα,

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. Πολυµορφισµός και Αφηρηµένες κλάσεις. Εισαγωγή στον Πολυµορφισµό

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. Πολυµορφισµός και Αφηρηµένες κλάσεις. Εισαγωγή στον Πολυµορφισµό Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 5η: 29/03/2006 & 30/03/2006

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

IIT JEE (2013) (Trigonomtery 1) Solutions

IIT JEE (2013) (Trigonomtery 1) Solutions L.K. Gupta (Mathematic Classes) www.pioeermathematics.com MOBILE: 985577, 677 (+) PAPER B IIT JEE (0) (Trigoomtery ) Solutios TOWARDS IIT JEE IS NOT A JOURNEY, IT S A BATTLE, ONLY THE TOUGHEST WILL SURVIVE

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

Homework for 1/27 Due 2/5

Homework for 1/27 Due 2/5 Name: ID: Homework for /7 Due /5. [ 8-3] I Example D of Sectio 8.4, the pdf of the populatio distributio is + αx x f(x α) =, α, otherwise ad the method of momets estimate was foud to be ˆα = 3X (where

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

L.K.Gupta (Mathematic Classes) www.pioeermathematics.com MOBILE: 985577, 4677 + {JEE Mai 04} Sept 0 Name: Batch (Day) Phoe No. IT IS NOT ENOUGH TO HAVE A GOOD MIND, THE MAIN THING IS TO USE IT WELL Marks:

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

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

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

ΕΠΛ133 - Διάλεξη 6η. Kεφ. 5, Savitch. Περίγραμμα. A Person Class Constructor. Designing a Person Class: Constructor

ΕΠΛ133 - Διάλεξη 6η. Kεφ. 5, Savitch. Περίγραμμα. A Person Class Constructor. Designing a Person Class: Constructor Περίγραμμα Aναλλοίωτοι Περιορισμοί ΕΠΛ133 - Διάλεξη 6η Παραβίαση ιδιωτικότητας, Κατασκευαστές αντιγραφείς (copy costructors). Μεταλλάξιμες και μη μεταλλάξιμες κλάσεις Βιβλιοθήκες Java και Javadoc Kεφ.

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

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

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

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

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

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

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

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

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

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

4.6 Autoregressive Moving Average Model ARMA(1,1)

4.6 Autoregressive Moving Average Model ARMA(1,1) 84 CHAPTER 4. STATIONARY TS MODELS 4.6 Autoregressive Moving Average Model ARMA(,) This section is an introduction to a wide class of models ARMA(p,q) which we will consider in more detail later in this

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

CHAPTER 25 SOLVING EQUATIONS BY ITERATIVE METHODS

CHAPTER 25 SOLVING EQUATIONS BY ITERATIVE METHODS CHAPTER 5 SOLVING EQUATIONS BY ITERATIVE METHODS EXERCISE 104 Page 8 1. Find the positive root of the equation x + 3x 5 = 0, correct to 3 significant figures, using the method of bisection. Let f(x) =

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

Other Test Constructions: Likelihood Ratio & Bayes Tests

Other Test Constructions: Likelihood Ratio & Bayes Tests Other Test Constructions: Likelihood Ratio & Bayes Tests Side-Note: So far we have seen a few approaches for creating tests such as Neyman-Pearson Lemma ( most powerful tests of H 0 : θ = θ 0 vs H 1 :

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

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

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

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

n r f ( n-r ) () x g () r () x (1.1) = Σ g() x = Σ n f < -n+ r> g () r -n + r dx r dx n + ( -n,m) dx -n n+1 1 -n -1 + ( -n,n+1)

n r f ( n-r ) () x g () r () x (1.1) = Σ g() x = Σ n f < -n+ r> g () r -n + r dx r dx n + ( -n,m) dx -n n+1 1 -n -1 + ( -n,n+1) 8 Higher Derivative of the Product of Two Fuctios 8. Leibiz Rule about the Higher Order Differetiatio Theorem 8.. (Leibiz) Whe fuctios f ad g f g are times differetiable, the followig epressio holds. r

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

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

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

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

Συστήματα Διαχείρισης Βάσεων Δεδομένων

Συστήματα Διαχείρισης Βάσεων Δεδομένων ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Συστήματα Διαχείρισης Βάσεων Δεδομένων Φροντιστήριο 9: Transactions - part 1 Δημήτρης Πλεξουσάκης Τμήμα Επιστήμης Υπολογιστών Tutorial on Undo, Redo and Undo/Redo

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

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

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

department listing department name αχχουντσ ϕανε βαλικτ δδσϕηασδδη σδηφγ ασκϕηλκ τεχηνιχαλ αλαν ϕουν διξ τεχηνιχαλ ϕοην µαριανι

department listing department name αχχουντσ ϕανε βαλικτ δδσϕηασδδη σδηφγ ασκϕηλκ τεχηνιχαλ αλαν ϕουν διξ τεχηνιχαλ ϕοην µαριανι She selects the option. Jenny starts with the al listing. This has employees listed within She drills down through the employee. The inferred ER sttricture relates this to the redcords in the databasee

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

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.

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

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

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

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

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

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

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

Assalamu `alaikum wr. wb.

Assalamu `alaikum wr. wb. LUMP SUM Assalamu `alaikum wr. wb. LUMP SUM Wassalamu alaikum wr. wb. Assalamu `alaikum wr. wb. LUMP SUM Wassalamu alaikum wr. wb. LUMP SUM Lump sum lump sum lump sum. lump sum fixed price lump sum lump

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

On Generating Relations of Some Triple. Hypergeometric Functions

On Generating Relations of Some Triple. Hypergeometric Functions It. Joural of Math. Aalysis, Vol. 5,, o., 5 - O Geeratig Relatios of Some Triple Hypergeometric Fuctios Fadhle B. F. Mohse ad Gamal A. Qashash Departmet of Mathematics, Faculty of Educatio Zigibar Ade

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

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

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

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

2 Composition. Invertible Mappings

2 Composition. Invertible Mappings Arkansas Tech University MATH 4033: Elementary Modern Algebra Dr. Marcel B. Finan Composition. Invertible Mappings In this section we discuss two procedures for creating new mappings from old ones, namely,

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

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

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

3.4 SUM AND DIFFERENCE FORMULAS. NOTE: cos(α+β) cos α + cos β cos(α-β) cos α -cos β

3.4 SUM AND DIFFERENCE FORMULAS. NOTE: cos(α+β) cos α + cos β cos(α-β) cos α -cos β 3.4 SUM AND DIFFERENCE FORMULAS Page Theorem cos(αβ cos α cos β -sin α cos(α-β cos α cos β sin α NOTE: cos(αβ cos α cos β cos(α-β cos α -cos β Proof of cos(α-β cos α cos β sin α Let s use a unit circle

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

Phys460.nb Solution for the t-dependent Schrodinger s equation How did we find the solution? (not required)

Phys460.nb Solution for the t-dependent Schrodinger s equation How did we find the solution? (not required) Phys460.nb 81 ψ n (t) is still the (same) eigenstate of H But for tdependent H. The answer is NO. 5.5.5. Solution for the tdependent Schrodinger s equation If we assume that at time t 0, the electron starts

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

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

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

Περίγραμμα. Υπερφόρτωση. 1 Μ. Δικαιάκος, EΠΛ133. n Κάθε δεδομένο είναι. n Πεδία Δεδομένων ή Μεταβλητές Στιγμιοτύπου (fields or. n Mεθόδους (methods)

Περίγραμμα. Υπερφόρτωση. 1 Μ. Δικαιάκος, EΠΛ133. n Κάθε δεδομένο είναι. n Πεδία Δεδομένων ή Μεταβλητές Στιγμιοτύπου (fields or. n Mεθόδους (methods) Περίγραμμα Σχεδιασμός Κλάσεων (κεφ. 4) 1 2 Αντικείμενο Επανάληψη: Αντικείμενα και Κλάσεις Η βασική αφαιρετική αναπαράσταση δεδομένων (data abstractio) του Α/Σ Προγραμματισμού. Κάθε δεδομένο είναι αντικείμενο

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

Ψηφιακή Επεξεργασία Εικόνας

Ψηφιακή Επεξεργασία Εικόνας ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ψηφιακή Επεξεργασία Εικόνας Φιλτράρισμα στο πεδίο των συχνοτήτων Διδάσκων : Αναπληρωτής Καθηγητής Νίκου Χριστόφορος Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 Κατασκευαστές (Constructors) Ειδικός τύπος μεθόδων, οι οποίες: - είναι public και έχουν το ίδιο όνομα με αυτό της κλάσης - χρησιμοποιούνται για να αρχικοποιήσουν κάποιες

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

Introduction of Numerical Analysis #03 TAGAMI, Daisuke (IMI, Kyushu University)

Introduction of Numerical Analysis #03 TAGAMI, Daisuke (IMI, Kyushu University) Itroductio of Numerical Aalysis #03 TAGAMI, Daisuke (IMI, Kyushu Uiversity) web page of the lecture: http://www2.imi.kyushu-u.ac.jp/~tagami/lec/ Strategy of Numerical Simulatios Pheomea Error modelize

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

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

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

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

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

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

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

derivation of the Laplacian from rectangular to spherical coordinates

derivation of the Laplacian from rectangular to spherical coordinates derivation of the Laplacian from rectangular to spherical coordinates swapnizzle 03-03- :5:43 We begin by recognizing the familiar conversion from rectangular to spherical coordinates (note that φ is used

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

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

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

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

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

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

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

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

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

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

Concrete Mathematics Exercises from 30 September 2016

Concrete Mathematics Exercises from 30 September 2016 Concrete Mathematics Exercises from 30 September 2016 Silvio Capobianco Exercise 1.7 Let H(n) = J(n + 1) J(n). Equation (1.8) tells us that H(2n) = 2, and H(2n+1) = J(2n+2) J(2n+1) = (2J(n+1) 1) (2J(n)+1)

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

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

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

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

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

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

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

Statistical Inference I Locally most powerful tests

Statistical Inference I Locally most powerful tests Statistical Inference I Locally most powerful tests Shirsendu Mukherjee Department of Statistics, Asutosh College, Kolkata, India. shirsendu st@yahoo.co.in So far we have treated the testing of one-sided

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

6.1. Dirac Equation. Hamiltonian. Dirac Eq.

6.1. Dirac Equation. Hamiltonian. Dirac Eq. 6.1. Dirac Equation Ref: M.Kaku, Quantum Field Theory, Oxford Univ Press (1993) η μν = η μν = diag(1, -1, -1, -1) p 0 = p 0 p = p i = -p i p μ p μ = p 0 p 0 + p i p i = E c 2 - p 2 = (m c) 2 H = c p 2

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

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

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

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

Homework 4.1 Solutions Math 5110/6830

Homework 4.1 Solutions Math 5110/6830 Homework 4. Solutios Math 5/683. a) For p + = αp γ α)p γ α)p + γ b) Let Equilibria poits satisfy: p = p = OR = γ α)p ) γ α)p + γ = α γ α)p ) γ α)p + γ α = p ) p + = p ) = The, we have equilibria poits

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

DESIGN OF MACHINERY SOLUTION MANUAL h in h 4 0.

DESIGN OF MACHINERY SOLUTION MANUAL h in h 4 0. DESIGN OF MACHINERY SOLUTION MANUAL -7-1! PROBLEM -7 Statement: Design a double-dwell cam to move a follower from to 25 6, dwell for 12, fall 25 and dwell for the remader The total cycle must take 4 sec

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

ΕΠΛ233 Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA

ΕΠΛ233 Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA 2 «Μονάδα Μετάφρασης» 2 «Μονάδα Μετάφρασης» Όταν δημιουργείται ένα αρχείο πηγαίου κώδικα στην Java, το αρχείο καλείται µονάδα µετάφρασης (compilation unit)

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

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

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

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

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

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

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

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

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

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

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

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

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

Η ΨΥΧΙΑΤΡΙΚΗ - ΨΥΧΟΛΟΓΙΚΗ ΠΡΑΓΜΑΤΟΓΝΩΜΟΣΥΝΗ ΣΤΗΝ ΠΟΙΝΙΚΗ ΔΙΚΗ

Η ΨΥΧΙΑΤΡΙΚΗ - ΨΥΧΟΛΟΓΙΚΗ ΠΡΑΓΜΑΤΟΓΝΩΜΟΣΥΝΗ ΣΤΗΝ ΠΟΙΝΙΚΗ ΔΙΚΗ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΝΟΜΙΚΗ ΣΧΟΛΗ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ ΤΟΜΕΑΣ ΙΣΤΟΡΙΑΣ ΦΙΛΟΣΟΦΙΑΣ ΚΑΙ ΚΟΙΝΩΝΙΟΛΟΓΙΑΣ ΤΟΥ ΔΙΚΑΙΟΥ Διπλωματική εργασία στο μάθημα «ΚΟΙΝΩΝΙΟΛΟΓΙΑ ΤΟΥ ΔΙΚΑΙΟΥ»

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

Υπερφόρτωση Μεθόδων και Πέρασμα Ορισμάτων

Υπερφόρτωση Μεθόδων και Πέρασμα Ορισμάτων 6 Υπερφόρτωση Μεθόδων και Πέρασμα Ορισμάτων Τι θα δούμε σε αυτό το μάθημα 1. Μεταβίβαση ορισμάτων σε μέθοδο 1. μεταβίβαση τύπου τιμής 2. μεταβίβαση αναφοράς τιμής-ref και out 3. μεταβίβαση αναφοράς αντικειμένου

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

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

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

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

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

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

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

HOMEWORK 4 = G. In order to plot the stress versus the stretch we define a normalized stretch:

HOMEWORK 4 = G. In order to plot the stress versus the stretch we define a normalized stretch: HOMEWORK 4 Problem a For the fast loading case, we want to derive the relationship between P zz and λ z. We know that the nominal stress is expressed as: P zz = ψ λ z where λ z = λ λ z. Therefore, applying

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

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

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

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

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

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

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

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008 Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει

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

C.S. 430 Assignment 6, Sample Solutions

C.S. 430 Assignment 6, Sample Solutions C.S. 430 Assignment 6, Sample Solutions Paul Liu November 15, 2007 Note that these are sample solutions only; in many cases there were many acceptable answers. 1 Reynolds Problem 10.1 1.1 Normal-order

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

Fractional Colorings and Zykov Products of graphs

Fractional Colorings and Zykov Products of graphs Fractional Colorings and Zykov Products of graphs Who? Nichole Schimanski When? July 27, 2011 Graphs A graph, G, consists of a vertex set, V (G), and an edge set, E(G). V (G) is any finite set E(G) is

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

Section 9.2 Polar Equations and Graphs

Section 9.2 Polar Equations and Graphs 180 Section 9. Polar Equations and Graphs In this section, we will be graphing polar equations on a polar grid. In the first few examples, we will write the polar equation in rectangular form to help identify

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

Homework 3 Solutions

Homework 3 Solutions Homework 3 Solutions Igor Yanovsky (Math 151A TA) Problem 1: Compute the absolute error and relative error in approximations of p by p. (Use calculator!) a) p π, p 22/7; b) p π, p 3.141. Solution: For

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

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

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

Partial Trace and Partial Transpose

Partial Trace and Partial Transpose Partial Trace and Partial Transpose by José Luis Gómez-Muñoz http://homepage.cem.itesm.mx/lgomez/quantum/ jose.luis.gomez@itesm.mx This document is based on suggestions by Anirban Das Introduction This

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

Strain gauge and rosettes

Strain gauge and rosettes Strain gauge and rosettes Introduction A strain gauge is a device which is used to measure strain (deformation) on an object subjected to forces. Strain can be measured using various types of devices classified

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

(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.

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

ΕΠΛ233 ΠΛΗΡΟΦΟΡΙΑ ΤΥΠΟΥ. Type Information. Μ. Δικαιάκος

ΕΠΛ233 ΠΛΗΡΟΦΟΡΙΑ ΤΥΠΟΥ. Type Information. Μ. Δικαιάκος ΕΠΛ233 ΠΛΗΡΟΦΟΡΙΑ ΤΥΠΟΥ Type Information 2 Δυναμική Πληροφορία Τύπου Runtime type information (RTTI): μας επιτρέπει να ανακαλύπτουμε και να χρησιμοποιούμε δυναμικά (at run time) πληροφορίες για τον τύπο

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

ST5224: Advanced Statistical Theory II

ST5224: Advanced Statistical Theory II ST5224: Advanced Statistical Theory II 2014/2015: Semester II Tutorial 7 1. Let X be a sample from a population P and consider testing hypotheses H 0 : P = P 0 versus H 1 : P = P 1, where P j is a known

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

Finite Field Problems: Solutions

Finite Field Problems: Solutions Finite Field Problems: Solutions 1. Let f = x 2 +1 Z 11 [x] and let F = Z 11 [x]/(f), a field. Let Solution: F =11 2 = 121, so F = 121 1 = 120. The possible orders are the divisors of 120. Solution: The

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

ΓΗΠΛΧΜΑΣΗΚΖ ΔΡΓΑΗΑ ΑΡΥΗΣΔΚΣΟΝΗΚΖ ΣΧΝ ΓΔΦΤΡΧΝ ΑΠΟ ΑΠΟΦΖ ΜΟΡΦΟΛΟΓΗΑ ΚΑΗ ΑΗΘΖΣΗΚΖ

ΓΗΠΛΧΜΑΣΗΚΖ ΔΡΓΑΗΑ ΑΡΥΗΣΔΚΣΟΝΗΚΖ ΣΧΝ ΓΔΦΤΡΧΝ ΑΠΟ ΑΠΟΦΖ ΜΟΡΦΟΛΟΓΗΑ ΚΑΗ ΑΗΘΖΣΗΚΖ ΔΘΝΗΚΟ ΜΔΣΟΒΗΟ ΠΟΛΤΣΔΥΝΔΗΟ ΥΟΛΖ ΠΟΛΗΣΗΚΧΝ ΜΖΥΑΝΗΚΧΝ ΣΟΜΔΑ ΓΟΜΟΣΑΣΗΚΖ ΓΗΠΛΧΜΑΣΗΚΖ ΔΡΓΑΗΑ ΑΡΥΗΣΔΚΣΟΝΗΚΖ ΣΧΝ ΓΔΦΤΡΧΝ ΑΠΟ ΑΠΟΦΖ ΜΟΡΦΟΛΟΓΗΑ ΚΑΗ ΑΗΘΖΣΗΚΖ ΔΤΘΤΜΗΑ ΝΗΚ. ΚΟΤΚΗΟΤ 01104766 ΔΠΗΒΛΔΠΧΝ:ΑΝ.ΚΑΘΖΓΖΣΖ ΗΧΑΝΝΖ

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

ΑΝΑΠΤΥΞΗ ΤΟΥ ΠΤΥΧΙΑΚΗ. Λεμεσός

ΑΝΑΠΤΥΞΗ ΤΟΥ ΠΤΥΧΙΑΚΗ. Λεμεσός ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΝΟΣΗΛΕΥΤΙΚΗΣ ΤΟ ΚΑΠΝΙΣΜΑ ΚΑΤΑ ΤΗΝ ΕΓΚΥΜΟΣΥΝΗ ΚΑΙ Η ΒΛΑΠΤΙΚΗ ΕΠΙΔΡΑ ΑΣΗ ΤΟΥ ΣΤΗΝ ΑΝΑΠΤΥΞΗ ΤΟΥ ΝΕΟΓΝΟΥ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Ονοματεπώνυμο Αγγελική Παπαπαύλου Αριθμός Φοιτητικής

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

CHAPTER 103 EVEN AND ODD FUNCTIONS AND HALF-RANGE FOURIER SERIES

CHAPTER 103 EVEN AND ODD FUNCTIONS AND HALF-RANGE FOURIER SERIES CHAPTER 3 EVEN AND ODD FUNCTIONS AND HALF-RANGE FOURIER SERIES EXERCISE 364 Page 76. Determie the Fourier series for the fuctio defied by: f(x), x, x, x which is periodic outside of this rage of period.

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

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

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

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

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

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

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

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

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

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

Αναερόβια Φυσική Κατάσταση

Αναερόβια Φυσική Κατάσταση Αναερόβια Φυσική Κατάσταση Γιάννης Κουτεντάκης, BSc, MA. PhD Αναπληρωτής Καθηγητής ΤΕΦΑΑ, Πανεπιστήµιο Θεσσαλίας Περιεχόµενο Μαθήµατος Ορισµός της αναερόβιας φυσικής κατάστασης Σχέσης µε µηχανισµούς παραγωγής

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

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

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

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

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

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

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

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

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

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

Capacitors - Capacitance, Charge and Potential Difference

Capacitors - Capacitance, Charge and Potential Difference Capacitors - Capacitance, Charge and Potential Difference Capacitors store electric charge. This ability to store electric charge is known as capacitance. A simple capacitor consists of 2 parallel metal

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