Media Belajar Bahasa Pemrograman | by APPKEY

SwiftTutorial Swift 38 : Memahami Swift Access Control

Tutorial Swift 38 : Memahami Swift Access Control

-

Last Updated on February 11, 2023 by

Pada dasarnya, swift access control digunakan untuk menentukan bagaimana tipe, fungsi, dan deklarasi lain dapat diakses di proyek Anda. Anda dapat mengatur aksesibilitas (visibilitas) kelas, struct, enum, fungsi, variabel, dan sebagainya.

Swift menyediakan berbagai access control yang dapat digunakan untuk tujuan yang berbeda. Berikut di antaranya:

  • Open
  • Public
  • Internal
  • Fileprivate
  • Private

Pada pembahasan kali ini kami akan menjelaskan apa itu Swift access control dan contoh kode yang dapat digunakan untuk dapat menjalankan access control.

Swift Access Control

swift access control, access control

Untuk memberi batasan akses ke blok kode, modul dan abstraksi dilakukan menggunakan kontrol akses. Kelas, struktur, dan pencacahan dapat diakses sesuai dengan properti, metode, penginisialisasi, dan subskripnya dengan mekanisme Access control. Konstanta, variabel, dan fungsi dalam protokol dibatasi dan diizinkan akses secara global dan lokal melalui Swift access control. Kontrol akses yang diterapkan pada properti, tipe, dan fungsi dapat disebut sebagai ‘entitas’.

Model kontrol akses mengacu pada modul dan file sumber.

Modul didefinisikan sebagai unit distribusi kode tunggal dan dapat diimpor menggunakan kata kunci ‘impor’. File sumber digambarkan sebagai satu unit file kode dengan modul untuk mengakses berbagai jenis dan fungsi.

Ada 3 kontrol akses yang akan kita bahas kali ini di antaranya sebagai berikut :

Public

Public memungkinkan entitas untuk digunakan di dalam file sumber apa pun dari modul pendefinisiannya, dan juga di file sumber dari modul lain yang mengimpor modul pendefinisian.

Misalnya, Anda telah membuat modul terpisah bernama Utilitas untuk kelas pengunduhan gambar, awalnya kelas tersebut terlihat seperti ini:

class ImageDownloader { ... }

Seperti yang Anda lihat, tidak ada penentu Swift access control di sini, ketika kita akan mencoba mengakses kelas ini dari aplikasi utama atau modul lain, kompiler akan memunculkan kesalahan yang mengatakan “tidak dapat mengakses ImageDownloader intern class”.

Artikel Terkait  Tutorial Swift 42: Belajar Cara Menggunakan Swift Ranges

Untuk membuat kelas dapat diakses oleh modul lain, Anda harus menambahkan pengubah akses publik ke dalamnya seperti:

public class ImageDownloader { ... }

Internal (kontrol akses tingkat modul)

Kontrol akses ini memungkinkan entitas untuk digunakan dalam file sumber apa pun dari modul pendefinisiannya, tetapi tidak dalam file sumber apa pun di luar modul itu. Secara default jika Anda tidak menentukan pengubah akses apa pun, setiap entitas diperlakukan sebagai internal.

Access Control Pribadi (kontrol akses tingkat kelas)

Swift access control ini membatasi penggunaan entitas ke deklarasi terlampir, dan ke ekstensi deklarasi itu yang ada di file yang sama. Gunakan akses pribadi untuk menyembunyikan detail implementasi dari fungsionalitas tertentu saat detail tersebut hanya digunakan dalam satu deklarasi.

Contoh Kode Swift Access Control

Kontrol Akses untuk jenis Fungsi

Beberapa fungsi memiliki argumen yang dideklarasikan dalam fungsi tanpa adanya nilai pengembalian apapun. Program berikut mendeklarasikan a dan b sebagai argumen untuk fungsi sum(). Di dalam fungsi itu sendiri, nilai untuk argumen a dan b diteruskan dengan memanggil pemanggilan fungsi sum() dan nilainya dicetak sehingga menghilangkan nilai kembalian. Untuk membuat tipe pengembalian fungsi sebagai privat, nyatakan tingkat akses keseluruhan fungsi dengan private access control.

private func sum(x: Int, y: Int) {

   let x = x + y

   let y = x - y

   print(x, y)

}

 

sum(x: 9, y: 4)

sum(x: 7, y: 3)

sum(x: 3, y: 5)

Swift Access Control untuk tipe Pencacahan

public enum Student {

   case Name(String)

   case Mark(Int,Int,Int)

}

var studDetails = Student.Name("Tono")

var studMarks = Student.Mark(78,65,80)

 

switch studMarks {

   case .Name(let studName):

      print("Siswa: \(studName)")

   case .Mark(let Mark1, let Mark2, let Mark3):

      print("Nilai: \(Mark1),\(Mark2),\(Mark3).")

   

}

Pencacahan dalam bahasa Swift  secara otomatis menerima tingkat akses yang sama untuk setiap kasus pencacahan. Pertimbangkan misalnya untuk mengakses nama siswa dan nilai yang diamankan dalam tiga mata pelajaran nama pencacahan dideklarasikan sebagai siswa dan anggota yang ada di kelas enum adalah nama yang termasuk dalam tipe data string, tanda direpresentasikan sebagai mark1, mark2 dan mark3 dari tipe data Integer.

Untuk mendapatkan nama atau nilai siswa yang telah mereka nilai. Sekarang, switch case akan mencetak nama siswa jika blok kasus tersebut dieksekusi jika tidak maka akan mencetak tanda yang diamankan oleh siswa tersebut. Jika kedua kondisi gagal, blok default akan dieksekusi.

Artikel Terkait  Tutorial Swift 31 : Cara Menggunakan Swift Deinitialization

Access Control untuk SubClass

Swift access control memungkinkan pengguna membuat subkelas kelas apa pun yang dapat diakses dalam konteks akses saat ini. Subclass tidak dapat memiliki tingkat akses yang lebih tinggi dari superclass-nya. Pengguna dilarang menulis subclass publik dari superclass internal.

public class length {

   internal func printIt() {

      print("Contoh Penggunaan Super Class")

   }

}




internal class rect: length {

   override internal func printIt() {

      print("Contoh Penggunaan Sub Class")

   }

}




let lengthinstance = length()

lengthinstance.printIt()




let rectinstance = rect()

rectinstance.printIt()

Kontrol Akses untuk Konstanta, variabel, properti, dan subskrip

swift access control, access control

Konstanta, variabel, atau properti Swift 4 tidak dapat dijabarkan sebagai publik didasarkan pada tipenya. Tidak sah menulis properti publik dengan tipe privat. Demikian pula, subskrip tidak boleh lebih publik daripada indeks atau tipe pengembaliannya.

Saat konstanta, variabel, properti, atau subskrip menggunakan jenis privat, konstanta, variabel, properti, atau subskrip juga harus ditandai sebagai privat −

private var privateInstance = SomePrivateClass()

Getter dan Setter Swift Access Control

Getter dan setter untuk konstanta, variabel, properti, dan subskrip secara otomatis menerima tingkat akses yang sama dengan konstanta, variabel, properti, atau subskrip tempat mereka berada.

class Samplepgm {

   var counter: Int = 0{

      willSet(newTotal) {

         print("Count: \(newTotal)")

      }

      didSet {

         if counter > oldValue {

            print("New Count \(counter - oldValue)")

         }

      }

   }

}

 

let NewCounter = Samplepgm()

NewCounter.counter = 100

NewCounter.counter = 800

Kontrol Akses untuk Penginisialisasi dan Penginisialisasi Default

Penginisialisasi khusus dapat diberikan tingkat akses kurang dari atau sama dengan tipe yang diinisialisasi. Penginisialisasi yang diperlukan harus memiliki tingkat akses yang sama dengan kelasnya. Jenis parameter penginisialisasi tidak boleh lebih pribadi daripada tingkat akses penginisialisasi itu sendiri.

Untuk mendeklarasikan setiap subclass dari kata kunci initialize ‘required’ perlu didefinisikan sebelum fungsi init().

class classA {

   required init() {

      let x = 7

      print(x)

   }

}

class classB: classA {

   required init() {

      let y = 3

      print(y)

   }

}

let res = classA()

let print = classB()

Penginisialisasi default memiliki tingkat akses yang sama dengan tipe yang diinisialisasi, kecuali tipe tersebut didefinisikan sebagai publik. Ketika inisialisasi default didefinisikan sebagai publik, itu dianggap internal. Saat pengguna membutuhkan tipe publik agar dapat diinisialisasi dengan penginisialisasi tanpa argumen di modul lain, sediakan penginisialisasi tanpa argumen publik secara eksplisit sebagai bagian dari definisi tipe.

Access Control untuk Protokol

Saat kita mendefinisikan protokol baru untuk mewarisi fungsionalitas dari protokol yang ada, keduanya harus dinyatakan sebagai tingkat akses yang sama untuk mewarisi properti satu sama lain. Kontrol akses Swift 4 tidak akan mengizinkan pengguna untuk menentukan protokol ‘publik’ yang mewarisi dari protokol ‘internal’.

public protocol tcpprotocol {

   init(no1: Int)

}

public class mainClass {

   var no1: Int      

   init(no1: Int) {

      self.no1 = no1

   }

}

class subClass: mainClass, tcpprotocol {

   var no2: Int

   init(no1: Int, no2 : Int) {

      self.no2 = no2

      super.init(no1:no1)

   }

   

   required override convenience init(no1: Int) {

      self.init(no1:no1, no2:0)

   }

}

 

let res = mainClass(no1: 20)

let print = subClass(no1: 30, no2: 50)

 

print("res is: \(res.no1)")

print("res is: \(print.no1)")

print("res is: \(print.no2)")

Kontrol Akses untuk Ekstensi

Swift 4 tidak mengizinkan pengguna untuk menyediakan pengubah tingkat akses eksplisit untuk ekstensi saat pengguna menggunakan ekstensi tersebut untuk menambahkan kesesuaian protokol. Tingkat akses default untuk setiap penerapan persyaratan protokol dalam ekstensi disediakan dengan tingkat akses protokolnya sendiri.

Artikel Terkait  Tutorial Swift 34 : Kupas Tuntas Swift Type Casting dari Nol

Kontrol Akses untuk Generik

Generik memungkinkan pengguna menentukan tingkat akses minimum untuk mengakses batasan tipe pada parameter tipenya.

public struct TOS<T> {

   var items = [T]()

   mutating func push(item: T) {

      items.append(item)

   }

   mutating func pop() -> T {

      return items.removeLast()

   }

}

 

var tos = TOS<String>()

tos.push(item: "Item 1")

print(tos.items)

 

tos.push(item: "Item 2")

print(tos.items)

 

tos.push(item: "Item 3")

print(tos.items)

 

tos.push(item: "Item 4")

print(tos.items)

let deletetos = tos.pop()

Kontrol Akses untuk Tipe Aliases

Pengguna dapat menentukan tipe aliases untuk menangani tipe kontrol akses yang berbeda. Tingkat akses yang sama atau tingkat akses yang berbeda dapat ditentukan oleh pengguna. Saat tipe aliases adalah ‘private’, anggota terkaitnya dapat dideklarasikan sebagai ‘private, internal of public type’. Ketika tipe alias bersifat publik, anggota tidak dapat berupa alias sebagai nama ‘internal’ atau ‘pribadi’

Aliases ​​​​tipe apa pun yang Anda tentukan diperlakukan sebagai tipe berbeda untuk tujuan kontrol akses. Alias ​​​​jenis dapat memiliki tingkat akses kurang dari atau sama dengan tingkat akses dari jenis aliasnya. Misalnya, aliases tipe privat bisa aliases tipe privat, internal, atau publik, tetapi aliases tipe publik tidak bisa aliases tipe internal atau privat.

public protocol Container {

   associatedtype ItemType

   mutating func append(item: ItemType)

   var count: Int { get }

   subscript(i: Int) -> ItemType { get }

}

struct Stack<T>: Container {

   var items = [T]()

   mutating func push(item: T) {

      items.append(item)

   }

   mutating func pop() -> T {

      return items.removeLast()

   }

   

   mutating func append(item: T) {

      self.push(item: item)

   }

   var count: Int {

      return items.count

   }

   subscript(i: Int) -> T {

      return items[i]

   }

}

func allItemsMatch<

   C1: Container, C2: Container

   where C1.ItemType == C2.ItemType, C1.ItemType: Equatable>

   (someContainer: C1, anotherContainer: C2) -> Bool {

   

   if someContainer.count != anotherContainer.count {

      return false

   }

   

   for i in 0..<someContainer.count {

      if someContainer[i] != anotherContainer[i] {

         return false

      }

   }

   

   return true

}

var tos = Stack<String>()

tos.push(item: "Item 1")

print(tos.items)

 

tos.push(item: "Item 2")

print(tos.items)

 

tos.push(item: "Item 3")

print(tos.items)

 

var eos = ["Item 1", "Item 2", "Item 3"]

print(eos)

Kesimpulan

Access control membatasi akses ke bagian kode Anda dari kode di file dan modul sumber lain. Fitur ini memungkinkan Anda untuk menyembunyikan detail implementasi kode Anda, dan untuk menentukan antarmuka yang disukai agar kode tersebut dapat diakses dan digunakan

Swift access control 4  memiliki 3 kontrol akses. Mereka publik, internal, dan pribadi. Kontrol akses tersebut ditentukan berdasarkan penggunaan dalam modul dan file sumber.

Temukan lebih banyak artikel seri belajar Swift maupun bahasa pemrograman lainnya hanya di CODEKEY. Klik https://codekey.id/ sekarang juga untuk langsung belajar gratis. Sampai bertemu lagi!


Jasa Pembuatan Aplikasi, Website dan Internet Marketing | PT APPKEY
PT APPKEY adalah perusahaan IT yang khusus membuat aplikasi Android, iOS dan mengembangkan sistem website. Kami juga memiliki pengetahuan dan wawasan dalam menjalankan pemasaran online sehingga diharapkan dapat membantu menyelesaikan permasalahan Anda.

Jasa Pembuatan Aplikasi

Jasa Pembuatan Website

Jasa Pembuatan Paket Aplikasi

Jasa Pembuatan Internet Marketing

Tutorial

Subscribe Sekarang

Dapatkan beragam informasi menarik tentang bahasa pemrograman langsung melalui email Anda. Subscribe sekarang dan terus belajar bersama kami!

Blog Post Ranking 10

Tutorial PHP 22 : Cara Membuat Redirect PHP dengan Cepat dan Mudah

Jika Anda melakukan browsing di browser kesayangan Anda, mungkin Anda pernah melihat link yang berisikan “php redirect” atau yang...

Tutorial PHP 23 : Cara Membuat Messages Alert PHP

Alert box atau alert messages digunakan di situs web untuk menampilkan pesan peringatan kepada pengguna bahwa mereka telah memasukkan...

Tutorial PHP 2 : Cara Install PHP, Langkah Awal Belajar PHP

PHP adalah bahasa pemrograman gratis dan open source. Secara teknis tidak perlu menginstal PHP: sebagian besar host web dan...

Tutorial Python 9 : Cara Membuat Looping Python

Pada artikel sebelumnya, Codekey telah menjelaskan tentang Operasi Kondisional Python yang di dalamnya menyinggung tentang percabangan dan perulangan. Belajar...

Tutorial HTML/CSS 23 : Cara Membuat Form Sederhana dengan HTML

Form memiliki peran yang sangat krusial bagi website atau aplikasi untuk menjaga sistem keamanannya. Form HTML digunakan untuk mengumpulkan...

Tutorial SQL 8 : Constraint SQL, Bagaimana Fungsi dan Penggunaannya?

Pada artikel sebelumnya Anda telah mempelajari tentang wildcard SQL, pada artikel kali ini kami akan menjelaskan tentang constraint SQL. Jika...

Tutorial Javascript 8 : Array Javascript, Panduan Lengkap Cara Membuatnya

Seperti bahasa pemrograman yang berorientasi objek lainnya, dalam JavaScript juga terdapat array. Jika Anda memiliki banyak objek yang ingin...

Tutorial SQL 20 : Mari Pelajari Cara Menggunakan Fungsi GROUP by SQL

Pada pembahasan seri Tutorial SQL ke- 20 ini, Codekey akan membahas tentang GROUP BY yang merupakan statement di dalam...

Tutorial Python 7 : Python String Format dan Cara Mudahnya

Anda ingin belajar Python dan ingin menjadi ahli dalam bahasa pemrograman Python? Mari belajar bersama Codekey! Pada pembahasan kali...

Tutorial Python 8 : Langkah Mudah Membuat Operasi Kondisional pada Python

Pada pembahasan sebelumnya, Codekey telah menjelaskan kepada Anda tentang pengoperasian string pada Python mulai dari menggabungkan hingga memanipulasi string...

Bisnis

Online Service

Peluang Bisnis

Model Bisnis

Entrepreneurship

Uang

Ketrampilan

Outsourcing

Monetize

Pemasaran

SEO

Internet Marketing

Dasar Pemasaran

Strategi Pemasaran

Situs Web Analitik

Iklan

Teknologi

Teknologi Terbaru

AI

Komputer

Jaringan

Paling Sering dibaca
Mungkin Anda Menyukainya