15
Ειρήνη Βουτσκόγλου Java Tutorial – First Steps [aka Μπουσουλώντας ] - Κατεβάστε το JDK [ Java Development Kit] και το Netbeans [ Integrated Development Environment] από http://www.oracle.com/technetwork/java/javase/downlo ads/index.html - Το Netbeans μπορείτε να το βρείτε φυσικά κι εδώ http://netbeans.org/ Εγώ τα εγκατέστησα στο Program Files Αλλά δημιούργησα κι έναν φάκελο JAVA1 μέσα στον δίσκο C για να μπορώ να τρέχω τα προγράμματα μέσα από παράθυρο Dos, αν χρειαστεί χωρίς να παιδεύομαι. U will get the point later. Trust me. Έναρξη Ρυθμίσεις Πίνακας Ελέγχου Σύστημα [έχω xp] Για προχωρημένους [τρομάρα μας] Μεταβλητές Περιβάλλοντος Στην Classpath κι εφόσον έκανα τις εγκαταστάσεις μου στο Program Files , όρισα τα εξής: ;C:\Program Files\Java\jdk1.6.0_20\jre\lib\rt.jar;C:\ Program Files\Java\jdk1.6.0_20\lib\tools.jar Στην Path, ;C:\Program Files\Java\jdk1.6.0_20\bin [Promise, δε μετακίνησα τίποτα, δεν πείραξα τίποτα μετά την εγκατάσταση] Ξεκινήστε να διαβάζετε [ε, ναι. Πρέπει να διαβάσετε] Java από εδώ http://download.oracle.com/javase/tutorial/java/ index.html Είναι το μόνο που δε με πανικόβαλε. [courtesy of javapapo http://javapapo.blogspot.com/ ]

Java Tutorial -First steps [aka Μπουσουλώντας ]

  • Upload
    erin

  • View
    2.287

  • Download
    0

Embed Size (px)

DESCRIPTION

Προσπαθώντας να μάθω java ..

Citation preview

Page 1: Java Tutorial -First steps [aka Μπουσουλώντας ]

Ειρήνη Βουτσκόγλου

Java Tutorial – First Steps [aka Μπουσουλώντας ]

- Κατεβάστε το JDK [Java Development Kit] και το Netbeans [Integrated Development Environment] από http://www.oracle.com/technetwork/java/javase/downloads/index.html

- Το Netbeans μπορείτε να το βρείτε φυσικά κι εδώ http://netbeans.org/

Εγώ τα εγκατέστησα στο Program FilesΑλλά δημιούργησα κι έναν φάκελο JAVA1 μέσα στον δίσκο C για να μπορώ να τρέχω τα προγράμματα μέσα από παράθυρο Dos, αν χρειαστεί χωρίς να παιδεύομαι.U will get the point later. Trust me.

Έναρξη Ρυθμίσεις Πίνακας Ελέγχου Σύστημα [έχω xp] Για προχωρημένους [τρομάρα μας] Μεταβλητές Περιβάλλοντος

Στην Classpath κι εφόσον έκανα τις εγκαταστάσεις μου στο Program Files , όρισα τα εξής:;C:\Program Files\Java\jdk1.6.0_20\jre\lib\rt.jar;C:\Program Files\Java\jdk1.6.0_20\lib\tools.jar

Στην Path,;C:\Program Files\Java\jdk1.6.0_20\bin

[Promise, δε μετακίνησα τίποτα, δεν πείραξα τίποτα μετά την εγκατάσταση]

Ξεκινήστε να διαβάζετε [ε, ναι. Πρέπει να διαβάσετε] Java από εδώ http://download.oracle.com/javase/tutorial/java/index.html

Είναι το μόνο που δε με πανικόβαλε. [courtesy of javapapo http://javapapo.blogspot.com/]

Ας μάθουμε πρόσθεση.

Ανοίγετε Σημειωματάριο [μη στραβώνετε λέμε], και επικολλάτε τον παρακάτω κώδικα

import java.util.Scanner; //χωρίς αυτό δε θα καταλαβαίνει τι είναι το Scanner

public class Addition {//τα ονόματα των κλάσεων ξεκινούν με κεφαλαίο γράμμα και //το ίδιο όνομα πρέπει να έχει το αρχείο//το αρχείο θα το αποθηκεύσετε ως Addition.java

Page 2: Java Tutorial -First steps [aka Μπουσουλώντας ]

Ειρήνη Βουτσκόγλου

public static void main(String[] args) { //μη βάλετε κόμμα ανάμεσα στα String[] args

//εγώ την πάτησα κάποια στιγμή Scanner input=new Scanner (System.in);

//δημιουργείται αντικείμενο input από το πρότυπο Scanner//το οποίο θα δεχτεί τιμή από το πληκτρολόγιο

int num1; int num2; int sum;

System.out.print ("Enter first integer: "); num1=input.nextInt();

//η μεταβλητή num1 θα είναι «τύπου» του αντικειμένου input και //θα λαμβάνει τον επόμενο ακέραιο

System.out.print ("Enter second number: "); num2=input.nextInt();

sum=num1+num2;

System.out.printf("Sum is %d\n", sum); }

}

Βεβαιωθείτε πως έχετε αποθηκεύσει το αρχείο με το όνομα Addition.java Μέσα σε φάκελο που δε χρειάζεστε ινδιάνικη διεύθυνση για να φτάσετε σε αυτόν.Για αυτό εγώ τα αποθηκεύω μέσα στον φάκελο JAVA1 που έκανα στον δίσκο C.Got it?

ΈναρξηΕκτέλεση πληκτρολογούμε cmdVoila!Dos

Με cd.. [ναι ξέρω πως το θυμάστε..] πάμε πίσω πίσω στο «σκέτο» C

Page 3: Java Tutorial -First steps [aka Μπουσουλώντας ]

Ειρήνη Βουτσκόγλου

Follow me [ I was lost too]

Καταλαβαίνετε από το ακόλουθο screenshot πως μόλις βρεθούμε στο φάκελο που έχει το αρχείο μας, πληκτρολογούμε javac όνομα_αρχείου.java

Page 4: Java Tutorial -First steps [aka Μπουσουλώντας ]

Ειρήνη Βουτσκόγλου

Ε, τι περιμένατε; Να ανατιναχτεί το σύμπαν;

Θα μου πείτε «Μα, δεν έγινε τίποτα».Κι όμως έγινε.

Μέσα στον φάκελο μου JAVA1 δημιουργήθηκε αρχείο Addition.class

Page 5: Java Tutorial -First steps [aka Μπουσουλώντας ]

Ειρήνη Βουτσκόγλου

Στο παράθυρο του good old dosΓράφουμε java όνομα_αρχείου [χωρίς κατάληξη]

Τρέχει :-D [έι! Στάσου! Μύγδαλα :-Ρ]

Page 6: Java Tutorial -First steps [aka Μπουσουλώντας ]

Ειρήνη Βουτσκόγλου

Τώρα, αφού έχετε διαβάσει κάποια πράγματα από το link του tutorial που σας έδωσα στην αρχή, θα φτάσετε σε μία άσκηση [θα έχουν προηγηθεί και άλλες αλλά εγώ επέλεξα αυτή γιατί ήταν το πρώτο.. crash test μου] της οποίας τον κώδικα μαζί με επεξηγήσεις δίνω παρακάτω.Επίσης εξηγώ πώς θα λειτουργήσετε μέσα στο Netbeans.

[Κάνω ένα διάλειμμα να δω τι γίνεται στο twitter μου http://twitter.com/e_diva κι επανέρχομαι]

Στο Netbeans την πάτησα σε ένα σημείο κι εκεί θα επικεντρωθώ.Δημιουργούμε project π.χ. avemoi

FileNew Project java, java application [το ονομάζω avemoi]. Πριν πατήσω Next και ..την πατήσω στο πλαίσιο Create Main Class γράφω avemoi.Olala αντί του avemoi.Main που έχει διότι τέλος πάντων αποφάσισα να ονομάσω την Κλάση μου Olala

Είμαστε οκ;

Page 7: Java Tutorial -First steps [aka Μπουσουλώντας ]

Ειρήνη Βουτσκόγλου

Για την άσκηση που θα εξηγήσω παρακάτω [κι οι θεού του tech να βάλουν το χέρι τους] θα χρειαστείτε τρεις Κλάσεις μέσα στο ίδιο Project.No problemo.File New File , Java Class δίνεται ονοματάκι [πρώτο γράμμα κεφαλαίο είπαμε και βεβαιωθείτε πως στο πλαίσιο Packages αναγράφεται το avemoi]

[αν χρειαστεί να διαγράψετε package , delete στο project αλλά και delete στον φάκελο αποθήκευσης - για εμένα στον φάκελο JAVA1]

Έτσι λοιπόν δημιούργησα τις τρεις κλάσεις που χρειάζονται για την παρακάτω άσκηση με πιο σοβαρά ονόματα βέβαια

Ο κώδικας για κάθε κλάση δίνεται παρακάτω όπως ακριβώς τον πήρα από το tutorial link που έδωσα στην αρχή του εγγράφου.Οι εξηγήσεις που δίνω είναι ό,τι εγώ έχω καταλάβει μέχρι στιγμής και έχοντας ολοκληρώσει τη μελέτη μέχρι αυτού του σημείου.Αν κάτι από όσα γράφω είναι λάθος [δε νομίζω τάκη , που λέει και η διαφήμιση αλλά λέμε τώρα] μπορεί οποιοσδήποτε να διορθώσει στο αντίστοιχο post του blog μου [just type the title of this document into the search on my blog http://www.e-diva.eu/]

Page 8: Java Tutorial -First steps [aka Μπουσουλώντας ]

Ειρήνη Βουτσκόγλου

public class Card {//η Κλάση αυτή ορίζει κατάλληλες τιμές σε ένα χαρτί τράπουλας private final int rank; private final int suit;//με το final δηλώνονται σταθερές//τα πεδία της κλάσης είναι πάντα private//υπεραπλουστεύοντας, φανταστείτε την Κλάση σαν πρότυπο πίνακα ΒΔ//και τα πεδία σαν Κατηγορήματα

// Kinds of suits public final static int DIAMONDS = 1; public final static int CLUBS = 2; public final static int HEARTS = 3; public final static int SPADES = 4;//μεταβλητές στιγμιότυπου//σταθερές στην περίπτωση μας

// Kinds of ranks public final static int ACE = 1; public final static int DEUCE = 2; public final static int THREE = 3; public final static int FOUR = 4; public final static int FIVE = 5; public final static int SIX = 6; public final static int SEVEN = 7; public final static int EIGHT = 8; public final static int NINE = 9; public final static int TEN = 10; public final static int JACK = 11; public final static int QUEEN = 12; public final static int KING = 13;//ομοίως με πριν

public Card(int rank, int suit) {//αυτός είναι ο Constructor //αρνούμαι να τον μεταφράσω//ο constructor ας πούμε πως προετοιμάζει τα πεδία να δεχτούν τιμές//αυτός δημιουργεί τα Αντικείμενα assert isValidRank(rank);//το isValidRank είναι Μέθοδος//θα μιλήσουμε μετά assert isValidSuit(suit); this.rank = rank;//το this μας γλιτώνει από την ύπαρξη παραμέτρων στον constructor //στις οποίες θα έπρεπε να περάσουμε τιμές μέσω μεταβλητής//πού την βρήκε την τιμή και πώς κατάλαβε πως είναι τιμή, δείτε // αμέσως επόμενο σχόλιο this.suit = suit; }

public int getSuit() {// το πεδίο suit είναι private ενώ εμείς θέλουμε να το χρησιμοποιούμε //ως μεταβλητή//αντί να δημιουργούμε νέο αντικείμενο και μεταβλητή «τύπου» αυτού //του αντικειμένου, χρησιμοποιούμε αυτές τις μεθόδους//και αυτόματα αποδίδεται τιμή return suit; }

public int getRank() { return rank; }

Page 9: Java Tutorial -First steps [aka Μπουσουλώντας ]

Ειρήνη Βουτσκόγλου

public static boolean isValidRank(int rank) { return ACE <= rank && rank <= KING; }

public static boolean isValidSuit(int suit) {//αυτή είναι μέθοδος//επιστρέφει τιμή σε αντίθεση με τον Constructor//η Μέθοδος έχει τις εργασίες που πρέπει να γίνουν σε μία τιμή //μεταβλητής return DIAMONDS <= suit && suit <= SPADES; }

public static String rankToString(int rank) {//αυτή η μέθοδος αποδίδει λέξη σε κάθε τιμή του rank//μη ξεχνάτε πως οτιδήποτε αφορά το τραπουλόχαρτο ορίστηκε//εξαρχής ως ακέραιος αριθμός switch (rank) { case ACE: return "Ace"; case DEUCE: return "Deuce"; case THREE: return "Three"; case FOUR: return "Four"; case FIVE: return "Five"; case SIX: return "Six"; case SEVEN: return "Seven"; case EIGHT: return "Eight"; case NINE: return "Nine"; case TEN: return "Ten"; case JACK: return "Jack"; case QUEEN: return "Queen"; case KING: return "King"; default: //Handle an illegal argument. There are generally two //ways to handle invalid arguments, throwing an exception //(see the section on Handling Exceptions) or return null return null; } } public static String suitToString(int suit) {//ομοίως με πριν switch (suit) { case DIAMONDS: return "Diamonds"; case CLUBS: return "Clubs"; case HEARTS: return "Hearts"; case SPADES: return "Spades"; default: return null;

Page 10: Java Tutorial -First steps [aka Μπουσουλώντας ]

Ειρήνη Βουτσκόγλου

} }

public static void main(String[] args) { // must run program with -ea flag (java -ea ..) to // use assert statements//εδώ βεβαιώνουμε τις εκχωρήσεις τιμών που έγιναν στις μεθόδους assert rankToString(ACE) == "Ace"; assert rankToString(DEUCE) == "Deuce"; assert rankToString(THREE) == "Three"; assert rankToString(FOUR) == "Four"; assert rankToString(FIVE) == "Five"; assert rankToString(SIX) == "Six"; assert rankToString(SEVEN) == "Seven"; assert rankToString(EIGHT) == "Eight"; assert rankToString(NINE) == "Nine"; assert rankToString(TEN) == "Ten"; assert rankToString(JACK) == "Jack"; assert rankToString(QUEEN) == "Queen"; assert rankToString(KING) == "King";

assert suitToString(DIAMONDS) == "Diamonds"; assert suitToString(CLUBS) == "Clubs"; assert suitToString(HEARTS) == "Hearts"; assert suitToString(SPADES) == "Spades";

}}

import java.util.*;

public class Deck {//αυτή η Κλάση δημιουργεί πίνακα δύο διαστάσεων με συνδυασμούς//αριθμών δηλ. των rank & suit

public static int numSuits = 4; public static int numRanks = 13; public static int numCards = numSuits * numRanks;//μεταβλητές στιγμιότυπου

private Card[][] cards;// πεδίο cards «τύπου» δηλ. από το πρότυπο/Κλάση Card σε μορφή πίνακα

public Deck() {//constructor δημιουργεί νέο αντικείμενο που θα λειτουργεί ως//μεταβλητή και θα παίρνει τιμές μέσω της ακόλουθης getCard cards = new Card[numSuits][numRanks]; for (int suit = Card.DIAMONDS; suit <= Card.SPADES; suit++) { for (int rank = Card.ACE; rank <= Card.KING; rank++) { cards[suit-1][rank-1] = new Card(rank, suit); } } }

public Card getCard(int suit, int rank) {//μέθοδος που αποδίδει συνδυασμούς αριθμών σε στοιχείο cards[i,j] return cards[suit-1][rank-1];

Page 11: Java Tutorial -First steps [aka Μπουσουλώντας ]

Ειρήνη Βουτσκόγλου

}}

import java.util.*;

public class DisplayDeck {//αυτή είναι η κύρια Κλάση την οποία και θα τρέξουμε//εμφανίζει όλους τους συνδυασμούς της τράπουλας public static void main(String[] args) { Deck deck = new Deck();//δημιουργείται νέο αντικείμενο deck από το πρότυπο/Κλάση Deck for (int suit = Card.DIAMONDS; suit <= Card.SPADES; suit++) { for (int rank = Card.ACE; rank <= Card.KING; rank++) {//καθώς διατρέχουμε τον πίνακα, σε κάθε στοιχείο δημιουργούμε //αντικείμενο card το οποίο θα λαμβάνει τον αντίστοιχο συνδυασμό του //αντικειμένου deck Card card = deck.getCard(suit, rank); System.out.format("%s of %s%n", card.rankToString(card.getRank()), card.suitToString(card.getSuit()));//για κάθε έναν από αυτούς τους συνδυασμούς θα εφαρμόσουμε //rankToString ή suitToString μέθοδο ώστε να αποδοθεί λέξη στον //αριθμό των rank & suit της card } } }}

Το πρόγραμμα τρέχει επιλέγοντας Debug DisplayCard.javaΔίνεται screenshot παρακάτω με τα αποτελέσματα

Page 12: Java Tutorial -First steps [aka Μπουσουλώντας ]

Ειρήνη Βουτσκόγλου

Αυτά τα ολίγα και συνεχίζουμε τη μελέτη, αφού πάμε μια βόλτα από εδώ http://www.divcast.gr/