Σε αυτό το άρθρο, θα εισαχθείτε στον αντικειμενοστρεφή προγραμματισμό στο Kotlin. Θα μάθετε τι είναι μια τάξη, πώς να δημιουργείτε αντικείμενα και να το χρησιμοποιείτε στο πρόγραμμά σας.
Το Kotlin υποστηρίζει λειτουργικό και αντικειμενοστραφή προγραμματισμό.
Το Kotlin υποστηρίζει λειτουργίες όπως λειτουργίες υψηλότερης τάξης, τύπους λειτουργιών και λάμδα που το καθιστούν μια εξαιρετική επιλογή για εργασία σε στυλ λειτουργικού προγραμματισμού. Θα μάθετε για αυτήν την ιδέα σε επόμενα κεφάλαια. Αυτό το άρθρο θα επικεντρωθεί σε αντικειμενοστρεφή στυλ προγραμματισμού στο Kotlin.
Αντικειμενοστραφής προγραμματισμός (OOP)
Σε αντικειμενοστρεφή στυλ προγραμματισμού, μπορείτε να χωρίσετε ένα πολύπλοκο πρόβλημα σε μικρότερα σύνολα δημιουργώντας αντικείμενα.
Αυτά τα αντικείμενα έχουν δύο χαρακτηριστικά:
- κατάσταση
- η ΣΥΜΠΕΡΙΦΟΡΑ
Ας πάρουμε μερικά παραδείγματα:
- Η λάμπα είναι ένα αντικείμενο
- Μπορεί να βρίσκεται σε κατάσταση ενεργοποίησης ή απενεργοποίησης.
- Μπορείτε
turn on
καιturn off
λάμπα (συμπεριφορά).
- Το ποδήλατο είναι ένα αντικείμενο
- Έχει τρέχουσες ταχύτητες, δύο τροχούς, αριθμό ταχυτήτων κ.λπ. καταστάσεις.
- Έχει συμπεριφορά φρεναρίσματος, επιτάχυνσης, αλλαγής γραναζιών κ.λπ.
Θα μάθετε για τις λεπτομέρειες λεπτομέρειας ενός αντικειμενοστρεφούς προγραμματισμού όπως: ενθυλάκωση δεδομένων, κληρονομικότητα και πολυμορφισμός καθώς συνεχίζουμε. Αυτό το άρθρο θα επικεντρωθεί στα βασικά για να κρατήσει τα πράγματα απλά.
Συνιστώμενη ανάγνωση: Τι είναι ένα αντικείμενο;
Μάθημα Kotlin
Πριν δημιουργήσετε αντικείμενα στο Kotlin, πρέπει να ορίσετε μια τάξη.
Η τάξη είναι ένα σχεδιάγραμμα για το αντικείμενο.
Μπορούμε να σκεφτούμε την τάξη ως σκίτσο (πρωτότυπο) ενός σπιτιού. Περιέχει όλες τις λεπτομέρειες σχετικά με τα πατώματα, τις πόρτες, τα παράθυρα κ.λπ. Με βάση αυτές τις περιγραφές χτίζουμε το σπίτι. Το σπίτι είναι το αντικείμενο.
Δεδομένου ότι πολλά σπίτια μπορούν να κατασκευαστούν από την ίδια περιγραφή, μπορούμε να δημιουργήσουμε πολλά αντικείμενα από μια τάξη.
Πώς να ορίσετε μια τάξη στο Kotlin;
Για να ορίσετε μια τάξη στο Kotlin, class
χρησιμοποιείται η λέξη-κλειδί:
class ClassName (// ιδιοκτησία // λειτουργία μέλους…)
Ακολουθεί ένα παράδειγμα:
class Lamp (// property (data member) private var isOn: Boolean = false // μέλος function fun turnOn () (isOn = true) // μέλος function fun turnOff () (isOn = false))
Εδώ, ορίσαμε μια τάξη με το όνομα Λάμπα.
Η κλάση έχει μια ιδιότητα isOn (ορίζεται με τον ίδιο τρόπο ως μεταβλητή), και δύο συναρτήσεις μελών turnOn()
και turnOff()
.
Συνιστώμενη ανάγνωση: Λειτουργίες Kotlin
Στο Kotlin, είτε το ακίνητο πρέπει να αρχικοποιηθεί είτε να δηλωθεί abstract
( Επισκεφθείτε: Kotlin Abstract Class για να μάθετε περισσότερα). Στο παραπάνω παράδειγμα, η ιδιότητα isOn αρχικοποιείται σε false
.
Οι τάξεις, τα αντικείμενα, οι ιδιότητες, η λειτουργία μέλους κ.λπ. μπορούν να έχουν τροποποιητές ορατότητας. Για παράδειγμα, η ιδιότητα isOn είναι ιδιωτική. Αυτό σημαίνει ότι η ιδιότητα isOn μπορεί να αλλάξει μόνο από την κατηγορία Lamp.
Άλλοι τροποποιητές ορατότητας είναι:
private
- ορατό (με δυνατότητα πρόσβασης) μόνο από το εσωτερικό της τάξης.public
- ορατό παντού.protected
- ορατό στην τάξη και την υποκατηγορία της.internal
- οποιοσδήποτε πελάτης μέσα στη μονάδα μπορεί να έχει πρόσβαση σε αυτούς.
Θα μάθετε για protected
και internal
τροποποιητές αργότερα στο άρθρο τροποποιητών ορατότητας Kotlin.
Εάν δεν καθορίσετε τον τροποποιητή ορατότητας, θα είναι public
από προεπιλογή.
Στο παραπάνω πρόγραμμα, turnOn()
και οι turnOff()
λειτουργίες των μελών είναι public
, ενώ η ιδιότητα isOn είναι ιδιωτική.
Αντικείμενα Kotlin
Όταν ορίζεται η κλάση, καθορίζεται μόνο η προδιαγραφή για το αντικείμενο. δεν έχει εκχωρηθεί μνήμη ή χώρος αποθήκευσης.
Για να αποκτήσετε πρόσβαση σε μέλη που ορίζονται στην τάξη, πρέπει να δημιουργήσετε αντικείμενα. Ας δημιουργήσουμε αντικείμενα κατηγορίας Λαμπτήρα.
class Lamp ( // property (data member) private var isOn: Boolean = false // member function fun turnOn() ( isOn = true ) // member function fun turnOff() ( isOn = false ) ) fun main(args: Array) ( val l1 = Lamp() // create l1 object of Lamp class val l2 = Lamp() // create l2 object of Lamp class )
Αυτό το πρόγραμμα δημιουργεί δύο αντικείμενα l1 και l2 της κατηγορίας Lamp. Η ιδιότητα isOn και για τους δύο λαμπτήρες l1 και l2 θα είναι false
.
Πώς να αποκτήσετε πρόσβαση σε μέλη;
Μπορείτε να αποκτήσετε πρόσβαση σε ιδιότητες και λειτουργίες μελών μιας κλάσης χρησιμοποιώντας .
συμβολισμό. Για παράδειγμα,
l1.turnOn ()
Αυτή η δήλωση καλεί τη συνάρτηση turnOn () για αντικείμενο l1.
Ας πάρουμε ένα άλλο παράδειγμα:
l2.isOn = αλήθεια
Here, we tried to assign true
to isOn property of l2 object. Note that, isOn property is private
, and if you try to access isOn from outside the class, an exception is thrown.
Example: Kotlin Class and Object
class Lamp ( // property (data member) private var isOn: Boolean = false // member function fun turnOn() ( isOn = true ) // member function fun turnOff() ( isOn = false ) fun displayLightStatus(lamp: String) ( if (isOn == true) println("$lamp lamp is on.") else println("$lamp lamp is off.") ) ) fun main(args: Array) ( val l1 = Lamp() // create l1 object of Lamp class val l2 = Lamp() // create l2 object of Lamp class l1.turnOn() l2.turnOff() l1.displayLightStatus("l1") l2.displayLightStatus("l2") )
When you run the program, the output will be:
l1 Lamp is on. l2 Lamp is off.
In the above program,
Lamp
class is created.- The class has a property isOn and three member functions
turnOn()
,turnOff()
anddisplayLightStatus()
. - Two objects l1 and l2 of Lamp class are created in the
main()
function. - Here,
turnOn()
function is called using l1 object:l1.turnOn()
. This method sets isOn instance variable of l1 object totrue
. - And,
turnOff()
function is called using l2 object:l1.turnOff()
. This method sets isOff instance variable of l2 object tofalse
. - Στη συνέχεια, η
displayLightStatus()
συνάρτηση καλείται για αντικείμενα l1 και l2 που εκτυπώνουν κατάλληλο μήνυμα ανάλογα με το αν η ιδιότητα isOn είναι αληθής ήfalse
.
Σημειώστε ότι, η ιδιότητα isOn αρχικοποιείται false
εντός της κλάσης. Όταν δημιουργείται ένα αντικείμενο της κλάσης, η ιδιότητα isOn για το αντικείμενο αρχικοποιείται false
αυτόματα. Επομένως, δεν είναι απαραίτητο το αντικείμενο l2 να καλέσει turnOff()
για να ορίσει την ιδιότητα isOn false
.
Για παράδειγμα:
class Lamp ( // property (data member) private var isOn: Boolean = false // member function fun turnOn() ( isOn = true ) // member function fun turnOff() ( isOn = false ) fun displayLightStatus() ( if (isOn == true) println("lamp is on.") else println("lamp is off.") ) ) fun main(args: Array) ( val lamp = Lamp() lamp.displayLightStatus() )
Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:
η λυχνία είναι σβηστή.
Αυτό το άρθρο είναι απλώς μια εισαγωγή στον αντικειμενοστρεφή προγραμματισμό στο Kotlin. Ελέγξτε αυτά τα κεφάλαια διαδοχικά για να μάθετε περισσότερα:
- Κατασκευαστές και αρχικοποιητές Kotlin
- Kotlin αυτή η λέξη-κλειδί
- Kotlin Nested Class