Alithinos Δημοσ. 17 Μαΐου 2016 Δημοσ. 17 Μαΐου 2016 Επειδη δεν γνωριζω την εννοια του oop, φανταζομαι εννοεις οτι γραφουν με διαδικασιακο - a la C- τροπο τη C++... Παμε pm Object Oriented Programming - Αντικειμενοστραφής Προγραμματισμός. Στην αρχή μπορεί να σε μπερδέψει το κόνσεπτ. Για εμένα, που μαθαίνω εδώ και 8 περίπου μήνες, (και ξεκίνησα απ το 0) τους 4 πρώτους μήνες μου πήρε να καταλάβω το κόνσεπτ της αφηρημάδας (abstraction) του oop. Από όταν αντιλήφθηκα και κατανόησα τι ακριβώς παίζει, άρχισα να 'πετάω' και να προχωράω τη μάθηση μου πολύ πιο γρήγορα. Απλά πρέπει να βρεις κάποιον να στο εξηγήσει με τα κατάλληλα λόγια, γιατί αρκετές εξηγήσεις είτε είναι 'ξερές' είτε χρησιμοποιούν αχρείαστα ασυνήθιστες λέξεις και τρόπους, κάνοντας τα απλά να φαίνονται πολύπλοκα, και τα πολύπλοκα απλά.
M2000 Δημοσ. 17 Μαΐου 2016 Δημοσ. 17 Μαΐου 2016 Μην νομίζεις βέβαια ότι αυτοί που δουλεύουν με αντικείμενα κατανοούν το abstraction (ούτε εγώ το καταλαβαίνω...δεν κάνεις μια αναφορά εδώ;...)
Alithinos Δημοσ. 17 Μαΐου 2016 Δημοσ. 17 Μαΐου 2016 Δεν νομίζω να είμαι ο κατάλληλος για να το επεξηγήσει. Το να ξέρεις κάτι είναι ένα πράγμα, και η ικανότητα του να μεταβιβάζεις αυτό που ξέρεις κάτι άλλο. Εκτός αυτού δεν έχω αρκετό χρόνο τώρα, γιατί έχω ραντεβού στο λογιστή σε λίγο και θα φύγω. Θα κάνω μια φιλότιμη προσπάθεια όμως κατά το βραδάκι. 1
Ilias95 Δημοσ. 17 Μαΐου 2016 Δημοσ. 17 Μαΐου 2016 Συγγνώμη η M2000 δεν είναι αντικειμενοστρεφής; Είναι δυνατόν να έχεις αναπτύξει μια OO γλώσσα χωρίς να κατανοείς την έννοια του abstraction;
sundance_kid Δημοσ. 17 Μαΐου 2016 Δημοσ. 17 Μαΐου 2016 Η απλή έννοια του abstraction: κρύβω ότι δεν χρειάζεται να μάθουν οι υπόλοιποι, για να αποφύγω μπερδέματα. Με απλά -μη προγραμματιστικά- λόγια: Κανονίζω να συναντηθώ με κάποιον απο το φόρουμ. Είμαστε 2 ανεξάρτητα αντικείμενα, χωρίς να γνωρίζει το ένα το άλλο. Κανονίζουμε να συναντηθούμε στο σύνταγμα. Για να ολοκληρωθεί η διαδικασία της αναγνώρισης και της συνάντησης, οι πληροφορίες που θα ανταλλαξουμε, θα είναι πιθανόν το χρώμα μαλλιών, το σωματότυπο και η αμφίεση. Προφανώς δεν αφορά κανέναν απ τους δυο μας, την διαδικασία που θα ακολουθήσει ο άλλος για να φτάσει εκεί, αν έχει φάει πρωινό, ή τι κάρτα γραφικών έχει το pc του. 2
paparovic Δημοσ. 17 Μαΐου 2016 Δημοσ. 17 Μαΐου 2016 το κόνσεπτ της αφηρημάδας (abstraction) του oop Κάθε φορά που βλέπω "μεταφρασμένους" όρους, I cringe (γενικά το λέω, όχι για εσένα συγκεκριμένα). Η απλή έννοια του abstraction: κρύβω ότι δεν χρειάζεται να μάθουν οι υπόλοιποι, για να αποφύγω μπερδέματα. Πολύ ωραία η απάντηση. Να ψειρίσω 2 πράγματα. α) Το κρύβω δεν είναι η καλύτερη επιλογή λέξης εδώ, καθώς παραπέμπει στο encapsulation. β) Το abstration έχει να κάνει με το επίπεδο του concept και του context κατά βάση. Για παράδειγμα, ένας μαθητής είναι ένα πολύπλοκο ον με πολύ ... functionality. Αν φτιάχνω μια βάση βαθμολογιών, "αφαιρώ" (όχι κρύβω) όλα τα άλλα χαρακτηριστικά του μαθητή και κρατάω μόνο αυτό που με ενδιαφέρει για την βάση - π.χ. το τι έγραψε στο τάδε μάθημα και πότε. Είναι η απλοποίηση δλδ. του υποκειμένου μέσω της αφαίρεσης των πάντων πλην αυτών που μου χρειάζονται (concept) για αυτό που θέλω να φτιάξω (context). 2
sundance_kid Δημοσ. 17 Μαΐου 2016 Δημοσ. 17 Μαΐου 2016 α) Το κρύβω δεν είναι η καλύτερη επιλογή λέξης εδώ, καθώς παραπέμπει στο encapsulation. Και έχεις απόλυτο δίκαιο! Απλά δεν μπόρεσα να το εκφράσω διαφορετικά, μήν έλεγα να "προστατέψω"... 1
iceblade Δημοσ. 17 Μαΐου 2016 Δημοσ. 17 Μαΐου 2016 Και έχεις απόλυτο δίκαιο! Απλά δεν μπόρεσα να το εκφράσω διαφορετικά, μήν έλεγα να "προστατέψω"... Νομίζω ότι η έννοια του abstraction δεν έχει να κάνει όυτε με το να "κρύβεις" η να "προστατεύεις" (το ίδιο πράγμα είναι) δεδομένα από π.χ. τους clients μιας κλάσεις. Περισσότερο έχει να κάνει με το όταν έχεις παρόμοιες λειτουργίες σε διάφορα μέρη του προγράμματος να μην υλοποιείς το ίδιο πράγμα συνέχεια αλλά να αφαιρείς/γενικεύεις τη λειτουργικότητα και να την υλοποιείς σε ένα σημείο. Από το αντίστοιχο άρθρο της Wikipedia: Each significant piece of functionality in a program should be implemented in just one place in the source code. Where similar functions are carried out by distinct pieces of code, it is generally beneficial to combine them into one by abstracting out the varying parts. Στον OOP αυτό μπορείς να το πετύχεις με inheritance ή aggregation.
M2000 Δημοσ. 17 Μαΐου 2016 Δημοσ. 17 Μαΐου 2016 Συγγνώμη η M2000 δεν είναι αντικειμενοστρεφής; Είναι δυνατόν να έχεις αναπτύξει μια OO γλώσσα χωρίς να κατανοείς την έννοια του abstraction; Ναι! Υπάρχει όμως περίπτωση να μιλάμε για κάτι που το κατανοώ αλλά δεν το έχω ονομάσει έτσι! Απλά πράγματα...θα πάρουμε τόσες γνώμες όσοι και αυτοί που θα απαντήσουν!
Alithinos Δημοσ. 17 Μαΐου 2016 Δημοσ. 17 Μαΐου 2016 Κάθε φορά που βλέπω "μεταφρασμένους" όρους, I cringe (γενικά το λέω, όχι για εσένα συγκεκριμένα). εγώ δεν έχω πρόβλημα, αν οι όροι είναι μεταφρασμένοι αυτολεξή και κυριολεκτικά, αλλά όταν είναι ότι να ναι. κάτι που δυστυχώς γίνεται πολύ εκτεταμένα. πχ το at "@" (στο / στη / στον) να το λένε παππάκι. τη συστοιχία (array) πίνακα (border). τον φάκελο (file) να τον λένε αρχείο (arhive) το χαρτοφυλάκιο (folder) να το λένε φάκελο (file) και το αρχείο (archive) να το λεν χαρτοφυλάκιο (folder)
M2000 Δημοσ. 17 Μαΐου 2016 Δημοσ. 17 Μαΐου 2016 Πώς φαίνεται το Διάρθρωση για το Buffer; Διάρθρωση μνήμης σε νοητά χωρίσματα, και με ερμηνεία όπως Ακέραιος!
Moderators Kercyn Δημοσ. 17 Μαΐου 2016 Moderators Δημοσ. 17 Μαΐου 2016 Γιατί να μην το πεις buffer; Γιατί πρέπει σώνει και καλά να αλλάξουμε την ορολογία; 1
Alithinos Δημοσ. 17 Μαΐου 2016 Δημοσ. 17 Μαΐου 2016 Δεν νομίζω να είμαι ο κατάλληλος για να το επεξηγήσει. Το να ξέρεις κάτι είναι ένα πράγμα, και η ικανότητα του να μεταβιβάζεις αυτό που ξέρεις κάτι άλλο. Εκτός αυτού δεν έχω αρκετό χρόνο τώρα, γιατί έχω ραντεβού στο λογιστή σε λίγο και θα φύγω. Θα κάνω μια φιλότιμη προσπάθεια όμως κατά το βραδάκι. Το πρόβλημα με την έννοια του abstraction, είναι ότι η ίδια η έννοια της abstraction είναι abstract. Είναι μια αφηρημένη έννοια που αφορά το πως εφαρμόζονται άλλες αφηρημένες έννοιες στη πράξη. Άρα λοιπόν δεν είναι 1 το abstraction, αλλά πολλά. Υπάρχει λοιπόν ένα abstraction, αυτό που δηλώνουμε μεθόδους, κλάσεις και άλλα ως abstract. Σε αυτή τη περίπτωση εννοούμε πως δηλώνουμε μόνο την ιδέα πίσω από αυτό που πάμε να δημιουργήσουμε, και όχι το ίδιο το 'υλικό' αντίτυπό του. Μια abstract μέθοδος λοιπόν δεν έχει κάποια λειτουργικότητα η ίδια, αλλά μπορούν να υλοποιηθούν μέθοδοι εξ αυτής. Απ την άλλη υπάρχει και το class abstraction, όπου έχεις μια κλάση που αποτελεί τη πρότυπη ιδέα άλλων κλάσεων, και η ίδια η πρώτη κλάση δε κάνει τίποτα. Μετά έχεις και το γεγονός ότι η ίδια η κλάση, ακόμα και αν δεν δηλώνεται σαν abstract όπως εξηγήθηκε η abstract class από πάνω, είναι και η ίδια, σε γενικότερο και υψηλότερο επίπεδο, μια αφηρημένη έννοια, ένα abstraction. Υπάρχουν δηλαδή διαφορετικά επίπεδα αφηρημάδας, σαν το κρεμμύδι ένα πράγμα. Έπειτα έχεις και κλάσεις που είναι μέσα σε άλλες κλάσεις, εντολές που είναι μέσα σε μεθόδους, που είναι μέσα σε υπό-κλάσεις που δηλώνονται σε άλλες κλάσεις, που και αυτές με τη σειρά τους κληρονομούν από άλλη κλάση, η οποία άλλη κλάση μπορεί να κληρονομεί είτε από abstract κλάσση ή inteface, και όλα μαζί είναι σε namespace, το οποίο μπορεί να είναι σε άλλο namespace, και το namespace μπορεί να είναι με άλλα namespaces σε ένα assembly ή να είναι απλωμένο σε πολλά assemblies... Εντάξει στην αρχή όλα αυτά είναι σχεδόν σίγουρο ότι θα σε μπερδέψουν. Το ένα μες το άλλο, η ιδέα της ιδέας μιας άλλης ιδέας που είναι μέσα σε άλλη ιδέα, η οποία με τη σειρά της είναι σε άλλη ιδέα, και καθότανε και κένταγε η κόρη το μαντήλι, ντίλι ντίλι ντίλι!!! Αλλά ντάξει, άμα το ακούσεις ή διαβάσεις αρκετές φορές, και ακόμα καλύτερα από διαφορετικούς ανθρώπους, κάποια στιγμή το καταλαβαίνεις και λες "Αυτό ήταν ?" 1
M2000 Δημοσ. 17 Μαΐου 2016 Δημοσ. 17 Μαΐου 2016 (επεξεργασμένο) Για το Buffer (offtopic) Το λέω και Buffer αλλά πρέπει να βάλω και την ελληνική ονομασία Έχω διπλό λεξιλόγιο και μάλιστα υπάρχει περίπτωση στα αγγλικά μια λέξη να χρησιμοποιείται σε ορισμένες περιπτώσεις περισσότερες φορές. Π.χ οι λέξεις Καθαρό και Clear καθαρίζουν τις μεταβλητές ή όποιες δείχνουμε όταν είναι εντολή. Στο Buffer, το Buffer Clear alfa as byte*100 καθαρίζει την μνήμη των 100 bytes, αλλά στα ελληνικά είναι (κρατάω τη μεταβλητή ως έχει) Διάρθρωση κενή alfa ως ψηφίο*100 αντί για ψηφίο μπορώ να δώσω Δομή κάτι1 { όνομα ως ψηφίο*100 τιμή1 ως διπλός*5 } Οπότε τα Διάρθρωση και Δομή ταιριάζουν! (δεν υπάρχει Free γίνεται αυτόματα γιατί το alfa είναι αντικείμενο, και η Free είναι στο τελείωμα) Επεξ/σία 17 Μαΐου 2016 από M2000
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα