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

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

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

Transcript

1 Περίγραμμα Σχεδιασμός Κλάσεων (κεφ. 4) 1 2 Αντικείμενο Επανάληψη: Αντικείμενα και Κλάσεις Η βασική αφαιρετική αναπαράσταση δεδομένων (data abstractio) του Α/Σ Προγραμματισμού. Κάθε δεδομένο είναι αντικείμενο (εξαίρεση: οι μεταβλητές αρχέγονου τύπου) Κάθε αντικείμενο περιλαμβάνει/περικλείει τα εξής «μέλη»: Πεδία Δεδομένων ή Μεταβλητές Στιγμιοτύπου (fields or istace variables) Mεθόδους (methods) Η πρόσβαση στις μεθόδους και στα πεδία δεδομένων ενός αντικειμένου γίνεται μέσω: Χειριστηρίου (hadle), το οποίο αντιστοιχεί στη διεύθυνση μνήμης στην οποία αποθηκεύεται το αντικείμενο 3 4 Συστατικά στοιχεία Αντικειμένου A/Σ επίλυση προβλημάτων Οι τιµές τους καθορίζουν την «κατάσταση» του αντικειµένου Ένα πρόγραμμα JAVA κωδικοποιεί την επίλυση ενός υπολογιστικού προβλήματος σαν σύνολο από αντικείμενα που αλληλεπιδρούν. Ιδιότητες Πεδία Δεδοµένων Συµπεριφορές Λειτουργίες/Μέθοδοι Ταυτότητα Διεύθυνση µνήµης Καθορίζουν την αλληλεπίδραση του αντικειµένου µε άλλα αντικείµενα 5 6

2 Κλάση Περίγραμμα Η κλάση είναι τύπος δεδομένου (type), και συγκεκριμένα το σχεδιότυπο/σχεδιάγραμμα από το οποίο κατασκευάζονται τα αντικείμενα. Μια κλάση ορίζει τα πεδία δεδομένων και τις μεθόδους των αντικειμένων που προκύπτουν από αυτή. Μηχανισμός για σχεδιασμό και παραγωγή αντικειμένων Αντικείμενα που ανήκουν στην ίδια κλάση: Υποστηρίζουν την ίδια συλλογή λειτουργιών (συμπεριφορών) Έχουν ένα κοινό σύνολο από πιθανές καταστάσεις 7 8 Παράδειγμα: ηλεκτροστατικά φορτία Παράδειγμα Σχεδιασμού Κλάσης: Υπολογίζοντας το Ηλεκτροστατικό Πεδίο Οι αλληλεπιδράσεις ηλεκτρικών φορτίων ακολουθούν το Νόμο του Coulomb Κάθε φορτίο δημιουργεί ένα ηλεκτροστατικό δυναμικό στο χώρο, το οποίο καθορίζει τις δυνάμεις που ασκούνται σε άλλα φορτία του χώρου. Το δυναμικό ενός σημείου στο χώρο ισούται με το άθροισμα των δυναμικών που δημιουργούνται από όλα τα φορτία του χώρου Εξετάζουμε την περίπτωση των δύο διαστάσεων (τα φορτία είναι τοποθετημένα σε ένα επίπεδο) 9 10 Υπολογισμός Ηλεκτροστατικού Δυναμικού Ζητούμενο (x,y) r q (x0,y0) V = k q / r q: φορτίο r : απόσταση k: ηλεκτροστατική σταθερά (k = 8.99x10 9 Nm 2 /C 2 ) Υπολογίστε το ηλεκτροστατικό δυναμικό σημείων ενός επιπέδου, δεδομένων φορτίων που υπάρχουν στο επίπεδο. q2 q1 φορτισµένο σωµατίδιο c µε φορτίο q x qn 11 12

3 Υπολογιστικό πρόβλημα Ποιά είσοδος; ;;; EIΣΟΔΟΣ (iput) * Created by mdd o 15/01/2017. public class LeapYear { public static void mai(strig[] args) { it year = Iteger.parseIt(args[0]); Αλγόριθµος // divisible by 4 boolea isleapyear = (year % 4 == 0); // divisible by 4 ad ot 100 isleapyear = isleapyear && (year % 100!= 0); // divisible by 4 ad ot 100 uless divisible by 400 isleapyear = isleapyear (year % 400 == 0); System.out.pritl(isLeapYear); ;;; ΕΞΟΔΟΣ (output) Συντεταγμένες σημείου, τιμή η/σ φορτίων Συντεταγμένες σημείου, συντεταγμένες και τιμή φορτίων Συντεταγμένες σημείου, συντεταγμένες και τιμή φορτίων, ηλεκτροστατική σταθερά Συντεταγμένες σημείου, συντεταγμένες και τιμή φορτίων, ηλεκτροστατική σταθερά, εξίσωση Coulomb 13 EΠΛ Ποιά αντικείμενα χρειάζονται για τον υπολογιστικό υπολογισμό του ηλεκτροστατικού δυναμικού στο επίπεδο; Αφαιρετικότητα Πώς θα κωδικοποιήσουμε στο πρόγραμμά μας τα φορτία; Σαν αντικείμενα (objects) Επίπεδο, σημεία, φορτία Απόσταση, σημεία, φορτία Φορτία, σημεία Ποιές ιδιότητες καθορίζουν την κατάσταση (state) του κάθε φορτίου; Το μέγεθος του φορτίου: πραγματικός αριθμός (q) Την θέση του φορτίου στο επίπεδο: Ζευγάρι πραγματικών αριθμών (x, y) Φορτία Ποιά είναι η συμπεριφορά (behavior) του κάθε φορτίου; Δημιουργεί ένα πεδίο δυναμικού EΠΛ Αφαιρετικότητα Χρειαζόμαστε ένα τύπο δεδομένων, ο οποίος να ορίζει τα χαρακτηριστικά του κάθε φορτίου (κατάσταση, συμπεριφορά) Χαρακτηριστικά κλάσης Charge public class Charge double x, y, q; Εισάγουμε μια κλάση Charge για την περιγραφή ηλεκτρικών φορτίων. Τι πεδία δεδομένων πρέπει να έχει αυτή η κλάση; Θέση του κάθε φορτίου (συντεταγμένες x, y) Τιμή του φορτίου Τι συμπεριφορά πρέπει να έχουν τα στιγμιότυπα αυτής της κλάσης; Κάθε φορτίο προκαλεί κάποιο δυναμικό σε κάθε άλλο σημείο του επιπέδου double potetialat(double x, double y) επιστρέφει το δυναμικό στη θέση x,y που προκαλείται από το φορτίο Strig tostrig() επιστρέφει συμβολοσειρά που αναπαριστά το φορτίο 17 18

4 Χρήση της Charge public class ChargeCliet { public static void mai(strig[] args) { double x = Double.parseDouble(args[0]); double y = Double.parseDouble(args[1]); Charge c1 = ew Charge(.51, Μετασχηματισμός.63, του 21.3); stdi από πίνακα Charge c2 = ew Charge(.13, αλφαριθμητικών.94, σε 81.9); πραγματικούς System.out.pritl(c1); αριθμούς. System.out.pritl(c2); Χρήση της tostrig double v1 = c1.potetialat(x, y); double v2 = c2.potetialat(x, y); System.out.pritl(v1+v2); Παρατηρείστε ότι ο κώδικας που χρησιμοποιεί την Charge δεν χρειάζεται να γνωρίζει την υλοποίηση της. 19 Υλοποίηση Κλάσης Charge public class Charge { double rx, ry; // positio double q; // charge public Charge(double x0, double y0, double q0) { rx = x0; ry = y0; q = q0; public double potetialat(double x, double y) { retur k * q / Math.sqrt(dx*dx + dy*dy); public Strig tostrig() { retur q + " at " + "(" + rx + ", " + ry + ")"; Every program is a class Πεδία δεδοµένων (istace variables) Κατασκευαστής (costructor) Μέθοδοι (istace methods) 20 public class ChargeCliet { A object of a class is declared & amed by a variable of the class type public static void mai(strig[] args) { double x = Double.parseDouble(args[0]); double y = Double.parseDouble(args[1]); Charge c1 = ew Charge(.51,.63, 21.3); Charge c2 = ew Charge(.13,.94, 81.9); System.out.pritl(c1); System.out.pritl(c2); double v1 = c1.potetialat(x, y); double v2 = c2.potetialat(x, y); System.out.pritl(v1+v2); ew operator must be used to create the object ad associate it with its variable ame 21 Περίγραμμα 22 Μέθοδοι public class ChargeCliet { public static void mai(strig[] args) { double x = Double.parseDouble(args[0]); double y = Double.parseDouble(args[1]); Charge c1 = ew Charge(.51,.63, 21.3); Charge c2 = ew Charge(.13,.94, 81.9); System.out.pritl(c1); System.out.pritl(c2); double v1 = c1.potetialat(x, y); double v2 = c2.potetialat(x, y); System.out.pritl(v1+v2); Methods are ivoked usig the ame of the callig object ad the method ame. Ivokig a method is equivalet to executig the method body 23 24

5 Κατηγορίες Μεθόδων Μέθοδοι που επιτελούν μια ενέργεια (perform a actio): δεν επιστρέφουν μια τιμή. Τις χρησιμοποιούμε για τις παρενέργειές τους (side-effects). Αποκαλούνται void methods Μέθοδοι που υπολογίζουν και επιστρέφουν System.out.pritl(c1); μια τιμή καποιου τύπου (compute ad retur a public value of void a certai pritl(strig type) x){.. A ivocatio of a method (κλήση μεθόδου) that returs a value ca be used as a expressio (έκφραση) ayplace that a value of the typeretured ca be used public double potetialat(double x, double y) { retur k * q / Math.sqrt(dx*dx + dy*dy); 25 EΠΛ133 Ποιά από τις πιο κάτω προτάσεις είναι λάθος; Η mai είναι void μέθοδος της Java Kάθε μέθοδος Java μπορεί να χρησιμοποιηθεί σαν να ήταν void Στη mai δεν μπορούμε να κάνουμε χρήση εντολής «retur;» Η mai δεν χρειάζεται να υπάρχει σε κάθε κλάση Java 26 retur Statemets A void method eed ot cotai a retur statemet, uless there is a situatio that requires the method to ed before all its code is executed I this cotext, sice it does ot retur a value, a retur statemet is used without a expressio: retur; Ay Method Ca Be Used As a void Method A method that returs a value ca also perform a actio If you wat the actio performed, but do ot eed the retured value, you ca ivoke the method as if it were a void method, ad the retured value will be discarded: objectname.returedvaluemethod(); Copyright 2017 Pearso Ltd. All rights reserved. 27 Copyright 2017 Pearso Ltd. All rights reserved. 28 public class Charge { private double rx, ry; private double q; // positio // charge Tυπικές παράμετροι (formal parameters) Παράμετροι, Ορίσματα, Τοπικές Μεταβλητές, Κλήση με Τιμή public Charge(double x0, double y0, double q0) { rx = x0; ry = y0; q = q0; public double potetialat(double x, double y) { retur k * q / Math.sqrt(dx*dx + dy*dy); public Strig tostrig() { retur q + " at " + "(" + rx + ", " + ry + ")"; Ορίσματα ή κανονικές παράμετροι (argumets ή actual parameters) 29 30

6 Πραγματικές Παράμετροι ή Ορίσματα Whe a method is ivoked, the appropriate values must be passed to the method i the form of argumets (ορίσματα) Argumets are also called actual parameters (πραγματικές παράμετροι) The umber ad order of the argumets must exactly match that of the parameter list The type of each argumet must be compatible with the type of the correspodig parameter it a=1,b=2,c=3; double result = mymethod(a,b,c); Κλήση με τιμή (call by value) it a=1,b=2,c=3; double result = mymethod(a,b,c); I the precedig example, the value of each argumet (ot the variable ame) is plugged ito the correspodig method parameter. This method of pluggig i argumets for formal parameters is kow as the call-by-value mechaism (κλήση με τιμή) Copyright 2017 Pearso Ltd. All rights reserved. 31 Copyright 2017 Pearso Ltd. All rights reserved. 32 Mετασχηματισμός (αρχέγονων) τύπων If argumet ad parameter types do ot match exactly, Java will attempt to make a automatic type coversio A primitive argumet ca be automatically type cast (μετασχηματισμός τύπου) from ay of the followig types, to ay of the types that appear to its right: byte short it log float double char Pitfall: Use of the Terms "Parameter" ad "Argumet" Parameter (παράμετρος) is the variable Argumet (όρισμα) is the item passed i the parameter People ofte use the terms parameter ad argumet iterchageably Whe you see these terms, you may have to determie their exact meaig from cotext Copyright 2017 Pearso Ltd. All rights reserved. 33 Copyright 2017 Pearso Ltd. All rights reserved. 34 Τοπικές μεταβλητές public class ChargeCliet { public static void mai(strig[] args) { double x = Double.parseDouble(args[0]); double y = Double.parseDouble(args[1]); Charge c1 = ew Charge(.51,.63, 21.3); Charge c2 = ew Charge(.13,.94, 81.9); System.out.pritl(c1); System.out.pritl(c2); double v1 = c1.potetialat(x, y); double v2 = c2.potetialat(x, y); System.out.pritl(v1+v2); A variable declared withi a method defiitio is called a local variable 35 public class Charge { private double rx, ry; private double q; // positio // charge public Charge(double x0, double y0, double q0) { rx = x0; ry = y0; q = q0; public double potetialat(double x, double y) { retur k * q / Math.sqrt(dx*dx + dy*dy); public Strig tostrig() { retur q + " at " + "(" + rx + ", " + ry + ")"; All method parameters are used as local variables 36

7 Tι συμβαίνει κατά την εκτέλεση της TestSilly; public class Silly { public double dummysum(double x, double y, it z) { z = 288; retur x + y; public class TestSilly { public static void mai(strig args[]){ it zop = 133; Silly sillyobj = ew Silly(); System.out.pritl(sillyObj.dummySum(1, 2, zop) + + zop); Περίγραμμα Εκτυπώνει: 0 0 Εκτυπώνει: 3.0 zop Eκτυπώνει: Εκτυπώνει: EΠΛ public class Charge { private double rx, ry; private double q; // positio // charge H χρήση του «this» public Charge(double x0, double y0, double q0) { rx = x0; ry = y0; q = q0; public double potetialat(double x, double y) { retur k * q / Math.sqrt(dx*dx + dy*dy); public Strig tostrig() { retur q + " at " + "(" + rx + ", " + ry + ")"; Σε κάθε χρήση μεταβλητής στιγμιοτύπου (istace variable) υπονοείται ότι υπάρχει παραπομπή στο αντικείμενο που περικλείει τη μεταβλητή: <object hadle>.idetifier public double potetialat(double x, double y) { retur k * q / Math.sqrt(dx*dx + dy*dy); Αν χρειαστούμε να ονοματίσουμε το περικλείον αντικείμενο, μπορούμε να χρησιμοποιήσουμε την κλειδολέξη this myistacevariable always meas ad is always iterchageable with this.myistacevariable public double potetialat(double x, double y) { retur k * q / Math.sqrt(dx*dx + dy*dy); public double potetialat(double x, double y) { double dx = x - this.rx; double dy = y - this.ry; retur k * this.q / Math.sqrt(dx*dx + dy*dy); Copyright 2017 Pearso Ltd. All rights reserved

8 this must be used if a parameter or other local variable with the same ame is used i the method Otherwise, all istaces of the variable ame will be iterpreted as local it somevariable = this.somevariable local istace class Baaa { double param; Baaa(it prm) { param = prm; void f(it i) { System.out.pritl( Calc: + i * param); Baaa a = ew Baaa(5), b = ew Baaa(7); a.f(1); b.f(2); Copyright 2017 Pearso Ltd. All rights reserved l Η χρήση του this (συνέχεια) Πως μπορεί η μέθοδος f() να γνωρίζει αν καλείται από το αντικείμενο a ή το αντικείμενο b; a.f(1) ó Baaa.f(a,1) b.f(2) ó Baaa.f(b,2) Αν θέλουμε, μέσα από κάποιο αντικείμενο, να αποκτήσουμε πρόσβαση-χειριστήριο προς το αντικείμενο αυτό, μπορούμε να χρησιμοποιήσουμε την ειδική μεταβλητή this, η οποία είναι χειριστήριο για το αντικείμενο μας. l H παράμετρος this είναι «κρυμμένη» Ανάθεση στην this δεν επιτρέπεται. l Αν και δεν εμφανίζεται στη λίστα τυπικών παραμέτρων μιας μεθόδου, αυτομάτως και υπόρρητα περνιέται σαν όρισμα στο σώμα της μεθόδου. Μέσω της this μπορούμε να περάσουμε το τρέχον αντικείμενο σαν παράμετρο σε μεθόδους άλλων αντικειμένων. l Whe a method is ivoked, the callig object is automatically plugged i for this Παράδειγμα χρήσης this Περίγραμμα // Simple use of the "this" keyword. public class Leaf { private it i = 0; Leaf icremet() { i++; retur this; void prit() { System.out.pritl("i = " + i); public static void mai(strig[] args) { Leaf x = ew Leaf(); x.icremet().icremet().icremet().prit(); Πολλαπλή κλήση της ίδιας μεθόδου πάνω στο ίδιο αντικείμενο

9 Στοιχεία αφαιρετικότητας στον Α/Σ.Π. Στοιχεία Αφαιρετικότητας στον Α/Σ. Π. Αντικείμενα: οι λύσεις σε υπολογιστικά προβλήματα μοντελοποιούνται σαν αλληλεπιδράσεις μεταξύ αντικειμένων. Κλάσεις: είναι το «εργαλείο» δημιουργίας σχεδιοτύπων και παραγωγής αντικείμενων με ομοειδή χαρακτηριστικά. 3. Απόκρυψη πληροφοριών. 4. Εμφώλευση. 5. Χαμηλή διασυνδετικότητα Iformatio Hidig ad Ecapsulatio Απόκρυψη Πληροφορίας (Iformatio Hidig) Iformatio hidig (απόκρυψη πληροφοριών) is the practice of separatig how to use a class from the details of its implemetatio Abstractio is aother term used to express the cocept of discardig details i order to avoid iformatio overload Ecapsulatio (εμφώλευση ή εγκόλπωση) meas that the data ad methods of a class are combied ito a sigle uit (i.e., a class object), which hides the implemetatio details Kowig the details is uecessary because iteractio with the object occurs via a well-defied ad simple iterface Δεν μας ενδιαφέρει πώς ακριβώς ένα αντικείμενο εκπληρώνει μια υποχρέωσή του. Έτσι, δεν έχουμε ιδέα τι ενέργειες θα κάνει και από ποιούς θα ζητήσει βοήθεια για να μας εξυπηρετήσει. Από την στιγμή που το αντικείμενο δεχθεί το μήνυμα-αίτημά μας, αποδέχεται και την ευθύνη για την διεκπεραίωση του. Βασική προσέγγιση Α/Σ. Π.: ψάχνουμε κάποιο άλλο αντικείμενο για να μεταβιβάσουμε ολόκληρη ή μέρος τής υποχρέωσης που έχουμε αναλάβει Copyright 2017 Pearso Ltd. All rights reserved Εμφώλευση δεδομένων (data ecapsulatio) Διασυνδετικότητα I Java, hidig details is doe by markig them private Aπόκρυψη της κατάστασης (state) του αντικειμένου σε ιδιωτικά (private) πεδία δεδομένων Περιορισμός της αλληλεπίδρασης/επικοινωνίας με τα αντικείμενα και δυνατότητα αλλαγής της κατάστασης των μόνο μέσω των μεθόδων τους Τα αντικείμενα διατηρούν τον έλεγχο του πώς ο εξωτερικός κόσμος μπορεί να τα αξιοποιήσει Με την απόκρυψη πληροφοριών, μπορούμε να πετύχουμε χαμηλή διασυνδετικότητα στα προγράμματά μας Ορισμός διασυνδετικότητας: Ο βαθμός εξάρτησης ενός τμήματος τού κώδικα κάποιου λογισμικού συστήματος από τα υπόλοιπα τμήματα. Σημασία διασυνδετικότητας Θεωρείστε κάποιον κώδικα που υλοποιεί ουσιώδη λειτουργία ενός πολύπλοκου συστήματος λογισμικού. Έφ όσον ο κώδικας αυτός χρησιμεύει σε άλλα κομμάτια του συστήματος, στοιχεία του (μεταβλητές, αποτελέσματα, εντολές) θα χρησιμοποιούνται και πρέπει να είναι γνωστά και προσβάσιμα για την υλοποίηση των υπολοίπων κομματιών του λογισμικού. Άρα, η ανάπτυξη ενός νέου υποσυστήματος προϋποθέτει την κατανόηση και γνώση του κώδικά μας (καλό ή κακό;) 53 54

10 l Απουσία Παρεμβολών (o-iterferece) Εφόσον ένα αντικείμενο παρέχει τις υπηρεσίες που θέλουμε, δεν μας ενδιαφέρει πως διεκπεραιώνει τα αιτήματά μας. Τα εξαρτήµατα λογισµικού (software compoets) σε Α/Σ συστήματα χαρακτηρίζονται από τις υπηρεσίες που παρέχουν και όχι από τις λεπτομέρειες της υλοποίησής τους. Η προσέγγιση αυτή διευκολύνει την συνεργασία πολλών προγραμματιστών πάνω στο ίδιο σύστημα με την ελάχιστη παρεμβολή του ενός στη δουλειά του άλλου. Ask ot what you ca do to your data structures; ask what your data structures ca do for you. Ποιά από τις πιο κάτω προτάσεις είναι η σωστή; Η χαμηλή διασυνδετικότητα είναι ιδιότητα του Α/Σ. Π. Η υποστήριξη της εμφώλευσης επιτρέπει την απόκρυψη πληροφορίας, η οποία διευκολύνει τη χαμηλή διασυνδετικότητα. Η χρήση αντικειμένων διασφαλίζει την απόκρυψη πληροφορίας. Η απουσία απόκρυψης πληροφορίας συνεπάγεται την υψηλή διασυνδετικότητα. 55 EΠΛ Η εμφώλευση στην Java Αccess Specifiers (Προσδιοριστές πρόσβασης) Αccessor Methods (Μέθοδοι Προσπέλασης) Mutator Methods (Mέθοδοι Μεταλλαγής) public ad private Modifiers Ο προσδιοριστής (modifier) public (δημόσιος) υποδηλώνει ότι δεν υπάρχουν περιορισμοί στο πού μπορεί να χρησιμοποιηθεί μια μεταβλητή στιγμιοτύπου ή μέθοδος. Ο προσδιοριστής private (ιδιωτικός) υποδηλώνει ότι μια μεταβλητή στιγμιοτύπου ή μέθοδος δεν μπορεί να προσπελασθεί μέσω του ονόματός της από κώδικα που ανήκει σε άλλη κλάση (caot be accessed by ame outside of the class) Καλή Πρακτική: όλες οι μεταβλητές στιγμιοτύπου να είναι private Οι περισσότερες μέθοδοι είναι public και έτσι δίνουν ελεγχόμενη πρόσβαση στις ιδιωτικές Συνήθως, μέθοδοι που δηλώνονται private χρησιμοποιούνται σαν υποβοηθητικές σε άλλες μεθόδους της κλάσης τους. 57 Copyright 2017 Pearso Ltd. All rights reserved. 58 public class Charge { private double rx, ry; private double q; // positio // charge public Charge(double x0, double y0, double q0) { rx = x0; ry = y0; q = q0; public double potetialat(double x, double y) { retur k * q / Math.sqrt(dx*dx + dy*dy); public Strig tostrig() { retur q + " at " + "(" + rx + ", " + ry + ")"; A Class Has Access to Private Members of All Objects of the Class Withi the defiitio of a class, private members of ay object of the class ca be accessed, ot just private members of the callig object public boolea equals(charge c) { retur (c.q == q); 59 Copyright 2017 Pearso Ltd. All rights reserved. 60

11 Accessor ad Mutator Methods Accessor οr getter methods (μέθοδοι προσπέλασης) allow the programmer to obtai the value of a object's istace variables The data ca be accessed but ot chaged The ame of a accessor method typically starts with the word get Mutator or setter methods (μέθοδοι μεταλλαγής) allow the programmer to chage the value of a object's istace variables i a cotrolled maer Icomig data is typically tested ad/or filtered The ame of a mutator method typically starts with the word set Copyright 2017 Pearso Ltd. All rights reserved. public class Charge { private double rx, ry; // positio private double q; // charge public Charge(double x0, double y0, double q0) { rx = x0; ry = y0; q = q0; public double potetialat(double x, double y) { retur k * q / Math.sqrt(dx*dx + dy*dy); public Strig tostrig() { retur q + " at " + "(" + rx + ", " + ry + ")"; public boolea equals(charge c) { retur (c.q == q); public getxcoord() { retur this.rx; public getycoord() { retur this.ry; public getchargevalue() { retur this.q; public setpositio(double x, double y) { this.rx = x; this.ry = y; Προσπέλασης - Αccessor Μεταλλαγής - Mutator Mutator Methods Ca Retur a Boolea Value Some mutator methods issue a error message ad ed the program wheever they are give values that are't sesible A alterative approach is to have the mutator test the values, but to ever have it ed the program Istead, have it retur a boolea value, ad have the callig program hadle the cases where the chages do ot make sese Ecapsulatio Διαπροσωπεία (δημόσια) - καθορίζει ποιά στοιχεία των αντικειμένων μπορούν να χρησιμοποιηθούν από άλλες κλάσεις και αντικείμενα. Copyright 2017 Pearso Ltd. All rights reserved. 63 Copyright 2017 Pearso Ltd. All rights reserved. 64 A Couple of Importat Acroyms: API ad ADT The API or applicatio programmig iterface for a class is a descriptio of how to use the class A programmer eed oly read the API i order to use a well desiged class A ADT or abstract data type is a data type that is writte usig good iformatio-hidig techiques Precoditios ad Postcoditios The precoditio (προ-συνθήκη / συνθήκη πριν την κλήση) of a method states what is assumed to be true whe the method is called The postcoditio (μετά-συνθήκη / συνθήκη μετά την κλήση) of a method states what will be true after the method is executed, as log as the precoditio holds It is a good practice to always thik i terms of precoditios ad postcoditios whe desigig a method, ad whe writig the method commet Copyright 2017 Pearso Ltd. All rights reserved. 65 Copyright 2017 Pearso Ltd. All rights reserved. 66

12 Περίγραμμα Iitializers Στην Java, πριν την χρήση μιας μεταβλητής αρχέγονου τύπου, η μεταβλητή αυτή θα πρέπει να έχει αρχικοποιηθεί. Διαφορετικά ο μεταφραστής διαμαρτύρεται και βγάζει μήνυμα λάθους. Π.χ.: it i; i = i++ ; // illegal Για την αποφυγή του προβλήματος αυτού, χρησιμοποιούμε μια ειδική ανάθεση αρχικοποιητή (iitializer), με την οποία αρχικοποιούμε μια αρχέγονη μεταβλητή την στιγμή της δήλωσής της: it i = 1; Εξαίρεση αποτελούν οι αρχέγονοι τύποι που είναι στοιχεία κάποιου αντικειμένου. Τα στοιχεία αυτά μπορούν να μην αρχικοποιηθούν από τον προγραμματιστή (τι τιµές παίρνουν τότε ;) Παράδειγμα class Measuremet { boolea t; char c; byte b; short s; it i; log l; float f; double d; void prit() { System.out.pritl("Data type Iitial value\" + "boolea " + t + "\" + "char " + c + "\" + "byte " + b + "\" + "short " + s + "\" + "it " + i + "\" + "log " + l + "\" + "float " + f + "\" +"double " + d); public class IitialValues { public static void mai(strig[] args){ Measuremet().prit; 69 Εκροή Παραδείγματος C:\users\epl233\eckel-code\c04>java IitialValues Data type Iitial value boolea false char byte 0 short 0 it 0 log 0 float 0.0 double 0.0 Το char αρχικοποιείται σε ull. Επίσης σε ull αρχικοποιούνται και όποια χειριστήρια αντικειμένων περιέχονται ως στοιχεία σε αντικείμενα. 70 Αρχικοποιήσεις Αντικειμένων class Measuremet { boolea t = false; char c = z ; byte b = 9; short s = 0; it i = f(s); log l = 12; float f = 2.3; double d = 0.9; void prit() { Αρχικοποίηση μπορεί να γίνει με κλήση μεθόδου. Οι παράμετροι που δικαιούμαστε να περάσουμε στην μέθοδο, πρέπει να έχουν ήδη αρχικοποιηθεί (αλλοιώς λαμβάνουμε exceptio). Κατασκευαστές (Costructors) 71 72

13 Κατασκευαστές (costructors) Οι costructors είναι μέθοδοι που χρησιμοποιούνται για την αρχικοποίηση ενός αντικειμένου κατά την στιγμή της δημιουργίας του. Δηλώνονται με το ίδιο όνοµα με την κλάση στην οποία ανήκουν. Έτσι η ονομασία τους δεν χρειάζεται ιδιαίτερη διαχείριση, για αποφυγή τυχόν συγκρούσεων με άλλα ονόματα. Οι κατασκευαστές δεν επιστρέφουν τίποτε, χωρίς ωστόσο να δηλώνονται με τύπο επιστροφής void. Διευκολύνουν τον προγραμματισμό καθώς «ενοποιούν» ονοματολογικά την δήλωση και την αρχικοποίηση των κλάσεων και αντικειμένων. Παράδειγμα costructor class Rock { Rock() { // This is the costructor System.out.pritl("Creatig Rock"); public class SimpleCostructor { public static void mai(strig[] args) { for(it i = 0; i < 10; i++) l l Προκαθορισμένοι κατασκευαστές Σε πολλές περιπτώσεις μια κλάση ορίζεται χωρίς κατασκευαστή. Στην περίπτωση αυτή (και μόνο), ο μεταφραστής ορίζει και καλεί έναν προκαθορισμένο κατασκευαστή (default costructor), ο οποίος δεν δέχεται παραμέτρους: class Bird { it i; public class DefaultCostructor { public static void mai(strig[] args) { Bird c = ew Bird(); // default! Bird c = ew Bird(1); // error! Η αρχικοποίηση των στοιχείων του δημιουργούμενου l 75 Κατασκευαστές με παραμέτρους Ένας costructor μπορεί να δεχεται παραμέτρους, οι οποίες καθορίζουν περαιτέρω το πώς θα αρχικοποιηθεί το αντίστοιχο αντικείμενο. class Rock2 { Rock2(it i) { System.out.pritl("Creatig Rock umber " + i); public class SimpleCostructor2 { public static void mai(strig[] args) { for(it i = 0; i < 10; i++) ew Rock2(i); 76 Περίγραμμα Οverloadig () 77 78

14 Μεθόδων (overloadig) Παράδειγμα ς μεθόδων προκύπτει στην Java όταν το ίδιο όνοµα µεθόδου µπορεί να δεχτεί διαφορετικούς τύπους και/ή διαφορετικό αριθµό παραµέτρων. Η υπερφόρτωση μεθόδων χρησιμοποιείται ευρύτατα στον Α/ ΣΠ, αλλά και ιδιαίτερα στους κατασκευαστές-costructors. Αν δύο μέθοδοι ( κατασκευαστές ) έχουν το ίδιο όνομα, τότε πως γνωρίζει η Java ποιά μέθοδο θέλουμε να επικαλεστούμε; Kάθε υπερφορτωμένη μέθοδος πρέπει να δέχεται μια διαφορετική λίστα τύπων κατηγορημάτων. Ακόμη και διαφορές στην σειρά των κατηγορημάτων είναι αρκετές για να ξεχωρίσουν δυό μεθόδους, αλλά αυτό δεν είναι «καλή» προγραμματιστική τακτική. import java.util.*; class Tree { it height; Tree() { prt("platig a seedlig"); height = 0; Tree(it i) { prt("creatig ew Tree that is "+ i + " feet tall"); height = i; void ifo() { prt("tree is "+ height + " feet tall"); void ifo(strig s) { prt(s + : Tree is + height + " feet tall"); static void prt(strig s) { System.out.pritl(s); Παράδειγμα ς (συνέχεια) public class Overloadig { public static void mai(strig[] args) { for(it i = 0; i < 5; i++) { Tree t = ew Tree(i); t.ifo(); t.ifo("overloaded method"); // Overloaded costructor: ew Tree(); 81 και Αρχέγονοι τύποι Αν ορίσουμε μια υπορουτίνα : void f (double x) { /* και την καλέσουμε σαν f(5), η παράμετρος «5» θα προαχθεί αυτόματα (promotio) σε 5.0. Τι θα συμβεί αν η f() είναι υπερφορτωμένη ώστε να δέχεται και ακέραιη παράμετρο; Θα εκτελεσθεί η έκδοση της f() που δέχεται ακέραιες παραµέτρους. Γενικότερα, αν η τιμή που περνάμε σε μια μέθοδο έχει τύπο µικρότερο από τον τύπο της δηλωμένης παραμέτρου, τότε η τιμή προάγεται στον τύπο της παραμέτρου. Αν υπάρχουν πολλοί τέτοιοι δυνατοί τύποι (πολλαπλών «υπερφορτώσεων»), τότε η προαγωγή γίνεται στον αμέσως μεγαλύτερο τύπο. Εξαίρεση έχουμε στην περίπτωση που ο τύπος της δηλωμένης παραμέτρου είναι char κι εμείς περνάμε έναν ακέραιο, ο οποίος δεν αντιστοιχεί σε τιμή χαρακτήρα char, τότε η τιμή αυτή προάγεται σε 82 Παράδειγμα public class Foo { void f1(double x) { System.out.pritl("double f1 -->" + x); void f1(it x) { System.out.pritl("it f1 -->" + x); Pitfall: You Ca Not Overload Based o the Type Retured The sigature of a method oly icludes the method ame ad its parameter types The sigature does ot iclude the type retured Java does ot permit methods with the same ame ad differet retur types i the same class public static void mai(strig[] args) { Foo ff = ew Foo(); ff.f1(5); 83 Copyright 2017 Pearso Ltd. All rights reserved. 84

15 Περίγραμμα Κατασκευάζοντας αυτοκίνητα στο Eclipse

16 import comp102x.io; private it odometer = 0; private Strig ower = "NoName"; // odometer value iitialized to 0 // Name of ower * Default costructor for a Car object public Car() { Μutator/Setter * movecar moves a car forward or backward by dist uits Methods (μέθοδος dist movig distace μεταλλαγής) public void movecar(it dist) { odometer = odometer + dist; IO.outputl(ower +"'s car has moved " + dist + " uits."); Ορισμός Μεθόδων * A class of car objects that ca move forward, backward ad tur! mdd * public class Car { Πεδία δεδομένων * turcar turs a car by a give degree agle tur agle i degrees public void turcar(double agle) { IO.outputl(ower + "'s car has tured " + agle + " uits."); * getodometer gets the odometer readig of a car * public it getodometer() { retur odometer; * Costructor for a Car object with a ew ower's ame ame ame of ower public Car(Strig ame){ ower = ame; Κατασκευαστές 91 Περίγραμμα 92 Λίγα λόγια για την τεκμηρίωση Τα σχόλια στον κώδικα χρησιμοποιούνται για να περιγράψουν: Αccessor/Getter Method (μέθοδος προσπέλασης) τι κάνει ένα πρόγραμμα και τι χρειάζεται; τι αναπαριστά μια μεταβλητή/πεδίο δεδομένων; ποιές προϋποθέσεις πρέπει να τηρούνται όταν χρησιμοποιείται μια μεταβλητή / πεδίο δεδομένων ή μέθοδος; μια σύντομη περιγραφή της λογικής ροής του προγράμματος πληροφορίες για τον προγραμματιστή και τον κώδικα Στη JAVA υπάρχουν τρεις γενικοί τρόποι για εισαγωγή σχολίων στον κώδικα import comp102x.io; Συμβάσεις Σχολίων: Γενικές Αρχές * A class of car objects that ca move forward, backward ad tur! mdd * public class Car { Δύο ειδών σχόλια: Υλοποίησης, που περιλαμβάνονται ανάμεσα σε /*..., ή έπονται του // Αποδελτίωσης (documetatio ή "doc commets"), που περιλαμβάνονται ανάμεσα σε... Τα σχόλια αποδελτίωσης, μπορούν να εξαχθούν αυτόματα σε εγχειρίδια HTML μορφότυπου, με χρήση του εργαλείου javadoc. Τα σχόλια υλοποίησης χρησιμεύουν για τον αποκλεισμό κώδικα σε σχόλιο, ή τον σχολιασμό υλοποίησης. Τα σχόλια αποδελτίωσης στοχεύουν στην καταγραφή των προδιαγραφών του κώδικα (code specificatio), ανεξάρτητα της υλοποίησης. Γενικά, τα σχόλια αποσκοπούν στην παράθεση επεξηγήσεων σχετικά με τον κώδικα για πράγματα που δεν είναι φανερά από τον κώδικα τον ίδιο. Πάρα πολλά επεξηγηματικά σχόλια υποδηλώνουν συνήθως κακή σχεδίαση του κώδικα. /* The odometer has always positive value private it odometer = 0; // odometer value iitialized to 0 private Strig ower = "NoName"; // Name of ower * Default costructor for a Car object public Car() { * Costructor for a Car object with a ew ower's ame ame ame of ower public Car(Strig ame){ ower = ame; 95 96

17 Σχόλια αποδελτίωσης - Javadoc Σχόλια που ξεκινούν με και καταλήγουν σε Τροφοδοτούν εργαλεία τεκμηρίωσης όπως το Javadoc, μέσω των οποίων μπορούμε να δημιουργήσουμε αρχεία τεκμηρίωσης (mauals) σε HTML, τα οποία μας δίνουν πληροφορίες για κλάσεις και τις δυνατότητές τους. Μπορεί να περιλαμβάνουν σημαντήρες (tags), για να περιγράφουν για να περιγράφουν την τιμή επιστροφής μιας για να παραπέμπουν σε άλλα τμήματα των εγχειριδίων HTML, τα οποία δημιουργούνται από το javadoc Σχόλια αποδελτίωσης δεν πρέπει να τοποθετούνται μέσα στο σώμα μιας μεθόδου Tεκμηρίωση βιβλιοθηκών JAVA Σχόλια Αποδελτίωσης (συνέχεια) Άλλοι χρησιμοποιούμενοι σημαντήρες είναι @param parameter-ame

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

Αντικείμενα και Κλάσεις Ποιά από τις πιο κάτω προτάσεις ισχύει συνήθως κατά την ανάπτυξη λογισμικού JAVA; Αντικείμενα και Κλάσεις Xρησιμοποιούμε μεταγλωττιστή και το πρόγραμμά μας εκτελείται με μορφή τελικού κώδικα. Χρησιμοποιούμε

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Αντικείμενα και Κλάσεις Αντικείμενα και Κλάσεις Μ. Δικαιάκος Πανεπιστήμιο Κύπρου Η έννοια της αφαιρετικότητας 2 3 Αφαιρετικότητα - abstraction Γλώσσες Υψηλότερου Επιπέδου Lisp Prolog (setq bar (cons 'x (cdr foo))) Διαδικασιακές

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

Αρχικοποιήσεις Μεταβλητών και Αντικειµένων. Κατασκευαστές. Περίγραμμα. Initializers. Παράδειγμα

Αρχικοποιήσεις Μεταβλητών και Αντικειµένων. Κατασκευαστές. Περίγραμμα. Initializers. Παράδειγμα Περίγραμμα! Αρχικοποίηση και Κατασκευαστές! Υπερφόρτωση Αρχικοποιήσεις Μεταβλητών και Αντικειµένων! Η χρήση του this! Ανασκόπηση αρχικοποιήσεων! Αποκομιδή σκυβάλων Κατασκευαστές 1 2 Initializers! Στην

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 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 Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Αρχικοποιήσεις Μεταβλητών και Αντικειµένων

Αρχικοποιήσεις Μεταβλητών και Αντικειµένων Αρχικοποιήσεις Μεταβλητών και Αντικειµένων Initializers Μ. Δικαιάκος Στην Java, πριν την χρήση μιας μεταβλητής αρχέγονου τύπου, η μεταβλητή αυτή θα πρέπει να έχει αρχικοποιηθεί. Διαφορετικά ο μεταφραστής

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

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

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

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

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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΠΛ233 Βασικά στοιχεία προγραµµατισµού στη JAVA

ΕΠΛ233 Βασικά στοιχεία προγραµµατισµού στη JAVA Βασικά στοιχεία προγραµµατισµού στη JAVA Διαχείριση Μνήµης 3 Δέσμευση Μνήμης Ο καλός προγραμματισμός επιβάλλει την αποδοτική χρήση της μνήμης του Η/Υ. Είναι σημαντικό να καταλαβαίνουμε τις διαδικασίες

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

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

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

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

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

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Constructors

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Constructors ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργία Κλάσεων και Αντικειμένων Constructors Κλάσεις και αντικείμενα Ορισμός κλάσης: class

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

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Κων. Κόκκινος Μεταβλητές-1 Οι μεταβλητές αποτελούν θέσεις μνήμης στις οποίες αποθηκεύονται τιμές αντίστοιχες

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Συναρτήσεις Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Συναρτήσεις Ως τώρα γράφαμε όλα τα προγράμματα μας μέσα στην main..1

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

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις 2 Ανατομία ενός προγράμματος

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

3 Αλληλεπίδραση Αντικειμένων

3 Αλληλεπίδραση Αντικειμένων Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή

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

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

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

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

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

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

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

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

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

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

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

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. Chapter 8, Savitch. Περίγραμμα. Introduction to Polymorphism. Introduction to Polymorphism. Βασικό Ερώτημα Περίγραμμα ΠΟΛΥΜΟΡΦΙΣΜΟΣ Chapter 8, Savitch Itroductio to polymorphism Bidig Polymorphism ad Extesibility Example of Polymorphism: Sale ad DiscoutSale Polymorphism ad static methods Iheritace ad access

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

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java Εξάμηνο Μάθημα Τίτλος 2017 2018 Εαρινό Αντικειμενοστραφής Προγραμματισμός Ι Ύλη εργαστηρίου, Ασκήσεις Java Ημερομηνία Εργαστήριο 5 ο Α. Ύλη εργαστηρίου 5.1 Έννοιες αντικειμενοστραφούς προγραμματισμού,

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

Βασικά Στοιχεία της Java

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Java Παύλος Εφραιμίδης Java Βασικά Στοιχεία της γλώσσας Java 1 Τύποι Δεδομένων Η Java έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) τύπους δεδομένων αναφορές Java Βασικά

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

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

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 6: Αφαιρετικότητα, Βιβλιοθήκες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Αφαιρετικότητα -Βιβλιοθήκες (packages) Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός

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

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

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

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

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

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

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

ΕΠΛ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εφ.

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Πρώτοι αριθμοί ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Ένας ακέραιος μεγαλύτερος του 1 είναι πρώτος αν έχει ακριβώς δύο διαιρέτες (τη μονάδα και τον εαυτό του). Πρόβλημα: έλεγχος

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

Presentation of complex number in Cartesian and polar coordinate system

Presentation of complex number in Cartesian and polar coordinate system 1 a + bi, aεr, bεr i = 1 z = a + bi a = Re(z), b = Im(z) give z = a + bi & w = c + di, a + bi = c + di a = c & b = d The complex cojugate of z = a + bi is z = a bi The sum of complex cojugates is real:

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

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:

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

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

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

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

! Ο καλός προγραμματισμός επιβάλλει την αποδοτική χρήση. ! Είναι σημαντικό να καταλαβαίνουμε τις διαδικασίες

! Ο καλός προγραμματισμός επιβάλλει την αποδοτική χρήση. ! Είναι σημαντικό να καταλαβαίνουμε τις διαδικασίες Δέσμευση Μνήμης! Ο καλός προγραμματισμός επιβάλλει την αποδοτική χρήση της μνήμης του Η/Υ. Διαχείριση Μνήµης! Είναι σημαντικό να καταλαβαίνουμε τις διαδικασίες δέσμευσης μνήμης:! Για την αποδοτική δέσμευση

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

API: Applications Programming Interface

API: Applications Programming Interface ÒØ Ñ ÒÓ ØÖ ÔÖÓ» Ñ ÒØ Ñ ÒÓ ØÖ ÔÖÓ Ö ÑÑ Ø Ñ ½ Ö Ø Ò Ô Ö Ø ÒØ Ñ ÒÛÒ ÒÒÓ ôòøóù ÔÖ Ñ Ø Ó ÑÓÙ Ì ÔÓ ÓÑ ÒÛÒ Ì µ (i) ÒÓÐÓØ ÑôÒ (ii)ôö Ü º Ð ØÖ Ò Ò ÖÛÔÓ ØÖ ÔÐ Ò Ø Ó Ó Ù Ø Ñ Ø ººº ½ºÈÖÛØ ÓÒØ Ø ÔÓ int double char

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

Διάλεξη 5: Κλάσεις και Αντικείμενα. Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο input

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

Κλάσεις και αντικείμενα #include <iostream.h<

Κλάσεις και αντικείμενα #include <iostream.h< Κλάσεις και αντικείμενα #include class Person private: char name[30]; int age; public: void readdata() cout > name; cout > age; void

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

ΕΠΛ 133: Αντικειμενοστρεφής Προγραμματισμός (Object-oriented programming)

ΕΠΛ 133: Αντικειμενοστρεφής Προγραμματισμός (Object-oriented programming) ΕΠΛ 133: Αντικειμενοστρεφής Προγραμματισμός (Object-orieted programmig) Διδάσκων: Μάριος Δικαιάκος Εργαστήρια: Πύρρος Μπράτσκας Βρείτε αν ένα έτος είναι δίσεκτο 1 2 Δίσεκτο έτος: διαιρείται δια 4 αλλά

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

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

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

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

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

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

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

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι 1 ΕΙΣΑΓΩΓΗ Η γλώσσα προγραµµατισµού Java είναι ισχυρά τυποποιηµένη (strongly typed), που σηµαίνει ότι κάθε µεταβλητή και κάθε έκφραση έχει κάποιο τύπο, ο οποίος πρέπει να είναι γνωστός κατά το χρόνο της

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

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

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

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

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

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

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

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

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

Στοίβες. ΟΑΤ της Στοίβας. Περιγραφή και Υλικό Ανάγνωσης. Αφηρηµένοι Τύποι εδοµένων (AΤ )

Στοίβες. ΟΑΤ της Στοίβας. Περιγραφή και Υλικό Ανάγνωσης. Αφηρηµένοι Τύποι εδοµένων (AΤ ) Περιγραφή και Υλικό Ανάγνωσης Στοίβες ΟΑφηρηµένος Τύπος εδοµένων της Στοίβας (tack Abstract Data Type (ADT)) (..) Εφαρµογές για Στοίβες (..) Υλοποίηση µε βάση πίνακες (..) Στοίβα βασισµένη σε πίνακα η

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

! Προσδιοριστές πρόσβασης και απόκρυψη πληροφορίας. ! Προγραμματιστικές Συμβάσεις. ! Σε περίπτωση που δεν χρησιμοποιείται προσδιοριστής

! Προσδιοριστές πρόσβασης και απόκρυψη πληροφορίας. ! Προγραμματιστικές Συμβάσεις. ! Σε περίπτωση που δεν χρησιμοποιείται προσδιοριστής Περίγραμμα! Προσδιοριστές πρόσβασης και απόκρυψη πληροφορίας! Προγραμματιστικές Συμβάσεις ΠΡΟΣΔΙΟΡΙΣΤΕΣ ΠΡΟΣΒΑΣΗΣ Access Specifiers 1 2 Προσδιοριστές Πρόσβασης! Βασική αρχή:! Μια κλάση ελέγχει την πρόσβαση

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 4/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 4/3/2008 Εκτέλεση μεθόδου του αντικειμένου μιας κλάσης: 1) Δημιουργία αντικειμένου (στιγμιότυπου) της κλάσης: = new ( ); 2) Κλήση μεθόδου της κλάσης (στην

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

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

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

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

Βασικά Στοιχεία της Java

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Παύλος Εφραιμίδης 1 Βασικά Στοιχεία της γλώσσας Τύποι Δεδομένων Η έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) iti τύπους δεδομένων δδ αναφορές 2 Βασικά Στοιχεία της

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

Λογισµικό (Software SW) Γλώσσες

Λογισµικό (Software SW) Γλώσσες Λογισµικό (Software SW) Γλώσσες Προγραµµατισµού Οι γενιές των γλωσσών προγραµµατισµού Προβλήµατα που επιλύονται σε ένα περιβάλλον στο οποίο ο άνθρωπος πρέπει να προσαρµόζεται στα χαρακτηριστικά της µηχανής

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

Οδηγίες Αγοράς Ηλεκτρονικού Βιβλίου Instructions for Buying an ebook

Οδηγίες Αγοράς Ηλεκτρονικού Βιβλίου Instructions for Buying an ebook Οδηγίες Αγοράς Ηλεκτρονικού Βιβλίου Instructions for Buying an ebook Βήμα 1: Step 1: Βρείτε το βιβλίο που θα θέλατε να αγοράσετε και πατήστε Add to Cart, για να το προσθέσετε στο καλάθι σας. Αυτόματα θα

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

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

Προγραμματισμός Ι. Εγγραφές. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Εγγραφές Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Η Ανάγκη Ομαδοποίησης Πολλές φορές έχουμε πληροφορίες διαφορετικού τύπου οι οποίες όμως έχουν μεγάλη

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Ορισμός

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 05: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών Ακαδηµαϊκό έτος 010 011, Χειµερινό εξάµηνο ΕΝ ΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΕΡΓΑΣΙΑ

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

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

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

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

Τύποι δεδομένων, τελεστές, μεταβλητές

Τύποι δεδομένων, τελεστές, μεταβλητές Τύποι δεδομένων, τελεστές, μεταβλητές Βασικά στοιχεία της γλώσσας Η Java χαρακτηρίζεται από ένα αρκετά καλά οργανωμένο σύνολο εντολών κι ένα μέρος της επιτυχίας της οφείλεται στα διάφορα APIs (βιβλιοθήκες)

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Έλεγχος ισότητας για Strings: Διαβάζουμε το String option και θέλουμε ένα loop να συνεχίσει

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08 Constructors (Κατασκευαστές) Ειδικός τύπος μεθόδων που δημιουργούν αντικείμενα μιας κλάσης και: Εκτελούνται κατά την αρχικοποίηση των αντικειμένων

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Tοπικές μεταβλητές To αντικείμενο this Accessor, Mutator μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Tοπικές μεταβλητές To αντικείμενο this Accessor, Mutator μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργία Κλάσεων και Αντικειμένων Tοπικές μεταβλητές To αντικείμενο this Accessor, Mutator μέθοδοι Ορισμός κλάσης και αντικειμένων Μία κλάση Κ ορίζεται από

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

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 3: Προγραμματισμός σε JAVA I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Στοιχειώδης Προγραμματισμός - Προγραμματισμός με Συνθήκες - Προγραμματισμός με Βρόγχους

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπερφόρτωση Αντικείμενα σαν ορίσματα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Υπερφόρτωση Αντικείμενα σαν ορίσματα ΥΠΕΡΦΟΡΤΩΣΗ H κλάση Car Μια κλάση που κρατάει την θέση ενός αυτοκινήτου. Μέθοδος move(): μετακινεί το αυτοκίνητο κατά μία

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Ακαδημαϊκό έτος 2010/2011 Επιμέλεια Ξενοφών Βασιλάκος Περιεχόμενα Φροντιστηρίου A. Πρωταρχικοί τύποι B. Είσοδος/ Έξοδος C. Πράξεις 2 Δήλωση / Αρχικοποίηση / Εκχώρηση A. Πρωταρχικοί

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

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

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

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

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

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

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors).

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors). Κατασκευαστές Μέθοδοι Κατασκευής (Constructors). Οι κατασκευαστές (constructors) είναι μέθοδοι που εκτελούνται όταν κατασκευάζεται ένα αντικείμενο. Μια τάξη μπορεί να έχει αρκετούς κατασκευαστές, οι οποίοι

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

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07 Ακαδ έτος 2007-2008 ΠΛΗΡΟΦΟΡΙΚΗ Ι Φερεντίνος 22/11/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με ΑΜ σε 3, 7, 8 & 9 22/11/07 Παράδειγμα με if/else if και user input: import javautil*; public class Grades public

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

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2017-2018 ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Εισαγωγή ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ Ένα πρόγραμμα σε C περιλαμβάνει μια ή περισσότερες συναρτήσεις

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

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 :

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