Media Belajar Bahasa Pemrograman | by APPKEY

SwiftTutorial Swift 36 : Belajar Menggunakan Swift Protocols

Tutorial Swift 36 : Belajar Menggunakan Swift Protocols

-

Swift protocols adalah komponen dasar dalam pemrograman Swift yang wajib Anda kuasai. Apa itu protocols, fungsi dan bentuk sintaksisnya? Semuanya telah kami sajikan lengkap di sini!

Protokol Swift menyediakan cetak biru untuk fungsi Methods, properties, dan persyaratan pemrograman lainnya. Namun pada prakteknya, protocols lebih sering digambarkan sebagai kerangka metode atau properti alih-alih sebuah implementasi.

Lebih lanjut, implementasi metode dan properti dapat dilakukan dengan cara mendefinisikan class, function dan enumeration. Kesesuaian protokol Swift didefinisikan sebagai methods atau properties yang memenuhi persyaratan protokol.

Ingin tahu lebih banyak seputar sistem protocols di Swift? Yuk langsung simak penjelasan selengkapnya pada seri belajar Swift berikut ini!

Belajar Swift: Sintaksis Swift Protocols

swift protocols, belajar swift

Protokol di Swift mempunyai bentuk sintaksis yang sama dengan class, structure, dan enumeration. Adapun sintaksis Swift protocols adalah:

protocol SomeProtocol {

   // protocol definition

}

Dengan catatan bahwa protokol dideklarasikan setelah nama tipe class, structure atau enumeration. Menjalankan protokol Single dan Multiple juga dimungkinkan.

Jika Anda ingin menggunakan protokol ganda (Multiple), maka Anda hanya perlu memisahkannya dengan tanda koma. Contohnya seperti ini:

struct SomeStructure: Protocol3, Protocol4 {

   // structure definition

}

Kasus lainnya adalah ketika ada protokol yang harus didefinisikan untuk super class. Dalam hal ini, penamaan Swift protocols wajib mengikuti nama super class disertai tanda koma. Contohnya:

class SomeClass: SomeSuperclass, Protocol3, Protocol4 {

   // class definition

}

Persyaratan Properti dan Metode Swift Protocols

Protokol digunakan untuk menentukan tipe properti class atau properti instance tertentu. Akan tetapi, fungsi ini hanya sebatas menentukan jenis atau instance properti saja alih-alih menetapkan apakah properti tersebut merupakan stored (tersimpan) atau computed (terhitung).

Artikel Terkait  Tutorial Swift 25 : Memahami Swift Class untuk Pemrograman yang Lebih Mudah

Di samping itu, Swift protocol juga bermanfaat dalam mengetahui apakah sebuah properti tergolong ‘gettable’ atau ‘settable’.

Artikel Terkait  Tutorial Swift 26 : Swift Properties, Belajar Cara Menggunakan Properti pada Swift untuk Pemula

Persyaratan properti dinyatakan dengan kata kunci ‘var‘ sebagai penanda variabel properti. Lalu ada {get set} untuk mendeklarasikan properti gettable dan settable setelah pendeklarasian tipenya. Gettable ditandai oleh properti {get} setelah deklarasi tipe tersebut.

Contoh penerapannya dalam koding adalah sebagai berikut:

protocol classa {

   var marks: Int { get set }

   var result: Bool { get }

   

   func attendance() -> String

   func markssecured() -> String

}




protocol classb: classa {

   var present: Bool { get set }

   var subject: String { get set }

   var stname: String { get set }

}




class classc: classb {

   var marks = 70

   let result = true

   var present = false

   var subject = "Swift 4 Protocols"

   var stname = "Andi"




   func attendance() -> String {

      return "\(stname) telah mengamankan 80% kehadiran"

   }

   func markssecured() -> String {

      return "\(stname) mendapatkan nilai \(marks)"

   }

}




let studdet = classc()

studdet.stname = "Yanto"

studdet.marks = 90

studdet.markssecured()




print(studdet.marks)

print(studdet.result)

print(studdet.present)

print(studdet.subject)

print(studdet.stname)

Ketika program di atas dijalankan memakai playground, maka hasilnya akan menjadi seperti ini:

90

true

false

Swift 4 Protocols

Yanto

Persyaratan Metode Mutating Swift

Contoh programming mutating methods di Swift adalah:

protocol daysofaweek {

   mutating func print()

}




enum days: daysofaweek {

   case sun, mon, tue, wed, thurs, fri, sat

   mutating func print() {

      switch self {

         case sun:

            self = sun

            print("Sunday")

         case mon:

            self = mon

            print("Monday")

         case tue:

            self = tue

            print("Tuesday")

         case wed:

            self = wed

            print("Wednesday")

         case mon:

            self = thurs

            print("Thursday")

         case tue:

            self = fri

            print("Friday")

         case sat:

            self = sat

            print("Saturday")

         default:

            print("Not Found!")

      }

   }

}




var res = days.sat

res.print()

Lalu hasil yang kita peroleh saat menjalankan program tersebut di playground adalah:

Saturday

Persyaratan Initializer (Penginisialisasi Protokol)

Swift memungkinkan pengguna menginisialisasi protokol untuk menyesuaikan tipe agar bentuknya mirip dengan inisialisasi normal (normal initializer).

Kode inisialisasi protokol di Swift adalah:

protocol SomeProtocol {

   init(someParameter: Int)

}

Contoh implementasi sederhananya:

protocol tcpprotocol {

   init(aprot: Int)

}

Implementasi Class dari Syarat Penginisialisasi Protokol (Initializer Protocols)

Initializer baku maupun custom sama-sama memungkinkan pemrogram untuk menginisialisasi sebuah protokol Swift. Tujuannya agar protokol tersebut sesuai dengan standar yang mana mengikuti kata kunci yang ‘diperintahkan’.

Contoh implementasi kodingnya adalah sebagai berikut:

class SomeClass: SomeProtocol {

   required init(someParameter: Int) {

      // menginisialiasi implementasi statement

   }

}




protocol tcpprotocol {

   init(aprot: Int)

}




class tcpClass: tcpprotocol {

   required init(aprot: Int) {

   }

}

Penyesuaian protokol dipastikan terjadi pada seluruh subclass untuk mendukung proses implementasi yang eksplisit oleh modifier ‘syarat’.

Namun kata kunci modifier ‘pengganti’ bertugas mengambil alih ketika ada sebuah subclass yang mengganti syarat inisialisasi super class. Contohnya seperti berikut ini:

protocol tcpprotocol {

   init(no1: Int)

}




class mainClass {

   var no1: Int        // local storage

   init(no1: Int) {

      self.no1 = no1  // initialization

   }

}




class subClass: mainClass, tcpprotocol {

   var no2: Int

   init(no1: Int, no2 : Int) {

      self.no2 = no2

      super.init(no1:no1)

   }

   // Hanya membutuhkan satu parameter untuk metode yang mudah

   required override convenience init(no1: Int) {

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

   }

}




let res = mainClass(no1: 5)

let print = subClass(no1: 3, no2: 14)




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

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

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

Berikut adalah hasil program di atas saat dijalankan pada playground:

res is: 5

res is: 3

res is: 14

Artikel Terkait  Tutorial Swift 5 : Variable Swift, Mari Kita Belajar Cara Menggunakannya

Protokol Sebagai Tipe (Types)

Selanjutnya kita akan belajar Swift protokol yang berfungsi sebagai tipe. Terdapat beberapa kasus di mana protokol digunakan sebagai types untuk menjalankan function, class, methods, dan seterusnya.

Artikel Terkait  Tutorial Swift 5 : Variable Swift, Mari Kita Belajar Cara Menggunakannya

Swift protokol bisa dijalankan sebagai types pada:

  • Fungsi, metode atau inisialisasi sebagai parameter atau tipe pengembalian.
  • Sebuah konstanta, variabel atau properti.
  • Item berupa array, kamus atau bentuk container

Contoh implementasi Swift protocols sebagai types adalah:

protocol Generator {

   typealias members

   func next() -> members?

}




var items = [10,20,30].generate()

while let x = items.next() {

   print(x)

}




for lists in map([1,2,3], {i in i*5}) {

   print(lists)

}




print([100,200,300])

print(map([1,2,3], {i in i*10}))

Berikut adalah hasil yang kita peroleh saat menjalankan program di atas memakai playground:

10

20

30

5

10

15

[100, 200, 300]

[10, 20, 30]

Belajar Swift: Menambahkan Penyesuaian Protocol dengan Ekstensi

Types yang sudah ada dapat diadopsi dan disesuaikan dengan protokol Swift yang baru memakai ekstensi. Fungsi ekstensi adalah menambah aneka properties, methods dan subscripts baru ke types yang ada di koding. Contohnya:

protocol AgeClasificationProtocol {

   var age: Int { get }

   func agetype() -> String

}

class Person {

   let firstname: String

   let lastname: String

   var age: Int

   

   init(firstname: String, lastname: String) {

      self.firstname = firstname

      self.lastname = lastname

      self.age = 10

   }

}




extension Person : AgeClasificationProtocol {

   func fullname() -> String {

      var c: String

      c = firstname + " " + lastname

      return c

   }

   func agetype() -> String {

      switch age {

         case 0...2:

            return "Bayi"

         case 2...12:

            return "Anak-anak"

         case 13...19:

            return "Remaja"

         case let x where x > 65:

            return "Dewasa"

         default:

            return "Umum"

      }

   }

}

Swift Protocols Inheritance (Penurunan Protokol)

Swift 4 turut memungkinkan protokol-protokolnya untuk mewariskan properties dari definisi properti aslinya. Cara kerjanya mirip dengan penurunan class, tetapi dengan isian berupa daftar sejumlah protokol yang diwariskan dan dipisah memakai koma.

Contoh protocols inheritance di Swift adalah:

protocol classa {

   var no1: Int { get set }

   func calc(sum: Int)

}

protocol result {

   func print(target: classa)

}

class student2: result {

   func print(target: classa) {

      target.calc(sum: 1)

   }

}

class classb: result {

   func print(target: classa) {

      target.calc(sum: 5)

   }

}




class student: classa {

   var no1: Int = 10

   

   func calc(sum: Int) {

      no1 -= sum

      print("Siswa perlu \(sum) kali test untuk lulus")

         

      if no1 <= 0 {

         print("Siswa tidak hadir ujian")

      }

   }

}




class Player {

   var stmark: result!




   init(stmark: result) {

      self.stmark = stmark

   }

   func print(target: classa) {

      stmark.print(target: target)

   }

}




var marks = Player(stmark: student2())

var marksec = student()




marks.print(target: marksec)

marks.print(target: marksec)

marks.print(target: marksec)

marks.stmark = classb()

marks.print(target: marksec)

marks.print(target: marksec)

marks.print(target: marksec)

Saat program di atas dijalankan, maka hasilnya akan menjadi:

Siswa perlu 1 kali test untuk lulus

Siswa perlu 1 kali test untuk lulus

Siswa perlu 1 kali test untuk lulus

Siswa perlu 5 kali test untuk lulus

Siswa perlu 5 kali test untuk lulus

Siswa tidak hadir ujian

Siswa perlu 5 kali test untuk lulus

Siswa tidak hadir ujian

Swift Protocols Khusus Class

Terkadang kita ingin mendefinisikan protokol lagi dengan class, sedangkan protokol Swift sudah didefinisikan. Dalam hal ini, kita harus menambahkan definisi class terlebih dahulu, kemudian diikuti daftar turunan protokol.

Contoh:

protocol tcpprotocol {

   init(no1: Int)

}

class mainClass {

   var no1: Int        // local storage

   init(no1: Int) {

      self.no1 = no1  // initialization

   }

}

class subClass: mainClass, tcpprotocol {

   var no2: Int

   init(no1: Int, no2 : Int) {

      self.no2 = no2

      super.init(no1:no1)

   }

   

   // Requires only one parameter for convenient method

   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)")

Program di atas akan menghasilkan:

Artikel Terkait  Tutorial Swift 9 : Swift Literals, Belajar Menggunakan Literal Pada Swift dengan Mudah
Artikel Terkait  Tutorial Swift 23 : Apa itu Swift Inout Parameter?

res is: 20

res is: 30

res is: 50

Komposisi Protokol Swift

Swift 4 juga memungkinkan penggunaan komposisi protokol. Fungsi komposisi ini adalah memanggil protokol Multiple yang banyak secara bersamaan.

Kode komposisi protokol pun cukup simpel, yakni:

protocol<SomeProtocol, AnotherProtocol>

Contoh implementasinya:

protocol stname {

   var name: String { get }

}

protocol stage {

   var age: Int { get }

}

struct Person: stname, stage {

   var name: String

   var age: Int

}

func print(celebrator: stname & stage) {

   print("\(celebrator.name) is \(celebrator.age) years old")

}

let studname = Person(name: "Andi", age: 17)

print(studname)




let stud = Person(name: "Budi", age: 17)

print(stud)




let student = Person(name: "Yanto", age: 16)

print(student)

Program di atas akan menghasilkan:

Person(name: “Andi”, age: 17)

Person(name: “Budi”, age: 17)

Person(name: “Yanto”, age: 16)

Belajar Swift: Mengecek Kesesuaian Protokol

Kesesuaian protokol Swift bisa diuji menggunakan operator ‘is‘ dan ‘as‘ yang mirip dengan type casting-nya. Terdapat tiga kondisi pengujian kesesuaian protokol Swift:

  • Operator ‘is’ mengembalikan nilai true jika instance terbukti sesuai dengan standar protokol dan false jika sebaliknya.
  • Operator downcastas? mengembalikan nilai opsional dari types protokol, dan nilai tersebut menjadi nihil apabila instance dirasa tidak sesuai dengan protokol.
  • Operator downcast as’ memaksakan downcastke types protokol dan memicu terjadinya kesalahan runtime apabila downcast mengalami kegagalan.

Contoh pengujian protokol Swift adalah:

import Foundation




@objc protocol rectangle {

   var area: Double { get }

}

@objc class Circle: rectangle {

   let pi = 3.1415927

   var radius: Double

   var area: Double { return pi * radius * radius }

   init(radius: Double) { self.radius = radius }

}

@objc class result: rectangle {

   var area: Double

   init(area: Double) { self.area = area }

}

class sides {

   var rectsides: Int

   init(rectsides: Int) { self.rectsides = rectsides }

}

let objects: [AnyObject] = [Circle(radius: 2.0),result(area:198),sides(rectsides: 4)]




for object in objects {

   if let objectWithArea = object as? rectangle {

      print("Area is \(objectWithArea.area)")

   } else {

      print("Rectangle area is not defined")

   }

}

Program di atas akan menghasilkan output sebagai berikut di playground:

Area is 12.5663708

Area is 198.0

Rectangle area is not defined

Demikianlah seri belajar Swift kali ini seputar Swift protocols. Semoga penjelasan di atas bermanfaat menambah wawasan Anda, ya!

Jangan lewatkan aneka tips belajar coding terbaru di CODEKEY. Baca gratis artikel-artikel belajar bahasa pemrograman lainnya di https://codekey.id/ sekarang juga. Sampai jumpa 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 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 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 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 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 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 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 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...

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...

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