SlideShare a Scribd company logo
1 of 45
Getting To Know The Object
Oriented Programming
Concept in Go
21 January 2023
β€œFirst solve the problem, then
write the code”
Speakers
Mochammad Hanif
// (C&D)
https://www.linkedin.com/in/hanifz/
Letakkan foto
Agenda
1. What is Object Oriented Programming?
2. OOP Concept (Globally)
3. OOP in Go
4. OOP Concept in Go
5. Similarities Differences of OOP in Go and other languages
6. Frequently asked questions
1. What is Object Oriented
Programming?
What is Object Oriented Programming?
Pemrograman Berorientasi Objek (PBO) adalah paradigma pemrograman yang
menekankan pada konsep-konsep objek dan interaksi antara objek-objek
tersebut dalam pembuatan aplikasi. Dalam OOP, sebuah objek didefinisikan
sebagai entitas yang memiliki atribut (properti) dan perilaku (behavior).
OOP menyediakan abstraksi data yang digunakan untuk menyembunyikan
implementasi detail dari sistem dan hanya menampilkan interface yang
diperlukan.
Secara umum OOP memberikan konsep yang lebih baik untuk menyelesaikan
masalah-masalah dalam pemrograman dan menyediakan cara yang lebih baik
untuk mengelola kompleksitas dalam sistem.
2. OOP Concept (Globally)
OOP Concept (Globally)
Konsep-konsep utama dalam OOP adalah:
1. Class: Merupakan suatu blueprint atau desain yang digunakan untuk membuat objek. Class
menentukan atribut dan perilaku dari objek yang dibuat dari class tersebut.
2. Object: Merupakan realisasi dari class. Setiap objek memiliki atribut dan perilaku yang ditentukan
oleh class yang digunakan untuk membuatnya.
3. Inheritance: Merupakan mekanisme dimana sebuah class dapat menurunkan sifat-sifat dari class
lain. Inheritance digunakan untuk mengoptimalkan kode dan mengurangi duplikasi kode.
4. Polymorphism: Merupakan mekanisme dimana sebuah method atau operator dapat memiliki
beberapa bentuk yang berbeda sesuai dengan class dari objek yang digunakan.
5. Encapsulation: Merupakan mekanisme dimana atribut dan perilaku dari sebuah objek
disembunyikan dari objek lain. Encapsulation digunakan untuk menjaga integritas dari objek dan
meningkatkan keamanan dari kode.
6. Abstraction: Merupakan mekanisme dimana hanya tampilan dari sebuah objek yang diperlihatkan,
sementara implementasi dari objek tersebut disembunyikan.
3. OOP in Go
OOP in Go
Golang atau Go adalah bahasa pemrograman yang didesain untuk meningkatkan kecepatan, keamanan,
dan efisiensi dalam pengembangan aplikasi. Go memiliki dukungan untuk pemrograman berorientasi
objek, meskipun tidak selengkap bahasa pemrograman lain yang mengutamakan OOP seperti Java atau
C++.
Walaupun Go tidak memiliki fitur OOP yang selengkap bahasa pemrograman lain, namun dengan
menggabungkan struct, method, interface, embedding, encapsulation dan abstraction, kita dapat
menerapkan konsep-konsep OOP di Go dengan baik.
4. OOP Concept in Go
OOP Concept in Go
Konsep-konsep utama dalam OOP adalah:
1. Struct: Merupakan tipe data yang digunakan untuk menyimpan data yang berhubungan. Struct
dapat memiliki atribut dan method, sehingga dapat dianggap sebagai ganti dari class di bahasa
pemrograman lain.
2. Method: Merupakan fungsi yang didefinisikan pada struct. Method digunakan untuk menentukan
perilaku dari struct.
3. Interface: Merupakan kontrak yang menentukan method yang harus diterapkan oleh struct.
Interface digunakan untuk mengimplementasikan polimorfisme di Go.
4. Embedding: Merupakan mekanisme dimana struct dapat "menyembunyikan" struct lain.
Embedding digunakan untuk mengoptimalkan kode dan mengurangi duplikasi kode.
5. Encapsulation: Merupakan mekanisme dimana atribut dan perilaku dari sebuah struct
disembunyikan dari struct lain. Encapsulation diterapkan di Go dengan menggunakan konvensi
pembuatan nama method dan atribut dengan huruf kecil atau dengan menambahkan keyword
"private" pada nama method atau atribut.
6. Abstraction: Merupakan mekanisme dimana hanya tampilan dari sebuah struct yang diperlihatkan,
sementara implementasi dari struct tersebut disembunyikan.
Struct
Merupakan tipe data yang digunakan untuk menyimpan data yang berhubungan. Struct dapat memiliki
atribut dan method, sehingga dapat dianggap sebagai ganti dari class di bahasa pemrograman lain.
Method
● Merupakan fungsi yang didefinisikan pada
struct. Method digunakan untuk menentukan
perilaku dari struct.
● Pada contoh ini, kita membuat struct Car yang
memiliki 3 field: make, model, dan year. Kemudian
kita menambahkan 2 method pada struct Car yaitu
start() dan stop(). Pada method start() akan
menampilkan "Engine started" dan pada method
stop() akan menampilkan "Engine stopped".
● Secara umum, Go menyediakan fitur yang disebut
method dari struct yang dapat digunakan untuk
mengimplementasikan encapsulation dan
membuat class dengan method yang dapat
digunakan untuk mengolah data yang ada dalam
struct. Dengan menambahkan method pada struct
ini membuat struct tersebut dapat melakukan aksi
yang diinginkan.
Interface
● Merupakan kontrak yang menentukan method yang harus
diterapkan oleh struct. Interface digunakan untuk
mengimplementasikan polimorfisme di Go.
● Pada contoh ini, kita membuat interface Printer yang memiliki 1
method yaitu Print(). Kemudian kita membuat struct HP dan
Canon yang masing-masing memiliki method Print() yang
mengembalikan string yang berbeda. Kemudian kita membuat
variable printer dengan tipe Printer dan mengisi dengan variable
hp atau canon, kemudian memanggil method Print() dari
variable printer yang sesuai dengan struct yang diisi.
● Secara umum, Go menyediakan fitur yang disebut method dari
interface yang dapat digunakan untuk mengimplementasikan
polimorfisme, sehingga kita dapat membuat beberapa struct
yang masing-masing memiliki method yang sama namun
mengembalikan nilai yang berbeda.
Embedding
● Merupakan mekanisme dimana struct dapat "menyembunyikan"
struct lain. Embedding digunakan untuk mengoptimalkan kode dan
mengurangi duplikasi kode.
● Dalam contoh, struct Employee meng-embed struct Person sebagai
field. Ini berarti struct Employee akan memiliki semua field yang ada
pada struct Person, seperti Name dan Age. Hal ini memungkinkan
struct Employee untuk mengakses field pada struct Person tanpa harus
menuliskannya secara eksplisit.
● Kita juga menambahkan method Info() pada struct Employee untuk
menampilkan informasi dari struct Employee dan struct Person yang
diembed. Kemudian pada main function, struct Employee didefinisikan
dengan mengisikan struct Person yang diembed di dalamnya dan
menjalankan method Info() yang menampilkan informasi dari struct
Employee dan struct Person.
● Ini adalah contoh dari Embedding dimana struct Employee "meng-
embed" struct Person sebagai field dan memiliki akses ke semua field
yang ada pada struct Person yang di-embed.
Encapsulation
● Merupakan mekanisme dimana atribut dan perilaku dari sebuah
struct disembunyikan dari struct lain. Encapsulation diterapkan di
Go dengan menggunakan konvensi pembuatan nama method dan
atribut dengan huruf kecil atau dengan menambahkan keyword
"private" pada nama method atau atribut.
● Dalam contoh, struct Bank memiliki atribut nama dan saldo yang
digunakan untuk menyimpan data bank. Kemudian kita membuat method
SetSaldo(int) untuk mengubah nilai saldo dan method Saldo() untuk
mengambil nilai saldo.
● Method SetSaldo(int) digunakan untuk mengubah nilai saldo, tetapi
sebelum mengubah nilai saldo, method ini akan mengecek apakah nilai
saldo yang diberikan negatif atau tidak. Jika nilai saldo negatif, maka
method akan menampilkan pesan error dan tidak mengubah nilai saldo.
Ini adalah contoh dari encapsulation dimana kita menyembunyikan
implementasi dari method SetSaldo(int) dari pengguna dan hanya
memberikan akses kepada method Saldo() untuk mengambil nilai saldo.
Abstraction
● Merupakan mekanisme dimana hanya tampilan dari
sebuah struct yang diperlihatkan, sementara
implementasi dari struct tersebut disembunyikan.
● Pada contoh ini, kita membuat interface Payment yang
memiliki satu method yaitu processPayment(). Kemudian
kita membuat struct CreditCard dan PayPal yang
masing-masing memiliki method processPayment() yang
mengembalikan string yang berbeda. Kemudian kita
membuat method makePayment() yang menerima
parameter p dengan tipe Payment, kemudian memanggil
method processPayment() dari struct yang diterima
sebagai parameter.
● Secara umum, Go menyediakan fitur interface yang
dapat digunakan untuk mengabstraksikan comportment
yang diharapkan dari sebuah struct tanpa harus
menyediakan implementasi dari comportment tersebut.
5. Similarities Differences of OOP in Go
and other languages
Similarities of OOP in Go and other languages
1. Konsep class: Dalam Go, struct digunakan sebagai ganti dari class. Keduanya digunakan untuk
menyimpan data yang berhubungan dan memiliki method untuk menentukan perilaku dari objek.
2. Inheritance: Go tidak memiliki fitur inheritance secara eksplisit seperti bahasa pemrograman lain,
namun dapat digantikan dengan mekanisme embedding.
3. Polymorphism: Go menyediakan fitur interface yang dapat digunakan untuk
mengimplementasikan polimorfisme.
4. Encapsulation: Go menyediakan mekanisme encapsulation dengan konvensi pembuatan nama
method dan atribut dengan huruf kecil atau dengan menambahkan keyword "private" pada nama
method atau atribut.
5. Abstraction: Go menyediakan mekanisme abstraction dengan menyembunyikan implementasi dari
struct dan hanya menampilkan tampilan dari struct.
Differences of OOP in Go and other languages
1. Go tidak memiliki fitur inheritance seperti bahasa pemrograman lain, namun dapat digantikan
dengan mekanisme embedding.
2. Go tidak memiliki fitur overloading method seperti bahasa pemrograman lain
3. Go tidak memiliki fitur constructors dan destructors seperti bahasa pemrograman lain
4. Go tidak memiliki fitur exception handling seperti bahasa pemrograman lain
5. Go memiliki konvensi pembuatan nama method dan atribut dengan huruf kecil yang berbeda
dengan bahasa pemrograman lain yang mengutamakan pembuatan nama dengan huruf besar.
OOP (PHP) OOP
(Go)
6. Frequently asked questions
Frequently asked questions
1. Apa perbedaan antara struct dan class dalam Go?
2. Bagaimana cara mengimplementasikan inheritance di Go?
3. Bagaimana cara mengimplementasikan polymorphism di Go?
4. Bagaimana cara mengimplementasikan encapsulation di Go?
5. Apakah Go menyediakan fitur exception handling seperti bahasa pemrograman lain?
6. Bagaimana cara menambahkan method pada struct di Go?
7. Apakah Go menyediakan fitur constructors dan destructors seperti bahasa
pemrograman lain?
8. Bagaimana cara mengakses atribut pada struct di Go?
9. Apakah Go memiliki fitur overloading method seperti bahasa pemrograman lain?
10. Bagaimana cara mengimplementasikan abstraction di Go?
Apa perbedaan antara struct dan class dalam Go?
● Struct adalah tipe data yang digunakan untuk menyimpan data yang berhubungan,
sedangkan class adalah blueprint atau desain yang digunakan untuk membuat objek.
Dalam Go, struct digunakan sebagai ganti dari class. Keduanya memiliki atribut dan
method, namun Go tidak memiliki fitur inheritance, constructors, dan destructors
seperti yang dimiliki oleh class dalam bahasa pemrograman lain.
● Tipe data yang digunakan untuk mendefinisikan sekumpulan data yang terkait, seperti
variable, constant, atribut, dll.
● Struct di Go adalah tipe data yang dapat digunakan untuk membuat objek tanpa
inheritance dan polymorphism, tetapi dapat digunakan untuk encapsulation dan
composition.
Contoh
● Class di Go tidak ada, meskipun struct di Go dapat digunakan untuk melakukan hal
yang sama dengan class di bahasa pemrograman lain. Namun, Go tidak menyediakan
konsep inheritance dan polymorphism yang dapat dilakukan dengan class. Namun, Go
menyediakan konsep interface yang dapat digunakan untuk polymorphism.
● Perbedaan antara struct dan class di Go adalah struct tidak dapat diwariskan dan tidak
memiliki konsep polymorphism seperti class, tetapi struct dapat digunakan untuk
composition dan encapsulation.
Bagaimana cara mengimplementasikan inheritance di Go?
● Go tidak memiliki fitur inheritance secara eksplisit seperti bahasa pemrograman lain,
namun dapat digantikan dengan mekanisme embedding. Embedding memungkinkan
struct untuk "menyembunyikan" struct lain, sehingga struct dapat "menurunkan" atribut
dan method dari struct yang diembed.
● Konsep "embedded struct" yang dapat digunakan untuk mencapai hasil yang sama
dengan inheritance.
● Embedded struct adalah struct yang di-embed di dalam struct lain. Struct yang di-
embed akan memiliki semua atribut dan method yang dimiliki struct induknya.
Contoh
● Pada contoh, struct Car di-embed struct
Engine. Sehingga struct Car akan
memiliki semua atribut dan method yang
dimiliki struct Engine. Pada saat kita
memanggil method Start() pada struct
Car, struct Engine juga akan dijalankan.
● Secara umum embedded struct
digunakan untuk mencapai hasil yang
sama dengan inheritance, tanpa harus
menggunakan konsep inheritance.
Namun, embedded struct tidak dapat
digunakan untuk mencapai konsep
polymorphism seperti yang dapat
dilakukan dengan inheritance.
Bagaimana cara mengimplementasikan polymorphism di Go?
● Go menyediakan fitur interface yang dapat digunakan untuk mengimplementasikan
polimorfisme. Interface adalah kontrak yang menentukan method yang harus
diterapkan oleh struct. Struct dapat mengimplementasikan interface dengan meng-
override method yang ditentukan oleh interface tersebut.
Contoh
● Pada contoh, kita membuat interface Animal yang memiliki
method Speak(). Kemudian kita membuat struct Dog dan
Cat yang masing-masing mengimplementasikan method
Speak() yang didefinisikan pada interface Animal. Dengan
begitu, kita dapat membuat sebuah array dengan tipe data
Animal yang dapat menampung struct Dog dan Cat,
sehingga kita dapat memanggil method Speak() pada
masing-masing struct tanpa harus tahu tipe data
sebenarnya dari struct tersebut.
● Secara umum, konsep interface digunakan untuk
mengimplementasikan polymorphism di Go dengan cara
menyatakan bahwa struct atau tipe data lain memiliki
kompatibilitas dengan interface yang ditentukan. Dengan
ini, kita dapat membuat kode yang lebih fleksibel dan
dapat digunakan dengan berbagai tipe data yang memiliki
kompatibilitas dengan interface yang sama.
Bagaimana cara mengimplementasikan encapsulation di Go?
● Go menyediakan mekanisme encapsulation dengan konvensi pembuatan nama
method dan atribut dengan huruf kecil atau dengan menambahkan keyword "private"
pada nama method atau atribut. Method dan atribut dengan huruf kecil hanya dapat
diakses dari package yang sama, sedangkan method dan atribut dengan keyword
"private" hanya dapat diakses dari file yang sama.
Contoh
● Pada contoh, struct BankAccount memiliki variabel balance
dan owner yang dianggap private karena diawali dengan huruf
kecil. Method Deposit, Withdraw, dan Balance dianggap public
karena diawali dengan huruf besar. Method Deposit dan
Withdraw dapat mengubah nilai dari balance, sementara
method Balance hanya dapat mengambil nilai dari balance
tanpa mengubah nilainya. Hal ini menyediakan encapsulation
yang membatasi akses dan modifikasi pada variabel balance.
● Secara umum, Go menyediakan fitur private/public untuk
mengimplementasikan encapsulation dengan membatasi
akses dan modifikasi pada variabel atau method yang
dianggap private. Dengan ini, kita dapat menjaga integritas
data dan menyembunyikan implementasi detail dari sistem.
Apakah Go menyediakan fitur exception handling seperti bahasa
pemrograman lain?
● Tidak, Go tidak memiliki fitur exception handling yang sama dengan bahasa
pemrograman lain. Go lebih mengutamakan menangani error dengan mekanisme
error value dan error handling yang didefinisikan oleh pengguna.
● Go tidak memiliki fitur exception handling seperti try-catch atau throw. Namun, Go
menyediakan fitur error handling yang dapat digunakan untuk menangani kesalahan
yang terjadi pada saat pemrograman.
Contoh
● Pada contoh diatas, kita membuat fungsi
divide yang menerima 2 parameter integer
dan mengembalikan 2 nilai yaitu hasil
pembagian dan error. Pada saat bernilai 0,
kita mengembalikan error "cannot divide by
zero". Pada saat kita memanggil fungsi
divide, kita mengecek apakah error terjadi
atau tidak dan menampilkan pesan error
jika terjadi.
● Secara umum, Go menyediakan fitur error
handling yang dapat digunakan untuk
menangani kesalahan yang terjadi pada
saat pemrograman, tanpa menggunakan
fitur exception handling yang ada pada
bahasa pemrograman lain.
Bagaimana cara menambahkan method pada struct di Go?
● Method dapat ditambahkan pada struct dengan menambahkan definisi fungsi yang
diawali dengan receiver. Receiver adalah variabel yang digunakan untuk
mengindikasikan bahwa method tersebut akan dijalankan pada struct yang ditentukan.
● Untuk menambahkan method pada struct di Go, kita dapat menambahkan method di
luar struct yang akan mengambil receiver (atau pointer) dari struct tersebut sebagai
parameter. Receiver harus berupa pointer untuk dapat mengubah nilai dari struct.
Contoh
● Pada contoh, kita membuat struct Car yang memiliki 3 field
yaitu brand, model, dan year. Kemudian kita
menambahkan 2 method yang mengambil receiver dari
struct Car sebagai parameter yaitu StartEngine() dan
ChangeModel(). Method StartEngine() digunakan untuk
mencetak "Engine started" dan method ChangeModel()
digunakan untuk mengubah nilai dari field model dengan
parameter newModel yang diinputkan. Pada saat kita
memanggil method StartEngine() dan ChangeModel() pada
struct Car, Engine started akan dicetak dan field model
pada struct Car akan diubah menjadi "Corolla"
● Secara umum, menambahkan method pada struct di Go
dapat dilakukan dengan menambahkan method di luar
struct yang akan mengambil receiver dari struct tersebut
sebagai parameter. Method tersebut dapat digunakan
untuk melakukan operasi yang diinginkan pada struct.
Apakah Go menyediakan fitur constructors dan destructors seperti
bahasa pemrograman lain?
● Tidak, Go tidak memiliki fitur constructors dan destructors seperti bahasa
pemrograman lain. Pengguna dapat untuk menginisialisasi dan mengosongkan struct
secara manual. Namun, pengguna dapat menambahkan method init() pada struct
untuk digunakan sebagai constructor, dan method close() untuk digunakan sebagai
destructor.
● Go tidak secara eksplisit menyediakan fitur constructors dan destructors seperti
bahasa pemrograman lain. Namun, Go menyediakan fitur yang serupa melalui
kombinasi dari penggunaan fungsi, method, dan package level initialization.
● Untuk constructors, Go menyediakan fitur yang disebut factory function yang
digunakan untuk membuat objek dari struct dengan nilai yang diinginkan.
● Factory function dapat digunakan untuk mengatur nilai default dari struct, menvalidasi
input, atau melakukan operasi lain yang diperlukan sebelum objek dari struct dapat
digunakan.
Contoh
● Pada contoh, kita membuat factory function NewPoint() yang
digunakan untuk membuat objek dari struct Point dengan nilai yang
diinginkan. NewPoint() mengambil 2 parameter x dan y dan
mengecek apakah x dan y lebih kecil dari 0, jika iya maka x dan y
diubah menjadi 0. Kemudian factory function mengembalikan
pointer dari struct Point yang baru dibuat.
● Untuk destructors, Go menyediakan fitur garbage collection yang
digunakan untuk mengatur memory yang tidak digunakan lagi.
Garbage collection digunakan untuk mengambil alih tugas
mengelola memory yang dibutuhkan oleh objek, sehingga
developer tidak perlu khawatir dengan mengelola memory secara
manual.
● Secara umum, Go tidak menyediakan fitur constructors dan
destructors secara eksplisit seperti bahasa pemrograman lain,
namun Go menyediakan fitur yang serupa melalui kombinasi dari
penggunaan fungsi, method, dan package level initialization yang
digunakan untuk mengatur nilai default dari struct, menvalidasi
input, atau melakukan operasi lain yang diperlukan sebelum objek
dari struct dapat digunakan.
Bagaimana cara mengakses atribut pada struct di Go?
● Atribut pada struct dapat diakses dengan menggunakan operator titik (.). Contohnya,
jika struct Person memiliki atribut name, maka warna dapat diakses dengan
menuliskan "Person.name".
Contoh
● Pada contoh, kita membuat struct
Person dengan 2 field yaitu name dan
age. Kemudian kita membuat variable
person yang diisi dengan struct Person.
Setelah itu kita mengakses field name
dan age dengan menggunakan
operator titik.
● Secara umum, untuk mengakses
atribut pada struct di Go, kita dapat
menggunakan operator titik (.) setelah
nama variable struct yang digunakan.
Operator titik digunakan untuk
mengakses field atau method yang
didefinisikan dalam struct tersebut.
Apakah Go memiliki fitur overloading method seperti bahasa
pemrograman lain?
● Tidak, Go tidak memiliki fitur overloading method seperti bahasa pemrograman lain.
Pengguna harus menambahkan method dengan nama yang berbeda untuk
menangani kasus yang berbeda.
● Go hanya menyediakan fitur method dengan nama yang sama pada struct yang
berbeda. Namun Go menyediakan fitur yang disebut method dari interface yang dapat
digunakan untuk mengimplementasikan polimorfisme.
Contoh
● Pada contoh ini, kita membuat interface Printer yang
memiliki 1 method yaitu Print(). Kemudian kita membuat
struct HP dan Canon yang masing-masing memiliki method
Print() yang mengembalikan string yang berbeda. Kemudian
kita membuat variable printer dengan tipe Printer dan
mengisi dengan variable hp atau canon, kemudian
memanggil method Print() dari variable printer yang sesuai
dengan struct yang diisi.
● Secara umum, Go menyediakan fitur yang disebut method
dari interface yang dapat digunakan untuk
mengimplementasikan polimorfisme, sehingga kita dapat
membuat beberapa struct yang masing-masing memiliki
method yang sama namun mengembalikan nilai yang
berbeda.
Bagaimana cara mengimplementasikan abstraction di Go?
● Go menyediakan mekanisme abstraction dengan menyembunyikan implementasi dari
struct dan hanya menampilkan tampilan dari struct. Hal ini dapat dilakukan dengan
menyembunyikan atribut dan method dengan huruf kecil atau dengan menambahkan
keyword "private" pada nama method atau atribut. Pengguna juga dapat
menggunakan interface untuk menentukan method yang harus diimplementasikan
oleh struct tanpa menunjukkan implementasinya.
● Interface di Go adalah sekumpulan method tanpa implementasi yang didefinisikan
dalam sebuah struct. Interface digunakan untuk mengabstraksikan comportment yang
diharapkan dari sebuah struct tanpa harus menyediakan implementasi dari
comportment tersebut.
Contoh
● Pada contoh ini, kita membuat interface Payment yang
memiliki satu method yaitu processPayment().
Kemudian kita membuat struct CreditCard dan PayPal
yang masing-masing memiliki method
processPayment() yang mengembalikan string yang
berbeda. Kemudian kita membuat method
makePayment() yang menerima parameter p dengan
tipe Payment, kemudian memanggil method
processPayment() dari struct yang diterima sebagai
parameter.
● Secara umum, Go menyediakan fitur interface yang
dapat digunakan untuk mengabstraksikan
comportment yang diharapkan dari sebuah struct
tanpa harus menyediakan implementasi dari
comportment tersebut.
Thank you for joining!
… and see you !

More Related Content

Similar to #3 OOP.pptx

Uts pemrograman berbasis obj
Uts pemrograman berbasis objUts pemrograman berbasis obj
Uts pemrograman berbasis obj
JulianGultom2
Β 
Abu yanto tugas resume aplinet
Abu yanto tugas resume aplinetAbu yanto tugas resume aplinet
Abu yanto tugas resume aplinet
abuyanto
Β 
Resume aplinet oop mvc
Resume aplinet oop mvcResume aplinet oop mvc
Resume aplinet oop mvc
Sam_Azzam
Β 
Pemrogaman Visual Basic.NET (Modul 4)
Pemrogaman Visual Basic.NET (Modul 4)Pemrogaman Visual Basic.NET (Modul 4)
Pemrogaman Visual Basic.NET (Modul 4)
Materi Kuliah Online
Β 
Tugas 4 (individu) rekayasa web 0316
Tugas 4 (individu) rekayasa web 0316Tugas 4 (individu) rekayasa web 0316
Tugas 4 (individu) rekayasa web 0316
septianarul
Β 
Algoritam1
Algoritam1Algoritam1
Algoritam1
Uta Ahmad
Β 
Modul algoritma dan pemograman
Modul algoritma dan pemogramanModul algoritma dan pemograman
Modul algoritma dan pemograman
PANJI_ADITYAN
Β 
Pertemuan 1
Pertemuan 1Pertemuan 1
Pertemuan 1
zisgoo
Β 

Similar to #3 OOP.pptx (20)

Materi delphi
Materi delphiMateri delphi
Materi delphi
Β 
Modul pbo
Modul pboModul pbo
Modul pbo
Β 
Uts pemrograman berbasis obj
Uts pemrograman berbasis objUts pemrograman berbasis obj
Uts pemrograman berbasis obj
Β 
Abu yanto tugas resume aplinet
Abu yanto tugas resume aplinetAbu yanto tugas resume aplinet
Abu yanto tugas resume aplinet
Β 
Konsep oop pada php dan mvc pada php framework, 1200631047 1200631018 1200631028
Konsep oop pada php dan mvc pada php framework, 1200631047 1200631018 1200631028Konsep oop pada php dan mvc pada php framework, 1200631047 1200631018 1200631028
Konsep oop pada php dan mvc pada php framework, 1200631047 1200631018 1200631028
Β 
Pbo perbandingan antara pemrograman procedural dengan pemrograman beroriant...
Pbo   perbandingan antara pemrograman procedural dengan pemrograman beroriant...Pbo   perbandingan antara pemrograman procedural dengan pemrograman beroriant...
Pbo perbandingan antara pemrograman procedural dengan pemrograman beroriant...
Β 
Algoritma dan Struktur Data
Algoritma dan Struktur DataAlgoritma dan Struktur Data
Algoritma dan Struktur Data
Β 
Projek asti(b) revisi
Projek asti(b) revisiProjek asti(b) revisi
Projek asti(b) revisi
Β 
Resume aplinet oop mvc
Resume aplinet oop mvcResume aplinet oop mvc
Resume aplinet oop mvc
Β 
Dart Object-Oriented Programming (OOP) and Flutter State Management
Dart Object-Oriented Programming (OOP) and Flutter State ManagementDart Object-Oriented Programming (OOP) and Flutter State Management
Dart Object-Oriented Programming (OOP) and Flutter State Management
Β 
Pemrogaman Visual Basic.NET (Modul 4)
Pemrogaman Visual Basic.NET (Modul 4)Pemrogaman Visual Basic.NET (Modul 4)
Pemrogaman Visual Basic.NET (Modul 4)
Β 
Modul Object Oriented Programming
Modul Object Oriented ProgrammingModul Object Oriented Programming
Modul Object Oriented Programming
Β 
Tugas 4 (individu) rekayasa web 0316
Tugas 4 (individu) rekayasa web 0316Tugas 4 (individu) rekayasa web 0316
Tugas 4 (individu) rekayasa web 0316
Β 
Object Oriented
Object OrientedObject Oriented
Object Oriented
Β 
Pertemuan 2 Konsep Dasar Pemrograman OOP
Pertemuan 2 Konsep Dasar Pemrograman OOPPertemuan 2 Konsep Dasar Pemrograman OOP
Pertemuan 2 Konsep Dasar Pemrograman OOP
Β 
flowchart
flowchartflowchart
flowchart
Β 
Algoritam1
Algoritam1Algoritam1
Algoritam1
Β 
Modul algoritma dan pemograman
Modul algoritma dan pemogramanModul algoritma dan pemograman
Modul algoritma dan pemograman
Β 
Modul algoritma dan pemograman
Modul algoritma dan pemogramanModul algoritma dan pemograman
Modul algoritma dan pemograman
Β 
Pertemuan 1
Pertemuan 1Pertemuan 1
Pertemuan 1
Β 

More from GDSC2

More from GDSC2 (17)

Info Session_ GDSC Lead Application 2023.pptx
Info Session_ GDSC Lead Application 2023.pptxInfo Session_ GDSC Lead Application 2023.pptx
Info Session_ GDSC Lead Application 2023.pptx
Β 
#4 REST API.pptx
#4 REST API.pptx#4 REST API.pptx
#4 REST API.pptx
Β 
#4 Introduction Functional Programming in Kotlin.pptx
#4 Introduction Functional Programming in Kotlin.pptx#4 Introduction Functional Programming in Kotlin.pptx
#4 Introduction Functional Programming in Kotlin.pptx
Β 
#4 Design Thinking Prototype Usability Testing.pptx
#4 Design Thinking Prototype Usability Testing.pptx#4 Design Thinking Prototype Usability Testing.pptx
#4 Design Thinking Prototype Usability Testing.pptx
Β 
#5 Introduction Fundamental Jetpack Compose.pptx
#5 Introduction Fundamental Jetpack Compose.pptx#5 Introduction Fundamental Jetpack Compose.pptx
#5 Introduction Fundamental Jetpack Compose.pptx
Β 
2023 Google Solution Challenge Kickoff_ From Idea to Execution.pptx
2023 Google Solution Challenge Kickoff_ From Idea to Execution.pptx2023 Google Solution Challenge Kickoff_ From Idea to Execution.pptx
2023 Google Solution Challenge Kickoff_ From Idea to Execution.pptx
Β 
#5 Design Guidline & UI Responsive.pptx
#5 Design Guidline & UI Responsive.pptx#5 Design Guidline & UI Responsive.pptx
#5 Design Guidline & UI Responsive.pptx
Β 
#3 Design Thinking Ideate.pptx
#3 Design Thinking Ideate.pptx#3 Design Thinking Ideate.pptx
#3 Design Thinking Ideate.pptx
Β 
#3 Introduction Control Flow & Loop in Kotlin.pptx
#3 Introduction Control Flow & Loop in Kotlin.pptx#3 Introduction Control Flow & Loop in Kotlin.pptx
#3 Introduction Control Flow & Loop in Kotlin.pptx
Β 
Study Jam - Batch 1 UI/UX #2: Design Thinking - Empathize And Define
Study Jam - Batch 1 UI/UX #2: Design Thinking - Empathize And DefineStudy Jam - Batch 1 UI/UX #2: Design Thinking - Empathize And Define
Study Jam - Batch 1 UI/UX #2: Design Thinking - Empathize And Define
Β 
PPT Study Jam - Batch 1 Golang #2: Basics of Go Syntax and Semantics
PPT Study Jam - Batch 1 Golang #2: Basics of Go Syntax and SemanticsPPT Study Jam - Batch 1 Golang #2: Basics of Go Syntax and Semantics
PPT Study Jam - Batch 1 Golang #2: Basics of Go Syntax and Semantics
Β 
#2 Introduction Operator in Kotlin.pptx
#2 Introduction Operator in Kotlin.pptx#2 Introduction Operator in Kotlin.pptx
#2 Introduction Operator in Kotlin.pptx
Β 
#1 Introduction To UIUX Design.pptx
#1 Introduction To UIUX Design.pptx#1 Introduction To UIUX Design.pptx
#1 Introduction To UIUX Design.pptx
Β 
#1 Introduction Go.pptx
#1 Introduction Go.pptx#1 Introduction Go.pptx
#1 Introduction Go.pptx
Β 
#1 Introduction Kotlin.pptx
#1 Introduction Kotlin.pptx#1 Introduction Kotlin.pptx
#1 Introduction Kotlin.pptx
Β 
The Future of Modern Android Development.pptx
The Future of Modern Android Development.pptxThe Future of Modern Android Development.pptx
The Future of Modern Android Development.pptx
Β 
Info Session #1_ Introducing GDSC ITTP & Meet our Member.pptx
Info Session #1_ Introducing GDSC ITTP & Meet our Member.pptxInfo Session #1_ Introducing GDSC ITTP & Meet our Member.pptx
Info Session #1_ Introducing GDSC ITTP & Meet our Member.pptx
Β 

Recently uploaded

Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdfAksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
JarzaniIsmail
Β 
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptxPPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
dpp11tya
Β 
Membuat Komik Digital Berisi Kritik Sosial.docx
Membuat Komik Digital Berisi Kritik Sosial.docxMembuat Komik Digital Berisi Kritik Sosial.docx
Membuat Komik Digital Berisi Kritik Sosial.docx
NurindahSetyawati1
Β 
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
pipinafindraputri1
Β 
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.pptHAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
nabilafarahdiba95
Β 
MATEMATIKA EKONOMI MATERI ANUITAS DAN NILAI ANUITAS
MATEMATIKA EKONOMI MATERI ANUITAS DAN NILAI ANUITASMATEMATIKA EKONOMI MATERI ANUITAS DAN NILAI ANUITAS
MATEMATIKA EKONOMI MATERI ANUITAS DAN NILAI ANUITAS
bilqisizzati
Β 

Recently uploaded (20)

Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdfAksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
Β 
MAKALAH KELOMPOK 7 ADMINISTRASI LAYANAN KHUSUS.pdf
MAKALAH KELOMPOK 7 ADMINISTRASI LAYANAN KHUSUS.pdfMAKALAH KELOMPOK 7 ADMINISTRASI LAYANAN KHUSUS.pdf
MAKALAH KELOMPOK 7 ADMINISTRASI LAYANAN KHUSUS.pdf
Β 
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKA
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKAKELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKA
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKA
Β 
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptxPPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
Β 
PPT Mean Median Modus data tunggal .pptx
PPT Mean Median Modus data tunggal .pptxPPT Mean Median Modus data tunggal .pptx
PPT Mean Median Modus data tunggal .pptx
Β 
Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)
Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)
Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)
Β 
Membuat Komik Digital Berisi Kritik Sosial.docx
Membuat Komik Digital Berisi Kritik Sosial.docxMembuat Komik Digital Berisi Kritik Sosial.docx
Membuat Komik Digital Berisi Kritik Sosial.docx
Β 
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Β 
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.pptHAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
Β 
Lingkungan bawah airLingkungan bawah air.ppt
Lingkungan bawah airLingkungan bawah air.pptLingkungan bawah airLingkungan bawah air.ppt
Lingkungan bawah airLingkungan bawah air.ppt
Β 
vIDEO kelayakan berita untuk mahasiswa.ppsx
vIDEO kelayakan berita untuk mahasiswa.ppsxvIDEO kelayakan berita untuk mahasiswa.ppsx
vIDEO kelayakan berita untuk mahasiswa.ppsx
Β 
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptxKontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Β 
Membaca dengan Metode Fonik - Membuat Rancangan Pembelajaran dengan Metode Fo...
Membaca dengan Metode Fonik - Membuat Rancangan Pembelajaran dengan Metode Fo...Membaca dengan Metode Fonik - Membuat Rancangan Pembelajaran dengan Metode Fo...
Membaca dengan Metode Fonik - Membuat Rancangan Pembelajaran dengan Metode Fo...
Β 
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMMAKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
Β 
LATAR BELAKANG JURNAL DIALOGIS REFLEKTIF.ppt
LATAR BELAKANG JURNAL DIALOGIS REFLEKTIF.pptLATAR BELAKANG JURNAL DIALOGIS REFLEKTIF.ppt
LATAR BELAKANG JURNAL DIALOGIS REFLEKTIF.ppt
Β 
MODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdfMODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdf
Β 
MATEMATIKA EKONOMI MATERI ANUITAS DAN NILAI ANUITAS
MATEMATIKA EKONOMI MATERI ANUITAS DAN NILAI ANUITASMATEMATIKA EKONOMI MATERI ANUITAS DAN NILAI ANUITAS
MATEMATIKA EKONOMI MATERI ANUITAS DAN NILAI ANUITAS
Β 
PELAKSANAAN + Link2 Materi BimTek _PTK 007 Rev-5 Thn 2023 (PENGADAAN) & Perhi...
PELAKSANAAN + Link2 Materi BimTek _PTK 007 Rev-5 Thn 2023 (PENGADAAN) & Perhi...PELAKSANAAN + Link2 Materi BimTek _PTK 007 Rev-5 Thn 2023 (PENGADAAN) & Perhi...
PELAKSANAAN + Link2 Materi BimTek _PTK 007 Rev-5 Thn 2023 (PENGADAAN) & Perhi...
Β 
Tim Yang Lolos Pendanaan Hibah Kepedulian pada Masyarakat UI 2024
Tim Yang Lolos Pendanaan Hibah Kepedulian pada Masyarakat  UI 2024Tim Yang Lolos Pendanaan Hibah Kepedulian pada Masyarakat  UI 2024
Tim Yang Lolos Pendanaan Hibah Kepedulian pada Masyarakat UI 2024
Β 
power point bahasa indonesia "Karya Ilmiah"
power point bahasa indonesia "Karya Ilmiah"power point bahasa indonesia "Karya Ilmiah"
power point bahasa indonesia "Karya Ilmiah"
Β 

#3 OOP.pptx

  • 1.
  • 2. Getting To Know The Object Oriented Programming Concept in Go 21 January 2023
  • 3. β€œFirst solve the problem, then write the code” Speakers Mochammad Hanif // (C&D) https://www.linkedin.com/in/hanifz/ Letakkan foto
  • 4. Agenda 1. What is Object Oriented Programming? 2. OOP Concept (Globally) 3. OOP in Go 4. OOP Concept in Go 5. Similarities Differences of OOP in Go and other languages 6. Frequently asked questions
  • 5. 1. What is Object Oriented Programming?
  • 6. What is Object Oriented Programming? Pemrograman Berorientasi Objek (PBO) adalah paradigma pemrograman yang menekankan pada konsep-konsep objek dan interaksi antara objek-objek tersebut dalam pembuatan aplikasi. Dalam OOP, sebuah objek didefinisikan sebagai entitas yang memiliki atribut (properti) dan perilaku (behavior). OOP menyediakan abstraksi data yang digunakan untuk menyembunyikan implementasi detail dari sistem dan hanya menampilkan interface yang diperlukan. Secara umum OOP memberikan konsep yang lebih baik untuk menyelesaikan masalah-masalah dalam pemrograman dan menyediakan cara yang lebih baik untuk mengelola kompleksitas dalam sistem.
  • 7. 2. OOP Concept (Globally)
  • 8. OOP Concept (Globally) Konsep-konsep utama dalam OOP adalah: 1. Class: Merupakan suatu blueprint atau desain yang digunakan untuk membuat objek. Class menentukan atribut dan perilaku dari objek yang dibuat dari class tersebut. 2. Object: Merupakan realisasi dari class. Setiap objek memiliki atribut dan perilaku yang ditentukan oleh class yang digunakan untuk membuatnya. 3. Inheritance: Merupakan mekanisme dimana sebuah class dapat menurunkan sifat-sifat dari class lain. Inheritance digunakan untuk mengoptimalkan kode dan mengurangi duplikasi kode. 4. Polymorphism: Merupakan mekanisme dimana sebuah method atau operator dapat memiliki beberapa bentuk yang berbeda sesuai dengan class dari objek yang digunakan. 5. Encapsulation: Merupakan mekanisme dimana atribut dan perilaku dari sebuah objek disembunyikan dari objek lain. Encapsulation digunakan untuk menjaga integritas dari objek dan meningkatkan keamanan dari kode. 6. Abstraction: Merupakan mekanisme dimana hanya tampilan dari sebuah objek yang diperlihatkan, sementara implementasi dari objek tersebut disembunyikan.
  • 10. OOP in Go Golang atau Go adalah bahasa pemrograman yang didesain untuk meningkatkan kecepatan, keamanan, dan efisiensi dalam pengembangan aplikasi. Go memiliki dukungan untuk pemrograman berorientasi objek, meskipun tidak selengkap bahasa pemrograman lain yang mengutamakan OOP seperti Java atau C++. Walaupun Go tidak memiliki fitur OOP yang selengkap bahasa pemrograman lain, namun dengan menggabungkan struct, method, interface, embedding, encapsulation dan abstraction, kita dapat menerapkan konsep-konsep OOP di Go dengan baik.
  • 11. 4. OOP Concept in Go
  • 12. OOP Concept in Go Konsep-konsep utama dalam OOP adalah: 1. Struct: Merupakan tipe data yang digunakan untuk menyimpan data yang berhubungan. Struct dapat memiliki atribut dan method, sehingga dapat dianggap sebagai ganti dari class di bahasa pemrograman lain. 2. Method: Merupakan fungsi yang didefinisikan pada struct. Method digunakan untuk menentukan perilaku dari struct. 3. Interface: Merupakan kontrak yang menentukan method yang harus diterapkan oleh struct. Interface digunakan untuk mengimplementasikan polimorfisme di Go. 4. Embedding: Merupakan mekanisme dimana struct dapat "menyembunyikan" struct lain. Embedding digunakan untuk mengoptimalkan kode dan mengurangi duplikasi kode. 5. Encapsulation: Merupakan mekanisme dimana atribut dan perilaku dari sebuah struct disembunyikan dari struct lain. Encapsulation diterapkan di Go dengan menggunakan konvensi pembuatan nama method dan atribut dengan huruf kecil atau dengan menambahkan keyword "private" pada nama method atau atribut. 6. Abstraction: Merupakan mekanisme dimana hanya tampilan dari sebuah struct yang diperlihatkan, sementara implementasi dari struct tersebut disembunyikan.
  • 13. Struct Merupakan tipe data yang digunakan untuk menyimpan data yang berhubungan. Struct dapat memiliki atribut dan method, sehingga dapat dianggap sebagai ganti dari class di bahasa pemrograman lain.
  • 14. Method ● Merupakan fungsi yang didefinisikan pada struct. Method digunakan untuk menentukan perilaku dari struct. ● Pada contoh ini, kita membuat struct Car yang memiliki 3 field: make, model, dan year. Kemudian kita menambahkan 2 method pada struct Car yaitu start() dan stop(). Pada method start() akan menampilkan "Engine started" dan pada method stop() akan menampilkan "Engine stopped". ● Secara umum, Go menyediakan fitur yang disebut method dari struct yang dapat digunakan untuk mengimplementasikan encapsulation dan membuat class dengan method yang dapat digunakan untuk mengolah data yang ada dalam struct. Dengan menambahkan method pada struct ini membuat struct tersebut dapat melakukan aksi yang diinginkan.
  • 15. Interface ● Merupakan kontrak yang menentukan method yang harus diterapkan oleh struct. Interface digunakan untuk mengimplementasikan polimorfisme di Go. ● Pada contoh ini, kita membuat interface Printer yang memiliki 1 method yaitu Print(). Kemudian kita membuat struct HP dan Canon yang masing-masing memiliki method Print() yang mengembalikan string yang berbeda. Kemudian kita membuat variable printer dengan tipe Printer dan mengisi dengan variable hp atau canon, kemudian memanggil method Print() dari variable printer yang sesuai dengan struct yang diisi. ● Secara umum, Go menyediakan fitur yang disebut method dari interface yang dapat digunakan untuk mengimplementasikan polimorfisme, sehingga kita dapat membuat beberapa struct yang masing-masing memiliki method yang sama namun mengembalikan nilai yang berbeda.
  • 16. Embedding ● Merupakan mekanisme dimana struct dapat "menyembunyikan" struct lain. Embedding digunakan untuk mengoptimalkan kode dan mengurangi duplikasi kode. ● Dalam contoh, struct Employee meng-embed struct Person sebagai field. Ini berarti struct Employee akan memiliki semua field yang ada pada struct Person, seperti Name dan Age. Hal ini memungkinkan struct Employee untuk mengakses field pada struct Person tanpa harus menuliskannya secara eksplisit. ● Kita juga menambahkan method Info() pada struct Employee untuk menampilkan informasi dari struct Employee dan struct Person yang diembed. Kemudian pada main function, struct Employee didefinisikan dengan mengisikan struct Person yang diembed di dalamnya dan menjalankan method Info() yang menampilkan informasi dari struct Employee dan struct Person. ● Ini adalah contoh dari Embedding dimana struct Employee "meng- embed" struct Person sebagai field dan memiliki akses ke semua field yang ada pada struct Person yang di-embed.
  • 17. Encapsulation ● Merupakan mekanisme dimana atribut dan perilaku dari sebuah struct disembunyikan dari struct lain. Encapsulation diterapkan di Go dengan menggunakan konvensi pembuatan nama method dan atribut dengan huruf kecil atau dengan menambahkan keyword "private" pada nama method atau atribut. ● Dalam contoh, struct Bank memiliki atribut nama dan saldo yang digunakan untuk menyimpan data bank. Kemudian kita membuat method SetSaldo(int) untuk mengubah nilai saldo dan method Saldo() untuk mengambil nilai saldo. ● Method SetSaldo(int) digunakan untuk mengubah nilai saldo, tetapi sebelum mengubah nilai saldo, method ini akan mengecek apakah nilai saldo yang diberikan negatif atau tidak. Jika nilai saldo negatif, maka method akan menampilkan pesan error dan tidak mengubah nilai saldo. Ini adalah contoh dari encapsulation dimana kita menyembunyikan implementasi dari method SetSaldo(int) dari pengguna dan hanya memberikan akses kepada method Saldo() untuk mengambil nilai saldo.
  • 18. Abstraction ● Merupakan mekanisme dimana hanya tampilan dari sebuah struct yang diperlihatkan, sementara implementasi dari struct tersebut disembunyikan. ● Pada contoh ini, kita membuat interface Payment yang memiliki satu method yaitu processPayment(). Kemudian kita membuat struct CreditCard dan PayPal yang masing-masing memiliki method processPayment() yang mengembalikan string yang berbeda. Kemudian kita membuat method makePayment() yang menerima parameter p dengan tipe Payment, kemudian memanggil method processPayment() dari struct yang diterima sebagai parameter. ● Secara umum, Go menyediakan fitur interface yang dapat digunakan untuk mengabstraksikan comportment yang diharapkan dari sebuah struct tanpa harus menyediakan implementasi dari comportment tersebut.
  • 19. 5. Similarities Differences of OOP in Go and other languages
  • 20. Similarities of OOP in Go and other languages 1. Konsep class: Dalam Go, struct digunakan sebagai ganti dari class. Keduanya digunakan untuk menyimpan data yang berhubungan dan memiliki method untuk menentukan perilaku dari objek. 2. Inheritance: Go tidak memiliki fitur inheritance secara eksplisit seperti bahasa pemrograman lain, namun dapat digantikan dengan mekanisme embedding. 3. Polymorphism: Go menyediakan fitur interface yang dapat digunakan untuk mengimplementasikan polimorfisme. 4. Encapsulation: Go menyediakan mekanisme encapsulation dengan konvensi pembuatan nama method dan atribut dengan huruf kecil atau dengan menambahkan keyword "private" pada nama method atau atribut. 5. Abstraction: Go menyediakan mekanisme abstraction dengan menyembunyikan implementasi dari struct dan hanya menampilkan tampilan dari struct.
  • 21. Differences of OOP in Go and other languages 1. Go tidak memiliki fitur inheritance seperti bahasa pemrograman lain, namun dapat digantikan dengan mekanisme embedding. 2. Go tidak memiliki fitur overloading method seperti bahasa pemrograman lain 3. Go tidak memiliki fitur constructors dan destructors seperti bahasa pemrograman lain 4. Go tidak memiliki fitur exception handling seperti bahasa pemrograman lain 5. Go memiliki konvensi pembuatan nama method dan atribut dengan huruf kecil yang berbeda dengan bahasa pemrograman lain yang mengutamakan pembuatan nama dengan huruf besar.
  • 23. 6. Frequently asked questions
  • 24. Frequently asked questions 1. Apa perbedaan antara struct dan class dalam Go? 2. Bagaimana cara mengimplementasikan inheritance di Go? 3. Bagaimana cara mengimplementasikan polymorphism di Go? 4. Bagaimana cara mengimplementasikan encapsulation di Go? 5. Apakah Go menyediakan fitur exception handling seperti bahasa pemrograman lain? 6. Bagaimana cara menambahkan method pada struct di Go? 7. Apakah Go menyediakan fitur constructors dan destructors seperti bahasa pemrograman lain? 8. Bagaimana cara mengakses atribut pada struct di Go? 9. Apakah Go memiliki fitur overloading method seperti bahasa pemrograman lain? 10. Bagaimana cara mengimplementasikan abstraction di Go?
  • 25. Apa perbedaan antara struct dan class dalam Go? ● Struct adalah tipe data yang digunakan untuk menyimpan data yang berhubungan, sedangkan class adalah blueprint atau desain yang digunakan untuk membuat objek. Dalam Go, struct digunakan sebagai ganti dari class. Keduanya memiliki atribut dan method, namun Go tidak memiliki fitur inheritance, constructors, dan destructors seperti yang dimiliki oleh class dalam bahasa pemrograman lain. ● Tipe data yang digunakan untuk mendefinisikan sekumpulan data yang terkait, seperti variable, constant, atribut, dll. ● Struct di Go adalah tipe data yang dapat digunakan untuk membuat objek tanpa inheritance dan polymorphism, tetapi dapat digunakan untuk encapsulation dan composition.
  • 26. Contoh ● Class di Go tidak ada, meskipun struct di Go dapat digunakan untuk melakukan hal yang sama dengan class di bahasa pemrograman lain. Namun, Go tidak menyediakan konsep inheritance dan polymorphism yang dapat dilakukan dengan class. Namun, Go menyediakan konsep interface yang dapat digunakan untuk polymorphism. ● Perbedaan antara struct dan class di Go adalah struct tidak dapat diwariskan dan tidak memiliki konsep polymorphism seperti class, tetapi struct dapat digunakan untuk composition dan encapsulation.
  • 27. Bagaimana cara mengimplementasikan inheritance di Go? ● Go tidak memiliki fitur inheritance secara eksplisit seperti bahasa pemrograman lain, namun dapat digantikan dengan mekanisme embedding. Embedding memungkinkan struct untuk "menyembunyikan" struct lain, sehingga struct dapat "menurunkan" atribut dan method dari struct yang diembed. ● Konsep "embedded struct" yang dapat digunakan untuk mencapai hasil yang sama dengan inheritance. ● Embedded struct adalah struct yang di-embed di dalam struct lain. Struct yang di- embed akan memiliki semua atribut dan method yang dimiliki struct induknya.
  • 28. Contoh ● Pada contoh, struct Car di-embed struct Engine. Sehingga struct Car akan memiliki semua atribut dan method yang dimiliki struct Engine. Pada saat kita memanggil method Start() pada struct Car, struct Engine juga akan dijalankan. ● Secara umum embedded struct digunakan untuk mencapai hasil yang sama dengan inheritance, tanpa harus menggunakan konsep inheritance. Namun, embedded struct tidak dapat digunakan untuk mencapai konsep polymorphism seperti yang dapat dilakukan dengan inheritance.
  • 29. Bagaimana cara mengimplementasikan polymorphism di Go? ● Go menyediakan fitur interface yang dapat digunakan untuk mengimplementasikan polimorfisme. Interface adalah kontrak yang menentukan method yang harus diterapkan oleh struct. Struct dapat mengimplementasikan interface dengan meng- override method yang ditentukan oleh interface tersebut.
  • 30. Contoh ● Pada contoh, kita membuat interface Animal yang memiliki method Speak(). Kemudian kita membuat struct Dog dan Cat yang masing-masing mengimplementasikan method Speak() yang didefinisikan pada interface Animal. Dengan begitu, kita dapat membuat sebuah array dengan tipe data Animal yang dapat menampung struct Dog dan Cat, sehingga kita dapat memanggil method Speak() pada masing-masing struct tanpa harus tahu tipe data sebenarnya dari struct tersebut. ● Secara umum, konsep interface digunakan untuk mengimplementasikan polymorphism di Go dengan cara menyatakan bahwa struct atau tipe data lain memiliki kompatibilitas dengan interface yang ditentukan. Dengan ini, kita dapat membuat kode yang lebih fleksibel dan dapat digunakan dengan berbagai tipe data yang memiliki kompatibilitas dengan interface yang sama.
  • 31. Bagaimana cara mengimplementasikan encapsulation di Go? ● Go menyediakan mekanisme encapsulation dengan konvensi pembuatan nama method dan atribut dengan huruf kecil atau dengan menambahkan keyword "private" pada nama method atau atribut. Method dan atribut dengan huruf kecil hanya dapat diakses dari package yang sama, sedangkan method dan atribut dengan keyword "private" hanya dapat diakses dari file yang sama.
  • 32. Contoh ● Pada contoh, struct BankAccount memiliki variabel balance dan owner yang dianggap private karena diawali dengan huruf kecil. Method Deposit, Withdraw, dan Balance dianggap public karena diawali dengan huruf besar. Method Deposit dan Withdraw dapat mengubah nilai dari balance, sementara method Balance hanya dapat mengambil nilai dari balance tanpa mengubah nilainya. Hal ini menyediakan encapsulation yang membatasi akses dan modifikasi pada variabel balance. ● Secara umum, Go menyediakan fitur private/public untuk mengimplementasikan encapsulation dengan membatasi akses dan modifikasi pada variabel atau method yang dianggap private. Dengan ini, kita dapat menjaga integritas data dan menyembunyikan implementasi detail dari sistem.
  • 33. Apakah Go menyediakan fitur exception handling seperti bahasa pemrograman lain? ● Tidak, Go tidak memiliki fitur exception handling yang sama dengan bahasa pemrograman lain. Go lebih mengutamakan menangani error dengan mekanisme error value dan error handling yang didefinisikan oleh pengguna. ● Go tidak memiliki fitur exception handling seperti try-catch atau throw. Namun, Go menyediakan fitur error handling yang dapat digunakan untuk menangani kesalahan yang terjadi pada saat pemrograman.
  • 34. Contoh ● Pada contoh diatas, kita membuat fungsi divide yang menerima 2 parameter integer dan mengembalikan 2 nilai yaitu hasil pembagian dan error. Pada saat bernilai 0, kita mengembalikan error "cannot divide by zero". Pada saat kita memanggil fungsi divide, kita mengecek apakah error terjadi atau tidak dan menampilkan pesan error jika terjadi. ● Secara umum, Go menyediakan fitur error handling yang dapat digunakan untuk menangani kesalahan yang terjadi pada saat pemrograman, tanpa menggunakan fitur exception handling yang ada pada bahasa pemrograman lain.
  • 35. Bagaimana cara menambahkan method pada struct di Go? ● Method dapat ditambahkan pada struct dengan menambahkan definisi fungsi yang diawali dengan receiver. Receiver adalah variabel yang digunakan untuk mengindikasikan bahwa method tersebut akan dijalankan pada struct yang ditentukan. ● Untuk menambahkan method pada struct di Go, kita dapat menambahkan method di luar struct yang akan mengambil receiver (atau pointer) dari struct tersebut sebagai parameter. Receiver harus berupa pointer untuk dapat mengubah nilai dari struct.
  • 36. Contoh ● Pada contoh, kita membuat struct Car yang memiliki 3 field yaitu brand, model, dan year. Kemudian kita menambahkan 2 method yang mengambil receiver dari struct Car sebagai parameter yaitu StartEngine() dan ChangeModel(). Method StartEngine() digunakan untuk mencetak "Engine started" dan method ChangeModel() digunakan untuk mengubah nilai dari field model dengan parameter newModel yang diinputkan. Pada saat kita memanggil method StartEngine() dan ChangeModel() pada struct Car, Engine started akan dicetak dan field model pada struct Car akan diubah menjadi "Corolla" ● Secara umum, menambahkan method pada struct di Go dapat dilakukan dengan menambahkan method di luar struct yang akan mengambil receiver dari struct tersebut sebagai parameter. Method tersebut dapat digunakan untuk melakukan operasi yang diinginkan pada struct.
  • 37. Apakah Go menyediakan fitur constructors dan destructors seperti bahasa pemrograman lain? ● Tidak, Go tidak memiliki fitur constructors dan destructors seperti bahasa pemrograman lain. Pengguna dapat untuk menginisialisasi dan mengosongkan struct secara manual. Namun, pengguna dapat menambahkan method init() pada struct untuk digunakan sebagai constructor, dan method close() untuk digunakan sebagai destructor. ● Go tidak secara eksplisit menyediakan fitur constructors dan destructors seperti bahasa pemrograman lain. Namun, Go menyediakan fitur yang serupa melalui kombinasi dari penggunaan fungsi, method, dan package level initialization. ● Untuk constructors, Go menyediakan fitur yang disebut factory function yang digunakan untuk membuat objek dari struct dengan nilai yang diinginkan. ● Factory function dapat digunakan untuk mengatur nilai default dari struct, menvalidasi input, atau melakukan operasi lain yang diperlukan sebelum objek dari struct dapat digunakan.
  • 38. Contoh ● Pada contoh, kita membuat factory function NewPoint() yang digunakan untuk membuat objek dari struct Point dengan nilai yang diinginkan. NewPoint() mengambil 2 parameter x dan y dan mengecek apakah x dan y lebih kecil dari 0, jika iya maka x dan y diubah menjadi 0. Kemudian factory function mengembalikan pointer dari struct Point yang baru dibuat. ● Untuk destructors, Go menyediakan fitur garbage collection yang digunakan untuk mengatur memory yang tidak digunakan lagi. Garbage collection digunakan untuk mengambil alih tugas mengelola memory yang dibutuhkan oleh objek, sehingga developer tidak perlu khawatir dengan mengelola memory secara manual. ● Secara umum, Go tidak menyediakan fitur constructors dan destructors secara eksplisit seperti bahasa pemrograman lain, namun Go menyediakan fitur yang serupa melalui kombinasi dari penggunaan fungsi, method, dan package level initialization yang digunakan untuk mengatur nilai default dari struct, menvalidasi input, atau melakukan operasi lain yang diperlukan sebelum objek dari struct dapat digunakan.
  • 39. Bagaimana cara mengakses atribut pada struct di Go? ● Atribut pada struct dapat diakses dengan menggunakan operator titik (.). Contohnya, jika struct Person memiliki atribut name, maka warna dapat diakses dengan menuliskan "Person.name".
  • 40. Contoh ● Pada contoh, kita membuat struct Person dengan 2 field yaitu name dan age. Kemudian kita membuat variable person yang diisi dengan struct Person. Setelah itu kita mengakses field name dan age dengan menggunakan operator titik. ● Secara umum, untuk mengakses atribut pada struct di Go, kita dapat menggunakan operator titik (.) setelah nama variable struct yang digunakan. Operator titik digunakan untuk mengakses field atau method yang didefinisikan dalam struct tersebut.
  • 41. Apakah Go memiliki fitur overloading method seperti bahasa pemrograman lain? ● Tidak, Go tidak memiliki fitur overloading method seperti bahasa pemrograman lain. Pengguna harus menambahkan method dengan nama yang berbeda untuk menangani kasus yang berbeda. ● Go hanya menyediakan fitur method dengan nama yang sama pada struct yang berbeda. Namun Go menyediakan fitur yang disebut method dari interface yang dapat digunakan untuk mengimplementasikan polimorfisme.
  • 42. Contoh ● Pada contoh ini, kita membuat interface Printer yang memiliki 1 method yaitu Print(). Kemudian kita membuat struct HP dan Canon yang masing-masing memiliki method Print() yang mengembalikan string yang berbeda. Kemudian kita membuat variable printer dengan tipe Printer dan mengisi dengan variable hp atau canon, kemudian memanggil method Print() dari variable printer yang sesuai dengan struct yang diisi. ● Secara umum, Go menyediakan fitur yang disebut method dari interface yang dapat digunakan untuk mengimplementasikan polimorfisme, sehingga kita dapat membuat beberapa struct yang masing-masing memiliki method yang sama namun mengembalikan nilai yang berbeda.
  • 43. Bagaimana cara mengimplementasikan abstraction di Go? ● Go menyediakan mekanisme abstraction dengan menyembunyikan implementasi dari struct dan hanya menampilkan tampilan dari struct. Hal ini dapat dilakukan dengan menyembunyikan atribut dan method dengan huruf kecil atau dengan menambahkan keyword "private" pada nama method atau atribut. Pengguna juga dapat menggunakan interface untuk menentukan method yang harus diimplementasikan oleh struct tanpa menunjukkan implementasinya. ● Interface di Go adalah sekumpulan method tanpa implementasi yang didefinisikan dalam sebuah struct. Interface digunakan untuk mengabstraksikan comportment yang diharapkan dari sebuah struct tanpa harus menyediakan implementasi dari comportment tersebut.
  • 44. Contoh ● Pada contoh ini, kita membuat interface Payment yang memiliki satu method yaitu processPayment(). Kemudian kita membuat struct CreditCard dan PayPal yang masing-masing memiliki method processPayment() yang mengembalikan string yang berbeda. Kemudian kita membuat method makePayment() yang menerima parameter p dengan tipe Payment, kemudian memanggil method processPayment() dari struct yang diterima sebagai parameter. ● Secara umum, Go menyediakan fitur interface yang dapat digunakan untuk mengabstraksikan comportment yang diharapkan dari sebuah struct tanpa harus menyediakan implementasi dari comportment tersebut.
  • 45. Thank you for joining! … and see you !