Προς το περιεχόμενο

Arguments σε Objective C


zarzonis

Προτεινόμενες αναρτήσεις

Η ταπεινή μου γνώμη είναι να ασχοληθείς με java ή C# για αρχή μέχρι να καταλάβεις την βασική ιδέα του προγραμματισμού , και να μπορείς να "εφαρμόσεις" την γνώση περί αντικειμένων στα προγράμματά σου. Ειδικά στην Java λόγο ότι όλα είναι ένα αντικείμενο . Θα δεις ότι μόλις καταλάβεις τα βασικά θα σου είναι εύκολο να πας σε όποια γλώσσα θες. Και πάνω από όλα θέλει πολύ coding , ότι μαθαίνεις το δοκιμάζεις .Δεν αρκεί να διαβάζεις τον κώδικα κάποιου άλλου και να τον κατανοείς , πρέπει να είσαι σε θέση να εφαρμόσεις την γνώση σου με στόχο την λύση των δικών σου προβλημάτων.

 

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

Ίσως σε βοηθήσει το παρακάτω site : http://thenewboston.org/

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Στην Java ΔΕΝ ΕΙΝΑΙ όλα ένα αντικείμενο (ένα λάθος που κάνανε κατά την δημιουργία της γλώσσας).

 

Επίσης, έχεις ασχοληθεί με objective C και την κρίνεις έτσι; Για ποιο λόγο θα αποκτήσει κανείς την γνώση περί αντικειμένων με C# και Java και όχι με C++ ή objective C; 

 

 

Επίσης, τι είναι πιο σωστό στον OOP; Να καλείς μεθόδους αντικειμένων ή να στέλνεις μηνύματα στα αντικείμενα; 

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ρε μεγάλε ηρέμησε λίγο. Την γνώμη μου γράφω στον άνθρωπο. Στην java τα πάντα είναι κλήσεις και αντικείμενα.. Λάθος ξελαθος αυτό είναι.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ρε μεγάλε ηρέμησε λίγο. Την γνώμη μου γράφω στον άνθρωπο. Στην java τα πάντα είναι κλήσεις και αντικείμενα.. Λάθος ξελαθος αυτό είναι.

 

 

1ον. Αφού είναι λάθος, πώς "αυτό είναι"; Αφού ΕΙΝΑΙ λάθος. ΔΕΝ ΕΙΝΑΙ ΤΑ ΠΑΝΤΑ αντικείμενα. Elementary στην Java αυτό. 

 

2ον. Το πώς μπορείς να καταλαβαίνεις εάν κάποιος είναι ή όχι ήρεμος από τον γραπτό λόγο, είναι κληρονομικό χάρισμα; Λες και τον καφέ;

 

3ον. Την γνώμη σου την λες, βεβαίως. Για αυτό είναι το forum. Να την στηρίζεις δεν βλέπω... και αυτό κάτι σημαίνει για την γνώμη σου. 

 

 

Πωπωπωπωπ τα μισα να μου΄λεγε

 

iΡε. :P

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Παιδιά έκανα λάθος , ευχαριστώ πολύ όλα τα μέλη του αγαπητού forum που υπάρχουν και μας διορθώνουν , δυστυχώς οι γνώμες μας είναι αβάσιμες . Χίλια συγνώμη για την παραπληροφόρηση φίλες μου , ας διαγράψει κάποιος moderator τα posts μου.Ευχαριστώ 

Timonkaipumpa

για την διόρθωση .Όπως κατάλαβες από το κείμενο μου δεν μπορώ να στηρίζω την γνώμη μου πουθενά οπότε δεν ξανά γράψω στο thread του Προγραμματισμού .Αν μας αξιώσει ο θεός και πιούμε έναν καφέ θα στον πω μετά χαράς.

 

http://www.javaworld.com/javaworld/jw-09-2000/jw-0908-eckelobjects.html

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ένα λάθος της Java είναι ότι υπάρχουν primitive types που ΔΕΝ ΕΙΝΑΙ CLASSES και primitive types που είναι (για την ακρίβεια, τα ίδια primitive types μπορείς να τα χρησιμοποιήσεις ως non classes αλλά και ως classes). 

 

Δυστυχώς, σπάνια κανείς χρησιμοποιεί primitive types ως objects/casses και όλοι χρησιμοποιούν τα "κλασικά", π.χ. int foo = 16. Σε αντίθεση, θα μπορούσε κανείς να χρησιμοποιήσει, π.χ., το:

 

http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html

 

Αλλά δεν το κάνει σχεδόν ποτέ κανείς. 

 

 

 

Άρα, από την στιγμή που υπάρχουν primitive types που ΔΕΝ ΕΙΝΑΙ OBJECTS/CLASSES τότε τα ΠΑΝΤΑ ΔΕΝ ΕΙΝΑΙ objects. 

 

Άρα, αυτό που έγραψες:

 

Στην java τα πάντα είναι [...] αντικείμενα.. Λάθος ξελαθος αυτό είναι.

 

Και είναι λάθος και δεν "αυτό είναι". 

 

 

 

 

 

 

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

 

Το ίδιο ισχύει για τα μηνύματα vs κάλεσμα μεθόδων. 

 

 

 


Και για την ιστορία...

 

Μία pure object oriented γλώσσα είναι η Smalltalk.

 

Αντιγράφω από την Wikipedia:

 

https://en.wikipedia.org/wiki/Smalltalk

 


Smalltalk is a "pure" object-oriented programming language, meaning that, unlike Java and C++, there is no difference between values which are objects and values which are primitive types. In Smalltalk, primitive values such as integers, booleans and characters are also objects, in the sense that they are instances of corresponding classes, and operations on them are invoked by sending messages. A programmer can change the classes that implement primitive values, so that new behavior can be defined for their instances—for example, to implement new control structures—or even so that their existing behavior will be changed. This fact is summarized in the commonly heard phrase "In Smalltalk everything is an object", which may be more accurately expressed as "all values are objects", as variables are not.

 

 

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

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 1 μήνα μετά...

Επαναφέρω το θέμα για να κάνω μια άλλη ερώτηση, ώστε να μην ανοίξω νέο θέμα.

Στο βιβλίο του kochan για objective C  στο πρόγραμμα 8.4(σε περίπτωση που το έχει κάποιος) κάνει τα εξής:

 

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

-(XYPoint *) origin; Επιστρέφει ένα αντικείμενο της κλάσης XYPoint

-(void) setOrigin: (XYPoint *) pt; Δέχεται ως arguement ένα αντικείμενο της κλάσης XYPoint.

 

Στο implementation της κλάσης Rectangle τις ορίζει ως εξής:

 

{

 XYPoint  * origin;

}|

 

-(void) setOrigin: (XYPoint  *) pt

{

   origin = pt

}

 

-(XYPoint *) origin

{

  return origin;

}

 

Μετά πάει στο main αρχείο και δημιουργεί και εκκινεί τα αντικείμενα myRect και myPoint της κλάσης Rectangle και XYPoint.

 

Το σημείο που δεν μπορώ να καταλάβω τί ακριβώς κάνει το πρόγραμμα είναι εδώ. Έχει την εντολή myRect.origin = myPoint;

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

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

Λοιπόν, πριν την εντολή που δεν κατάλαβα καλεί δύο setters. Μια για το κάθε αντικείμενο.

Οι εντολές είναι:

[myPoint setX: 100 andY: 200];

[myRect setWidth: 5 andHeight: 8];

 

Οι τιμές αυτές σύμφωνα με τη δήλωση που έχουν οι setters αποθηκεύονται στις μεταβλητές x,y,width και height.

Οπότε το αντικείμενο myPoint έχει στις μεταβλητές του χ και v τις τιμές 100 και 200 ενώ το myRect στις δικές του width και height το 5 και το 8.

 

Στην εντολή που δεν κατάλαβα, αρχικά υπολογίζεται το αριστερό μέρος. Το αριστερό μέλος συγκεκριμένα είναι αυτό που δεν κατάλαβα. Στο αντικείμενο myRect γράφοντας .origin στέλνεται η μέθοδος origin ή ο setter setOrigin;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...