Διάλεξη #3: Υλοποίηση μεθόδων.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
Advertisements

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Copy Constructor Deep and Shallow Copies.
Βάσεις Δεδομένων II Περίληψη: Αντικειμενοστρεφείς Βάσεις Δεδομένων Πάνος Βασιλειάδης Νοέμβρης 2002
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Constructors, equals, toString Αντικείμενα ως παράμετροι.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 3: Υλοποίηση μεθόδων.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
Μεθοδολογίες Προγραμματισμού ΙΙ Έλεγχος Λογισμικού - ECLIPSE JUNIT – TDD TFD + Refactoring Παναγιώτης Σφέτσος, PhD
Μεθοδολογίες Προγραμματισμού ΙΙ JUNIT - Test First Design
Αντικείμενα, Κλάσεις και Μέθοδοι
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 7: Συμβολοσειρές.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
Σύγκριση Java και C++ Μεταπτυχιακό Εφαρμοσμένης Πληροφορικής - Αλέξανδρος Χατζηγεωργίου, Νοέμβριος 2004.
ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Και ομοιότητες και διαφορές με την C.
Εισαγωγή στον αντικειμενοστραφή προγραμματισμό Κλάσεις και αντικείμενα Κλάσεις και αντικείμενα Κατασκευαστές κλάσεων (constructors) Κατασκευαστές κλάσεων.
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Java Classes, Objects, και Events.
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Java Syntax and Style.
ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ ΠΟΛΥΜΟΡΦΙΣΜΟΣ. ΑΝΑΚΕΦΑΛΑΙΩΣΗ Θεματολόγιο Κληρονομικότητα Παράδειγμα Κληρονομικότητα – Βελτιωμένο Παράδειγμα Ενθυλάκωση : public – private.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Copy Constructor Deep and Shallow Copies.
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Data Types, Variables, and Arithmetic.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
ΟΣΣ Δεκεμβρίου 2004 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
1 Κεφάλαιο 2 Εισαγωγή στον αντικειμενοστραφή προγραμματισμό.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Deep and Shallow Copies.
Μέθοδοι Μέθοδοι Δημιουργοί, Υπερφόρτωση και Υπέρβαση Μεθόδων.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 8: Κατασκευαστές. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής. Τμήμα.
1 Προγραμματισμός Διαδικτύου Ενότητα 3 : Κατηγορίες και κληρονομικότητα Ιωάννης Τσούλος Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Βασικές ένοιες Αντικειμενοστραφούς Προγραμματισμού - Μέθοδοι ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Διαφάνειες: ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ Προσαρμογή 2014:
Βασικές ένοιες Αντικειμενοστραφούς Προγραμματισμού - Κλάσεις ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Διαφάνειες: ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ Προσαρμογή 2014:
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Προγραμματισμός Διαδικτύου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Βασικές έννοιες Αντικειμενοστραφούς Προγραμματισμού ΙΙ
Πίνακες και αλφαριθμητικά
5ο Μάθημα Κλάσεις και αντικείμενα
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Κλάσεις και αντικείμενα
Βασικές έννοιες Αντικειμενοστραφούς Προγραμματισμού ΙΙ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Βασικές ένοιες Αντικειμενοστραφούς Προγραμματισμού
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Αναδρομικές Εξισώσεις και Αφηρημένοι Τύποι Δεδομένων
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Διάλεξη #7: Συμβολοσειρές.
Wrapper Classes, Abstract Classes and Interfaces
Υπο-τύποι και πολυμορφισμός
Unit Circle.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Μεταγράφημα παρουσίασης:

Διάλεξη #3: Υλοποίηση μεθόδων

Επισκόπηση Τοπικές μεταβλητές Κλήση μεθόδων Μέθοδοι της κλάσης String Δημιουργία αντικειμένων Στατικές μέθοδοι (μέθοδοι κλάσεων)

Μέθοδοι (methods) Οι μέθοδοι χρησιμοποιούνται στην Java για την υλοποίηση των «λειτουργιών» των κλάσεων

Μέθοδοι: Παράδειγμα class Cube { private int length; ... public int getSurfaceArea() return length * length * 6; }

Άλλο ένα παράδειγμα class Cuboid { private int height; private int depth; private int width; ... public int getSurfaceArea() return height * width * 2 + height * depth * 2 + width * depth * 2; }

Παράδειγμα με τοπικές μεταβλητές public int getSurfaceArea() { int front; int side; int top; front = height * width; side = height * depth; top = width * depth; return (front + side + top) * 2; }

Τοπικές μεταβλητές Δήλωση: int length; String name; Person father; Σφάλμα – χρήση χωρίς αρχικοποίηση int length; int max; max = length * 2; Δήλωση με αρχικοποίηση: int length = 0; String name = "Fred"; Person father = new Person();

Παράδειγμα με τοπικές μεταβλητές (2) public int getSurfaceArea() { int front = height * width; int side = height * depth; int top = width * depth; return (front + side + top) * 2; }

Τοπικές μεταβλητές: εμβέλεια (scope) Η εμβέλεια των τοπικών μεταβλητών εκτείνεται μόνο στο τμήμα κώδικα που δηλώθηκαν (μέθοδο) public void methodA() { int x; x = 33; } public void methodB() System.out.println(x); ERROR

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

Τοπικές μεταβλητές: ανασκόπηση Οι τοπικές μεταβλητές δηλώνονται σε μια μέθοδο Δεν λαμβάνουν αρχική τιμή αυτόματα (η χρήση μιας μη-αρχικοποιημένης μεταβλητής είναι σφάλμα) Η εμβέλεια των τοπικών μεταβλητών εκτείνεται στις μεθόδους στις οποίες δηλώθηκαν Η διάρκεια ζωής τους ταυτίζεται με αυτή της μεθόδου στην οποία δηλώθηκαν

Κλήση μεθόδων class Car { ... public int getWeight() int engineWeight = engine.getWeight(); int bodyWeight = body.getWeight(); return engineWeight + bodyWeight; }

Άλλο ένα παράδειγμα class Person { private Address address; ... public void printDetails() System.out.println("Name: " + name); address.printDetails(); }

... άλλο ένα παράδειγμα class TutorialManager { ... public int enrolStudent() String name = ...; String studentID = ...; database.insertStudent(name, studentID); }

Κλήση μεθόδων: σύνταξη Σύνταξη: όνομαΑντικειμένου.όνομαΜεθόδου(παράμετροι) objectName.methodName(parameters)

Μέθοδοι αλφαριθμητικών (Strings) int length() String substring(int start, int length) String toUpperCase() String toLowerCase + (παράθεση, συνένωση [concatenation] )

Παράδειγμα μεθόδου της κλάσης String String name = "Cartman"; int letters = name.length();

Παράδειγμα χρήσης String Άτομο με όνομα: John Fitzpatrick Kennedy δημιούργησε "accountName": τα αρχικά του ονόματος και του πατρώνυμου ακολουθούμενα από τα τρία πρώτα γράμματα του επιθέτου (σε πεζά γράμματα) jfken

Παράδειγμα χρήσης String (2) public String accountName(String firstName, String middleName, String lastName) { String accountString = firstName.subString(0,1) + secondName.subString(0,1) + lastName.subString(0,3); return accountString.toLowerCase(); }

Δημιουργία αντικειμένων class Line { private Point start; private Point end; public Line(int x1, int y1, int x2, int y2) start = new Point(x1, y1); end = new Point(x2, y2); } ...

Δημιουργία αντικειμένων: σύνταξη Σύνταξη: new όνομαΚλάσης(παράμετροι) new className(parameters)

Άλλο ένα παράδειγμα class Person { private String fullName; private Address address; ... public Person(String name, String street, String city) fullName = name; address = new Address(street, city); }

Στατικές μέθοδοι (Static methods) Οι στατικές μέθοδοι «ανήκουν» σε μια κλάση και όχι σε ένα αντικείμενο (μέθοδοι κλάσης [class methods]) Δεν απαιτείται η ύπαρξη αντικείμενου για την κλήση τους (καλούνται «επί της κλάσης»)

Στατικές μέθοδοι: παράδειγμα class Car { private static int numberOfCars; ... public Car() numberOfCars++; }

Άλλα παραδείγματα System.out.print("Hello"); int speed = Math.round(distance / time); System.out.print("Hello"); System.out.println("World");

Στατικά πεδία Τα στατικά πεδία δεδομένων ανήκουν σε μια κλάση και όχι σε ένα αντικείμενο Τα στατικά πεδία είναι κοινόχρηστα από όλα τα (αντικείμενα) μίας κλάσης – κάθε στιγμιότυπο [instance] της ίδιας κλάσης χρησιμοποιεί τα ίδια στατικά πεδία Υπάρχει μόνο ένα αντίγραφο ενός στατικού πεδίου μίας κλάσης ανεξάρτητα από τον αριθμό των στιγμιότυπων της κλάσης που έχουν δημιουργηθεί

Στατικά πεδία (2) Class Circle static field field1 field1 field2

Στατικά πεδία: παράδειγμα class Circle { private static double pi = 3.1415; private double radius; private Color color; ... public double getSurfaceArea() return pi * radius * radius; }