0% menganggap dokumen ini bermanfaat (0 suara)
426 tayangan44 halaman

Dart Oop

Dokumen tersebut membahas tentang konsep-konsep dasar pemrograman berorientasi objek dalam bahasa Dart seperti class, object, field, method, constructor, inheritance dan konsep-konsep lainnya.

Diunggah oleh

Syarif Hidayat
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
426 tayangan44 halaman

Dart Oop

Dokumen tersebut membahas tentang konsep-konsep dasar pemrograman berorientasi objek dalam bahasa Dart seperti class, object, field, method, constructor, inheritance dan konsep-konsep lainnya.

Diunggah oleh

Syarif Hidayat
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd

Dart

OOP
Object Oriented Programming
Class

• Class adalah prototype atau cetakan


untuk membuat Object
• Class berisikan deklarasi semua
properties dan functions yang dimiliki
oleh Object
• Setiap Object selalu dibuat dari Class
• Sebuah Class bisa membuat Object
tanpa batas
Object

• Object adalah hasil instansiasi dari


sebuah Class
• Untuk membuat Object kita bisa
menggunakan nama Class lalu diikuti
dengan kurung ()
Field

• Field/Propertied/Attributes adalah data yang


bisa kita sisipkan di dalam Object
• Sebelum memasukkan data di field, kita
harus mendeklarasikan data apa saja yang di
miliki Object tersebut di dalam deklarasi
Class-nya
• Memmbuat field sama seperti membuat
variable, namun ditempatkan di block Class
• Field wajib dimasukkan nilainya, kecuali field
yang nullable
Manipulasi field

• Field yang ada di Object, bisa kita


manipulasi. Tergantung final atau
bukan
• Jika final, kita tidak bisa merubah
data fieldnya. Namun jika tidak,
kita bisa merubah data fieldnya
• Untuk memanipulasi data field,
sama seperti cara pada variable
• Untuk mengakses field, kita butuh
kata kunci .(titik) setelah nama
Object dan diiluti nama fieldnya
Method

• Method adalah function yang


terdapat di dalam Class
• Sama seperti function biasanya, kita
juga bisa menambahkan return
value, parameter didalam method
yang ada didalam block Class
• Untuk mengakses method tersebut,
kita bisa menggunakan tanda .(titik)
dan diikuti dengan nama methodnya
Method
Expression
Body
• Saat membuat method hanya
menggunakan satu baris kode,
kita bisa gunakan expression
body
• Expression body mirip seperti
ketika membuat anonymous
function
Extension
Method
• Extension method adalah cara
menambahkan method
terhadap Class yang sudah ada,
tanpa harus mengubah Class
tersebut
• Hal ini kadang bermanfaat jika
misal Class-nya adalah milik
library orang lain
Constructor
• Constructor adalah method yang akan dipanggil
saat pertama kali Object di buat
• Kita bisa memberi parameter di constructor
• Nama Constructor harus sama dengan nama
Class, dan tidak membutuhkan kata kunci void
return value
• Ketika kita menambahkan Constructor di pada
Class, maka saat membuat Object baru, kita
wajib mengikuti parameter yang ada di
Constructor
This Keyword

• Saat kita membuat kode di dalam


block Constructor atau method
didalam Class, kita bisa menggunakan
kata kunci this untuk mengakses
Object saat ini
• This juga bisa digunakan untuk
mengakses field dan method milik
Object saat ini
• This juga bisa digunakan untuk
mengatasi masalah variable
shadowing
Initializing Formal
Parameter
• Kadang saat membuat Constructor, biasanya
kita membuat parameter yang hanya digunakan
untuk mengubah nilai yang ada di field
• Kita bisa menggunakan fitur Formal Parameter,
dimana pada parameter kita bisa langsung
sebutkan field mana yang akan diubah
• Formal Parameter hanya bisa digunakan di
Constructor, tidak bisa di gunakan di method
• Kita cukup ubah parameternya dengan
menggunakan this.namaFieldnya, tanpa perlu
menggunakan tipe data
Named Constructor

• Constructor hanya bisa di buat satu saja,


kita tidak bisa membuat beberapa
dengan nama yang sama
• Namun terdapat fitur Named
Constructor, yaitu Constructor dengan
nama yang berbeda
• UNtuk membuatnya kita bisa
menggunakan nama
Class.namaConstructor nya
• Named Constructor bisa lebih dari satu
Redirecting
Constructor

• Saat membuat Named Constructor, kita


bisa memanggil Default Constructor atau
melakukan Redirecting Constructor
• Cara membuat Redirecting Constructor
adalah dengan menambahkan : (titik
dua), lalu diikuti dengan memanggil
this.(parameter), dimana this() disini
dianggap mengakses Default Constructor
• Saat membuat Redirecting Constructor,
kita tidak bisa menambahkan body pada
Redirecting Constructor
Initializer List

• Initializer List merupakan


tempat dimana kita bisa
mengubah field pada Object,
sebelum block body Constructor
• Hal ini menjadi lebih mudah
dibanding mengubah field di
dalam block Constructor
Constant
Constructor
• Saat kita membuat Class yang
tidak pernah berubah datanya
(immutable data), ada baiknya
kita buat Constructor nya dalam
bentuk Constant
• Untuk membuat Constant
Constructor kita bisa gunakan
kata kunci const
• Keuntungan saat menggunakan
Constant Constuctor adalah ketika
kita membuat constant Object
secara otomatis Object yang sama
akan digunakan
Factory
Constructor
• Factory Constructor adalah sebuah
fitur dimana kita bisa membuat
Constructor untuk membuat Object
baru , namun logika cara pembuatan
barunya bisa kita sesuaikan dengan
yang kita inginkan
• Misal kita ingin mengembalikan
Object yang sama berkali-kali, kita
bisa menggunakan Factory
Constructor
• Untuk membuat Factory Constructor
kita bisa menggunakan kata kunci
factory sebelum pembuatan
Constructor nya
Cascade Notation
• Cascade Notation merupakan operator yang bisa
kita gunakan untuk memberikan beberapa
operasi pada Object yang sama
• Ada dua jenis Cascade Notation, yaitu ..(titik titik)
dan ?..(tanda tanya titik titik)
• .. digunakan untuk object yang tidak nullable ,
sedangkan ?.. digunakan untuk Object yang
nullable
Inheritance
• Inheritance atau pewarisan adalah kemampuan untuk
menurunkan sebuah Class ke Class lain , dalam artian kita
bisa membuat Parent dan Child class
• Class Child , hanya bisa punya satu class Parent , namun
satu clas Parent bisa punya banyak class Child
• Saat sebuah Class diturunkan, maka semua field dan
method yang ada di class Parent, secara otomatis akan
dimiliki oleh class Child
• Untuk melakukan pewarisan di class Child kita harus
menggunakan kata kunci extends lalu diikuti denga nama
class Parent nya
Super Keyword
• Kadang kita ingin mengakses method yang
terdapat di class parent yang sudah terlanjur
kita override di class child
• Untuk mengakses method milik class parent, kita
bisa menggunakan kata kunci super
• Sederhananya , super digunakan untuk
mengakses class parent
• Tidak hanya method, field milik parent class pun
bisa kita akses menggunakan kata kunci super
Super Constructor
• Tidak hanya untuk mengakses method atau field
yang ada di parent class, kata kunci super juga
bisa gunakan untuk mengakses constructor
• Namun syaratnya untuk mengakses parent class
constructor , kita harus mengaksesnya di dalam
class child constructor
• Memanggil super constructor hanya bisa
dilakukan dalam bentuk Redirecting Constructor
Polymorphism
• Polymorphism adalah kemampuan sebuah object
berubah bentuk menjadi bentuk lain
• Polymorphism erat hubungannya dengan
Inheritance
Type Check & Cast
• Saat menggunakan polimorfisme, kadang kita
ingin melakukan konversi tipe data ke tipe data
aslinya
• Namun agar aman, sebelum melakukan konversi,
pastikan kita melakukan type check(pengecekan
tipe data) dengan menggunakan kata kunci is
• Hasil operator is adalah boolean, true jika tipe
data sesuai, false jika tidak sesuai
• Import adalah kemampuan untuk menggunakan class,
function atau variable yang berada di file yang berbeda

Import • Import sangat cocok digunakan ketika kode program


kita sudah banyak dan ditempatkan di banyak file
Abstract Class

• Saat kita membuat class, kita bisa menjadikan


sebuah class sebagai abstract class
• Abstract class artinya, class tersebut tidak bisa
dibuat sebagai object secara langsung, hanya bisa
diturunkan
• Untuk membuat sebuah class menjadi abstract,
kita bisa menggunakan kata kunci abstract
sebelum kata kunci class
• Dengan demikian abstract class bisa kita gunakan
sebagai kontrak untuk class child
Abstract Method

• Saat kita membuat class, kita bisa membuat


abstract method juga di dalam class tersebut
• Saat kita membuat sebuah abstract method, kita
tidak bisa menambahkan block method untuk
method tersebut
• Artinya abstract method wajib di override di class
child
Access Modifier

• Secara default, saat kita membuat field atau


method dalam sebuah class, maka semua field
dan method tersebut bisa di akses oleh siapa
saja
• Kadang-kadang kita ingin menyembunyikan field
atau method
• Untuk menyembunyikan akses field atau
method, kita bisa menggunakan _(underscore)
diawal field atau method nya
• Secara otomatis field atau method tersebut
hanya bisa di akses dari file tersebut dan artinya
tidak bisa diakses dari luar file
Getter dan Setter
• Getter adalah function yang dibuat untuk
mengambil data field
• Setter adalah function untuk mengubah data
field
• Untuk Getter, kita bisa menggunakan kata kunci
get
• Untuk Setter, kita menggunakan kata kunci set
Mixin
• Mixin merupakan reusable code yang bisa digunakan di
class lain tanpa harus terkendala dengan pewarisan
• Dengan Mixin, kita bisa membuat kode yang sama pada
beberapa class dan bisa menambahkan lebih dari satu
mixin, sama seperti interface
• Untuk membuat mixin, kita bisa menggunakan kata kunci
mixin
• Untuk menggunakan mixin, kita bisa menggunakan kata
kunci with diikuti dengan Mixin nya
Membatasi Mixin
• Secara default, semua class bisa menggunakan mixin
• Namun jika kita ingin membatasi hanya class turunan
tertentu, kita bisa tambahkan kata kunci on, diikuti
dengan class yang kita batasi pada Mixin nya
ToString Method
• Method toString() merupakan method untuk
representasi String dari Object
• Contohnya, saat kita menggunakan function
print(object) , sebenarnya yang kita panggil adalah
print(object.toString())
• Kita bisa meng-override method toString() jika ingin
mengimplementasikan representasi data String dari
class yang kita buat
Equals Operator
• Untuk membandingkan dua buah object apakah
sama atau tidak, bisanya kita menggunakan operator
==
• Secara default operator == adalah milik class Object,
implementasinya jika kita menggunakan operator ==
milik class object adalah melakukan pengecekan
kesamaan object dari lokasi di memory
• Kadang-kadang kita ingin mengimplementasikan
logika untuk membandingkan object
• Untuk hal ini, kita bisa melakukan operator == yang
ada di class object
HashCode Getter
• HashCode Getter adalah representasi integer object kita, mirip
seperti toString yang merupakan representasi String
• HashCode sangat bermanfaat untuk membuat struktur data unique
seperti hashMap, HashSet dll, karena cukup menggunakan
hashCode method untuk mendapatkan identitas unique object kita
• Secara default hashCode akan mengembalikan nilai integer sesuai
data di memory, namun kita meng-override nya jika kita ingin
• Sebanyak apapun hashCode dipanggil, untuk object yang sama,
harus menghasilkan data integer yang sama
• Jika ada 2 object yang sama jika dibandingkan menggunakan
method equals, maka nilai hashCode nya juga harus sama
No Such Method

• NoSuchMethod merupakan sebuah


method yang terdapat di class object
yang bisa override untuk mendeteksi
atau bereaksi ketika sebuah method
yang tidak ada di panggil
• NoSuchMethod hanya bisa digunakan
ketika tipe objectnya adalah dynamic
atau sebuah abstract class
NoSuchMethod untuk
Abstract Class

• Salah satu penggunaan NoSuchMethod


yang biasanya digunakan adalah
sebagai implementasi Abstract Class
• Dengan menggunakan NoSuchMethod,
kita tidak perlu mengimplementasikan
method yang terdapat di abstract class
lagi
Typedef
• Typedef merupakan fitur dimana kita bisa
membuat alias untuk tipe data lainnya
• Ini cocok ketika misal terdapat class dengan
nama yang sama, sehingga kita bisa
menggunakan alias untuk nama lain atau
mempersingkat nama class yang panjang dengan
alias
Static
• Static merupakan sebuah kata kunci yang digunakan untuk
membuat field dan method yang bisa diakses tanpa harus
membuat object nya
• Field atau method static bisa diakses oleh method yang
tidak static, namun field atau method static tidak bisa
mengakses field atau method yang tidak static
• Biasanya static digunakan untuk membuat utility
• Untuk menggunakan static field atau method, kita bisa
langsung menggunakan nama class diikuti denga titik dan
static field atau method nya
Enum
• Enum merupakan fitur untuk membuat
tipe data yang sudah jelas nilainya
• Untuk membuat Enum kita bisa
menggunakan kata kunci enum
Exception
• Saat kita membuat aplikasi, kita tidak
akan terhindar dengan yang namanya
error
• Error dipresentasikan dengan istilah
exception, dan semua dipresentasikan
dalam bentuk class
• Kita bisa menggunakan exception
sendiri atau menggunakan yang sudah
disediakan
• Untuk membuat sebuah exception,
kita bisa menggunakan kata kunci
throw, diikuti dengan object exception
nya
Membuat Class
Exception
• Saat menggunakan class Exception yang
sudah tersedia, kita juga bisa membuat
class Exception sendiri
• Tidak ada kontrak dalam pembuatan class
exception, kita bisa membuat class biasa
• Namun sangat direkomendasikan jika
membuat class exception baru, kita
melakukan implements ke class Exception
Try Catch
• Saat kita memanggil sebuah method
yang bisa menyebabkan exception,
maka secara otomatis progam akan
terhenti
• Jika kita tidak ingin program berhenti,
kita perlu menangkap exception
tersebut dan melakukan sesuatu
ketika terjadi exception
• Untuk menangkap exception, kita bisa
menggunakan try-catch
Finally
• Dalam try-catch, kita bisa
menambahkan block finally
• Block finally adalah block dimana akan
selalu dieksekusi baik terjadi ecxeption
ataupun tidak
• Ini sangat cocok ketika ingin
melakukan sesuatu, tidak peduli
sukses ataupun gagal
Stack Trace
• Saat kita menangkap exception, object
exception tidak memiliki informasi
posisi atau lokasi terjadinya error
• Jika kita ingin mengetahui posisi atau
lokasi terjadinya error, kita bisa
menambahkan parameter kedua pada
catch
• Secara otomatis parameter kedua
tersebut adalah sebuah object
StackTrace
• Metadata merupakan fitur yang digunakan untuk menambah informasi
tambahan pada kode program yang kita buat
Metadata • Untuk menambahkan informasi tambahan ke dalam program kita, kita
bisa menggunakan Annotation yang dimulai dengan karakter @ lalu
diikuti dengan constant atau memanggil constant constructor

ANNOTATION KETERANG AN

Menandai bahwa kode tersebut


@Deprecated sudah tidak direkomendasikan
digunakan

Menandakan bahwa field atau


@override method tersebut merupakan
overriding dari parent nya
Membuat Annotation
• Memmbuat Annotation sangat
mudah, kita bisa membuat constant
atau bisa membuat class dengan
menggunakan Constant Constructor

Anda mungkin juga menyukai