kurokokoro Δημοσ. 18 Απριλίου 2019 Δημοσ. 18 Απριλίου 2019 Μετά από μια διαφωνία που είχα σχετικά με την χρήση oop σε mis θα ήθελα να ρωτήσω και την γνωμη άλλων προγραμματιστων. Ένα mis επωφελείται από την χρήση oop προσέγγισης ή είναι καλύτερα να είναι procedural.?
pmav99 Δημοσ. 18 Απριλίου 2019 Δημοσ. 18 Απριλίου 2019 Εγώ πάλι για να είμαι ειλικρινής έχω απορία για το είναι το «mis»...
kurokokoro Δημοσ. 18 Απριλίου 2019 Μέλος Δημοσ. 18 Απριλίου 2019 Spoiler Management information system. Πληροφοριακό σύστημα
mad-proffessor Δημοσ. 18 Απριλίου 2019 Δημοσ. 18 Απριλίου 2019 Πολύ γενικό και αόριστο ερώτημα. Τι system requirements υπάρχουν, ποιο είναι το use case; Θεωρητικά παντού επωφελείται κάποιος απο την αντικειμενοστρέφεια, εκτός απο συγκεκριμένες περιπτώσεις όπου απαιτείται κάποια procedural προσέγγιση για σωστή/ασφαλή χρήση μνήμης (embedded,system/kernel programming).
kurokokoro Δημοσ. 18 Απριλίου 2019 Μέλος Δημοσ. 18 Απριλίου 2019 Η χρήση του mis έχει να κάνει με εισαγωγή δεδομένων από χρήστες και παραγωγή reports. Το πιο περίπλοκο στο όλο σύστημα είναι τα queries στη βάση.
pmav99 Δημοσ. 18 Απριλίου 2019 Δημοσ. 18 Απριλίου 2019 (επεξεργασμένο) Το procedural και το Object Oriented δεν είναι έννοιες τις οποίες μπορείς να αντιμετωπίσεις ως αντίθετες. Η σχέση μεταξύ τους είναι αυτό που στα αγγλικά ονομάζεται orthogonal. Στα ελληνικά φαντάζομαι ότι θα το μεταφράζαμε ως «ανεξάρτητα» Το αν κάτι είναι procedural ή όχι, έχει να κάνει με το control flow του προγράμματος. Αν το control flow είναι σειριακό (πρώτα κάνε αυτό, μετά το άλλο μετά το παράλλο κτλ) τότε έχεις procedural κώδικα. Ένα εναλλακτικό μοντέλο είναι το event based όπου το control flow δεν είναι προκαθορισμένο αλλά εξαρτάται από τον χρήστη (πχ ο χρήστης έκανε κλικ στο κουμπί cancel) Το αν θα χρησιμοποιήσεις αντικειμενα για να μοντελοποιήσεις το πρόβλημα που προσπαθείς να λύσεις είναι άλλο θέμα. Μπορείς να έχεις procedural OOP, καθώς επίσης και event-based OOP (πχ σχεδόν όλα τα GUI libraries αυτό το μοντέλο ακολουθούν). Μπορείς επίσης να έχεις non OOP procedural κώδικα, όπως και non-OOP event based κώδικα. Για περισσότερες πληροφορίες δες εδώ: https://stackoverflow.com/questions/22101731/what-is-the-relation-of-event-driven-and-object-oriented-programming/28135353#28135353 Τέλος, μια σημαντική παράμετρος που παραλείπεις είναι η γλώσσα που θα χρησιμοποιήσεις. Αν πχ γράψεις σε Java, είναι αφύσικο να μην είναι OOP ο κώδικάς σου ενώ αν γράψεις σε lisp-οειδή πάλι, θα είναι αφύσικο αν είναι OOP ο κώδικάς σου... Επεξ/σία 19 Απριλίου 2019 από pmav99 1
kurokokoro Δημοσ. 18 Απριλίου 2019 Μέλος Δημοσ. 18 Απριλίου 2019 (επεξεργασμένο) 57 λεπτά πριν, pmav99 είπε Εγώ πάλι για να είμαι ειλικρινής έχω απορία για το είναι το «mis»... Η γλώσσα είναι php και το framework που έχει στηθεί είναι διάφορες μέθοδοι που καλούνται στατικά. Πχ υπάρχει η κλάση users η οποία έχει στατικές μεθόδους που κάνουν insert update και delete. Το framework αυτό είναι procedural αφού δεν έχει ουσιαστικά τίποτα που να παραπέμπει σε oop. Το βασικό επιχείρημα της άλλης πλευράς είναι πως δεν θα επωφεληθεί ένα τέτοιο σύστημα από oop προσέγγιση. Edit: έχω μπει κι από κινητό και γράφω στο forum σαν πιθηκάκι που έχει πιει σαμπάνια... Εξου και οι άσχετες παραθέσεις Επεξ/σία 18 Απριλίου 2019 από kurokokoro
pmav99 Δημοσ. 19 Απριλίου 2019 Δημοσ. 19 Απριλίου 2019 (επεξεργασμένο) 1 hour ago, kurokokoro said: Το framework αυτό είναι procedural αφού δεν έχει ουσιαστικά τίποτα που να παραπέμπει σε oop. Αν κάτι είναι OOP ή όχι (αν δηλαδή χρησιμοποιεί αντικείμενα ή όχι) είναι ανεξάρτητο με το αν ειναι procedural ή όχι. Τέσπα, για να μη θεωρητικολογήσουμε και άλλο. Είναι νομίζω προφανές ότι ο κώδικας σας είναι procedrual. Αν το ερώτημα σου είναι αν θα έχετε πλεονεκτήματα από τη χρήση custom αντικειμένων ή όχι, η απάντηση είναι εξαρτάται. Σίγουρα γίνεται με αντικείμενα, σίγουρα γίνεται και χωρίς αντικείμενα. Μεταξύ άλλων η απάντηση έχει να κάνει και με την αισθητική του καθενός. Anyway, αν γίνει σωστή μοντελοποίηση των αντικειμένων τότε συνήθως καταλήγεις με ένα κομψό API. Αν πάλι πας σε σκέτες συναρτήσεις τότε συχνά είναι πιο εύκολο να γράψεις tests (δεν χρειάζεται να δημιουργείς instances, να μπλέκεις με mocks κτλ). # OOP class User: def __init__(name): this.name = name def create(): # code that inserts a new record in the database user = User(name='pmav99') user.create() # non OOP def create_new_user(name): # code that inserts a new record in the database create_new_user(name='pmav99') Επεξ/σία 19 Απριλίου 2019 από pmav99 1
lefwiz Δημοσ. 19 Απριλίου 2019 Δημοσ. 19 Απριλίου 2019 Αν η πληροφορία που υπάρχει σε έναν πίνακα αντιστοιχίζεται σε ένα αντικείμενο τότε βολεύει το OOP. Από την άλλη μπορείς να γράψεις όλο το business logic(reports) σε stored procedures και μέσω κάποιου ORM να φτιάξεις custom αντικείμενα για να είναι ποιο εύκολο το mapping της πληροφορίας. Το τελευταίο δε γνωρίζω αν είναι σχεδιαστικά "σωστό", παρόλα αυτά το έχω δοκιμάσει σε project και δούλευε μια χαρά και γρήγορα. 2
solarpower Δημοσ. 21 Απριλίου 2019 Δημοσ. 21 Απριλίου 2019 Με τη php προχώρα όπως να είναι, το ίδιο μπέρδεμα θα υπάρχει στο τέλος. http://www.phpthewrongway.com/ 2
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα