0% menganggap dokumen ini bermanfaat (0 suara)
154 tayangan

Modul Dart

Diunggah oleh

oka_aerials22
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)
154 tayangan

Modul Dart

Diunggah oleh

oka_aerials22
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
Anda di halaman 1/ 19

DART FUNDAMENTAL

FLUTTERIAN
1. Pengertian Dart
Dart adalah bahasa pemrograman yang open source dan general purpose. Dart
dikembangkan oleh Google dan ditujukan untuk membuat aplikasi multiplatform seperti
mobile, desktop, dan web.
Jauh sebelum ada Flutter, Dart awalnya digunakan untuk membuat web yang ada di
Google. Tujuan awal pembuatan Dart adalah untuk menggantikan JavaScript yang dinilai
memiliki banyak kelemahan. Sejak saat itu, rilisnya Flutter SDK untuk pengembangan
iOS, Android, dan web menjadi sorotan baru pada bahasa Dart.
- Dart adalah bahasa pemrograman yang fleksibel. Dart bisa berjalan di mana pun baik
itu Android, iOS, maupun web. Sebagai developer, tentunya sebuah keuntungan jika
bisa menuliskan kode dan bisa berjalan di mana saja.
- Dart adalah project open-source. Dart dibuat oleh Google, lalu bersama dengan
komunitas developer Dart mengembangkan teknologi dan fitur-fitur menarik yang bisa
ditambahkan pada Dart. Jika Anda menemukan bug atau masalah pada Dart, Anda
dapat melaporkannya atau bahkan memperbaikinya sendiri. Selain itu Anda tidak perlu
khawatir dalam masalah lisensi ketika menggunakan bahasa Dart. Anda dapat ikut
berkontribusi pada bahasa Dart pada repositori berikut: https://github.com/dart-lang.
- Dart digunakan oleh Flutter. Sejak kemunculan Flutter, Dart kembali menjadi
perhatian. Saat ini ada banyak perusahaan yang menggunakan Flutter pada aplikasinya.
Flutter bisa dibilang merupakan proyek yang revolusioner dari Google untuk
mengembangkan aplikasi multiplatform dengan tampilan UI yang menarik. Untuk itu,
jika Anda tertarik mengembangkan aplikasi dengan Flutter, maka menguasai Dart
adalah hal yang fundamental.
- Dart memiliki dukungan tools yang lengkap. Hampir setiap teks editor atau IDE
memiliki dukungan besar untuk Dart. Anda dapat menggunakan IDE seperti IntelliJ
IDEA, Webstorm, Android Studio maupun editor sederhana seperti VS Code, Sublime
text, Atom, atau yang lainnya sesuai kenyamanan Anda.

2. Variabel
Variabel adalah tempat untuk menyimpan sebuah nilai. Di dalam komputer variabel ini
disimpan di dalam memori komputer. Setiap variabel memiliki nama yang dapat kita
panggil dan gunakan. Pada Dart kita mendefinisikan sebuah variabel dengan keyword var.

var salam = 'Hello World!';

Lalu bagaimana jika kita ingin membuat variabel namun tidak ingin langsung
menginisialisasinya? Misalnya Anda ingin menunggu beberapa operasi selesai lalu
menginisialisasinya ke dalam variabel.

var salam;
salam = 'Hello World!';

3. Tipe Data
Dart memiliki banyak tipe data yang mewakili jenis data yang dapat kita gunakan dan
bagaimana data tersebut dioperasikan. Dengan tipe data, komputer dapat menghindari
operasi yang tidak mungkin serta bisa menghasilkan bug, misalnya seperti perkalian
karakter alfabet atau mengubah angka menjadi kapital.

Tipe Deskripsi

int Integer (bilangan bulat)

double Bilangan desimal

bool Boolean (true & false)

String Teks

List Kumpulan data

Map Pasangan key-value


4. Operator
4.1. Aritmatika
Contoh operator lain yang telah Anda lihat adalah operator aritmatika yang
digunakan untuk operasi seperti penjumlahan atau perkalian.

Operator Deskripsi

+ Penjumlahan

- Pengurangan

* Perkalian

/ Pembagian

~/ Pembagian, mengembalikan nilai int

% Sisa hasil bagi

4.2. Perbandingan

Dart juga mendukung operasi perbandingan untuk membandingkan nilai-nilai yang


dijadikan sebagai operands, jenis operator ini akan menghasilkan nilai boolean.
Berikut ini adalah contoh operator perbandingan pada Dart:

Operator Deskripsi

< Lebih kecil

> Lebih besar

<= Lebih kecil sama dengan


Operator Deskripsi

>= Lebih besar sama dengan

== Sama dengan

!= Tidak sama dengan

5. Function
Functions adalah blok kode atau prosedur yang dapat digunakan kembali.
Fungsi yang tidak menghasilkan nilai kembalian;

void nama_function(parameter1, parameter2, ...){


(Potongan kode)
}

Fungsi yang menghasilkan nilai kembalian:


Tipedata nama_function(parameter1, parameter2, ...){
(Potongan kode)
return ...
}

Kita bisa menggunakan default value parameter. Kita akan memberikan nilai default
pada parameter lalu nilai ini akan digunakan jika kita tidak memasukkan parameternya.

Tipedata nama_function([parameter1 = value, parameter2 = value]){


(Potongan kode)
return ...
}
Sebenarnya kita telah mengimplementasikan beberapa functions pada kode kita. Semua
program Dart dimulai dari fungsi main(). main() adalah contoh fungsi utama yang selalu
kita gunakan. Selain itu, print() juga termasuk fungsi.

6. Const & Final


Terkadang kita butuh menyimpan sebuah nilai yang tidak akan pernah berubah selama
program berjalan.
const double phi = 3.14;
final double phi = 3.14;
Perbedaan const dan final adalah const harus sudah ada nilainya sebelum kode dijalankan,
sedangkan final boleh dideklarasikan terlebih dahulu.

7. Variabel Scope
Setiap variabel memiliki scope atau lingkupnya masing-masing. Sebuah variabel dianggap
satu lingkup selama masih berada di satu blok kurung kurawal yang sama. Lingkup ini
menentukan bagian kode mana yang dapat membaca dan menggunakan variabel tersebut.

8. Control Flow
Sebuah program juga perlu membuat keputusan. Pada modul ini kita akan belajar
bagaimana memberikan instruksi bagi komputer untuk mengambil keputusan dari kondisi
yang diberikan serta bagaimana melakukan instruksi yang berulang.

8.1. If Else
Ekspresi if akan menguji suatu kondisi. Jika hasil ekspresi tersebut bernilai
true, maka blok kode di dalamnya akan dijalankan. Sebaliknya, jika bernilai
false maka proses yang ditentukan akan dilewatkan.
if (5 > 10){
print(“Jika pernyataannya benar”)
} else {
print(“Jika pernyataannya salah”)
}
Anda juga dapat mengecek beberapa kondisi sekaligus dengan
menggabungkan else dan if. Contohnya seperti program konversi nilai
berikut:
if (kondis1){
print(“Jika kondisi1 benar”)
} else if(kondis1) {
print(“Jika kondisi1 benar”)
} else {
print(“Jika semuanya salah”)
}

8.2. Switch Case


Bagaimana jika ada banyak kondisi yang perlu dicek menggunakan if? Tentu
akan membingungkan dan kode kita pun jadi sulit dibaca.
Dart mendukung statement switch untuk melakukan pengecekan banyak
kondisi dengan lebih mudah dan ringkas.

switch (variable/expression) {

case value1: // do something

break;

case value2: // do something

break;

default: // do something else

9. Looping
Ketika menulis program komputer, akan ada situasi di mana kita perlu melakukan hal sama
berkali-kali. Misalnya kita ingin menampilkan semua nama pengguna yang terdaftar di
aplikasi kita. Tentunya tidak praktis jika kita menulis semuanya.
9.1. For
For cocok digunakan pada kondisi perulangan di mana kita membutuhkan
variabel indeks dan tahu berapa kali perulangan yang kita butuhkan. Sebagai
contoh jika kita ingin menampilkan angka 1 sampai 100, kita bisa menuliskan
seperti berikut:
for (int i = 1; i <= 50; i++) {
print(i);
}
9.2. While dan do-while
Metode lain untuk melakukan perulangan adalah dengan while. Sama
seperti for, instruksi while mengevaluasi ekspresi boolean dan menjalankan
kode di dalam blok while ketika bernilai true.

var i = 1;
while (i <= 50) {
print(i);
i++;
}
Bentuk lain dari while adalah perulangan do-while.
do {
print(i);
i++;
} while (i <= 100);

10. Null Safety


Null safety pada dart ini lebih ke mencegah adanya sebuah variable yang bernilai null dan
errornya di levelcompiler bukan error saat program sudah dijalankan.
String nama;
nama = null; //error
print(nama);

String? nama;
nama = null;
print(nama);

11. Collection
Selain string, number, dan boolean, Dart masih memiliki tipe data lain yang dapat
menyimpan banyak data sekaligus yang dalam istilah pemrograman dikenal sebagai
collections. Collections merupakan sebuah objek yang bisa menyimpan kumpulan objek
lain. Contoh collections pada Dart antara lain List, Set, dan Map.

11.1. List

List sesuai namanya dapat menampung banyak data ke dalam satu objek.

List<int> numberList = [1, 2, 3, 4, 5];

List<dynamic> dynamicList = [1, “dart”, true];

Cara menampilkan isi dari List dengan diikuti nomor indexnya.

print(numberList[2]); // 3

Kenapa hasilnya 3? karena index dimulai dari 0, dan angka 3 berada di urutan index
ke 2.

“Bagaimana kita memanipulasi data pada List tersebut?” Nah, untuk menambahkan
data ke dalam list, kita bisa menggunakan fungsi add().

numberList.add(6);
Fungsi add ini akan menambahkan data di akhir list. Sehingga is dari variabel
NumberListadalah:

[1, 2, 3, 4, 5, 6]

Lalu bagaimana jika kita ingin menambahkan data namun tidak di akhir List?
Jawabannya adalah dengan fungsi insert. Di dalam fungsi insert kita perlu
memasukkan 2 parameter, yaitu indeks list dan data yang akan dimasukkan.

numberList.insert(3, 20);

// numberList = [1,2,3,20,4,5,6]

Sedangkan untuk menghapus data terdapat beberapa fungsi remove yang bisa kita
gunakan, antara lain:

list.removeAt(value) //menghapus dengan value

list.removeAt(index) //menghapus index tertentu

list.removeLast(index) //menghapus index terakhir

list.removeRange(indexN, indexN) //menghapus index dengan


range

For-in

For-in mengeksekusi dalam setiap iterasi, satu properti dari objek ditetapkan ke nama
variabel dan perulangan ini berlanjut hingga semua properti objek habis.

List<String> makanan = [Mie goreng', 'Tahu', 'Pempek'];

for(var i in makanan){
print(i);
}

forEach

List<String> makanan = [Mie goreng', 'Tahu', 'Pempek'];


makanan.forEach((m) => print(m));

11.2. Set
Selanjutnya kita akan membahas jenis collection yang kedua, yaitu Set. Set
merupakan sebuah collection yang hanya dapat menyimpan nilai yang unik.
Ini akan berguna ketika Anda tidak ingin ada data yang sama alias duplikasi
dalam sebuah collection.
Set<int> numberSet = {1, 1, 3, 3, 5};
Secara otomatis Set akan membuang angka yang sama, sehingga hasilnya
adalah {1, 4, 6}.
Kemudian untuk menampilkan data pada indeks tertentu, gunakanlah fungsi
elementAt().

11.3. Map
Map, yakni sebuah collection yang dapat menyimpan data dengan format key-
value.

Map mahasiswa = {
'nama': 'Muji',
'jurusan': 'Informatika',
'semester': 8
};
String yang berada pada sebelah kiri titik dua (:) adalah sebuah key,
sedangkan yang di sebelah kanan merupakan value-nya. Lalu untuk
mengakses nilai dari Map tersebut, kita bisa menggunakan key yang sudah
dimasukkan. Misalnya, kita bisa menggunakan key “nama” untuk
mendapatkan value “Muji”.
print(mahasiswa[‘nama’]);

12. OOP
OOP adalah paradigma pemrograman yang banyak digunakan saat ini untuk
mengembangkan aplikasi. Paradigma OOP berdasarkan pada konsep objek yang
memiliki atribut serta dapat melakukan operasi atau prosedur tertentu. Dengan OOP, kita
bisa dengan mudah memvisualisasikan objek yang ada di dunia nyata ke dalam program
komputer.

12.1. Class
Class merupakan sebuah blueprint/template untuk membuat objek. Di dalam
kelas ini kita mendefinisikan sifat (attribute) dan perilaku (behaviour) dari
objek yang akan dibuat. Sebagai contoh kita akan merancang kelas yang
berkaitan dengan hero Mobile Legend. Buatlah kelas Hero yang memiliki
atribut berupa name, health, dan damage. Kemudian perilakunya adalah
attack hit, dan walk.
Untuk mendefinisikan kelas dalam Dart, cukup gunakan keyword class
diikuti dengan nama kelas yang akan dibuat.
class Hero {
}

12.2. Property & Methods


Property adalah sebuah variabel yang ada didalam class, sementara method
adalah function yang ada di dalam class yang merepresentasikan perilaku dari
class tersebut.
class Hero {
//property
String name;
int healthy;
int damage;
//method
void attack(){

}
void hit(){

}
}
Kali ini kita mendefinisikan default value property health dan membuat code
untuk masing - masing method
class Hero {
//property
String name;
int healthy = 100;
int damage;
//method
void attack(){
print(“$name menyerang musuh”);
}
void hit(){
print(“$name diserang musuh”);
healthy = healthy – 10;
}
}

12.3. Constructor
Ketika suatu objek dibuat, semua properti pada kelas tersebut harus memiliki
nilai. Kita dapat langsung menginisialisasi pada properti tertentu atau
menginisialisasinya melalui constructor. Constructor adalah fungsi spesial
dari sebuah kelas yang digunakan untuk membuat objek. Mari kita tambahkan
constructor di kelas Hero.
class Hero {
//constructor
Hero(this.name, this.damage);
//property
String name;
int healthy = 100;
int damage;
//method
void attack(){
print(“$name menyerang musuh”);
}
void hit(){
print(“$name diserang musuh”);
healthy = healthy – 10;
}
}
Kita hanya membutuhkan name dan damage untuk dijadikan parameter,
karena healthy sudah mempunyai nilai default. Tetapi health bisa di
masukkan kedalam constructor dengan memasukkan nilai defaultnya.
Dengan adanya constructor kita bisa membuat banyak object yang berbeda,
mari kita instansiasikan.
Hero zilong = Hero(“Zilong”, 10);
Hero miya = Hero(“Miya”, 12);
Setelah membuat objek kita bisa memanipulasi objek tersebut.

12.4. Inheritance
Inheritance adalah kemampuan suatu program untuk membuat kelas baru
dari kelas yang ada. Konsep inheritance ini bisa dibayangkan layaknya
seorang anak mewarisi sifat dari orang tuanya. Di dalam OOP kelas yang
menurunkan sifat disebut sebagai kelas induk. Kita akan membuat kelas anak
dari Hero.
class Mage extends Hero {
String skill;
Mage(String name, int damage, String skill) : super(name,
damage){
this.skill = skill;
}
}

class Marksman extends Hero {


String weapon;
Marksman(String name, int damage, String weapon) :
super(name, damage){
this.weapon = weapon;
}
void shoot(){
print(“Player menembak”);
}
}
Karena kelas Hero memiliki constructor untuk menginisialisasi properti di
dalamnya, maka semua kelas turunannya juga perlu
mengimplementasikan constructor tersebut. Oleh sebab itu ketika membuat
kelas turunan tanpa mendefinisikan constructor kita akan mendapatkan eror.

12.5. Abstract
Sesuai namanya, abstract merupakan gambaran umum dari sebuah kelas. Ia
tidak dapat direalisasikan dalam sebuah objek.
abstract class Hero{ }
Dengan begitu kelas hero tidak dapat di instansiasikan menjadi objek.

12.6. Interface
Interface atau antarmuka merupakan set instruksi yang bisa diimplementasi
oleh objek. Secara umum, interface berfungsi sebagai penghubung antara
sesuatu yang abstrak dengan sesuatu yang nyata.
Setelah kelas mengimplementasikan interface, maka kelas tersebut wajib
mengimplementasikan semua metode yang ada di dalam interface.
Buat kelas baru untuk interface.
class Flyable{
void fly(){}
}
Kita dapat membiarkan body dari method fly() tetap kosong karena fungsi
implementasinya akan dilakukan oleh class. Selanjutnya buat kelas Mage
mengimplementasi interface Flyable
class Mage extends Hero implements Flyable{
.... code

@override
void fly(){
print(‘$name terbang!!’);
}
}
13. Synchronous vs Asynchronous
Sejauh ini kita telah menuliskan kode secara synchronous. Lebih lanjut, pada modul ini
kita akan mempelajari kode yang bekerja secara asynchronous. Sebelum
membahas asynchronous lebih dalam, kita akan bahas dahulu apa
perbedaan synchronous dan asynchronous.
Dalam synchronous program, kode program dijalankan secara berurutan dari atas ke
bawah. Artinya jika kita menuliskan dua baris kode maka baris kode kedua tidak bisa
dieksekusi sebelum kode baris pertama selesai dieksekusi. Kita bisa bayangkan ketika
sedang berada dalam antrian kasir. Kita tidak akan dilayani sebelum semua antrian di depan
kita selesai dilayani, begitu pula orang di belakang kita pun harus menunggu gilirannya.
Dalam asynchronous program, jika kita menuliskan dua baris kode, kita dapat membuat
baris kode kedua dieksekusi tanpa harus menunggu kode pada baris pertama selesai
dieksekusi. Dalam dunia nyata bisa kita bayangkan dengan memesan kopi melalui pelayan,
di mana sembari menunggu pesanan kita datang, kita dapat melakukan aktivitas lain seperti
membuka laptop atau menulis.
Program asynchronous memungkinkan suatu operasi bisa berjalan sembari menunggu
operasi lainnya selesai. Umumnya kita memanfaatkan asynchronous pada operasi yang
besar dan membutuhkan waktu lama, seperti mengambil data dari internet atau API,
menyimpan data ke database, dan membaca data dari sebuah berkas.

Anda mungkin juga menyukai