SlideShare a Scribd company logo
1 of 39
OOP&SolidPrinciple
3122640049 - Fajar Yunus Afiffudin
@fanus99
01
OOP&SolidPrinciple
3122640049 - Fajar Yunus Afiffudin
@fanus99
01
Fajar Yunus Afiffudin
Mahasiswa PENS & Pekerja Serabutan
Email : me@fanus.id
Wa/telp : 0851-5604-6245
Website : fanus.id
@fanus99
Pewarisan/menurunkan kelas
baru dari yang sudah ada
Abstraction
Inheritance
Polymorphism
OOP
Karena bentuknya masih abstrak, dia
tidak bisa dibuat langsung menjadi
objek.
Abstract Class
Berbeda-beda tapi namanya
sama (overloading)
Interface
Penghubung antara sesuatu
yang ‘abstrak’ dengan
sesuatu yang nyata.
Encapsulation
Konsep atau ide umum
Prinsip yang membantu
merancang "Solusi" untuk
konsep OOP
SolidPrinciple
Pembatasan akses
informasi
@fanus99
Apaitu OOP?
OOP & Solid Principle
@fanus99
02
Apaitu OOP?
OOP & Solid Principle
@Sintesys
02
MengapaharusOOP?
Pada pemrograman prosedural, kita biasanya memecah program menjadi beberapa pro
Lalu membuat variabel global dan lokal untuk menyimpan data.
Semakin besar programnya, semakin banyak pula variabel dan prosedur yang harus dibu
Lama-kelamaan, kode program akan sulit dimodifikasi, karena sudah terlalu kompleks.
Di sinilah kita harus menggunakan OOP.
@fanus99
?
OOP(ObjectOrientedProgramming)
@fanus99
Pengertian OOP
@fanus99
OOP (Object Oriented Programming) atau
dalam bahasa indonesia dikenal dengan
pemrograman berorientasikan objek (PBO)
merupakan sebuah paradigma atau teknik
pemrograman yang berorientesikan Objek.
Pada OOP, Fungsi dan variabel dibungkus
dalam sebuah objek atau class yang dapat
saling berinteraksi, sehingga membentuk
sebuah program.
ClassdanObject
@fanus99
Class adalah rancangan atau blue print dari sebuah objek. Dengan class, kita bisa menentukan
variabel dan prosedur. Class ini nanti yang akan kita pakai untuk membuat objek.
Enkapsulasi
OOP & Solid Principle
@fanus99
03
Enkapsulasi
OOP & Solid Principle
@Sintesys
03
Apaitu Enkapsulasi?
@fanus99
Dalam OOP kita sering mendengar istilah encapsulation (pembungkusan), di mana data
dibungkus dengan modifier private agar tidak bisa diakses secara langsung dari luar class.
Berikut merupakan jenis modifier yang ada.
Manfaat enkapsulasi
@fanus99
Modularitas
Penyembunyian Informasi
@fanus99
Jika data dibungkus dengan
modifier private, bagaimana cara
mengaksesnya daei luar class?
Data bisa diakses menggunakan
method setter dan getter
ContohPenerapan Enkapsulasi
@fanus99
Enkapsulasi
Variable
Method Setter
Method Getter
Polymorphism
OOP & Solid Principle
@fanus99
04
Polymorphism
OOP & Solid Principle
@Sintesys
04
Apaitu Polimorphism?
@fanus99
Polimorphism / Polimorfisme dalam OOP
adalah sebuah prinsip di mana class dapat
memiliki banyak “bentuk” method yang
berbeda-beda meskipun namanya sama.
“Bentuk” di sini dapat kita artikan: isinya
berbeda, parameternya berbeda, dan tipe
datanya berbeda.
ContohPenerapan Polimorphism
@fanus99
Inheritance
OOP & Solid Principle
@fanus99
05
Inheritance
OOP & Solid Principle
@Sintesys
05
Apaitu Inherintace?
@fanus99
Sebuah class di Java, bisa memiliki satu atau lebih keturunan atau
class anak. Class anak akan memiliki warisan properti dan
method dari class parent.
ContohPenerapan Inherintace
@fanus99
Diwariskan method luas & keliling
Abstraction
OOP & Solid Principle
@fanus99
06
Abstraction
OOP & Solid Principle
@Sintesys
06
Apaitu Abstraction?
@fanus99
Abstraction merupakan konsep dimana kita menyembunyikan sebuah proses yang
kompleks/rumit, pengguna disini hanya tahu tentang funsionalitasnya saja tetapi tidak mengetahui
secara pasti bagaimana proses yang terjadi di belakangnya.
Semisal saat mendengar kata “Kendaraan”, apa yang kamu pikirkan pertama kali?
Motor?Mobil?Pesawat?
Apapun itu, semuanya adalah kendaraan.
Dan kita juga sudah tahu, kendaraan pasti bisa berjalan.
Tapi gimana kalau saya bilang: “Kendaraan berjalan” Mungkin kamu akan bertany
Cara jalannya gimana?
Terbang atau jalan di aspal?
Saya juga tidak tahu.
Inilah yang disebut abstraksi. Kata “Kendaraan” sendiri masih bersifat abstrak. Tapi kita bisa
membayangkan konsep kendaraan itu seperti apa.
Apaitu ClassAbstrak?
@fanus99
Class abstrak adalah class yang masih dalam bentuk abstrak. Karena bentuknya masih abstrak, dia
tidak bisa dibuat langsung menjadi objek.
Sebuah class agar dapat disebut class abstrak setidaknya memiliki satu atau lebih method abstrak.
Class Abstract
Method Abstract Method Abstract
Method Abstract
Method
Abstract
ContohAbstract Class
@fanus99
Abstract method tidak bisa digunakan
langsung, maka perlu diberikan logic
dahulu
SOLIDPRINCIPLE
OOP & Solid Principle
@fanus99
07
SOLIDPRINCIPLE
OOP & Solid Principle
@Sintesys
07
SOLID PRINCIPLE
S.O.L.I.D merupakan prinsip-prinsip yang dibuat untuk
membantu programmer yang menggunakan bahasa
pemograman berbasis OOP, membuat kodingan yang bersih,
kokoh, dan mudah maintain. Prinsip ini dicetuskan oleh Robert
C. Martin atau lebih dikenal dengan sebutan Uncle Bob
S
O
L
I
D
@fanus99
SOLID PRINCIPLE
S.O.L.I.D merupakan prinsip-prinsip yang dibuat untuk
membantu programmer yang menggunakan bahasa
pemograman berbasis OOP, membuat kodingan yang bersih,
kokoh, dan mudah maintain. Prinsip ini dicetuskan oleh Robert
C. Martin atau lebih dikenal dengan sebutan Uncle Bob
S
S - Single-Responsibility Principle
Single-responsibility principle (SRP) is a computer-
programming principle that states that every module, class or
function in a computer program should have responsibility
over a single part of that program's functionality, which it
should encapsulate.
O
L
I
D
@fanus99
S
S - Single-Responsibility Principle
O
L
I
D
O – Open-Closed Principle
Software entities should be open for extension, but closed
for modification.
@fanus99
S
O
O – Open-Closed Principle
L
I
D
L – Liskov Substitution Principle
The Liskov substitution principle (LSP) is a particular definition of a
subtyping relation, called strong behavioral subtyping, that was initially
introduced by Barbara Liskov in a 1987 conference keynote address titled
Data abstraction and hierarchy. It is based on the concept of
"substitutability“
“A principle in object-oriented programming stating that an object (such as
a class) may be replaced by a sub-object (such as a class that extends the
first class) without breaking the program. It is a semantic rather than merely
syntactic relation, because it intends to guarantee semantic interoperability
of types in a hierarchy, object types in particular.”
@fanus99
S
O
L
L – Liskov Substitution Principle
I
D
I – Interface Segregation Principle
Interface Segregation adalah memecah sebuah abstrak yang terlalu besar
menjadi beberapa abstrak yang lebih spesifik. Terkadang pada sebuah code
yang dibutuhkan hanya beberapa method saja dari interface tersebut,
sisanya tidak dibutuhkan dan beberapa diantaranya memiliki kohesi yang
rendah, tidak saling terkait.
@fanus99
S
O
L
L – Liskov Substitution Principle
I
I – Interface Segregation Principle
D
D – Dependency Inversion Principle
Prinsip ini merupakan implementasi dari Inversion of Control. Dengan
Dependency Injection, sebuah objek tidak bergantung pada implementasi
objek, tapi bergantung pada abstraksi. Dependency object tersebut di-inject
dari luar (high level object, tempat object-object tersebut dibuat dan
dikonfigurasi) lewat constructor atau setter pada object lain yang
bergantung pada object tersebut (umumnya lewat constructor agar
objeknya immutable), bukan dari dalam objek (low level object).
@fanus99
Reference:
• https://www.petanikode.com/java-oop/
• https://www.petanikode.com/java-oop-abstract/
• https://www.petanikode.com/java-oop-interface/
• https://www.petanikode.com/java-oop-abstract/
• https://www.engati.com/glossary/object-oriented-programming
• https://www.getsetsolution.com/what-is-difference-between-oops-and
• https://www.malasngoding.com/php-oop-part-4-pengertian-enkapsulasi-public-private-protected/
• https://www.java67.com/2015/08/difference-between-public-private-and-protected-in-java.html
• https://www.digitalocean.com/community/conceptual-articles/s-o-l-i-d-the-first-five-principles-of-object-
oriented-design#dependency-inversion-principle
• https://en.wikipedia.org/
• http://himti.budiluhur.ac.id/apa-itu-prinsip-s-o-l-i-d/
• https://ferry.vercel.app/blog/prinsip-single-responsibility
• https://ferry.vercel.app/blog/prinsip-open-for-extension-close-for-modification
• https://ferry.vercel.app/blog/prinsip-liskov-substitution
• https://ferry.vercel.app/blog/prinsip-interface-segregation
• https://ferry.vercel.app/blog/prinsip-dependency-injection-inversion-of-control
@fanus99
Terimakasih
@fanus99

More Related Content

Similar to OOP & Sollid Principle.ppsx

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
 

Similar to OOP & Sollid Principle.ppsx (20)

Pbo
PboPbo
Pbo
 
3. OOP Java
3. OOP Java3. OOP Java
3. OOP Java
 
Uts pemrograman berbasis obj
Uts pemrograman berbasis objUts pemrograman berbasis obj
Uts pemrograman berbasis obj
 
Tugas resume aplikasi internet
Tugas resume aplikasi internetTugas resume aplikasi internet
Tugas resume aplikasi internet
 
Pertemuan 2 Konsep Dasar Pemrograman OOP
Pertemuan 2 Konsep Dasar Pemrograman OOPPertemuan 2 Konsep Dasar Pemrograman OOP
Pertemuan 2 Konsep Dasar Pemrograman OOP
 
Pemrogaman Visual Basic.NET (Modul 4)
Pemrogaman Visual Basic.NET (Modul 4)Pemrogaman Visual Basic.NET (Modul 4)
Pemrogaman Visual Basic.NET (Modul 4)
 
T1 - Konsep Pemrograman Berorientasi Obyek.ppt
T1 - Konsep Pemrograman Berorientasi Obyek.pptT1 - Konsep Pemrograman Berorientasi Obyek.ppt
T1 - Konsep Pemrograman Berorientasi Obyek.ppt
 
Pengenalan OOP
Pengenalan OOPPengenalan OOP
Pengenalan OOP
 
Study Jam Andorid #3 Building Object-Oriented Programming Foundations with Ko...
Study Jam Andorid #3 Building Object-Oriented Programming Foundations with Ko...Study Jam Andorid #3 Building Object-Oriented Programming Foundations with Ko...
Study Jam Andorid #3 Building Object-Oriented Programming Foundations with Ko...
 
Modul pbo
Modul pboModul pbo
Modul pbo
 
P.5 media 2 enkapsulasi
P.5 media 2 enkapsulasiP.5 media 2 enkapsulasi
P.5 media 2 enkapsulasi
 
Materi Pemrograman Desktop
Materi Pemrograman DesktopMateri Pemrograman Desktop
Materi Pemrograman Desktop
 
1. konsep pbo
1. konsep pbo1. konsep pbo
1. konsep pbo
 
Oop
OopOop
Oop
 
penjelasan konsep oop object oriented programming
penjelasan konsep oop object oriented programmingpenjelasan konsep oop object oriented programming
penjelasan konsep oop object oriented programming
 
Kelas dan objek
Kelas  dan objekKelas  dan objek
Kelas dan objek
 
Part 8 - Object Oriented Programming
Part 8 - Object Oriented ProgrammingPart 8 - Object Oriented Programming
Part 8 - Object Oriented Programming
 
Belajar oop-php-mysql
Belajar oop-php-mysqlBelajar oop-php-mysql
Belajar oop-php-mysql
 
Tugas Rekayasa Web instilah pada pemrograman java
Tugas Rekayasa Web instilah pada pemrograman javaTugas Rekayasa Web instilah pada pemrograman java
Tugas Rekayasa Web instilah pada pemrograman java
 
Design concept 33ti1_025_069
Design concept 33ti1_025_069Design concept 33ti1_025_069
Design concept 33ti1_025_069
 

Recently uploaded

Metode_Sampling bahan galian mineral.pptx
Metode_Sampling bahan galian mineral.pptxMetode_Sampling bahan galian mineral.pptx
Metode_Sampling bahan galian mineral.pptx
HeriGeologist
 
Jual Obat Aborsi Jakarta Selatan 0822 2310 9953 Klinik Jual Obat Cytotec Asli...
Jual Obat Aborsi Jakarta Selatan 0822 2310 9953 Klinik Jual Obat Cytotec Asli...Jual Obat Aborsi Jakarta Selatan 0822 2310 9953 Klinik Jual Obat Cytotec Asli...
Jual Obat Aborsi Jakarta Selatan 0822 2310 9953 Klinik Jual Obat Cytotec Asli...
Obat Aborsi Jakarta ( Ampuh _ No. 1 ) Kandungan Jakarta
 
703618627-PPT-INVESTIGASI-KECELAKAAN-KERJA.pptx
703618627-PPT-INVESTIGASI-KECELAKAAN-KERJA.pptx703618627-PPT-INVESTIGASI-KECELAKAAN-KERJA.pptx
703618627-PPT-INVESTIGASI-KECELAKAAN-KERJA.pptx
arisvanrush
 
Jual Obat Aborsi Samarinda ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik Jua...
Jual Obat Aborsi Samarinda ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik Jua...Jual Obat Aborsi Samarinda ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik Jua...
Jual Obat Aborsi Samarinda ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik Jua...
Obat Aborsi Samarinda ( Asli Ampuh No.1 ) Samarinda
 
Jual Obat Aborsi Jakarta Selatan 0822 2310 9953 Klinik Jual Obat Cytotec Asli...
Jual Obat Aborsi Jakarta Selatan 0822 2310 9953 Klinik Jual Obat Cytotec Asli...Jual Obat Aborsi Jakarta Selatan 0822 2310 9953 Klinik Jual Obat Cytotec Asli...
Jual Obat Aborsi Jakarta Selatan 0822 2310 9953 Klinik Jual Obat Cytotec Asli...
Obat Aborsi Jakarta ( Ampuh _ No. 1 ) Kandungan Jakarta
 
Klinik Obat Aborsi Di Depok Wa 082223109953 Klinik Aborsi Di Depok
Klinik Obat Aborsi Di Depok Wa 082223109953 Klinik Aborsi Di DepokKlinik Obat Aborsi Di Depok Wa 082223109953 Klinik Aborsi Di Depok
Klinik Obat Aborsi Di Depok Wa 082223109953 Klinik Aborsi Di Depok
Klinik Obat Aborsi Di Depok Wa 082223109953
 
Jual Obat Aborsi Bandar Lampung ( Asli Ampuh No.1 ) 0822 2310 9953 Tempat Kli...
Jual Obat Aborsi Bandar Lampung ( Asli Ampuh No.1 ) 0822 2310 9953 Tempat Kli...Jual Obat Aborsi Bandar Lampung ( Asli Ampuh No.1 ) 0822 2310 9953 Tempat Kli...
Jual Obat Aborsi Bandar Lampung ( Asli Ampuh No.1 ) 0822 2310 9953 Tempat Kli...
Obat Cytotec Aborsi Jual Obat Aborsi 082223109953
 

Recently uploaded (11)

Metode_Sampling bahan galian mineral.pptx
Metode_Sampling bahan galian mineral.pptxMetode_Sampling bahan galian mineral.pptx
Metode_Sampling bahan galian mineral.pptx
 
Jual Obat Aborsi Jakarta Selatan 0822 2310 9953 Klinik Jual Obat Cytotec Asli...
Jual Obat Aborsi Jakarta Selatan 0822 2310 9953 Klinik Jual Obat Cytotec Asli...Jual Obat Aborsi Jakarta Selatan 0822 2310 9953 Klinik Jual Obat Cytotec Asli...
Jual Obat Aborsi Jakarta Selatan 0822 2310 9953 Klinik Jual Obat Cytotec Asli...
 
STRUKTUR KONSTRUKSI BANGUNAN TINGGI -.pptx
STRUKTUR KONSTRUKSI BANGUNAN TINGGI -.pptxSTRUKTUR KONSTRUKSI BANGUNAN TINGGI -.pptx
STRUKTUR KONSTRUKSI BANGUNAN TINGGI -.pptx
 
703618627-PPT-INVESTIGASI-KECELAKAAN-KERJA.pptx
703618627-PPT-INVESTIGASI-KECELAKAAN-KERJA.pptx703618627-PPT-INVESTIGASI-KECELAKAAN-KERJA.pptx
703618627-PPT-INVESTIGASI-KECELAKAAN-KERJA.pptx
 
Jual Obat Aborsi Samarinda ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik Jua...
Jual Obat Aborsi Samarinda ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik Jua...Jual Obat Aborsi Samarinda ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik Jua...
Jual Obat Aborsi Samarinda ( Asli Ampuh No.1 ) 082223109953 Tempat Klinik Jua...
 
Jual Obat Aborsi Jakarta Selatan 0822 2310 9953 Klinik Jual Obat Cytotec Asli...
Jual Obat Aborsi Jakarta Selatan 0822 2310 9953 Klinik Jual Obat Cytotec Asli...Jual Obat Aborsi Jakarta Selatan 0822 2310 9953 Klinik Jual Obat Cytotec Asli...
Jual Obat Aborsi Jakarta Selatan 0822 2310 9953 Klinik Jual Obat Cytotec Asli...
 
Perencanaan Pelabuhan perikanan id.pptx
Perencanaan Pelabuhan perikanan  id.pptxPerencanaan Pelabuhan perikanan  id.pptx
Perencanaan Pelabuhan perikanan id.pptx
 
Pengukuran Topografi menggunakan GPS Geodetik
Pengukuran Topografi menggunakan GPS GeodetikPengukuran Topografi menggunakan GPS Geodetik
Pengukuran Topografi menggunakan GPS Geodetik
 
Klinik Obat Aborsi Di Depok Wa 082223109953 Klinik Aborsi Di Depok
Klinik Obat Aborsi Di Depok Wa 082223109953 Klinik Aborsi Di DepokKlinik Obat Aborsi Di Depok Wa 082223109953 Klinik Aborsi Di Depok
Klinik Obat Aborsi Di Depok Wa 082223109953 Klinik Aborsi Di Depok
 
PROSEDUR DALAM MELAKUKAN PERHITUNGAN PEKERJAAN PINTU.pptx
PROSEDUR DALAM MELAKUKAN PERHITUNGAN PEKERJAAN PINTU.pptxPROSEDUR DALAM MELAKUKAN PERHITUNGAN PEKERJAAN PINTU.pptx
PROSEDUR DALAM MELAKUKAN PERHITUNGAN PEKERJAAN PINTU.pptx
 
Jual Obat Aborsi Bandar Lampung ( Asli Ampuh No.1 ) 0822 2310 9953 Tempat Kli...
Jual Obat Aborsi Bandar Lampung ( Asli Ampuh No.1 ) 0822 2310 9953 Tempat Kli...Jual Obat Aborsi Bandar Lampung ( Asli Ampuh No.1 ) 0822 2310 9953 Tempat Kli...
Jual Obat Aborsi Bandar Lampung ( Asli Ampuh No.1 ) 0822 2310 9953 Tempat Kli...
 

OOP & Sollid Principle.ppsx

  • 1. OOP&SolidPrinciple 3122640049 - Fajar Yunus Afiffudin @fanus99 01
  • 2. OOP&SolidPrinciple 3122640049 - Fajar Yunus Afiffudin @fanus99 01
  • 3. Fajar Yunus Afiffudin Mahasiswa PENS & Pekerja Serabutan Email : me@fanus.id Wa/telp : 0851-5604-6245 Website : fanus.id @fanus99
  • 4. Pewarisan/menurunkan kelas baru dari yang sudah ada Abstraction Inheritance Polymorphism OOP Karena bentuknya masih abstrak, dia tidak bisa dibuat langsung menjadi objek. Abstract Class Berbeda-beda tapi namanya sama (overloading) Interface Penghubung antara sesuatu yang ‘abstrak’ dengan sesuatu yang nyata. Encapsulation Konsep atau ide umum Prinsip yang membantu merancang "Solusi" untuk konsep OOP SolidPrinciple Pembatasan akses informasi @fanus99
  • 5. Apaitu OOP? OOP & Solid Principle @fanus99 02
  • 6. Apaitu OOP? OOP & Solid Principle @Sintesys 02
  • 7. MengapaharusOOP? Pada pemrograman prosedural, kita biasanya memecah program menjadi beberapa pro Lalu membuat variabel global dan lokal untuk menyimpan data. Semakin besar programnya, semakin banyak pula variabel dan prosedur yang harus dibu Lama-kelamaan, kode program akan sulit dimodifikasi, karena sudah terlalu kompleks. Di sinilah kita harus menggunakan OOP. @fanus99
  • 9. Pengertian OOP @fanus99 OOP (Object Oriented Programming) atau dalam bahasa indonesia dikenal dengan pemrograman berorientasikan objek (PBO) merupakan sebuah paradigma atau teknik pemrograman yang berorientesikan Objek. Pada OOP, Fungsi dan variabel dibungkus dalam sebuah objek atau class yang dapat saling berinteraksi, sehingga membentuk sebuah program.
  • 10. ClassdanObject @fanus99 Class adalah rancangan atau blue print dari sebuah objek. Dengan class, kita bisa menentukan variabel dan prosedur. Class ini nanti yang akan kita pakai untuk membuat objek.
  • 11. Enkapsulasi OOP & Solid Principle @fanus99 03
  • 12. Enkapsulasi OOP & Solid Principle @Sintesys 03
  • 13. Apaitu Enkapsulasi? @fanus99 Dalam OOP kita sering mendengar istilah encapsulation (pembungkusan), di mana data dibungkus dengan modifier private agar tidak bisa diakses secara langsung dari luar class. Berikut merupakan jenis modifier yang ada.
  • 15. @fanus99 Jika data dibungkus dengan modifier private, bagaimana cara mengaksesnya daei luar class? Data bisa diakses menggunakan method setter dan getter
  • 17. Polymorphism OOP & Solid Principle @fanus99 04
  • 18. Polymorphism OOP & Solid Principle @Sintesys 04
  • 19. Apaitu Polimorphism? @fanus99 Polimorphism / Polimorfisme dalam OOP adalah sebuah prinsip di mana class dapat memiliki banyak “bentuk” method yang berbeda-beda meskipun namanya sama. “Bentuk” di sini dapat kita artikan: isinya berbeda, parameternya berbeda, dan tipe datanya berbeda.
  • 21. Inheritance OOP & Solid Principle @fanus99 05
  • 22. Inheritance OOP & Solid Principle @Sintesys 05
  • 23. Apaitu Inherintace? @fanus99 Sebuah class di Java, bisa memiliki satu atau lebih keturunan atau class anak. Class anak akan memiliki warisan properti dan method dari class parent.
  • 25. Abstraction OOP & Solid Principle @fanus99 06
  • 26. Abstraction OOP & Solid Principle @Sintesys 06
  • 27. Apaitu Abstraction? @fanus99 Abstraction merupakan konsep dimana kita menyembunyikan sebuah proses yang kompleks/rumit, pengguna disini hanya tahu tentang funsionalitasnya saja tetapi tidak mengetahui secara pasti bagaimana proses yang terjadi di belakangnya. Semisal saat mendengar kata “Kendaraan”, apa yang kamu pikirkan pertama kali? Motor?Mobil?Pesawat? Apapun itu, semuanya adalah kendaraan. Dan kita juga sudah tahu, kendaraan pasti bisa berjalan. Tapi gimana kalau saya bilang: “Kendaraan berjalan” Mungkin kamu akan bertany Cara jalannya gimana? Terbang atau jalan di aspal? Saya juga tidak tahu. Inilah yang disebut abstraksi. Kata “Kendaraan” sendiri masih bersifat abstrak. Tapi kita bisa membayangkan konsep kendaraan itu seperti apa.
  • 28. Apaitu ClassAbstrak? @fanus99 Class abstrak adalah class yang masih dalam bentuk abstrak. Karena bentuknya masih abstrak, dia tidak bisa dibuat langsung menjadi objek. Sebuah class agar dapat disebut class abstrak setidaknya memiliki satu atau lebih method abstrak. Class Abstract Method Abstract Method Abstract Method Abstract Method Abstract
  • 29. ContohAbstract Class @fanus99 Abstract method tidak bisa digunakan langsung, maka perlu diberikan logic dahulu
  • 30. SOLIDPRINCIPLE OOP & Solid Principle @fanus99 07
  • 31. SOLIDPRINCIPLE OOP & Solid Principle @Sintesys 07
  • 32. SOLID PRINCIPLE S.O.L.I.D merupakan prinsip-prinsip yang dibuat untuk membantu programmer yang menggunakan bahasa pemograman berbasis OOP, membuat kodingan yang bersih, kokoh, dan mudah maintain. Prinsip ini dicetuskan oleh Robert C. Martin atau lebih dikenal dengan sebutan Uncle Bob S O L I D @fanus99
  • 33. SOLID PRINCIPLE S.O.L.I.D merupakan prinsip-prinsip yang dibuat untuk membantu programmer yang menggunakan bahasa pemograman berbasis OOP, membuat kodingan yang bersih, kokoh, dan mudah maintain. Prinsip ini dicetuskan oleh Robert C. Martin atau lebih dikenal dengan sebutan Uncle Bob S S - Single-Responsibility Principle Single-responsibility principle (SRP) is a computer- programming principle that states that every module, class or function in a computer program should have responsibility over a single part of that program's functionality, which it should encapsulate. O L I D @fanus99
  • 34. S S - Single-Responsibility Principle O L I D O – Open-Closed Principle Software entities should be open for extension, but closed for modification. @fanus99
  • 35. S O O – Open-Closed Principle L I D L – Liskov Substitution Principle The Liskov substitution principle (LSP) is a particular definition of a subtyping relation, called strong behavioral subtyping, that was initially introduced by Barbara Liskov in a 1987 conference keynote address titled Data abstraction and hierarchy. It is based on the concept of "substitutability“ “A principle in object-oriented programming stating that an object (such as a class) may be replaced by a sub-object (such as a class that extends the first class) without breaking the program. It is a semantic rather than merely syntactic relation, because it intends to guarantee semantic interoperability of types in a hierarchy, object types in particular.” @fanus99
  • 36. S O L L – Liskov Substitution Principle I D I – Interface Segregation Principle Interface Segregation adalah memecah sebuah abstrak yang terlalu besar menjadi beberapa abstrak yang lebih spesifik. Terkadang pada sebuah code yang dibutuhkan hanya beberapa method saja dari interface tersebut, sisanya tidak dibutuhkan dan beberapa diantaranya memiliki kohesi yang rendah, tidak saling terkait. @fanus99
  • 37. S O L L – Liskov Substitution Principle I I – Interface Segregation Principle D D – Dependency Inversion Principle Prinsip ini merupakan implementasi dari Inversion of Control. Dengan Dependency Injection, sebuah objek tidak bergantung pada implementasi objek, tapi bergantung pada abstraksi. Dependency object tersebut di-inject dari luar (high level object, tempat object-object tersebut dibuat dan dikonfigurasi) lewat constructor atau setter pada object lain yang bergantung pada object tersebut (umumnya lewat constructor agar objeknya immutable), bukan dari dalam objek (low level object). @fanus99
  • 38. Reference: • https://www.petanikode.com/java-oop/ • https://www.petanikode.com/java-oop-abstract/ • https://www.petanikode.com/java-oop-interface/ • https://www.petanikode.com/java-oop-abstract/ • https://www.engati.com/glossary/object-oriented-programming • https://www.getsetsolution.com/what-is-difference-between-oops-and • https://www.malasngoding.com/php-oop-part-4-pengertian-enkapsulasi-public-private-protected/ • https://www.java67.com/2015/08/difference-between-public-private-and-protected-in-java.html • https://www.digitalocean.com/community/conceptual-articles/s-o-l-i-d-the-first-five-principles-of-object- oriented-design#dependency-inversion-principle • https://en.wikipedia.org/ • http://himti.budiluhur.ac.id/apa-itu-prinsip-s-o-l-i-d/ • https://ferry.vercel.app/blog/prinsip-single-responsibility • https://ferry.vercel.app/blog/prinsip-open-for-extension-close-for-modification • https://ferry.vercel.app/blog/prinsip-liskov-substitution • https://ferry.vercel.app/blog/prinsip-interface-segregation • https://ferry.vercel.app/blog/prinsip-dependency-injection-inversion-of-control @fanus99

Editor's Notes

  1. MengapaOOP itu penting? Bukannya bisa bikin program dengan prosedural saja? Ya memang bisa… Tapi masalahnya nanti kalau programnya sudah semakin besar dan kompleks. Kode program akan sulit di-maintenance.
  2. Setelah mengetahui kenapa harus menggunakan oop, lalu apa itu oop?
  3. Terdapat perbedaan antara cara penulisan procedural, dan oop. Pada procedural, Variabel dideklarasikan secara global. Diatas sudah ada class kucimh dan makanan, lalu bagaimana cara membuat object dari class tersebut?
  4. Mekanisme ini membungkus seluruh informasi menjadi satu kesatuan layaknya dibungkus pada sebuah kapsul. Sehingga, dapat menjaga kebutuhan data dengan menerapkan pembatasan akses. Enkapsulasi sangat penting dilakukan untuk menjaga kebutuhan program agar dapat diakses sewaktu-waktu, sekaligus menjaga keamanan informasi
  5. Di mana data dibungkus dengan modifier private agar tidak bisa diakses secara langsung dari luar class, bagaimana cara mengaksesnya di luat kelas? Data bisa diakses menggunakan method setter dan getter inilah yang akan membantu kita mengakses data tersebut. Method setter dan getter adalah dua method yang tugasnya untuk mengambil dan mengisi data ke dalam objek.
  6. Method setter untuk menentukan/mengisi value dari variable Method getter untuk mendapatkan value dari variable
  7. Manfaatinheritance adalah kita tidak perlu menulis berulang-ulang properti dan method yang sama. Karena sudah di di wariskan oleh parent
  8. Class persegi bisa menggunakan method milik bangundatar yang merupakan parentnya
  9. S-Single Responsibility adalah prinsip yang setiap modul, kelas atau fungsinya hanya bertanggung jawab terhadap satu part fungsionalitas saja yang di-engkapsulasi. Single Responsibility adalah prinsip yang setiap modul, kelas atau fungsinya hanya bertanggung jawab terhadap satu part fungsionalitas saja yang di-enkapsulasi. Tapi secara mungkin adalah scope dari responsibility-nya tergantung masalah yang akan di-solve pada class. Disini penamaan class cukup penting, itu yang menjadi acuan masalah yang akan di-solve. Tujuannya untuk mengurangi kompleksitas saat terjadi perubahan. O-Disini bisnis logic dibungkus menjadi entitas yang bisa di-extend sebanyak apapun tanpa banyak perubahan di entity utama. Contoh code salah : Code di atas melanggar Open-Close Principle karena setiap penambahan grouping akan selalu terjadi perubahan pada entitas utama. Tentu saja itu akan sangat ribet, susah di-maintain banyak orang, sulit dibaca, dan rawan conflict. L - Prinsip substitusi Liskov (LSP) adalah definisi khusus dari hubungan subtipe, yang disebut subtipe perilaku yang kuat, yang awalnya diperkenalkan oleh Barbara Liskov dalam pidato utama konferensi tahun 1987 berjudul Abstraksi dan hierarki data. Ini didasarkan pada konsep "substitusi" prinsip dalam pemrograman berorientasi objek yang menyatakan bahwa suatu objek (seperti kelas) dapat digantikan oleh sub-objek (seperti kelas yang memperluas kelas pertama) tanpa merusak program. Ini adalah semantik daripada hanya hubungan sintaksis, karena bermaksud untuk menjamin interoperabilitas semantik tipe dalam hierarki, khususnya tipe objek. Disini pelanggaran terjadi. Burung unta memang bisa makan tanaman. Masalahnya burung unta ga bisa terbang dan ga tidur. Ketika implementasinya kita ganti ke Ostrich, code-nya bakal error karena saat melakukan eksekusi bird.fly() dan/atau bird.sleep() sebagai burung unta akan mengakibatkan runtime IllegalAccessException secara natural. Inilah yang disebut dengan pelanggaran Liskov Substitution Principle. Solusinya Pada contoh di atas, burung unta bukan bagian dari abstraksi burung pada design di atas. Jadi sudah jelas burung unta ga bisa mengimplementasi interface Bird karena object tersebut ga replacable. Done! Secara definisi class di awal, Ostrich berbeda dengan Bird / dengan memecah interface Bird menjadi FlyableBird dan SleepableBird I : Membagi Interface Pada class processor di atas, interface UserGateway terlalubanyak method. Dari beberapa method hanya sedikit saja yang digunakan berdasarkan code tertentu.
  10. S-Single Responsibility adalah prinsip yang setiap modul, kelas atau fungsinya hanya bertanggung jawab terhadap satu part fungsionalitas saja yang di-engkapsulasi. Single Responsibility adalah prinsip yang setiap modul, kelas atau fungsinya hanya bertanggung jawab terhadap satu part fungsionalitas saja yang di-enkapsulasi. Tapi secara mungkin adalah scope dari responsibility-nya tergantung masalah yang akan di-solve pada class. Disini penamaan class cukup penting, itu yang menjadi acuan masalah yang akan di-solve. Tujuannya untuk mengurangi kompleksitas saat terjadi perubahan.
  11. O-Disini bisnis logic dibungkus menjadi entitas yang bisa di-extend sebanyak apapun tanpa banyak perubahan di entity utama. Contoh code salah : Code di atas melanggar Open-Close Principle karena setiap penambahan grouping akan selalu terjadi perubahan pada entitas utama. Tentu saja itu akan sangat ribet, susah di-maintain banyak orang, sulit dibaca, dan rawan conflict.
  12. L - Prinsip substitusi Liskov (LSP) adalah definisi khusus dari hubungan subtipe, yang disebut subtipe perilaku yang kuat, yang awalnya diperkenalkan oleh Barbara Liskov dalam pidato utama konferensi tahun 1987 berjudul Abstraksi dan hierarki data. Ini didasarkan pada konsep "substitusi" prinsip dalam pemrograman berorientasi objek yang menyatakan bahwa suatu objek (seperti kelas) dapat digantikan oleh sub-objek (seperti kelas yang memperluas kelas pertama) tanpa merusak program. Ini adalah semantik daripada hanya hubungan sintaksis, karena bermaksud untuk menjamin interoperabilitas semantik tipe dalam hierarki, khususnya tipe objek. Disini pelanggaran terjadi. Burung unta memang bisa makan tanaman. Masalahnya burung unta ga bisa terbang dan ga tidur. Ketika implementasinya kita ganti ke Ostrich, code-nya bakal error karena saat melakukan eksekusi bird.fly() dan/atau bird.sleep() sebagai burung unta akan mengakibatkan runtime IllegalAccessException secara natural. Inilah yang disebut dengan pelanggaran Liskov Substitution Principle. Solusinya Pada contoh di atas, burung unta bukan bagian dari abstraksi burung pada design di atas. Jadi sudah jelas burung unta ga bisa mengimplementasi interface Bird karena object tersebut ga replacable. Done! Secara definisi class di awal, Ostrich berbeda dengan Bird / dengan memecah interface Bird menjadi FlyableBird dan SleepableBird
  13. I : Membagi Interface Pada class processor di atas, interface UserGateway terlalubanyak method. Dari beberapa method hanya sedikit saja yang digunakan berdasarkan code tertentu.
  14. Objek bookmysqlgateway nantinya akan dipakai oleh dua objek yang bertugas untuk memproses data buku-buku tersebut sesuai yang diinginkan. Yakni book service dan authorservice: Permasalahan pada code ini adalah code-nya jadi ga loosely-coupled karena BookGateway dibuat dari dalam objek AuthorService dan BookService. Jika implementasi objek dari BookMySqlGateway diganti dengan objek baru, misalnya BookGatewayNoSql, maka harus mengganti code tersebut di seluruh tempat yang menggunakan BookMySqlGateway. contoh di atas hanya digunakan di dua service, BookService & AuthorService. Solusinya adalah dengan melakukan dependency injection. Objek BookGateway bisa di-inject lewat constructor maupun lewat setter. Saya lebih prefer inject lewat constructor agar objeknya final dan immutable (tidak dapat diubah). Dengan begitu, objek BookGateway dibuat dan dikonfigurasi di luar BookService dan AuthorService, yang kemudian akan di-inject lewat constructor. Setiap ada pergantian implementasi objek BookGateway, misalnya dari BookMySqlGateway menjadi BookNoSqlGateway, maka itu bisa dilakukan sekali pada saat pembuatan objek tersebut. AuthorService dan BookService tidak lagi bergantung pada implementasi BookGateway secara langsung, melainkan pada interface, yang membuat objek jadi lebih fleksibel.