# PBO : Class dan Object ## 1. Pendahuluan Pemrograman berorientasi objek (OOP) adalah paradigma pemrograman yang menggunakan objek dan kelas sebagai elemen dasar untuk menyusun program. Dalam OOP, objek adalah entitas yang memiliki atribut (data) dan metode (fungsi), sedangkan kelas adalah blueprint atau template yang mendefinisikan sifat-sifat objek tersebut. Materi kali ini akan membahas dasar dari Class dan Object dalam pemrograman Python, yang merupakan salah satu bahasa yang mendukung paradigma OOP. ### Tujuan Praktikum 1. Memahami konsep dasar class dan object. 2. Menerapkan class dan object dalam pembuatan program Python. 3. Memahami perbedaan antara class sebagai template dan object sebagai instansiasi dari class. ## 2. Dasar Teori ### Kelas (Class) Kelas adalah blueprint atau cetak biru dari objek. Kelas mendefinisikan atribut dan perilaku (metode) yang dimiliki oleh objek-objek dari kelas tersebut. Sebuah kelas dibuat dengan menggunakan kata kunci `class` di Python. **Sintaks:** ```python class ClassName: # constructor def __init__(self): # atribut pass # metode def method_name(self): pass ``` ### Objek (Object) Objek adalah instansiasi dari sebuah kelas. Ketika sebuah objek dibuat dari sebuah kelas, maka objek tersebut akan memiliki semua atribut dan metode yang didefinisikan dalam kelas. **Sintaks:** ```python # membuat objek dari kelas object_name = ClassName() ``` ## 3. Contoh Use Case dan Analisis ### Contoh 1: Membuat Kelas Sederhana ```python class Car: def __init__(self, brand, model): self.brand = brand self.model = model def display_info(self): print(f"Car brand: {self.brand}, Model: {self.model}") # Membuat objek dari kelas Car car1 = Car("Toyota", "Camry") car1.display_info() ``` **Analisis:** - `Car`: Kelas yang memiliki atribut `brand` dan `model`. - `__init__(self, brand, model)`: Konstruktor yang diinisialisasi saat objek dibuat. - `car1 = Car("Toyota", "Camry")`: Membuat objek `car1` dengan properti `brand` dan `model`. - `car1.display_info()`: Memanggil metode untuk menampilkan informasi mobil. --- ### Contoh 2: Menambahkan Atribut Dinamis ```python class Dog: def __init__(self, name): self.name = name self.age = 0 # Default age def set_age(self, age): self.age = age def bark(self): print(f"{self.name} is barking!") # Membuat objek dari kelas Dog dog1 = Dog("Buddy") dog1.set_age(3) dog1.bark() ``` **Analisis:** - `Dog`: Kelas dengan atribut `name` dan `age`. - `dog1 = Dog("Buddy")`: Objek `dog1` dibuat dengan nama "Buddy". - `dog1.set_age(3)`: Menetapkan umur `dog1` menjadi 3. - `dog1.bark()`: Menampilkan suara anjing "Buddy". --- ### Contoh 3: Menggunakan Metode dengan Parameter ```python class Calculator: def add(self, a, b): return a + b def subtract(self, a, b): return a - b # Membuat objek calc = Calculator() result_add = calc.add(10, 5) result_subtract = calc.subtract(10, 5) print(f"Addition: {result_add}") print(f"Subtraction: {result_subtract}") ``` **Analisis:** - `Calculator`: Kelas yang berisi metode untuk penambahan dan pengurangan. - `calc.add(10, 5)`: Menghitung penjumlahan 10 dan 5. - `calc.subtract(10, 5)`: Menghitung pengurangan 10 dan 5. --- ### Contoh 4: Menggunakan Objek di dalam Objek ```python class Engine: def __init__(self, horsepower): self.horsepower = horsepower class Car: def __init__(self, brand, model, horsepower): self.brand = brand self.model = model self.engine = Engine(horsepower) def display_info(self): print(f"Car brand: {self.brand}, Model: {self.model}, Horsepower: {self.engine.horsepower}") # Membuat objek Car dengan objek Engine di dalamnya car2 = Car("Honda", "Accord", 200) car2.display_info() ``` **Analisis:** - `Engine`: Kelas yang mendeskripsikan mesin mobil dengan atribut `horsepower`. - `Car`: Kelas mobil yang memiliki objek `Engine` sebagai atribut. - `car2.display_info()`: Menampilkan informasi mobil termasuk daya mesin. --- ### Contoh 5: Menggunakan Inheritance (Pewarisan) ```python class Animal: def __init__(self, name): self.name = name def speak(self): print(f"{self.name} is making a sound!") class Cat(Animal): def speak(self): print(f"{self.name} says Meow!") # Membuat objek Cat yang mewarisi sifat dari kelas Animal cat1 = Cat("Whiskers") cat1.speak() ``` **Analisis:** - `Animal`: Kelas dasar dengan metode `speak`. - `Cat`: Kelas turunan dari `Animal`, yang menimpa metode `speak`. - `cat1 = Cat("Whiskers")`: Objek kucing `cat1` dibuat dan mewarisi atribut `name`. --- ### Contoh 6: Kelas dengan Metode Statis ```python class Math: @staticmethod def multiply(a, b): return a * b # Memanggil metode statis tanpa membuat objek result = Math.multiply(5, 6) print(f"Multiplication: {result}") ``` **Analisis:** - `Math`: Kelas dengan metode statis `multiply`. - `@staticmethod`: Dekorator untuk mendefinisikan metode statis. - `Math.multiply(5, 6)`: Memanggil metode tanpa membuat objek. ## 4. Kesimpulan Dalam modul ini, kita telah mempelajari konsep dasar dari class dan object dalam Python. Kita juga telah menerapkan 6 contoh use case yang menunjukkan berbagai cara penggunaan class dan object, mulai dari pembuatan objek sederhana hingga penggunaan inheritance dan metode statis.