---
# System prepended metadata

title: Resume Konsep OOP

---

# Resume Konsep OOP

**Class vs Instances**
1. Instances di generate oleh class
2. Class hanya satu, instances bisa banyak

## Encapsulation (Cara store data ke dalam sebuah object)
**Key Idea**
1. Safe storange data
2. Data hanya boleh diakses dari method yg ada di instances
3. Data akan divalidasi terlebih dahulu oleh method sebelum digunakan didalam class
4. Di Python tidak terdapat data hiding, sehingga walaupun menggunakan method set and get data tetap bisa dimodifikasi dari luar class

**Constructor**
1. Di python constructor terdapat pada fungsi __init__(self)
2. Di constructor kita bisa melakukan passing data
3. sebaiknya dilakukan validasi data pada constuctor 

**Class Attributes vs Instance Attribute**
1. Ketika memanggil attribute, python akan mencari ke instance attribute terlebih dahulu, jika tidak ketemu akan mencari di class attribute

## Inheritance (Turunan class)
**Konsep**
1. Class yang dibuat bisa diturunkan menjadi class baru dengan fitur penambahan

## Polymorphism
**Konsep**
1. Beberapa class bisa memiliki nama method yang sama, namun akan menjadi independen method antara class yang satu dengan class yang lainnya
2. super() method digunakan untuk memanggil method yang berada pada superclass
3. Python support multiple inheritance

## Method Decorator 
**Konsep**
1. Special function yang bisa merubah function
    ```python
    @classmethod
    def get_count(cls):
        return InstanceCounter.count
    ```
    
## Static Method
**Konsep**
1. Method yang berfungsi sebagai utility pada class, contoh untuk filtering data
    ```python
    @staticmethod
    def filterint(value):
        if not isinstance(value, int):
            return 0
        else:
            return value
    ```
    
## Abstract Class
**Konsep**
1. Class dibuat sebagai template untuk class lain yg ingin menurunkan dari class tersebut. Jika class lain tidak menurunkan method yang ada di super class maka akan error
