Σελίδα 21 από 26

Re: Απορίες σε java

ΔημοσίευσηΔημοσιεύτηκε: 26 Μαρ 2012, 23:52
από giannosfor
Ναι έτσι είναι μέθοδοι είναι κάτι αντίστοιχο .

Re: Απορίες σε java

ΔημοσίευσηΔημοσιεύτηκε: 27 Μαρ 2012, 00:53
από giannosfor
Ορίστε και το δικό μου.

Μορφοποιημένος Κώδικας: Επιλογή όλων
public class Rectangle {
private static Integer hor,ver;
public static void main(String[] args) {
if (args.length < 2)
System.exit(0);
hor = Integer.parseInt(args[0]);
ver = Integer.parseInt(args[1]);
if (hor < 2 || ver < 2)
System.exit(0);
printHor();
for (int i = 0 ;i < ver - 2; i++)
System.out.println(String.format("*%" + (hor -1) + "s", "*"));
printHor();
}
private static void printHor() {
for (int i = 0; i < hor ; i++)
System.out.print("*");
System.out.println();
}
}

Re: Απορίες σε java

ΔημοσίευσηΔημοσιεύτηκε: 27 Μαρ 2012, 17:30
από clepto
@giannosfor έχω ψιλομπερδευτεί με το object...
λοιπόν, ένα object έχει state και behavior...
μια κλάση αποτελείται από πολλά "παρόμοια" objects;

ναι αλλά όταν λέμε ότι δημιουργώ ένα object τι ακριβώς εννοούμε; ότι δημιουργούμε ένα αντικείμενο στο οποίο δίνουμε κάποιες states (variables;) και κάποιες behaviors (μεθόδους/συναρτήσεις;)

οπότε όταν εγώ γράφω
Κώδικας: Επιλογή όλων
Rectangle rectOne = new
            Rectangle(originOne, 100, 200);
από εδώhttp://docs.oracle.com/javase/tutorial/java/javaOO/objects.html
ουσιαστικά είναι σαν να καλώ την τέταρτη μέθοδο από εδώ;; http://docs.oracle.com/javase/tutorial/java/javaOO/examples/Rectangle.java (την ξεχωριζουμε απο τις argument που περνάμε)

Re: Απορίες σε java

ΔημοσίευσηΔημοσιεύτηκε: 27 Μαρ 2012, 21:34
από giannosfor
Προσωπικά πιστεύω ότι το tutorial της sun είναι πολύ καλό αλλά όχι για κάποιο αρχάριο.
Γνώμη μου βρες κάποιο βιβλίο να σε εξοικειώσει με την έννοια της αντικειμενοστρέφειας ,και παράλληλα διάβαζε και το tutorial της sun.

Σαν θεωρία.
Στην αντικειμενοστρέφια τα πάντα αντιμετωπίζονται ως αντικείμενα.
Τι εννοώ.
Στο παράδειγμα σου αναφέρεις το παραλληλόγραμμο. Ξέχνα λίγο το κώδικα.
Το παραλληλόγραμμο από τι απαρτίζετε;Ποια είναι τα χαρακτηριστικά του;Από τι ορίζετε;

Από ένα σημείο , και από τις κάθετες και τις οριζόντιες γραμμές του.
Δηλαδή από το σημείο του παραλληλόγραμμου και το πλάτος και το μήκος μπορείς να ορίσεις ένα παραλληλόγραμμο.

Το σημείο από τι ορίζετε;
Στο καρτεσιανό από το τιμή του στο χ και y άξονα.

Άρα μάνι μάνι έχεις δύο αντικείμενα. Το παραλληλόγραμμο και το σημείο .
Το σημείο είναι ξεχωριστό αντικείμενο γιατί μπορεί να υπάρχει αυτόνομα ,μπορεί να χρησιμοποιηθεί για να
περιγράψεις ένα άλλο σχήμα , το κύκλο όπου θα είναι το κέντρο του.

Άλλα και το παραλληλόγραμμο μπορεί ,όπως και ένα είδος του παραλληλογράμμου που είναι το τετράγωνο.
Αλλά εκεί μιλάμε για άλλη σχέση ,την κληρονομικότητα ,που είναι άλλο μάθημα.

Στο κώδικα τώρα.
Στις κλάσεις ορίζεις τα δεδομένα και τις μεθόδους , δηλαδή τα states όπως λες και τα behaviors.
Εμένα ποτέ δε μου άρεσαν αυτοί οι ορισμοί αλλά είναι η θεωρία και χρησιμοποιούνται.
Σε μία κλάση και κατ επέκταση στο αντικείμενο έχεις μεταβλητές οι οποίες θα κρατάνε πληροφορίες
και μεθόδους οι οποίες θα πράττουν διαδικασίες πιθανότατα με τα δεδομένα δηλαδή με τις μεταβλητές
του ίδιου του αντικειμένου.

Δηλαδή στις περισσότερες των περιπτώσεων θα χρησιμοποιείς τις μεθόδους μίας κλάσεις για να επεξεργαστείς
τα δεδομένα της ίδιας τη κλάσης.Ας το πω καλύτερα του αντικειμένου που δημιουργεί η κλάση.
Και αυτή είναι η βασική διαφορά της συνάρτησης με την μέθοδο.

Στο παράδειγμα δημιουργεί ένα αντικείμενο Rectangle και του περνάει σαν παράμετρο σε αυτό που λέμε
constructor ένα καινούργιο αντικείμενο Point.
Αυτό συνάγει με αυτά που είπαμε και στη θεωρία ότι ένα παραλληλόγραμμο πρέπει να έχει ένα σημείο
αναφοράς ώστε να ορίζεται.
Και του το περνάμε με αυτό το τρόπο.

Τώρα αν δεν έχεις ξεκαθαρίσει τι είναι κλάση.Θα πρέπει να διαβάσεις περισσότερο και πιθανότατα από άλλες
πηγές για να πάρεις μία ιδέα και πάλι εδώ ήμαστε.

Σε γενικές γραμμές και πάλι πολύ θεωρητικά είναι ένα σχεδιάγραμμα ώστε όπου όταν δεσμεύσεις χώρο στη μνήμη
σου να πάρει αυτό το σχήμα.

Δε ξέρω αν σε μπέρδεψα περισσότερο άλλα έτσι είναι η θεωρία, μπερδευτική.
Σκέψου ότι θέλεις μία συνταγή ώστε να κάνεις πολλά παραλληλόγραμμα αλλά δε θες το κάθε παραλληλόγραμμο να
έχει το ίδιο πλάτος και μήκος και να βρίσκεται στο ίδιο σημείο θες να είναι αυτόνομα.
Έτσι ορίζεις το καθένα να έχει δικό του μήκος και πλάτος και όταν ζητήσεις το εμβαδό του ενούς παραλληλογράμμου
να υπολογίσει τα δικά του στοιχεία και όχι κάποιου άλλου ,εναποθέτεις την ευθύνη στο αντικείμενο να υπολογίσει
τα στοιχεία του εαυτού του όχι εσύ περνώντας παραμέτρους.

Re: Απορίες σε java

ΔημοσίευσηΔημοσιεύτηκε: 28 Μαρ 2012, 00:35
από parenthesis
Επίσης, κάποιες ωραίες απλές ασκησούλες για κάποιον που ξεκινάει με τη java έχει εδώ. :clap:

Re: Απορίες σε java

ΔημοσίευσηΔημοσιεύτηκε: 29 Μαρ 2012, 18:37
από the_eye

Το θέμα διαχωρίστηκε, παρακαλώ να συνεχιστεί η κουβέντα μόνο για την java


Re: Απορίες σε java

ΔημοσίευσηΔημοσιεύτηκε: 30 Μαρ 2012, 00:51
από giannosfor
@clepto αν θες να παραθέσω λίγα ακόμα ώστε να σε βοηθήσω να καταλάβεις τις κλάσεις .

Καταρχην δημιουργείς ένα αντικείμενο γράφοντας new και το όνομα της κλάσης αυτό σημαίνει ότι καταλαμβάνει χώρο στην μνήμη
και τo αρχικοποιεί.Πώς γίνεται αυτό.Με τους constructors.Τι είναι consrtuctor ,είναι μία μέθοδος στο όνομα της κλάσης όπου σε αυτή αναφέρεσαι
όταν αρχικοποιείς ένα αντικείμενο.Οι constructor είναι ένας τρόπος να περάσεις δεδομένα στο αντικείμενο σου που θα είναι όπως θα λέγαμε στη
θεωρία οι ιδιότητες του αντικειμένου σου.
Αυτό το πετυχαίνεις κάνοντας πολλαπλούς αν θες constructor που αυτό που αλλάζει είναι οι παράμετροι που δέχεται και εξυπηρετούν τους
σκοπούς σου.Ένας άλλος τρόπος είναι να αλλάξεις τα δεδομένα μετά τη δημιουργία του αντικειμένου σου με accessors δηλαδή μεθόδους που
αλλάζουν τις μεταβλητές του αντικειμένου σου ή με κατευθείαν αναφορά στις μεταβλητές αν είναι public δηλαδή έχουν όλοι πρόσβαση ή
άλλου τύπου που αφήνει να κάνεις ,αλλά δε είναι κάτι που θα το δεις συχνά.
Τώρα είδα στο παράδειγμα ότι περνάει στο constructor ένα αντικείμενο Point ,και αυτό γίνεται.
Όταν δεν υπάρχει constructor στη κλάση σου δημιουργείτε άλλα είναι κενός.

Re: Απορίες σε java

ΔημοσίευσηΔημοσιεύτηκε: 30 Μαρ 2012, 15:32
από clepto
ωραία ευχαριστώ! διαβάζω το βιβλίο του Deteil ή όπως τον λένε και είναι πολύ καλό!

Re: Απορίες σε java

ΔημοσίευσηΔημοσιεύτηκε: 30 Μαρ 2012, 18:43
από giannosfor
Ναι είναι αρκετά καλό.Πολλά παραδείγματα.

Re: Απορίες σε java

ΔημοσίευσηΔημοσιεύτηκε: 01 Απρ 2012, 22:03
από clepto
έχεις το βιβλίο εσύ;
στην σελίδα 135 στο First Drawing Application θέλω να βάλω τα δυο κομμάτια κώδικα σε αρχεία για να τα δοκιμάσω...
αλλά δεν ξέρω πως πρέπει να είναι η δομή στα πακέτα γιατί μου βγάζει σφάλμα, κοίτα την εικόνα