thappp.tp Δημοσ. 14 Δεκεμβρίου 2012 Δημοσ. 14 Δεκεμβρίου 2012 Παιδια θελω μια μεγαλη ΒΟΗΘΕΙΑ..Στη σχολη μου κανουμε JAVA και τωρα ειμαστε στις Τάξεις και τα Αντικείμενα. Θελω αν μπορειτε να μου εξηγήσετε (1) τι ακριβως κανει ο κατασκευαστης, (2)οταν δημιουργουμε την κλαση μας και την αποθηκευσουμε σε μορφη " .java " στην συνεχεια πως μπορουμε να την χρησιμοποιησουμε στο κυριως προγραμμα μας. επισης αν ειναι δυνατον να μου εξηγησετε τι ειναι (3) τα Αφηρημενα δεδομενα (data abstraction), (4) η Κληρονομικότητα και (5) ο Πολυμορφισμός. εχω το βιβλιο Εισαγωγή στην Java του Γιώργου Λιακέα. Ξερω οτι ζηταω πολλα, αλλα απο οτι εχω δει οι περισσοτεροι απο εδω μεσα ξερεται καλα και προγραμματισμο αλλα και java
moukoublen Δημοσ. 14 Δεκεμβρίου 2012 Δημοσ. 14 Δεκεμβρίου 2012 Με χαρά κι εγώ και οι περισσότεροi εδω, να σου μεταφέρουμε όσα ξέρουμε για κάποια απο αυτα. Πες μου όμως κατι πρώτα. Σε τι νομίζεις ότι θα διαφέρει αυτό που θα σου γράψουν εδώ απο αυτό που έχεις ήδη γραμμένο στο βιβλίο σου; Δεν το ρωτάω για να σε τρολάρω ούτε για να στην πώ. Απλώς θεωρώ πως μάλλον συμβαίνει το εξής. Δεν ξέρεις τι να περιμένεις σαν απάντηση ρωτώντας τόσο γενικά (και μακροσκελή ως προς την επεξήγηση) θέματα και θεωρείς πως κάπως κάποιος θα σου παρουσιάσει κάτι το οποίο θα είναι εύκολο. Δεν είναι έτσι. Αυτό που υπάρχει πιθανότητα να συμβεί είναι, ακόμα και αν κάποιος μπεί στον κόπο να σου γράψει ένα σεντόνι, να το βρείς μεγάλο και κουραστικό (ακριβώς γιατι όπως είπα πριν δεν ξέρεις τι να περιμένεις ως απάντηση) και να το παρατήσεις στην 2η σειρά. Συνεπώς αυτό που ζητάς δεν μπορεί να γίνει - να μπορέσει κάποιος να στα εξηγήσει (και κυριότερα) να τα καταλάβεις με 3 λέξεις. Και την βεβαιότητα ότι αυτό το ουτοπικό βοήθημα των τριών λέξεων περιμένεις μου την δημιουργεί το γεγονός πως, αν δεν ήταν έτσι, θα είχες ήδη διαβάσει το βιβλίο σου. Άρα. Διάβασε καλά το βιβλίο σου, γράψε κώδικα, ψάξε και στο ίντερνετ και αν τελικά έχεις μεμονωμένες απορίες τότε ίσως να μπορέσει κάποιος να σε βοηθήσει αποδοτικά. Αυτή είναι η γνώμη μου. 2
thappp.tp Δημοσ. 14 Δεκεμβρίου 2012 Μέλος Δημοσ. 14 Δεκεμβρίου 2012 Καταρχας θελω να σου πω ότι το συγκεκριμένο κομματι το έχω διαβάσει (από το βιβλιο )αρκετές φορές αλλα όπως ειναι γραμμένο μου ειναι δύσκολο να το καταλάβω. Τωρα για ποιον λόγο να το καταλάβω από κάποιον που θα προσπαθήσει να μου το εξηγήσει με λιγα λογια και όχι τόσο αναλυτικά όσο παρουσιάζεται στο βιβλιο, ειναι γιατί (1) δεν είπα ότι δεν έχω καταλαβει τίποτα, απλά θελω σε αυτό που θα μου πει κάποιος να κάνω μια ερώτηση( αν χρειαστεί) πράγμα που δεν μπορώνα κάνω με το βιβλιο.(2) τα 2 πρωτα πράγματα που ρώτησα πιστεύω ότι ειναι αρκετα συγκεκριμένα (3) δεν υποχρεωσα κάποιον να απαντησει σε όλες μου τις ερωτήσεις, θα μπορούσε να απαντησει σε όσες μπορούσε και (4) από ότι κατάλαβα κάτι από τα παραπάνω που ρώτησα τα ξέρεις, και θα μπορούσες να απαντήσεις σε κάποιο από αυτα (αν ήθελες) και όχι να γράψεις ενα τόσο μεγάλο μήνυμα. (σε καμμία περίπτωση μην πάρεις το παραπάνω μήνυμα ως ειρωνεία ή ότι προσπαθώ να σου την πω)
albNik Δημοσ. 14 Δεκεμβρίου 2012 Δημοσ. 14 Δεκεμβρίου 2012 Ο κατασκευαστής το λιγότερο που κάνει είναι να παραχωρήσει μνήμη για το αντικείμενο. Αν δεν ορίσεις δικό σου contructor, η java (και άλλες γλώσσες) σου φτιάχνουν ένα default. Δεν μπορείς να χρησιμοποιήσεις ένα αντικείμενο (μεθόδους ή πεδία του) αν δεν έχει κληθεί ο cοstructor (new) του πρώτα. Δοκίμασε κάποιο μικρο παράδειγμα και ότι δεν καταλάβεις ξαναρώτα. Μετά ασχολείσου με τα άλλα ερωτήματα.
warlock9_0 Δημοσ. 15 Δεκεμβρίου 2012 Δημοσ. 15 Δεκεμβρίου 2012 δες από εδώ http://docs.oracle.com/javase/tutorial/java/javaOO/index.html
moukoublen Δημοσ. 15 Δεκεμβρίου 2012 Δημοσ. 15 Δεκεμβρίου 2012 Καταρχας θελω να σου πω ότι το συγκεκριμένο κομματι το έχω διαβάσει (από το βιβλιο )αρκετές φορές αλλα όπως ειναι γραμμένο μου ειναι δύσκολο να το καταλάβω. Πολύ ωραία. Άρα πρέπει να αναζητήσεις εναλλακτικές πηγές. Αν δεν έχεις πρόβλημα με τα αγγλικά υπάρχουν χιλιάδες πολύ καλές πηγές που θα στα αναλύσουν έτσι όπως πρέπει και όχι εφήμερα και επιφανειακά (Για παράδειγμα έχω ακούσει καλά λόγια για αυτό το βιβλίο). (2) τα 2 πρωτα πράγματα που ρώτησα πιστεύω ότι ειναι αρκετα συγκεκριμένα Είναι, όντως. (3) δεν υποχρεωσα κάποιον να απαντησει σε όλες μου τις ερωτήσεις, θα μπορούσε να απαντησει σε όσες μπορούσε Με παρεξήγησες. Δεν είπα κατι τέτοιο. Αυτό που ήθελα να σου πω είναι ότι αυτά τα πράγματα θέλουν πολύ εξήγηση. Δεν γίνεται να στα εξηγήσει κάποιος με 2 γραμμές. Και μάλιστα πρέπει να γίνει σταδιακά. Πρέπει πρώτα να καταλάβεις πλήρως τι είναι class και object (instance). Και μετά μπορείς να προχωρήσεις στα υπόλοιπα. Αν μάλιστα από την ερώτηση που παραθέτεις για τον constructor βγάλω το συμπέρασμα οτι έχεις κάποια λίγα κενά στα βασικά ζήτημα object oriented (και καλώς τα έχεις δε σε κατηγορεί κανείς - τουλάχιστον εγώ δεν κατηγορώ κανέναν) λίγο πολύ όλα αυτά που ρωτάς (μαζί με τα υπόλοιπα) είναι -ας πούμε- το 60% όλου το object oriented προγραμματισμού. Αυτό θέλω να σου πω. Δε γίνεται να τα διαβάσεις όλα αυτά από το post κάποιου και να τα καταλάβεις σωστά. Μιλάμε για την βασική ύλη του object oriented που διδάσκεται για εξάμηνα. Και για την οποία έχουν γραφτεί και γράφονται τόμοι. Πρέπει να κάνεις μελέτη και μάλιστα αρκετή. Σε συγκεκριμένη απορίες πάνω σε κομμάτια της κάθε ενότητας μπορεί κάποιος να σε βοηθήσει αποδοτικά Αυτή ήταν όλη μου η επισήμανση (και φυσικά η προσωπική μου άποψη και τίποτα παραπάνω).
ZAKKWYLDE Δημοσ. 16 Δεκεμβρίου 2012 Δημοσ. 16 Δεκεμβρίου 2012 Όλα αυτά που ρώτησες είναι όπως σου είπαν το 60% ισως και περισσότερο της ύλης του OOP. Το θέμα είναι ότι πρέπει να τα πάρεις 1-1. Να μάθες τι ακριβώς είναι Class, τι είναι Object και τί είναι Method. Τι είναι το class variable και το instance variable. Τι είναι το stack και το heap. Αν δεν καταλάβεις τι ακριβώς κάνει ο constructor...αποκλείτεται να καταλάβεις τι είναι overloading, polymorphism και inheritance. Κάποιος ίσως θα μπορούσε να σου δώσει απλά παραδείγματα να πάρεις μια ιδέα αλλά δεν θα έχεις καταλάβει πραγματικά. Π.x. inheritance. Έχεις μια κλάση ζώο που έχει μάτια, στόμα, αυτιά και πόδια. Έχεις 2 υποκλάσεις σκυλί και γάτα. Οι 2 υποκλάσεις κληρονομούν ότι έχει η υπερκλάση. Δηλαδή έχουν επίσης μάτια, στόμα, αυτιά και πόδια, αλλά ο σκύλος επίσης γαβγίζει και η γάτα νιαουρίζει. Απο την άλλη...στο πολυμορφισμό για παράδειγμα, αν μπορείς να πείς σε ένα ζώο να "περπατήσει" τότε μπορούν να "περπατήσουν" και οι υποκλάσεις του. Μπορείς μάλιστα να εξειδικεύσεις με ποιόν τρόπο θα περπατάει η κάθε υποκλάση. Αλλιώς περπατάει ο σκύλος και αλλιώς η γάτα. Βέβαια, όλα τα παραπάνω δεν σημαίνουν απολύτως τίποτα, αν πρώτα δεν καταλάβεις τα ΒΑΣΙΚΑ.
migf1 Δημοσ. 16 Δεκεμβρίου 2012 Δημοσ. 16 Δεκεμβρίου 2012 Παιδια θελω μια μεγαλη ΒΟΗΘΕΙΑ..Στη σχολη μου κανουμε JAVA και τωρα ειμαστε στις Τάξεις και τα Αντικείμενα. Θελω αν μπορειτε να μου εξηγήσετε (1) τι ακριβως κανει ο κατασκευαστης, (2)οταν δημιουργουμε την κλαση μας και την αποθηκευσουμε σε μορφη " .java " στην συνεχεια πως μπορουμε να την χρησιμοποιησουμε στο κυριως προγραμμα μας. επισης αν ειναι δυνατον να μου εξηγησετε τι ειναι (3) τα Αφηρημενα δεδομενα (data abstraction), (4) η Κληρονομικότητα και (5) ο Πολυμορφισμός. εχω το βιβλιο Εισαγωγή στην Java του Γιώργου Λιακέα. Ξερω οτι ζηταω πολλα, αλλα απο οτι εχω δει οι περισσοτεροι απο εδω μεσα ξερεται καλα και προγραμματισμο αλλα και java Όπως σου είπαν και τα άλλα παιδιά, αυτά που ρωτάς είναι σχεδόν τα 3/4 του αντικειμενοστραφούς προγραμματισμού (object oriented programming). Πάραυτα, αν ξέρεις ήδη διαδικαστικό προγραμματισμό (procedural programming) τότε τα πρακάτω είναι μια μίνιμουμ αντιστοιχία που ίσως σε βοηθήσει να πάρεις μια γενική ιδέα (προφανώς δεν είναι ακριβής αντιστοιχία). Αν ξέρεις ήδη λοιπόν C ή standard Pascal, τότε... 1. η κλάση, αντιστοιχεί (στο πολυ περίπου) με το struct της C ή το record της Pascal. 2. το αντικείμενο, αντιστοιχεί (στο περίπου) σε μια δυναμικά δεσμευμένη μεταβλητή, συνήθως τύπου struct στη C, ή τύπου record στην Pascal. 3. ο constructor, αντιστοιχεί (μινιμαλιστικά) στα malloc()/calloc() της C ή στο new() της Pascal. 4. o destructor, αντιστοιχεί (επίσης μινιμαλιστικά) στο free() της C ή στο dispose() της Pascal (αν και στην Java δεν αποδεσμέυεις χειροκίνητα μνήμη, την αποδεσμεύει αυτόματα ο grabage collector της... υπάρχει μια μέθοδος finalize() θυμάμαι, αλλά δεν θυμάμαι καθόλου αν, που και πότε μπορεί να την χρησιμοποιήσει κανείς... αν σε ενδιαφέρει κάτι τέτοιο γκούγλαρέ το). Κληρονομικότητα και πολυμορφισμός, δεν υποστηρίζονται εγγενώς στις procedural γλώσσσες. Αλλά έτσι κι αλλιώς, μέχρι να φτάσεις εκεί πρέπει πρώτα να έχεις εμπεδώσει τα προηγούμενα. Τέλος, data abstraction είναι μια ευρύτερη έννοια κατά την οποία προγραμματίζεις με κοινό inteface χωρίς να επηρεάζει την λειτουργικότητα του interface ο τύπος των δεδομένων που χρησιμοποιείς. Αυτά για να πάρεις μια πολύ γενική ιδέα, αν κι εφόσον γνωρίζεις ήδη μια procedural γλώσσα. Όπως και να 'χει, πρέπει να διαβάσεις (συνήθως πολύ) και να τα εξασκήσεις (ακόμα πιο πολύ) για να τα κάνεις κτήμα σου. Επίσης η γνώμη μου είναι πως αν σκοπεύεις να ασχολοηθείς σοβαρα με προγραμματιμό, να μάθεις πρώτα Αγγλικά αν δεν ξέρεις ήδη. Κατόπιν ότι βιβλίο αγοράζεις να είναι στα Αγγλικά. 1
ZAKKWYLDE Δημοσ. 16 Δεκεμβρίου 2012 Δημοσ. 16 Δεκεμβρίου 2012 Επίσης η γνώμη μου είναι πως αν σκοπεύεις να ασχολοηθείς σοβαρα με προγραμματιμό, να μάθεις πρώτα Αγγλικά αν δεν ξέρεις ήδη. Κατόπιν ότι βιβλίο αγοράζεις να είναι στα Αγγλικά. Νομίζω ότι αυτό είναι το πιο σημαντικό σχόλιο. Είναι κρίμα κανείς να μην μπορεί να έχει "πρόσβαση" στο άπειρο υλικό γύρω απο τον προγραμματισμό στο internet επειδή δεν γνωρίζει τη γλώσσα.
migf1 Δημοσ. 16 Δεκεμβρίου 2012 Δημοσ. 16 Δεκεμβρίου 2012 Νομίζω ότι αυτό είναι το πιο σημαντικό σχόλιο. Είναι κρίμα κανείς να μην μπορεί να έχει "πρόσβαση" στο άπειρο υλικό γύρω απο τον προγραμματισμό στο internet επειδή δεν γνωρίζει τη γλώσσα. Όντως! Από τη μια καταλαβαίνω πως τα ελληνικά ακαδημαϊκά ιδρύματα δεν γίνεται να μη διδάσκουν επίσημα στην ελληνική γλώσσα, αλλά από την άλλη μεριά θα έπρεπε (πάντα κατά τη γνώμη μου) να περνάνε στα πεταχτά τις ελληνικές ορολογίες και από εκεί και πέρα να χρησιμοποιούν τις αγγλικές μέσα στις τάξεις. Ακόμα και τα βιβλία, πιστεύω θα έπρεπε κατ' ελάχιστο να έχουν και την αγγλική ορολογία σε παρένθεση δίπλα σε οποιοιονδήποτε ελληνικό όρο. Εννοώ σε κάθε αναφορά ελληνικού όρου. Αποτελεί πολύ μεγάλη τροχοπέδη στην εξέλιξη του οποιουδήποτε στην πληροφορική το να μη γνωρίζει τις αγγλικές ορολογίες. Ειδικά στον προγραμματισμό.
defacer Δημοσ. 17 Δεκεμβρίου 2012 Δημοσ. 17 Δεκεμβρίου 2012 Παιδιά σχετικά μ' αυτά που ειπώθηκαν παραπάνω: καταλαβαίνω το πνεύμα, αλλά νομίζω πως είναι παραπλανητικό (ίσως επικίνδυνα παραπλανητικό?) να λέμε ότι ο constructor "παραχωρεί/δεσμεύει" μνήμη για το αντικείμενο. Σωστότερο θα ήταν να πούμε ότι αρχικοποιεί τη μνήμη (η οποία έχει ήδη δεσμευτεί πριν ο constructor τρέξει). 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα