Pengenalan OOP
Pengenalan OOP
Class
Kucing
- String color + playing()
Kotlin
Java
Swift
JavaScript
Dart
Python
Mari kita coba membuat beberapa instance dari class Kucing ini.
Pada dasarnya Instance dan Object adalah hal yang sama.
Karena ketika membahas sebuah objek, kita tahu bahwa sebuah
object adalah instance dari sebuah class yang kita buat, atau
singkatnya adalah objek yang merupakan hasil realisasi dari
sebuah blueprint. Object yang terbentuk dari sebuah class akan
memiliki hak akses terhadap keseluruhan isi class. Eits masih
bingung? Mari kita lihat contoh membuat instance pada potongan
kode di bawah.
Kotlin
Java
Swift
JavaScript
Dart
1. fun main() {
2. val persian = Kucing()
3. persian.color = "Putih"
4. persian.height = 24.0
5. persian.length = 46.0
6. persian.weight = 2.0
7. val bengal = Kucing("Coklat", 22.0, 39.0, 2.3)
8. val anggora = Kucing("Abu-abu", 25.0, 41.0, 2.4)
9. }
Property
Kotlin
Java
Swift
JavaScript
Dart
Python
1. class Kucing (
2. private var color: String,
3. private var height: Double,
4. var length: Double,
5. var weight: Double
6. )
Function
Kotlin
Java
Swift
JavaScript
Dart
Python
1. class Kucing (
2. var color: String,
3. var height: Double,
4. var length: Double,
5. var weight: Double
6. ) {
7.
8. fun purring() {
9. println("Meow ..")
10. }
11.
12. fun eat() {
13. weight = weight + 1
14. }
15.}
Inheritance
Encapsulation
Abstraction
Polymorphism
Sebenarnya, secara tidak langsung kita telah menerapkannya
ketika kita mengembangkan sebuah perangkat lunak. Namun jika
kita ditanya tentang masalah teknis dari beberapa pilar tersebut,
kadang sulit bagi kita untuk menjelaskannya.
Kotlin
Java
Swift
JavaScript
Dart
Python
1. class SuperClass { }
2.
SuperClass
Sebuah class yang fitur-fiturnya akan diwariskan. Kelas
seperti ini biasa dikenal juga dengan istilah Induk, Base,
atau Parent Class.
SubClass
Anak/Children class yang akan mewarisi member milik
Super Class. Namun, class ini tetap dapat memiliki
membernya sendiri selain yang diwarisi dari SuperClass-
nya.
Jenis-jenis inheritance (pewarisan)
Jika kita ingin menerapkan inheritance, terdapat beberapa cara
yang bisa kita gunakan. Mari kita bahas satu per satu.
Single Inheritance
Java
Swift
JavaScript
Dart
Python
1. class Animal {
2. walk() {
3. console.log(`${this.constructor.name} walk!`);
4. }
5. }
6.
8. walk() {
9. console.log(`${this.constructor.name} walked!`);
10. }
11.}
Multilevel Inheritance
Java
Swift
JavaScript
Dart
Python
1. class Animal {
2. walk() {
3. console.log(`${this.constructor.name} walk!`);
4. }
5. }
6.
8. eat() {
9. console.log(`${this.constructor.name} eat!`)
10. }
11.}
12.
Multiple Inheritance
Sama seperti sebelumnya, multiple inheritance mengacu pada
konsep OOP di mana sebuah class dapat mewarisi lebih dari satu
SuperClass. Namun perlu diketahui bahwa beberapa bahasa
pemrograman seperti Java tidak mendukungnya secara penuh,
dengan alasan suatu SubClass harus bisa mengatur
ketergantungan dari 2 (dua) SuperClass-nya.
Kotlin
Java
Swift
JavaScript
Dart
Python
2.
4.
5. class Ovovivipar { }
6.
Kotlin
Java
Swift
JavaScript
Dart
Python
1. class Animal {
2. walk() {
3. console.log(`${this.constructor.name} walk!`);
4. }
5. }
6.
8. eat() {
9. console.log(`${this.constructor.name} eat!`);
10. }
11.}
12.
16.
Hybrid Inheritance
Menggunakan Encapsulation
Kotlin
Java
Swift
JavaScript
Dart
Python
1. class DataRepository {
2. constructor() {
3. this._data = [];
4. }
5.
6. setData() {
8. this._data = response.data;
9. }
10.
11. get data() {
13. }
14.}
Kita lanjut. Seperti judulnya, kita akan membahas tentang apa itu
abstraction. Abstraction adalah mekanisme saat proses dalam
sebuah objek disembunyikan. Object tersebut hanya akan
menyediakan apa yang benar-benar perlu digunakan..
Abstraction Layer
Kotlin
Java
Swift
1. class Arithmetic {
5.
8. }
9.
12. }
13.
16. }
17.}
Kotlin
Java
Swift
1. class Arithmetic {
5.
8. }
9.
12. }
13.
16. }
17.}
18.
20. @Override
22. System.out.println("Calculate!");
24. }
25.}
Runtime Polymorphism
Kotlin
Java
Swift
JavaScript
Dart
Python
1. class Animal {
2. walk() {
3. console.log(`${this.constructor.name} walk!`);
4. }
5. }
6.
8. walk() {
9. super.walk();
11. }
12.}
13.
16. cat.walk()
17.};
18.
19.main();
Rangkuman
Kardinalitas
One-to-one relationship
Hubungan satu ke satu terjadi ketika satu objek A memiliki
referensi dari satu objek B. Sebaliknya, satu objek B memiliki
referensi dengan satu dari objek A. Sebagai contoh, kelas User
hanya memiliki satu data diri dan tidak lebih. Berikut ini
gambarannya.
One-to-many relationship
Hubungan satu ke banyak ini diartikan dengan hubungan antara
dua objek A dan B di mana objek A terhubung dengan lebih dari
satu objek B, tetapi anggota dari objek B hanya terhubung
dengan satu anggota A. Sebagai contoh, seorang pembeli dapat
memiliki atau memesan minimal satu hingga beberapa pesanan.
Semisal, class User dapat memiliki hubungan one-to-many
terhadap class Order. Jika digambarkan akan menjadi seperti
berikut:
Many-to-many relationship
Hubungan banyak ke banyak merupakan hubungan antara dua
buah objek A dan B, di mana setiap anggota dari objek A maupun
B memiliki hubungan lebih dari satu objek A dan B. Sebagai
contoh, seorang pengguna dapat membeli beberapa barang,
tetapi satu buah barang juga dapat dibeli oleh beberapa
pengguna. Jika class User memiliki hubungan many-to-many
terhadap class Product maka hubungan antar class tersebut
dapat diilustrasikan seperti berikut:
Kotlin
Java
Swift
JavaScript
Dart
Python
1. class Seller {
2. constructor(id, name) {
3. this._id = id;
4. this._name = name;
5. }
6. }
7.
8. class User {
13. }
14.}
Aggregation
Kotlin
Java
Swift
JavaScript
Dart
Python
1. class Shop {
2. constructor(id, name) {
3. this._id = id;
4. this._name = name;
5. }
6.
7. set seller(value) {
8. this._seller = value;
9. }
10.
13. }
14.}
15.
16.class Seller {
20. }
21.}
Composition
Kotlin
Java
Swift
JavaScript
Dart
Python
1. class User {
3. this._id = id;
4. this._name = name;
5. this._address = address;
6. }
7. }
8.
9. class Address {
10. constructor(id, location) {
13. }
14.}
15.
17. ...
19.};
20.
21.main();
Kotlin
Java
Swift
JavaScript
Dart
Python
1. class ShopService {
2. ...
3. changeProductPrice(price, product) {
4. product.changePrice(price);
5. }
6. }
7.
8. class Product {
13. }
14.
15. ...
Generalization
Specialization
Kotlin
Java
Swift
JavaScript
Dart
Python
5. )
6.
7. class ElectronicProduct(
13.
14.class ConsumableProduct(
Kotlin
Java
Swift
JavaScript
Dart
Python
1. interface ProductService {
2. fun getProduct(id: String)
3. fun calculateProductPrice()
4. }
5.
8. // Implementation code
9. }
12. }
13.}
Rangkuman