SlideShare a Scribd company logo
Application Design as a Web
Artisan
“Polymorphism & Inheritance”
Krisna Fathurahman
Developer & Co-Founder @ Mandala
Laravel.bdg - March 21st 2018
Desain Aplikasi @ Laravel
- Object Oriented Programming
- Model-View-Controller
Desain Aplikasi @ Laravel
- Object Oriented Programming
- Model-View-Controller
Design Pattern
Dependency Injection
Factory Method
Singleton
Facade
Kenapa Object Oriented?
- Separation of Concern
- Kode terstruktur
- Mudah dimengerti
- Mudah dimaintain
- Mudah direuse
Fitur dari Object Oriented
Abstraction
Polymorphism
Inheritance
Encapsulation
Sebuah “Motor” terdiri dari
“Mesin”, “Stir”, “Gear”, “Ban”, dll.
Sebuah “Mobil” memiliki method
“engineStart()” tetapi kita tidak
dapat mengakses objek “Mesin” di
dalamnya
Sebuah “Triseda” merupakan
“Motor” dengan tiga “Ban” dan
“Gear” mundur
Untuk menyalakan, cukup panggil
method “engineStart()” apapun
merek “Motor” nya: “Yamaha”,
“Honda”, “Suzuki”, dll.
Case Study (Polymorphism)
- Pada sebuah personal blog, terdapat 3 jenis konten yang dapat ditampilkan
pada halaman utama: Article, Video, dan Photo
- Setiap jenis konten memiliki atribut yang berbeda-beda
- Pembaca dapat memberikan komentar pada konten yang dipost
- Setiap jenis konten memiliki desain tampilan yang unik antar jenisnya
Case Study (Polymorphism) - Design
- Pada sebuah personal blog, terdapat 3 jenis konten (Content) yang dapat
ditampilkan pada halaman utama: Article, Video, dan Photo
- Setiap jenis konten memiliki atribut yang berbeda-beda
- Pembaca dapat memberikan komentar (Comment) pada konten yang dipost
- Setiap jenis konten memiliki desain tampilan yang unik antar jenisnya
Let’s code!
Single Table Inheritance
Single Table Inheritance?
TL/DR
“Menggunakan satu buah table di database untuk berbagai
model pada satu aplikasi”
Kapan kita harus menggunakan STI?
STI akan sangat berguna jika kita memiliki (lebih dari satu)
model yang memiliki atribut yang relatif sama
id username password fullname role
1 admin hashed Administrator 1
2 user1 hashed Pengguna 1 0
3 user2 hashed Pengguna 2 0
Table “users”
id username password fullname role
1 admin hashed Administrator 1
2 user1 hashed Pengguna 1 0
3 user2 hashed Pengguna 2 0
Table “users”
- Jika satu user tidak memiliki banyak role
- Jika tiap role tidak memiliki atribut spesifik (contoh: NIP, NIK, NIM, dll.)
id username password fullname role
1 admin hashed Administrator 1
2 user1 hashed Pengguna 1 0
3 user2 hashed Pengguna 2 0
Table “users”
- Jika satu user tidak memiliki banyak role
- Jika tiap role tidak memiliki atribut spesifik (contoh: NIP, NIK, NIM, dll.)
App/User
App/Admin
=> Auth::attempt([$username, $password])
=> Auth::guard(‘admin’)->attempt([$username, $password])
Silahkan baca/googling “Laravel Multiple Auth Guard”
Case Study (Inheritance)
- Pada sebuah aplikasi Software Project Management, terdapat dua jenis Task:
Feature, dan Bug
- Setiap Software Project akan memiliki lebih dari satu Task
- Setiap Task akan diassign ke satu atau lebih orang Programmer
- Setiap Bug akan memiliki satu Reporter/Tester
Case Study (Inheritance) - Design
- Pada sebuah aplikasi Software Project Management, terdapat dua jenis Task:
Feature, dan Bug
- Setiap Software Project akan memiliki lebih dari satu Task
- Setiap Task akan diassign ke satu atau lebih orang Programmer
- Setiap Bug akan memiliki satu Reporter/Tester
Let’s code!
Polymorphism vs Inheritance
- Melakukan aksi dari pandangan yang lebih
umum
- Akan sangat dibutuhkan untuk hal yang
memang memiliki behaviour (method)
sama
- Melakukan aksi dengan
menspesifikasikan sebuah entitas
- Akan sangat dibutuhkan untuk hal yang
memiliki data/atribut yang relatif mirip
(hanya dibedakan oleh satu atribut)
Polymorphism Inheritance
cleaner code Let’s bring art into our code! #webartisan
All those things will bring us into
#awesomeweb
Any question?
Thank You!
/krsnadjava25
/krsnadjava

More Related Content

Similar to Application design as a web artisan

dasar program berorientasi objek pada power builder
dasar program berorientasi objek pada power builderdasar program berorientasi objek pada power builder
dasar program berorientasi objek pada power builder
Fariszal Nova
 
Siti maryam alizza_6701140222_pis1405_apsi
Siti maryam alizza_6701140222_pis1405_apsiSiti maryam alizza_6701140222_pis1405_apsi
Siti maryam alizza_6701140222_pis1405_apsi
smaryamalz
 
Tugas 4 rekayasaweb 1412511642 sri susanto
Tugas 4 rekayasaweb 1412511642 sri susantoTugas 4 rekayasaweb 1412511642 sri susanto
Tugas 4 rekayasaweb 1412511642 sri susanto
Universitas Budi Luhur
 
Mengembalikan folder-yang-hilang- xp
Mengembalikan folder-yang-hilang- xpMengembalikan folder-yang-hilang- xp
Mengembalikan folder-yang-hilang- xpAsriSusanti
 
Ragam hacking menggunakan google
Ragam hacking menggunakan googleRagam hacking menggunakan google
Ragam hacking menggunakan google
Indra Levyprawira
 
Sim, andika fajar, hapzi ali, sistem manajemen database, universitas mercubua...
Sim, andika fajar, hapzi ali, sistem manajemen database, universitas mercubua...Sim, andika fajar, hapzi ali, sistem manajemen database, universitas mercubua...
Sim, andika fajar, hapzi ali, sistem manajemen database, universitas mercubua...
Andika Fajar
 
Building a Secure Web Application
Building a Secure Web ApplicationBuilding a Secure Web Application
Building a Secure Web Application
Telkom Institute of Management
 
Resa ari siswo[1210652011], rico nilar hartono[1210652008]
Resa ari siswo[1210652011], rico nilar hartono[1210652008]Resa ari siswo[1210652011], rico nilar hartono[1210652008]
Resa ari siswo[1210652011], rico nilar hartono[1210652008]
resaarisiswo
 
Object Oriented
Object OrientedObject Oriented
Object Oriented
Asep Suhendar
 
[RPL2] Pertemuan 1 - Pendahuluan Rekayasa Perangkat Lunak 2
[RPL2] Pertemuan 1 - Pendahuluan Rekayasa Perangkat Lunak 2[RPL2] Pertemuan 1 - Pendahuluan Rekayasa Perangkat Lunak 2
[RPL2] Pertemuan 1 - Pendahuluan Rekayasa Perangkat Lunak 2
rizki adam kurniawan
 
Beginner's Guide to React & Redux Development
Beginner's Guide to React & Redux DevelopmentBeginner's Guide to React & Redux Development
Beginner's Guide to React & Redux Development
Yoza Aprilio
 
Algoritma Pemrograman 2
Algoritma Pemrograman 2Algoritma Pemrograman 2
Algoritma Pemrograman 2
Meycelino Avisha Taguh
 
Projek asti(b) revisi
Projek asti(b) revisiProjek asti(b) revisi
Projek asti(b) revisi
Pande Narendra
 
meet_05 - MDPL - INF Kls A.pptx
meet_05 - MDPL - INF Kls A.pptxmeet_05 - MDPL - INF Kls A.pptx
meet_05 - MDPL - INF Kls A.pptx
AndraAnonimus
 
Modul pelatihan-django-dasar-possupi-v1
Modul pelatihan-django-dasar-possupi-v1Modul pelatihan-django-dasar-possupi-v1
Modul pelatihan-django-dasar-possupi-v1
Ridwan Fadjar
 
Pengantar Android
Pengantar AndroidPengantar Android
Pengantar Android
Sherly Uda
 
Blueoxygen cimande 2
Blueoxygen cimande   2Blueoxygen cimande   2
Blueoxygen cimande 2AdityaAldo
 

Similar to Application design as a web artisan (20)

dasar program berorientasi objek pada power builder
dasar program berorientasi objek pada power builderdasar program berorientasi objek pada power builder
dasar program berorientasi objek pada power builder
 
Siti maryam alizza_6701140222_pis1405_apsi
Siti maryam alizza_6701140222_pis1405_apsiSiti maryam alizza_6701140222_pis1405_apsi
Siti maryam alizza_6701140222_pis1405_apsi
 
Tugas 4 rekayasaweb 1412511642 sri susanto
Tugas 4 rekayasaweb 1412511642 sri susantoTugas 4 rekayasaweb 1412511642 sri susanto
Tugas 4 rekayasaweb 1412511642 sri susanto
 
Mengembalikan folder-yang-hilang- xp
Mengembalikan folder-yang-hilang- xpMengembalikan folder-yang-hilang- xp
Mengembalikan folder-yang-hilang- xp
 
Ragam hacking menggunakan google
Ragam hacking menggunakan googleRagam hacking menggunakan google
Ragam hacking menggunakan google
 
Sim, andika fajar, hapzi ali, sistem manajemen database, universitas mercubua...
Sim, andika fajar, hapzi ali, sistem manajemen database, universitas mercubua...Sim, andika fajar, hapzi ali, sistem manajemen database, universitas mercubua...
Sim, andika fajar, hapzi ali, sistem manajemen database, universitas mercubua...
 
Building a Secure Web Application
Building a Secure Web ApplicationBuilding a Secure Web Application
Building a Secure Web Application
 
Bab 03-program-program my sql
Bab 03-program-program my sqlBab 03-program-program my sql
Bab 03-program-program my sql
 
Resa ari siswo[1210652011], rico nilar hartono[1210652008]
Resa ari siswo[1210652011], rico nilar hartono[1210652008]Resa ari siswo[1210652011], rico nilar hartono[1210652008]
Resa ari siswo[1210652011], rico nilar hartono[1210652008]
 
Object Oriented
Object OrientedObject Oriented
Object Oriented
 
[RPL2] Pertemuan 1 - Pendahuluan Rekayasa Perangkat Lunak 2
[RPL2] Pertemuan 1 - Pendahuluan Rekayasa Perangkat Lunak 2[RPL2] Pertemuan 1 - Pendahuluan Rekayasa Perangkat Lunak 2
[RPL2] Pertemuan 1 - Pendahuluan Rekayasa Perangkat Lunak 2
 
Kelompok 7
Kelompok 7Kelompok 7
Kelompok 7
 
Beginner's Guide to React & Redux Development
Beginner's Guide to React & Redux DevelopmentBeginner's Guide to React & Redux Development
Beginner's Guide to React & Redux Development
 
tugas APS
tugas APStugas APS
tugas APS
 
Algoritma Pemrograman 2
Algoritma Pemrograman 2Algoritma Pemrograman 2
Algoritma Pemrograman 2
 
Projek asti(b) revisi
Projek asti(b) revisiProjek asti(b) revisi
Projek asti(b) revisi
 
meet_05 - MDPL - INF Kls A.pptx
meet_05 - MDPL - INF Kls A.pptxmeet_05 - MDPL - INF Kls A.pptx
meet_05 - MDPL - INF Kls A.pptx
 
Modul pelatihan-django-dasar-possupi-v1
Modul pelatihan-django-dasar-possupi-v1Modul pelatihan-django-dasar-possupi-v1
Modul pelatihan-django-dasar-possupi-v1
 
Pengantar Android
Pengantar AndroidPengantar Android
Pengantar Android
 
Blueoxygen cimande 2
Blueoxygen cimande   2Blueoxygen cimande   2
Blueoxygen cimande 2
 

Application design as a web artisan

  • 1. Application Design as a Web Artisan “Polymorphism & Inheritance” Krisna Fathurahman Developer & Co-Founder @ Mandala Laravel.bdg - March 21st 2018
  • 2. Desain Aplikasi @ Laravel - Object Oriented Programming - Model-View-Controller
  • 3. Desain Aplikasi @ Laravel - Object Oriented Programming - Model-View-Controller Design Pattern Dependency Injection Factory Method Singleton Facade
  • 4. Kenapa Object Oriented? - Separation of Concern - Kode terstruktur - Mudah dimengerti - Mudah dimaintain - Mudah direuse
  • 5. Fitur dari Object Oriented Abstraction Polymorphism Inheritance Encapsulation Sebuah “Motor” terdiri dari “Mesin”, “Stir”, “Gear”, “Ban”, dll. Sebuah “Mobil” memiliki method “engineStart()” tetapi kita tidak dapat mengakses objek “Mesin” di dalamnya Sebuah “Triseda” merupakan “Motor” dengan tiga “Ban” dan “Gear” mundur Untuk menyalakan, cukup panggil method “engineStart()” apapun merek “Motor” nya: “Yamaha”, “Honda”, “Suzuki”, dll.
  • 6. Case Study (Polymorphism) - Pada sebuah personal blog, terdapat 3 jenis konten yang dapat ditampilkan pada halaman utama: Article, Video, dan Photo - Setiap jenis konten memiliki atribut yang berbeda-beda - Pembaca dapat memberikan komentar pada konten yang dipost - Setiap jenis konten memiliki desain tampilan yang unik antar jenisnya
  • 7. Case Study (Polymorphism) - Design - Pada sebuah personal blog, terdapat 3 jenis konten (Content) yang dapat ditampilkan pada halaman utama: Article, Video, dan Photo - Setiap jenis konten memiliki atribut yang berbeda-beda - Pembaca dapat memberikan komentar (Comment) pada konten yang dipost - Setiap jenis konten memiliki desain tampilan yang unik antar jenisnya
  • 10. Single Table Inheritance? TL/DR “Menggunakan satu buah table di database untuk berbagai model pada satu aplikasi”
  • 11. Kapan kita harus menggunakan STI? STI akan sangat berguna jika kita memiliki (lebih dari satu) model yang memiliki atribut yang relatif sama
  • 12. id username password fullname role 1 admin hashed Administrator 1 2 user1 hashed Pengguna 1 0 3 user2 hashed Pengguna 2 0 Table “users”
  • 13. id username password fullname role 1 admin hashed Administrator 1 2 user1 hashed Pengguna 1 0 3 user2 hashed Pengguna 2 0 Table “users” - Jika satu user tidak memiliki banyak role - Jika tiap role tidak memiliki atribut spesifik (contoh: NIP, NIK, NIM, dll.)
  • 14. id username password fullname role 1 admin hashed Administrator 1 2 user1 hashed Pengguna 1 0 3 user2 hashed Pengguna 2 0 Table “users” - Jika satu user tidak memiliki banyak role - Jika tiap role tidak memiliki atribut spesifik (contoh: NIP, NIK, NIM, dll.) App/User App/Admin => Auth::attempt([$username, $password]) => Auth::guard(‘admin’)->attempt([$username, $password]) Silahkan baca/googling “Laravel Multiple Auth Guard”
  • 15. Case Study (Inheritance) - Pada sebuah aplikasi Software Project Management, terdapat dua jenis Task: Feature, dan Bug - Setiap Software Project akan memiliki lebih dari satu Task - Setiap Task akan diassign ke satu atau lebih orang Programmer - Setiap Bug akan memiliki satu Reporter/Tester
  • 16. Case Study (Inheritance) - Design - Pada sebuah aplikasi Software Project Management, terdapat dua jenis Task: Feature, dan Bug - Setiap Software Project akan memiliki lebih dari satu Task - Setiap Task akan diassign ke satu atau lebih orang Programmer - Setiap Bug akan memiliki satu Reporter/Tester
  • 18. Polymorphism vs Inheritance - Melakukan aksi dari pandangan yang lebih umum - Akan sangat dibutuhkan untuk hal yang memang memiliki behaviour (method) sama - Melakukan aksi dengan menspesifikasikan sebuah entitas - Akan sangat dibutuhkan untuk hal yang memiliki data/atribut yang relatif mirip (hanya dibedakan oleh satu atribut) Polymorphism Inheritance cleaner code Let’s bring art into our code! #webartisan All those things will bring us into #awesomeweb