Core Object-Oriented Programming (OOP) dalam Python
Core Object-Oriented Programming (OOP) in Python
1. Inheritance
Konsep Inheritance:
Inheritance adalah konsep OOP fundamental yang memungkinkan kelas derivatif (class child) untuk mewarisi sifat dan metode dari kelas dasar. (parent class). Ini mempromosikan penggunaan ulang kode dan menetapkan hierarki alami antara kelas.
Types of Inheritance:
1. Single Inheritance:Kelas derivatif mewarisi dari satu kelas dasar.
```python
```
2. Multiple Inheritance: Kelas derivatif mewarisi dari beberapa kelas dasar.
```python
```
3. Multilevel Inheritance:Kelas derivatif mewarisi dari kelas derivatif lainnya.
```python
```
4. Hierarchical Inheritance: Kelas-kelas yang diwariskan dari satu basis.
```python
```
Benefits of Inheritance:
- Code Reuse: Fungsi umum dapat didefinisikan dalam kelas dasar dan digunakan kembali dalam kelas derivatif.
- Hierarchical Organization: Kelas dapat diatur dalam hierarki, membuat kode lebih mudah dipahami dan dapat dikelola.
- Extensibility: Fungsionalitas baru dapat ditambahkan ke kelas yang ada tanpa mengubahnya secara langsung.
2. Encapsulation
Principle of Encapsulation:
Encapsulation adalah praktik bundling data (attribut) dan metode yang beroperasi pada data menjadi satu unit, atau kelas. Prinsip ini membantu dalam melindungi keadaan internal sebuah objek dari modifikasi yang tidak disengaja dan menyediakan antarmuka terkontrol untuk mengakses dan memodifikasi data.
Encapsulation dalam Python:
- Public Members: dapat diakses dari mana saja.
- Protected Members: Diindikasikan oleh satu underscore (`_`). Dirancang untuk diakses hanya dalam kelas dan subkelasnya.
- Private Members: yang ditandai dengan double underscore (`__`) Hanya tersedia di dalam kelas.
Example:
```python
```
3. Abstraction
Konsep Abstraction:
Abstraction adalah konsep menyembunyikan detail implementasi yang kompleks dan menampilkan hanya fitur esensial dari suatu objek. Ini membantu mengurangi kompleksitas dan meningkatkan pembacaan kode.
Abstract Classes dan Methods dalam Python:
Abstract classes tidak dapat diinstansi dan dimaksudkan untuk diklasifikasikan. Mereka dapat berisi metode abstrak yang harus diimplementasikan oleh kelas derivatif.
Example:
```python
```
Role of Abstract Classes:
- Menentukan antarmuka umum untuk kelas derivatif.
- Menyediakan blueprint untuk kelas untuk diikuti, memastikan bahwa metode tertentu diterapkan.
4. Polymorphism
Concept of Polymorphism:
Polymorphism memungkinkan objek dari kelas yang berbeda untuk diperlakukan sebagai objek dari superklase umum. Ini memungkinkan antarmuka yang sama untuk digunakan untuk bentuk dasar yang berbeda (data types).
Polymorphism lewat Method Overriding dan Overloading:
- Method Overriding: Kelas derivatif dapat memberikan implementasi spesifik dari metode yang sudah didefinisikan dalam kelas dasarnya.
- Method Overloading:Python tidak mendukung metode overloading secara natif, tetapi kita dapat mencapai perilaku serupa menggunakan argumen default atau argumen panjang variabel.
Example of Method Overriding:
```python
```
Benefits of Polymorphism:
- Flexibility: Kelas yang berbeda dapat digunakan secara bergantian jika mereka berbagi antarmuka yang sama.
- Extensibility: Kelas baru dapat diperkenalkan dengan perubahan minimal ke basis kode yang ada.
5. Classes, Constructors, and Methods
Defining Classes, Constructors, and Methods:
- Class: Blueprint untuk membuat objek.
- Constructor: Metode khusus (`__init__`) yang digunakan untuk memulakan atribut objek.
- Methods: Fungsi yang ditetapkan dalam suatu kelas.
Example:
```python
```
Purpose of Constructors:
- Mengidentifikasi atribut objek.
- Mengatur kondisi atau properti yang diperlukan untuk objek.
6. Inheritance and Private/Public Properties
Inheritance and Accessibility of Class Members:
- Public Members: Inherited dan dapat diakses oleh derivatif.
- Protected Members: Inherited dan dimaksudkan untuk diakses dalam kelas dan subkelasnya.
- Private Members: Tidak langsung inherited tetapi dapat diakses melalui nama mangling.
Example:
```python
```
7. Private Attributes or Properties
Purpose and Benefits:
- Control Access: Melindungi data sensitif dari modifikasi yang tidak disengaja.
- Data Integrity: Pastikan data hanya dimodifikasi melalui metode terkontrol (getters and setters).
Defining and Accessing Private Attributes:
```python
```
8. Challenge: Object-Oriented Programming
Problem Statement:
Rancang hierarki kelas untuk mewakili berbagai jenis kendaraan. Mengimplementasikan kelas ‘Vehicle’, ‘Car’ dan ‘Truck’ dengan persyaratan berikut:
- Gunakan inheritance untuk berbagi atribut dan metode yang umum.
- Mengimplementasikan encapsulation untuk melindungi atribut pribadi.
- Menunjukkan polimorfisme dengan mendominasi metode dalam kelas derivatif.
Solution:
9. Solution: Temperature Class
Class Design:
- gunakan encapsulation Melindungi atribut pribadi.
-Menyediakan metode getter dan setter untuk akses terkontrol.
- Menggunakan metode untuk mengkonversi antara Celsius dan Fahrenheit.
Example:
```python
```
10. Solution: Circle Class
Class Design:
- Gunakan encapsulation untuk melindungi atribut pribadi.
- Mengimplementasikan metode untuk menghitung area dan lingkaran.
- Menggunakan metode statis untuk perhitungan yang tidak tergantung pada atribut instance.
Example:
```python
```
Contoh-contoh ini mencakup konsep OOP inti, termasuk inheritance, encapsulation, abstraction, dan polymorphism, memberikan dasar yang kuat untuk memahami dan menerapkan OOP di Python.
Comments
Post a Comment