1 / 21

ΓΙΑ ΑΠΟΡΙΕΣ vkolias@medialab.ntua.gr

ΕΠΑΝΑΛΗΨΗ. ΓΙΑ ΑΠΟΡΙΕΣ vkolias@medialab.ntua.gr. ΜΕΡΟΣ Ι. ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΣΕ JAVA. Java vs Other Languages. Κώδικας. Κώδικας. Java Compiler. OS Dependent. bytecode. Compiler/Linker. Java Virtual Machine. ΓΛΩΣΣΑ ΜΗΧΑΝΗΣ. Στοιχεία της Java. Classes and Objects

tacita
Download Presentation

ΓΙΑ ΑΠΟΡΙΕΣ vkolias@medialab.ntua.gr

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ΕΠΑΝΑΛΗΨΗ ΓΙΑ ΑΠΟΡΙΕΣ vkolias@medialab.ntua.gr

  2. ΜΕΡΟΣ Ι ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΣΕ JAVA

  3. Java vs Other Languages Κώδικας Κώδικας Java Compiler OS Dependent bytecode Compiler/Linker Java Virtual Machine ΓΛΩΣΣΑ ΜΗΧΑΝΗΣ

  4. Στοιχεία της Java • Classes and Objects • Objects: δεσμευμένες θέσεις μνήμης από δεδομένα και μεθόδους • Classes: Ο ορισμός του τύπου των δεδομένων και της λειτουργικότητας των μεθόδων που θα έχουν τα αντικείμενα που θα την υλοποιούν • Methods • Κώδικας που προσδιορίζει τη συμπεριφορά ενός αντικειμένου Το όνομα της κλάσης public class MyClass { public static void main (String[] args){ } } Ο κώδικας της κλάσης αρχίζει εδώ Είναι κλάση Ο κώδικας της μεθόδου αρχίζει εδώ Μπορούν να χρησιμοποιηθούν από παντού Δεν επιστρέφει κάποια τιμή Μπορεί να καλεστεί χωρίς να δημιουργηθεί αντικείμενο της κλάσης MyClass Ο κώδικας της μεθόδου τελειώνει εδώ Τύπος και όνομα της παραμέτρου της μεθόδου Ο κώδικας της κλάσης τελειώνει εδώ

  5. Στοιχεία της Java • Variables • Σύμβολα που αναπαριστούν τιμές στη μνήμη • Μπορούν να ξεκινούν με (a-z, A-Z),_,$ και να ακολουθούνται από (a-z, A-Z),_,$ και νούμερα • Δεν πρέπει να είναι δεσμευμένη λέξη της Java

  6. Στοιχεία της Java • Data Types • Προσδιορίζουν το είδος της τιμής που μια μεταβλητή μπορεί να έχει • Primitives: Βασικοί τύποι δεδομένων της Java (bool, byte, short, char, int, long, float, double) • Objects: Τύποι δεδομένων που συνοδεύουν τη Java ή που είναι φτιαγμένοι από τον προγραμματιστή (String, Socket, Thread, MyClass)

  7. Στοιχεία της Java • Variables and Datatypes • Δήλωση μεταβλητής • Access modifiers • public: ορατά από οποιασδήποτε κλάση • private: ορατά μόνο από την κλάση στην οποία ανήκουν • protected: ορατά από την κλάση στην οποία ανήκουν και από υποκλάσεις της • Χωρίς δήλωση: ορατά από κλάσεις που ανήκουν στο ίδιο package • Usage modifiers • final: class: δε μπορεί να κληρονομηθεί, variable: δεν αλλάζει τιμή, method: no override • static: variable, method: μπορούν να χρησιμοποιηθούν χωρίς αντικείμενο • abstract:class, method: που θα υλοποιηθούν από τις subclasses • native:method: υλοποιημένη σε άλλη γλώσσα • transient: variables: να υπάρχουν μόνο στη μνήμη για λόγους ασφάλειας

  8. Στοιχεία της Java • Expressions • Συνδυασμοί βασικών στοιχείων ενός προγράμματος (μεταβλητές, operators, literals, μέθοδοι) που αφορά μια τιμή (myName = “Bill”, args.length) • Statements • Μονάδα εκτέλεσης ενός προγράμματος ή αλλιώς εντολή (δηλ. Expressions με ένα ερωτηματικό στο τέλος) • Π.χ. myName = “Bill” ; • Blocks • Ομάδες από statements μεταξύ δύο αγκυλών { }. Μπορεί να υπάρχουν πολλαπλάάλλα blocks μέσα σε ένα block.

  9. Χαρακτηριστικά της Java • Platform Independence • Object Oriented Programming • Encapsulation • Ο συνδυασμός δεδομένων με μεθόδους ώστε να «κρύβονται» από το χρήστη • Η κλάση είναι η βασική μονάδα ενθυλάκωσης • Inheritance • Η ιδιότητα της μεταφοράς των ιδιοτήτων και της συμπεριφοράς μιας κλάσης σε μια άλλη • Όσο πιο κάτω στην ιεραρχία κλάσεων τόσο πιο ειδικός κώδικας γράφεται • Object class : Η υπερκλάση όλων των κλάσεων • Polymorphism • Method Overriding

  10. Άλλες χρήσιμες έννοιες • Architecture neutral • Κώδικας  Μεταγλώττιση  Bytecode (ανεξάρτητο από λειτουργικά και αρχιτεκτονικές) • Distributed • Εκτέλεση κώδικα μέσα από το Internet • Dynamic • Νέος κώδικας μπορεί να προστεθεί στις βιβλιοθήκες χωρίς να επηρεαστούν τα προγράμματα που τις χρησιμοποιούν • Just In Time Compilation • Μετατρέπει το bytecode σε κώδικα μηχανής κατά το runtime κρατώντας στο cache τμήματα κώδικα που χρησιμοποιούνται συχνά από το πρόγραμμα

  11. Άλλες χρήσιμες έννοιες • Multithreaded • Επιτρέπει την «ταυτόχρονη» εκτέλεση κώδικα • Portable • Δεν υπάρχει θέμα εξάρτησης με το λειτουργικό, ο ίδιος κώδικας εκτελείται ίδια παντού • Robust • Έλεγχος για λάθη κατά τη μεταγλώττιση και κατά την εκτέλεση • Secure • Διάφορα security features για την εκτέλεση στο διαδίκτυο

  12. ΜΕΡΟΣ ΙΙ Παραδείγματα

  13. static μεταβλητές

  14. enums public class EnumTest { BeltSize size; Color color; public static void main(String[] args) { EnumTest w1 = new EnumTest(); EnumTest w2 = new EnumTest(); w1.size = BeltSize.SMALL; w1.color = Color.BLUE; w2.size = BeltSize.LARGE; w2.color = Color.GREEN; System.out.println("W1: Size = " + w1.size + " W2: Size = " + w2.size); System.out.println("W1: Color = " + w1.color + " W2: Color = " + w2.color); } } enum Color {RED, GREEN, BLUE} enum BeltSize { SMALL(30), MEDIUM(34), LARGE(40); //First define the enum constants. private int size; //The instance variables, constructors, methods may follow. BeltSize(int size) { this.size = size; } public int getSize() { return size; } }

  15. Inheritance & Arrays // Class ComputerLab class JavaLab extends MultimediaClass { int labStudents = 30; String labAssistant[] = new String[2]; public JavaLab() { labAssistant[0] = "Vasilis Kolias"; labAssistant[1] = "Giannis Gianoukos"; } public void printStudentInfo() { System.out.println("There are " + GetTotalStudents() + " students total, and "+ labStudents + " students in the java lab."); } String getLabAssistant(int position){ return labAssistant[position]; } } class TestJavaLab { public static void main(String[] args) { JavaLab jlab = new JavaLab(); System.out.println("Multimidia Technology Class:"); jlab.printStudentInfo(); System.out.print("Professor and assistants:\n"); } } class MultimediaClass { int totalStudents = 90; String professor = "Vasilis Loumos"; int GetTotalStudents() { return totalStudents; } String getProfessor(){ return professor; } } To do: εκτυπώστε τα ονόματα των βοηθών

  16. Inheritance and Constructors class MySubClass extends MySuperClass { int subVar = 20; MySubClass() { System.out.println("MySubClass constructor subVar: " + subVar); } } class MySubSubClass extends MySubClass { int subSubVar = 30; MySubSubClass() { this("MySubSubClass empty constructor calls constructor with string parameter"); } MySubSubClass(String message){ System.out.println(message); System.out.println("MySubSubClass constructor with string prints variable: " + subSubVar); } } public class TestConstructors { public static void main(String[] args) { System.out.println("Create object MySubSubClass"); MySubSubClass example = new MySubSubClass(); } } class MySuperClass { int superVar = 10; MySuperClass(){ System.out.println("MySuperClass constructor. superVar: " + superVar); } MySuperClass(String message) { System.out.println(message + "superVar: " + superVar); } }

  17. Interfaces class InheritClass implements Child { public void printParentOne(){ System.out.print("From Parrent One "); System.out.println(pOne); } public void printParentTwo(){ System.out.println(pTwo); } public void printChild(){ System.out.println(child); } } class TestInterface { public static void main(String[] args){ InheritClass ic = new InheritClass(); ic.printParentOne(); ic.printParentTwo(); ic.printChild(); } } interface ParentOne { int pOne = 1; void printParentOne(); } interface ParentTwo { int pTwo = 2; void printParentTwo(); } interface Child extends ParentOne, ParentTwo{ int child = 3; void printChild(); }

  18. Ασκήσεις • Για το παρακάτω πρόγραμμα • Compiler error στη γραμμή 9 • Runtime Error στη γραμμή 4 • Όλα ΟΚ και εμφανίζει Hello, Dear. • Δεν κάνει τίποτα

  19. Ασκήσεις • Ποια η έξοδος του προγράμματος; • Hello from B. • Compiler error στη γραμμή 2 • Compiler error στη γραμμή 13 • Compile OK αλλά πετάει exception

  20. Άσκηση • Τι γίνεται αν η printSomething καλεστεί από άλλη κλάση; • i=5 j=7 • Compile error στην 5 • Compile error στην 6 • Runtime error

  21. Άσκηση • Ποιος από τους ακόλουθους modifiers δε θα πετάξει error για τον παρακάτω κώδικα στη γραμμή7; • Static • Public • Protected • Transient

More Related