You are on page 1of 34

Pemrograman Lanjut

Pemrograman Berbasis Objek


(Object-Oriented Programming)
Tim Pengelola MK Pemrograman Lanjut
KJFD Dasar dan Penunjang
Fakultas Ilmu Komputer
Universitas Brawijaya
Pengantar

▪ Sebagai manusia, kita bisa mengenal dan menggunakan objek


(object), seperti pena, kucing, atau kendaraan
▪ Kemudian mengklasifikasikan objek berdasarkan atribut (attribute),
sebagai contoh apel hijau atau apel merah, orang kurus atau gemuk,
dll
▪ Suatu objek juga memiliki perilaku (behavior), misal kucing
mengeong, bermain benang, menggerakkan ekor, dll
▪ Selain itu, setiap objek juga saling berinteraksi (interact)
Objek

▪ Semua benda yang ada di dunia nyata dapat dianggap sebagai objek
Contoh: rumah, mobil, sepeda motor, gelas, komputer, meja, dll
Karateristik Objek

▪ Setiap objek memiliki atribut sebagai suatu data/status (state)


▪ Setiap objek memiliki tingkah laku (behavior)
• Contoh : objek SEPEDA MOTOR
• Memiliki atribut (state) → roda, warna, jumlah roda, rem
• Memiliki tingkah laku (behavior) → kecepatan menaik/menurun, perpindahan gigi sepeda
▪ Penggambaran pemrograman berorientasi objek = penggambaran
pada dunia nyata
▪ Pada pemrograman berorientasi objek :
• Attribute disimpan pada → variable
• Behavior disimpan pada → method
Class

▪ Merupakan prototipe/blue prints yang mendefinisikan variabel-


variabel dan method-method secara umum
▪ Merupakan template untuk membuat objek
▪ Objek merupakan hasil instansiasi dari suatu kelas
▪ Proses pembentukan objek dari suatu class disebut instantiation
▪ Objek disebut juga instance
Attribute

▪ Data yang membedakan antara objek satu dengan lainnya


▪ Dalam class, atribut sebagai variabel
▪ Contoh: Class SEPEDA MOTOR

OBJEK
Motor Triseda Motor Balap
roda Aspira Michelin
warna Biru Merah
jumlah roda 3 2
rem Tromol Cakram
Behavior

▪ Hal yang biasa dilakukan oleh objek dari suatu class


▪ Dapat digunakan untuk mengubah nilai atribut suatu objek, menerima
informasi dari objek lain, dan mengirim informasi ke objek lain untuk
melakukan suatu pekerjaan
▪ Dalam class, behavior diwakili sebagai method
▪ Contoh: class SEPEDA MOTOR
• Menyalakan mesin
• Menambah kecepatan
• Gas dilepas
• Rem diinjak
• Belok kiri/kanan
• Menyalakan lampu
Membuat Class

▪ Sintaksis

class ClassName:
<statement-1>
.
.
.
<statement-N>
Contoh Class
class Employee:
empCount = 0 #attribute

def displayCount(self): #method, first argument always uses self


print ("Employee count = ", Employee.empCount)
Objek

▪ Sintaksis pembuatan objek


objectName = ClassName()

▪ Sintaksis pengaksesan atribut class melalui objek


objectName.attributeClass

▪ Sintaksis pengaksesan method class melalui objek


objectName.methodClass
Contoh Objek

e1 = Employee()
print("Attribute empCount = ", e1.empCount)
e1.displayCount()

Keluaran:

Attribute empCount = 0
Employee count = 0
__init__

▪ Merupakan spesial method sebagai constructor atau method


initialization
▪ Dipanggil setiap objek dibuat (instansiasi)
▪ Jumlah argumen ketika membuat objek harus sesuai jumlah
parameter pada constructor
Contoh Construtor
class Employee:
empCount = 0 #attribute

def __init__(self, name, salary): #constructor


self.name = name
self.salary = salary
Employee.empCount += 1

def displayEmployee(self): #method


print ("Employee name = ", self.name)
print ("Employee salary = ", self.salary)
Keluaran:
print ("Employee count = ", Employee.empCount)

Employee name = John


e1 = Employee('John', 1000) Employee salary = 1000
e1.displayEmployee() Employee count = 1
Contoh Construtor (lanjutan)
e1 = Employee('John', 1000)
e1.displayEmployee() Keluaran:
print()
Employee name = John
Employee salary = 1000
e2 = Employee('Edward', 1500)
Employee count = 1
e2.displayEmployee()
print() Employee name = Edward
Employee salary = 1500
Employee count = 2
e3 = Employee('Jennifer', 1200)
e3.displayEmployee() Employee name = Jennifer
print() Employee salary = 1200
Employee count = 3
__del__

▪ Merupakan spesial method sebagai destructor


▪ Dijalankan ketika suatu objek dihapus/dihancurkan
Inheritance Class

▪ Merupakan kelas pewarisan


▪ Kelas anak mewarisi seluruh atribut dari kelas induknya
▪ Kelas anak bisa mengganti (override) nilai atribut dan metode dari
induknya
class Parent1:
pass
▪ Sintaksis: class Parent2:
class ChildClassName (): pass
class_bodyParentClass1[, ParentClass2, ...]
class Parent3:
pass

class Kid1(Parent1, Parent2, Parent3):


pass
Inheritance Class
Contoh Inheritance Class
class Parent: # define parent class
parentAttr = 100
def __init__(self):
print ("Calling parent constructor")

def parentMethod(self):
print ('Calling parent method')

def setAttr(self, attr):


Parent.parentAttr = attr

def getAttr(self):
print ("Parent attribute :", Parent.parentAttr)
Contoh Inheritance Class (lanjutan)
class Child(Parent): # define child class
def __init__(self):
print ("Calling child constructor")

def childMethod(self):
print ('Calling child method')

c = Child() # instance of child


Keluaran:
c.childMethod() # child calls its method
c.parentMethod() # calls parent's method Calling child constructor
c.setAttr(200) # again call parent's method Calling child method
Calling parent method
c.getAttr() # again call parent's method Parent attribute : 200
Polymorphism

▪ Behavior yang sama pada class memiliki banyak bentuk


▪ Contoh:
• Class Kendaraan memiliki behavior dapat bergerak
• Class Mobil dan SepedaMotor merupakan inheritance dari class Kendaraan
• Mobil dan SepedaMotor mewarisi behavior dapat bergerak
• Mobil dan SepedaMotor dapat bergerak dengan cara yang berbeda, mobil
dengan menginjak gas, sedangkan sepeda motor menarik gas
▪ Proses pengimplementasian ulang suatu method pada kelas anak
disebut Method Overriding
Contoh Polymorphism
class Bird:
def intro(self):
print("There are many types of birds.")

def flight(self):
print("Most of the birds can fly but some cannot.")

class Sparrow(Bird):
def flight(self):
print("Sparrows can fly.")

class Ostrich(Bird):
def flight(self):
print("Ostriches cannot fly.")
Contoh Polymorphism (lanj)
obj_bird = Bird()
obj_spr = Sparrow()
obj_ost = Ostrich()

obj_bird.intro()
obj_bird.flight()
Keluaran:
obj_spr.intro()
There are many types of birds.
obj_spr.flight()
Most of the birds can fly but some cannot.
There are many types of birds.
obj_ost.intro() Sparrows can fly.
There are many types of birds.
obj_ost.flight() Ostriches cannot fly.
Abstract Class

▪ Merupakan blueprint bagi kelas lain


▪ Objek tidak dapat dibuat dari kelas abstract
▪ Memungkinkan kelas anak dari kelas abstract harus memiliki seluruh
method dari kelas abstract
▪ Method pada kelas abstract hanya memiliki deklarasi tanpa adanya
implementasi
▪ Implementasi method pada kelas abstract dilakukan pada kelas anak
Contoh Abstract Class
from abc import ABC, abstractmethod

class Polygon(ABC): # abstract class


# abstract method
def noofsides(self):
pass # without implementaion
Contoh Abstract Class (lanj)
class Triangle(Polygon):
# overriding abstract method
def noofsides(self):
print("I have 3 sides") # implement the abstract method

class Pentagon(Polygon):
# overriding abstract method
def noofsides(self):
print("I have 5 sides")
Contoh Abstract Class (lanj)
class Hexagon(Polygon):
# overriding abstract method
def noofsides(self):
print("I have 6 sides")

class Quadrilateral(Polygon):
# overriding abstract method
def noofsides(self):
print("I have 4 sides")
Contoh Abstract Class (lanj)
# Driver code
R = Triangle()
R.noofsides()

K = Quadrilateral()
K.noofsides()

R = Pentagon()
Keluaran:
R.noofsides()
I have 3 sides
K = Hexagon() I have 4 sides
I have 5 sides
K.noofsides() I have 6 sides
Exception Handling

▪ Exception (pengecualian) merupakan suatu event yang dapat terjadi


selama pelaksanaan program yang mengganggu aliran normal
instruksi suatu program
▪ Ketika menghadapi situasi yang tidak dapat diatasi (kesalahan) maka
timbul exception
▪ Ketika exception muncul maka harus segera ditangani
▪ Penanganan dengan menggunakan try: block
Try Block

▪ Sintaksis

try:
# Some Code....
except:
# optional block
# Handling of exception (if required)
else:
# execute if no exception
finally:
# Some code .....(always executed)
Try Block

print(x)
▪ Ketika perintah di atas dijalankan akan menghasilkan error
• NameError: name 'x' is not defined

▪ Error tersebut dapat ditangani dengan menggunakan try block


try:
print(x)
except:
print("An exception occurred")
Contoh

▪ Penghitung luas bangun 2-D

Basic Shape

Rectangle Circle
Triangle
Contoh
Basic Shape Class → Parent class
class Shape:
def __init__(self, side1, side2):
self.side1 = side1
self.side2 = side2

def get_area(self):
return self.side1 * self.side2

def __str__(self):
return f'The area of this {self.__class__.__name__} is: {self.get_area()}'
Contoh
Rectangle Class → Child class persegiPanjang = Rectangle(4,5)
class Rectangle(Shape): print(persegiPanjang)
pass
output:
The area of this Rectangle is: 20

Triangle Class → Child class


class Triangle(Shape):
def __init__(self, base, height): segitiga = Triangle(4,5)
super().__init__(base, height) print(segitiga)

def get_area(self): output:


area = 1/2 * super().get_area() The area of this Triangle is: 10.0
return area
Circle Class → Child class
class Circle(Shape):
lingkaran = Circle(7)
def __init__(self, radius):
print(lingkaran)
self.radius = radius
output:
def get_area(self):
The area of this Circle is: 154.0
return 22/7 * (self.radius ** 2)
Terima Kasih

You might also like