Menu
CoddyTech

Pemisahan interface

Pelajaran 25 dari 28 dalam kursus Clean Code: Menulis kode yang lebih baik dengan Python di Coddy.

"Lebih baik memiliki banyak antarmuka yang spesifik untuk klien daripada satu antarmuka serbaguna."

Antarmuka adalah deskripsi perilaku yang dapat dilakukan oleh sebuah object.

Prinsip segregasi antarmuka menyatakan bahwa antarmuka sebaiknya sekecil mungkin dari segi kohesi. Dengan kata lain, antarmuka sebaiknya hanya melakukan SATU hal.

Mari kita lihat contoh yang buruk, lalu kita perbaiki.

from abc import ABC, abstractmethod


class Animal(ABC):
	@abstractmethod
	def walk(self):
		pass

	@abstractmethod
	def swim(self):
		pass

Antarmuka ini memiliki banyak tanggung jawab!

Kita akan mengalami masalah saat mengimplementasikannya.

class Frog(Animal):
	def walk(self):
		print("Walking")
	
	def swim(self):
		print("Swimming")


class Giraffe(Animal):
	def walk(self):
		print("Walking")
	
	def swim(self):
		raise Exception("Girrafe cannot swim!")

Seperti yang kamu lihat, antarmuka ini tidak cocok untuk hewan yang tidak bisa berjalan dan berenang!

challenge icon

Tantangan

Mudah

Mari perbaiki contoh di atas dengan mengimplementasikan class Walkable dan Swimable. Kamu diberi class Frog dan Giraffe yang mengimplementasikan class baru tersebut.

Tugas:

  • Buat class abstrak Walkable yang hanya memiliki satu fungsi abstrak, yaitu walk(self)
  • Buat class abstrak Swimable yang hanya memiliki satu fungsi abstrak, yaitu swim(self)

Jangan ubah kode yang diberikan!

Perhatikan bahwa sekarang setiap interface hanya memiliki satu tanggung jawab dan mengikuti prinsip 

Coba sendiri

from abc import ABC, abstractmethod


# Enter you code here


class Frog(Walkable, Swimable):
	def walk(self):
		print("Walking")
	
	def swim(self):
		print("Swimming")


class Giraffe(Walkable):
	def walk(self):
		print("Walking")


if __name__ == "__main__":
	animal_type = input()
	if animal_type == "frog":
		animal = Frog()
		animal.walk()
		animal.swim()
	elif animal_type == "giraffe":
		animal = Giraffe()
		animal.walk()
		print("not Swimming")
			

Semua pelajaran di Clean Code: Menulis kode yang lebih baik dengan Python

Latihan sendiri: Compiler Python online