Συνοπτική παρουσίαση Java Bl@ckDuck Ludum Dare 29 - Java Team Τί είναι η Java; ● ● ● ● ● ● Γλώσσα προγραμματισμού Γενικού σκοπού “Ανεξάρτητη” υλικού και OS Τρέχει σε VM (JVM) Αντικειμενοστραφής Βασίζεται στις “κλάσεις” Παράδειγμα κώδικα public class Example { public static void main(String[] args) { int a = 0; a = 2; System.out.println(“Welcome “ + a + “ our team!”); } } Arrays (πίνακες) Για να δηλώσουμε πίνακα a: ● ακεραίων: int[] a; ● χαρακτήρων: char[] a; ● γραμματοσειρών: String[] a; ● Γενικά: type[ ] a; όπου type = το είδος μεταβλητής Arrays (πίνακες) Για να δηλώσουμε πίνακα a μήκους 10: ● ακεραίων: int[] a = new int[10]; ● χαρακτήρων: char[] a = new char[10]; ● γραμματοσειρών: String[] a = new String[10]; ● Γενικά: type a = new type[μέγεθος]; όπου type = το είδος μεταβλητής Arrays (πίνακες) Για να εκχωρήσουμε μια τιμή (π.χ. 1337) στον πίνακα ακεραίων a: ● στην πρώτη θέση του πίνακα a[0] = 1337; ● στην δεύτερη θέση του πίνακα a[1] = 1337; ● Γενικά: a[x] = τιμή; όπου a = όνομα πίνακα και x ο δείκτης. Arrays (πίνακες) Μπορούμε να έχουμε και δισδιάστατους πίνακες: π.χ. ένας δισδιάστατος πίνακας ακεραίων a, διαστάσεων 5x10: ● int a[][] = new int[5][10]; Το πρώτο στοιχείο της τρίτης γραμμής: ● a[2][0]; Arrays (πίνακες) Με την ίδια λογική μπορούμε να έχουμε πίνακες περισσοτέρων διαστάσεων: π.χ. τριών διαστάσεων: ● int[][][] a = new int[5][10][20]; Ένα στοιχείο π.χ. είναι a[1][0][19]; Αντικείμενα ● Tρόπος αναπαράστασης των αντικειμένων του κόσμου μας στο πρόγραμμα, π.χ. Employee, Employer, Boss, ZenMaster κτλ. ● Περιέχει διάφορα πεδία, π.χ. name, surname, salary κτλ. ● Περιέχει επίσης διάφορες μεθόδους, π.χ. getName(), setSalary(), fire() κτλ. ● Για να φτιάξουμε ένα αντικείμενο πρέπει πρώτα να φτιάξουμε την κλάση του Κλάσεις public class Employee { String name; String surname; int salary; void getName() {//κώδικας μεθόδου } } Κλάσεις Γενική μορφή: (public) class ΌνομαΚλάσης { ΤύποςΜεταβλητής1 όνομαΜεταβλητής1 ΤύποςΜεταβλητής2 όνομαΜεταβλητής2 ... Μέθοδος όνομαΜεθόδου {//κώδικας μεθόδου } } Κλάσεις ● Το “καλούπι” των αντικειμένων, γιατί: ● Μας λέει τί πεδία έχει το αντικείμενο ● Μας λέει τί μεθόδους έχει το αντικείμενο Σχεδόν τα πάντα στην Java είναι μέσα σε κλάσεις Αντικείμενα ● Δήλωση αντικειμένου: Κλάση όνομαΑντικειμένου ● π.χ. Employee brian; ● Όνομα κλάσης συνηθίζεται να ξεκινάει με κεφαλαίο Για αρχικοποίηση αντικειμένου: ● π.χ. Employee brian = new Employee(); ● Γενικά: Κλάση όνομαΑντικειμένου = new Κλάση() Αντικείμενα ● Για να έχουμε πρόσβαση σε πεδία του αντικειμένου, βάζουμε το όνομα του αντικειμένου (όχι της κλάσης!), τελεία, και μετά το όνομα του πεδίου ● Π.χ. brian.name Η εκχώρηση γίνεται προφανώς: ● brian.name = “Bryan”; ● System.out.println(brian.name); //θα εκτυπώσει bryan Αντικείμενα ● Παρόμοια γίνεται και η κλήση μεθόδων του αντικειμένου ● π.χ. bryan.getName(); Mέθοδοι ● Οι μέθοδοι εκτελούν λειτουργίες στον κώδικά μας. ● Είναι προφανώς και αυτές μέσα σε κλάση (Java, people!) ● Αν τα πεδία των κλάσεων μας λένε “πώς” είναι κάτι, τότε οι μέθοδοι μας λένε “τί κάνει” κάτι ● Υπάρχουν δύο είδη μεθόδων, class methods και object methods ● Υπάρχουν επίσης δύο ειδικές μέθοδοι, η main και οι constructors (κατασκευαστές) Μέθοδοι π.χ.: public class Foo { public void greet() { System.out.println(“Greetings, my Lord.”); } } Μέθοδοι Γενικά: public τύποςΜεθόδου όνομαΜεθόδου(ορίσματα) { //εντολές return όνομαΜεταβλητής; //αν δεν είναι void } Μέθοδοι object methods: ● Οι πιο συχνές, είναι μέθοδοι που μπορούν να χρησιμοποιήσουν τα αντικείμενα της κλάσης ● π.χ.: public String getName() { String name = this.name; return name; } Κλήση: bryan.getName(); Μέθοδοι class methods: ● Λιγότερο συχνές, μπορούμε να τις χρησιμοποιήσουμε χωρίς κάποιο αντικείμενο ● π.χ.: public static String getName() { String name = “The One”; return name; } Κλήση: Empoyee.getName(); Μέθοδοι main method: ● Η μέθοδος από την οποία πάντα ξεκινάει το πρόγραμμά μας ● Έχει σταθερή δομή: public static void main(String[] args) { //κώδικας } Μέθοδοι constructor methods: ● Η μέθοδος που καλείται κάθε φορά που δημιουργούμε νέο αντικείμενο ● π.χ.: public Employee(String name) { this.name = name; } //Δεν έχει όνομα! Επισκόπηση Είδαμε: ● Αντικείμενα, πώς δημιουργούνται και τί είναι ● Κλάσεις, γιατί τις χρειαζόμαστε ● Μεθόδους: ○ 2 είδη (class & object) ○ 2 ειδικές (main & constructor) ● Στη συνέχεια θα δούμε τα exceptions, την κληρονομικότητα μεταξύ κλάσεων και τα interfaces. ● Προτιμάτε διάλειμμα ή να το πάμε σερί; ● Απορίες; Exceptions ● Χρήσιμα αν περιμένουμε να κρασάρει το πρόγραμμά μας σε ένα σημείο ● Αποτελείται από δύο τμήματα, try & catch ○ To try “τεστάρει” μια περιοχή του κώδικα ■ Αν δε συμβεί τίποτα, συνεχίζει κανονικά ■ Αν υπάρξει σφάλμα, “πετάει” ένα exception ○ Το catch “πιάνει” το exception, αν υπάρχει, και τρέχει εναλλακτικό κώδικα Exceptions Π.χ.: try { someWeirdCode(); //θα μας πετάξει exception } catch (Exception e) { System.out.println(“Something bad happened.”); } Exceptions Γενικά: try { κώδικας που περιμένουμε να πετάξει Exception } catch { εναλλακτικός κώδικας } Exceptions ● Ένας πιο κομψός τρόπος απ’το να κρασάρει όλο το πρόγραμμα ● Μπορούμε να ορίσουμε πολλά catch με διαφορετικά Exceptions, ανάλογα το τί αναμένουμε να γίνει και πώς θέλουμε να αντιδράσουμε στην κάθ περίπτωση Κληρονομικότητα ● Δυνατότητα μια κλάση να είναι “εξειδίκευση” μιας άλλης ● Η γενική λέγεται superclass, η ειδική subclass ● Η subclass “κληρονομεί” όλα τα πεδία και τις μεθόδους της superclass. ● Πρακτικά αυτό σημαίνει πώς ένα αντικείμενο είναι “εξειδίκευση” ενός άλλου ● Κάθε κλάση μπορεί να έχει το πολύ μία superclass (single inheritance), αλλά όσες subclasses θέλει Κληρονομικότητα Π.χ.: public class Boss extends Employee { int bonusForBeingBoss; boolean isLikeABoss; public void setBossStatus(boolean likeABoss) { this.isLikeABoss = likeABoss; } } Κληρονομικότητα Γενικά: (public) class ΌνομαKλάσης extends όνομαSuperclass { //κώδικας } Κληρονομικότητα Πεδία αντικειμένου Employee: Πεδία αντικειμένου Boss: String name; String name; String surname; String surname; int salary; int salary; int bonusForBeingABoss; boolean isLikeABoss; Μέθοδοι αντικειμένου Employee: Μέθοδοι αντικειμένου Boss: String getName(); String getName(); void setBossStatus(); Interfaces ● Ένας τρόπος να “κληρονομεί” μια κλάση χαρακτηριστικά από διάφορες (πάνω από μία) πηγές ● Περιέχει μόνο method signatures ○ Δεν έχει δηλαδή υλοποιήσεις ● Η κάθε κλάση που την υλοποιεί θα πρέπει να υλοποιεί και όλες τις μεθόδους της ● Μία κλάση μπορεί να υλοποιεί όσα interface θέλει Interfaces π.χ.: public interface PlaysGolf { public void arrangeToGoForGolf(Employee fellowGolfer); } Interfaces π.χ. (συνέχεια): public class Employer implements PlaysGolf { Employee bryan = new Employee(); public void ArrangeToGoForGolf(bryan) { System.out.println(bryan.name + “, want to go golfing?”); } } Interfaces Γενικά (για το ίδιο το Interface): public interface ΌνομαInterface { methodToBeImplemented1(argType arguments); methodToBeImplemented2(argType arguments); } Interfaces Γενικά (για την κλάση που το υλοποιεί): (public) class ΌνομαKλάσης implements ΌνομαInterface { methodToBeImplemented1(argType arguments) { //κώδικας } methodToBeImplemented2(argType arguments) { //κώδικας } } Απορίες; Ευχαριστώ για την προσοχή σας :)
© Copyright 2024 Paperzz