MeTaXaS4 Δημοσ. 19 Ιουνίου 2014 Δημοσ. 19 Ιουνίου 2014 πλευρά δεν έχεις του τετραγώνου; δεν κοίταξα όλο το info... :/ είμαι και στο γραφείο..
vagg77 Δημοσ. 19 Ιουνίου 2014 Μέλος Δημοσ. 19 Ιουνίου 2014 Αρα μαλλον και το παραθυροφυλλο θεωρειται τετραγωνο.
Luciddream Δημοσ. 19 Ιουνίου 2014 Δημοσ. 19 Ιουνίου 2014 το πιο σωστό είναι να χρησιμοποιήσεις interfaces αλλά δεν το λέει η άσκηση. οπότε πρέπει να φτιάξεις μόνο κλάσεις. δεν λέει η άσκηση να χρησιμοποιήσει μόνο κλάσεις. στο θέμα 1 σε προιδεάζει με την ερώτηση αν οι διεπαφές δημιουργούν ξεχωριστή ιεραρχία... και στο θεμα 2 σε ρωτάει με ποιον τροπο μπορείς να το υλοποιήσεις σε Java... ενταξει παντως το οτι χρησιμοποιει greeklish για τις κλάσεις μπορεί να ειναι λάθος αλλα μάλλον γίνεται για να κατανοηθεί καλύτερα απο τους φοιτητές... ασε που αν ηταν στα αγγλικά δεν θα έβρισκα κάτι αντίστοιχο του αθλητέχνη... !!!
vagg77 Δημοσ. 19 Ιουνίου 2014 Μέλος Δημοσ. 19 Ιουνίου 2014 Αυτο ακριβως!!! Δεν χρειαζεσαι την πλευρα του τετραγωνου για να βρεις το εμβαδον του αλλα θα πας με τον τυπο με το diagonal για το Ε, για τον οποιο σου δινει 2 τιμες δεν λέει η άσκηση να χρησιμοποιήσει μόνο κλάσεις. στο θέμα 1 σε προιδεάζει με την ερώτηση αν οι διεπαφές δημιουργούν ξεχωριστή ιεραρχία... και στο θεμα 2 σε ρωτάει με ποιον τροπο μπορείς να το υλοποιήσεις σε Java... ενταξει παντως το οτι χρησιμοποιει greeklish για τις κλάσεις μπορεί να ειναι λάθος αλλα μάλλον γίνεται για να κατανοηθεί καλύτερα απο τους φοιτητές... ασε που αν ηταν στα αγγλικά δεν θα έβρισκα κάτι αντίστοιχο του αθλητέχνη... !!! Ο αθλητεχνης ειναι ΕΠΟΣ!!
MeTaXaS4 Δημοσ. 19 Ιουνίου 2014 Δημοσ. 19 Ιουνίου 2014 οκ τα greeklish, αλλά υπάρχουν και κάποια πρότυπα ονοματολογίας στην Java, δεν τα γνωρίζει; και κάνει και Java; 1
imitheos Δημοσ. 19 Ιουνίου 2014 Δημοσ. 19 Ιουνίου 2014 υπάρχουν και κάποια πρότυπα ονοματολογίας στην Java, δεν τα γνωρίζει; και κάνει και Java; Συγγνώμη που βγαίνω εκτός θέματος αλλά μήπως ζητάς πολλά ? Στη δική μου σχολή όταν εισήχθη η Java, την έδωσαν στο καθηγητή που έκανε c, c++, fortran, prolog, κτλ (με δεδομένο ότι το 95% των καθηγητών ήταν φυσικοί - μαθηματικοί θεώρησαν φαίνεται ότι είναι ο πιο σχετικός με το αντικείμενο). Μας παραδέχθηκε λοιπόν τις πρώτες μέρες στο μάθημα ότι δε γνωρίζει Java παρά μόνο τα βασικά και ότι θα τη μάθουμε σιγά σιγά μαζί. Οι κώδικες που γράφαμε ήταν ουσιαστικά C με σύνταξη Java. Εσένα σε πείραξαν τα ονόματα των μεταβλητών ?
MeTaXaS4 Δημοσ. 19 Ιουνίου 2014 Δημοσ. 19 Ιουνίου 2014 την αλήθεια; ναι, αν είναι να είναι αυτή η δωρεάν παιδεία δεν θέλω... 1
vagg77 Δημοσ. 19 Ιουνίου 2014 Μέλος Δημοσ. 19 Ιουνίου 2014 Ρε δεν χρεαιζεται να γινει θεμα τωρα το αν ο καθηγητης εβαλε greeklish η επρεπε να ακολουθει τους γενικους κανονες. Πιστευω οτι το εκανε για θεματα κατανοησης.
defacer Δημοσ. 19 Ιουνίου 2014 Δημοσ. 19 Ιουνίου 2014 ......................................... Και αυτό τώρα με τον αθλητέχνη είναι άσκηση σε τμήμα μηχανικών ΗΥ και πληροφορικής. Σα να λέμε υπάρχουν αθλητές στίβου, κολύμβησης, μπάσκετ, ποδοσφαίρου, τένις και βόλει (ας μη συνεχίσω). Το να μοντελοποιήσεις το ενδεχόμενο κάποιος άνθρωπος να είναι αθλητής σε παραπάνω από μία κατηγορία ταυτόχρονα με classes απλά δε γίνεται. Το να το μοντελοποιήσεις χρησιμοποιώντας interfaces γίνεται... βέβαια αν θέλεις να το κάνεις θα πρέπει να γράψεις με το χέρι 2^6 διαφορετικές classes, και η έκτη δύναμη αυξάνεται κατα 1 για κάθε κατηγορία που μας ενδιαφέρει να προσθέσουμε. Απλά τραγικό και τελείως λάθος παράδειγμα για να μάθεις σε κάποιον πώς και πότε χρησιμοποιείται το inheritance και τα interfaces. Εκτός αν σκοπεύεις να τους το μάθεις με τη μέθοδο του παραδείγματος προς αποφυγή. Sorry για το rant. Αλλά χθες προχθές βλέπεις το θέμα "σε ποιά σχολή να πάω για να γίνω προγραμματιστής", σήμερα βλέπεις αυτό και μετά θέλεις ν' αυτοκτονήσεις. Μια φιλική συμβουλή σε όλους όσους ακόμα μαθαίνουν ΟΟ: αν πας να βάλεις inheritance, κατά 99% έχεις ήδη κάνει λάθος. @vagg77: Έτσι που έχεις διατυπώσει την ερώτηση υπάρχει πρόβλημα καταρχήν επειδή έχεις μπλέξει μέσα κάτι τελείως άσχετο με την περίπτωσή σου. Εκείνη η ερώτηση στο SO δεν ασχολείται με το να ανήκει ένα αντικείμενο σε 2 κλάσεις. Ασχολείται με το να χρησιμοποιήσεις το ίδιο στιγμιότυπο ( ελληνική ορολογία) σε δύο διαφορετικά μέρη του προγράμματος. Επομένως δεν έχει νόημα να εφαρμόσεις κάτι τέτοιο σα λύση, είναι σα να λες ότι θέλω να βάψω τον τοίχο και εφήρμοσα τη λύση στο πώς καρφώνουμε ράφι έτσι που να είναι ίσιο. Δεν ξέρω τι λύση περίμενε ο καθηγητής σου, αυτό με τα interfaces είναι "προφανώς λάθος" αν το δεις με επαγγελματικά κριτήρια αλλά ίσως είναι "σωστό" στα πλαίσια αυτών που διδάσκεστε. Δυστυχώς με ζώνουν τα φίδια ότι αντί γι' αυτό το έστω κατά τόπους αποδεκτό, ο καθηγητής σας ήθελε την αηδιαστική σε βαθμό δεν ξέρεις τι σου γίνεται παρακάτω λύση: class kallitexnis extends anthropos {} class athlitexnis extends kallitexnis {} // έγκλημα κατά της ανθρωπότητας class athkal-kolimvisis extends athlitexnis {} // δε φταιει το παιδί, οι γονείς φταίνε 3
gon1332 Δημοσ. 19 Ιουνίου 2014 Δημοσ. 19 Ιουνίου 2014 Μια φιλική συμβουλή σε όλους όσους ακόμα μαθαίνουν ΟΟ: αν πας να βάλεις inheritance, κατά 99% έχεις ήδη κάνει λάθος. +1 αν μιλάς για την καραμέλα που χρησιμοποιούν όλοι με το σκεπτικό: Java έχουμε, πάμε να χώσουμε inheritance ανεβάζοντας την πολυπλοκότητα ενός απλά γελοία μικρού προβλήματος αντί να βάζαμε μία κλάση με όλα τα γνωρίσματα για να τελειώνει εκεί η υπόθεση. Αφού δεν υπάρχει πιθανότητα επέκτασης πάντα. Εκτός αν δε σε έπιασα.
defacer Δημοσ. 19 Ιουνίου 2014 Δημοσ. 19 Ιουνίου 2014 Νομίζω δε με έπιασες. Το inheritance είναι σε πολλές περιπτώσεις (μια από αυτές η Java) η ισχυρότερη μορφή σχέσης που μπορείς να εισάγεις ανάμεσα σε δύο έννοιες που αφορούν το problem domain που έχεις στα χέρια σου. Στην προκειμένη εφόσον μιλάμε για inheritance αυτές οι έννοιες έχουν απαραίτητα μοντελοποιηθεί ως classes, το οποίο σημαίνει ότι πριν καν φτάσεις στο σημείο να μπορείς να γράψεις "extends" και να κάνει compile το πρόγραμμα έχεις ήδη πάρει πολύ σημαντικές και συγκεκριμένα πολύ δεσμευτικές αποφάσεις για τη δομή του προγράμματος. Αυτό φυσικά είναι κάτι που δεν περνάει καν από το μυαλό του μαθητευόμενου γιατί δεν του έχει πει κανείς ότι πρώτα ξεκινάς από ένα αφηρημένο μοντέλο και μετά το μεταφράζεις με όρους (language features) που αναγνωρίζει η Java. Αντίθετα του έχουν πει "κοίτα να δεις τι ωραία, γράφεις class και extends και αμέσως ο compiler καταλαβαίνει ότι η αγελάδα είναι θηλαστικό". Δηλαδή του δείχνουν τη "λύση" προτού καν του εξηγήσουν ποιό είναι το πρόβλημα. Μετά φυσικά αυτός πάει και βάζει inheritance παντού επειδή όπως λένε when all you have is a hammer, everything looks like a nail και καταλήγεις να βλέπεις ερωτήσεις του στυλ "βρες το λάθος εδώ και πρότεινε βελτίωση" class Car extends Engine {} και ο άλλος δεν έχει πάρει τις κατάλληλες γνώσεις όχι για να προτείνει βελτίωση αλλά ούτε καν για να καταλάβει ότι εδώ υπάρχει πρόβλημα μεγέθους Godzilla. Σ' αυτό το σημείο κάνε google "overuse of inheritance" ή κάτι παρόμοιο. Αν αφιερώσεις χρόνο θα δεις ότι δε μιλάω για ένα "αφηρημένο" πρόβλημα αλλά για πραγματική μάστιγα, από τις οποίας τα νύχια αν θέλεις να σώσεις κάποιον πρέπει αφού περάσει τη Java να κάτσεις να του πεις "λοιπόν, όλα αυτά που έχεις μάθει ξέχασέ τα γιατί είναι λάθος, θα το πάρουμε πάλι από την αρχή". Στην προκειμένη περίπτωση το παράδειγμα που επιλέχθηκε είναι τελείως ακατάλληλο γιατί υπάρχουν Ν "είδη αθλητών" και δεν είναι καθόλου ξεκάθαρο για ποιό λόγο το κάθε είδος πρέπει να είναι διαφορετικό από τα άλλα σε επίπεδο type system, δηλαδή δεν υπάρχει καλή προφανής απάντηση στην ερώτηση "τι ακριβώς προσφέρει η ύπαρξη και μόνο της class ath-stoivou?". Υπάρχει η κακή προφανής απάντηση "προσφέρει ότι είναι προφανές στο φοιτητή μου πού πρέπει να γράψει extends για να τον περάσω". Το οποίο είναι ικανός λόγος ύπαρξης της class αν θέλεις να περάσεις το μάθημα, αλλά όχι αν θέλεις να μάθεις προγραμματισμό. 4
ZAKKWYLDE Δημοσ. 19 Ιουνίου 2014 Δημοσ. 19 Ιουνίου 2014 Αν θες να ανήκει σε 2 κλάσεις δεν μπορείς, για αυτό είναι τα interfaces. Η Java δεν υποστηρίζει κληρονομικότητα σε πάνω από 1 κλάσεις. Μπορεί να τον κάνει να φρικάρει λίγο και να χρησιμοποποιήσει default method implementations που υποστηρίζει η Java 8 για τα interfaces
vagg77 Δημοσ. 19 Ιουνίου 2014 Μέλος Δημοσ. 19 Ιουνίου 2014 Εχω ειδη φρικαρει για αυτο και αποφασισα να προχωρησω στην 4 και να την λυσω. Η επομενη ερωτηση θα ειναι λογικα και η τελευταια μου γτ δεν εχω αλλο θεμα με τις αλλες ασκησεις. Εχω φτιαξει τον κωδικα της 4 αλλα παιρνω τα εξης errors : SMWindow.java:83: error: class CheckWindow is public, should be declared in a file named CheckWindow.javapublic class CheckWindow^SMWindow.java:62: error: no suitable constructor found for MWindow()public class SMWindow extends MWindow{^constructor MWindow.MWindow(int) is not applicable(actual and formal argument lists differ in length)constructor MWindow.MWindow(boolean) is not applicable(actual and formal argument lists differ in length)2 errors class Window { public static int count = 0; public int size = 3; public Window() { this.size = 0; count++; } public void setSize(int x) { size = x; } public void printSize1() { System.out.println(size); } } class MWindow extends Window{ protected int size = 1; protected boolean dmode; String smaller = ""; public MWindow(boolean dmode) { this.dmode = dmode; } public MWindow(int size) { this.size = size; } public void setSize1(int x) { size = --x; } public void setSize2(int x) { super.setSize(x); } public void printSize1() { System.out.println(size); } public void printSize2() { System.out.println(super.size); } public String smaller(SMWindow sw1, SMWindow sw2) { if (sw1.Ew<sw2.Ew) smaller = "sw1"; else smaller = "sw2"; return smaller; System.out.println("Το μικροτερο ειναι το " + smaller); } } public class SMWindow extends MWindow{ int plies; float diagonal,Ep,Ew; public float win_area (int diagonal) { Ew = ( (diagonal^2) / 2.0f ); return Ew; } public float ply_area (int plies) { Ep = Ew / plies; return Ep; } public void printInfo() { System.out.println("Εμβαδο Παραθυρου = " + Ew); System.out.println("Εμβαδο Παραθυροφυλλου = " + Ep); } } public class CheckWindow { public static void main(String args[]) { MWindow w1 = new MWindow (true); MWindow w2 = new MWindow (7); Window w = new Window(); System.out.println(w1.size); System.out.println(w2.dmode); System.out.println(w.count); w.setSize(6); w1.setSize(4); System.out.println(w1.size); w1.setSize(5); System.out.println(w1.size); w1.setSize2(5); w1.printSize1(); w1.printSize2(); SMWindow sw1 = new SMWindow(); SMWindow sw2 = new SMWindow(); sw1.ply_area(3); sw1.win_area(12); sw2.ply_area(4); sw2.win_area(16); sw1.printInfo(); sw2.printInfo(); SMWindow smaller = new SMWindow(); smaller.smaller(sw1,sw2); } } Εχω κατασκευασει την νεα κλαση SMWindow και την νεα μεθοδο smaller στην ΜWindow και φτιαχνω αντικειμενα και καλω τις μεθοδους στην CheckWindow.
defacer Δημοσ. 19 Ιουνίου 2014 Δημοσ. 19 Ιουνίου 2014 Ποιά ακριβώς είναι η απορία σου; Τα errors λένε ακριβώς ποιό είναι το πρόβλημα.
vagg77 Δημοσ. 19 Ιουνίου 2014 Μέλος Δημοσ. 19 Ιουνίου 2014 Δεν καταλαβαινω τι πρεπει να κανω για να τα διορθωσω π.χ για πιο λογο δεν μου φτιαχνει το αρχειο CheckWindow.java στο φακελο και εχει τα αλλα
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα