Laporan Praktikum Aplikasi Mobile

Setup Environment, Dart Dasar dan OOP Dart

Aliffia Humairah - 2311531004

Click to go to github


Langkah Pengerjaan:

Install SDK Dart

Sebelum install SDK Dart pastikan arsitektur hardware telah memenuhi persyaratan minimum. Adapun persyaratan minimum yang dibutuhkan untuk install SDK Dart seperti gambar berikut:

https://i.imgur.com/9wBxGTP.png

Untuk menginstall SDK Dart dapat menggunakan beberapa cara yaitu dapat menggunakan Chocolatey atau dapat langsung download file SDK dalam bentuk ZIP kemudian di extract pada computer. Berikut Langkah-langkah install SDK Dart pada Windows:

1. Menggunakan Chocolatey

  • Install Chocolatey, https://chocolatey.org/install
  • Buka command promt atau powershell kemudian ketikan perintah choco install dart-sdk
  • Menganti PATH, secara default Ketika menginstall SDK Dart menggunakan Chocolatey akan terinstall pada Directory C:\tools\dart-sdk
  • 1. Extract SDK Dart ZIP

  • Download SDK Dart pada halaman Dart SDK archive https://dart.dev/get-dart/archive#stable-channel. Download versi stabil sesuai dengan system operasi pada computer.
  • https://i.imgur.com/ICxtpTt.png

  • Selanjutnya extract SDK Dart yang telah di zip.
  • Mengatur PATH SDK Dart.
  • https://i.imgur.com/EEqvsw5.png

  • Pilih Path → Edit dan tambahkan Path dari SDK Dart C:\tools\dart-sdk\bin atau directory_extract\dart-sdk\bin. Cek apakah dart sudah terinstall atau belum dengan mengetikkan dart pada command prompt. Jika tampil seperti gambar dibawah maka Dart sudah siap untuk digunakan.
  • https://i.imgur.com/Hev5u98.png

    Install Visual Studio Code dan Extentions
  • Download dan install Visual Studio Code melalui link, https://code.visualstudio.com/sha/download?build=stable&os=win32-x64-user
  • Setelah terinstall tambahkan extentions Dart
  • https://i.imgur.com/JZkveCZ.png

    Project Pertama Dart
  • Buka command prompt kemudian pilih directory yang akan digunakan untuk menyimpak proyek dart dan ketikkan dart create halo maka proyek dart pertama dengan nama halo akan terbentuk.
  • https://i.imgur.com/kZFtpfm.jpeg

  • Buka command prompt kemudian pilih directory yang akan digunakan untuk menyimpak proyek dart dan ketikkan dart create halo maka proyek dart pertama dengan nama halo akan terbentuk.
  • https://i.imgur.com/kZFtpfm.jpeg

    Untuk menjalankannya masuk ke directory halo dan ketikkan dart run

    https://i.imgur.com/6w9QaoC.jpeg

    Dari gambar diatas terlihat secara default proyek halo menampilkan pesan Hello Wordl : 42!

    Dart x Visual Studio Code

    Setelah berhasil membuat proyek pertama Dart dengan nama halo, agar lebih memudahkan dalam mempelajari Bahasa Dart, maka kita perlu membuat proyek dart pada Visual Studio Code, buka Visual Studio Code kemudian buka proyek halo, berikut ini tampilannya pada Visual Studio Code.

    https://i.imgur.com/xYl9XNs.png

    terdapat beberapa struktur dari dart yaitu:

    - bin/ - Berisi file executable

    - lib/ - Berisi source code utama

    - test/ - Berisi file testing

    - pubspec.yaml - File konfigurasi project dan dependencies

    Dart Dasar

    1. List

    List tipe data yang berisi kumpulan data atau dalam bahasa pemrograman lain disebut array, Untuk membuat list yaitu List variabel=[] atau var variabel = [].

  • Buat file baru pada folder bin dengan nama dart_dasar.dart kemudian buat function main
  • Buat List dengan tipe string yang berisi nama-nama buah seperti kode program berikut ini.
  • List fruits = ['Apel', 'Alpukat', 'Nanas', 'Mangga', 'Pisang'];

  • Selanjutnya untuk menampilkan list dapat menggunakan perintah print(fruits.toString());
  • Manipulasi List, silahkan tambahkan kode programnya menjadi seperti berikut ini.
  • https://i.imgur.com/E6dJYto.png

    Outputnya:

    https://i.imgur.com/YeySNPq.jpeg

    2. Set

    Set merupakan sebuah tipe data yang mirip dengan list, akan tetapi set tidak memiliki index sehingga data yang ada pada set tidak berurutan, Set tidak menerima duplikasi data Tidak bisa mengakses menggunakan index, Untuk membuat set yaitu Set namaVariabel={}; atau var namaVariabel={};

  • Tambahkan kode program berikut pada file dart_dasar.dart
  • https://i.imgur.com/NOYEqx5.png

    Outputnya:

    https://i.imgur.com/a54FDxb.jpeg

    3. Map

    Map adalah tipe data key-value yang mana key seperti index dan value sebagai datanya. Menggunakan kurung kurawal {} dan menggunakan : untuk memisahkan key-value. Jika ada data key yang sama maka yang akan digunakan data key yang terakhir. Untuk membuat map yaitu:

  • Map namaVariabel = {};
  • var namaVariabel = Map();
  • var namaVariabel = {};
  • Kode program contoh penggunaan Map pada Dart:

    https://i.imgur.com/ZmhdG3f.png

    Outputnya:

    https://i.imgur.com/mJXgsRf.jpeg

    4. Perulangan

    Cara Pertama :

    https://i.imgur.com/0M7R8s7.png

    Cara Kedua :

    https://i.imgur.com/7rEQO6P.png

    OOP Dart
  • Buat file baru pada folder bin dengan nama oop.dart dan tambahkan kode program berikut.
  • https://i.imgur.com/e3kZ94y.png

    Outputnya:

    https://i.imgur.com/XB8wF53.jpeg

    Latihan: Aplikasi Sederhana Mini Laundry Menggunakan Bahasa Pemgrograman Dart

    1. Prosedural

    Gunakan lib untuk menyimpan kode utamanya seperti class, fungsi, model, utilitas, dll. Dengan code:

                
                    class PaketLaundry {
                      String nama;
                      int hargaPerKg;
                    
                      PaketLaundry(this.nama, this.hargaPerKg);
                    
                      int hitungHarga(int kg) {
                        return hargaPerKg * kg;
                      }
                    }
                    
                    class TransaksiLaundry {
                      List> pesanan = [];
                    
                      void tambahPesanan(PaketLaundry paket, int kg) {
                        int subtotal = paket.hitungHarga(kg);
                        pesanan.add({
                          'paket': paket.nama,
                          'kg': kg,
                          'subtotal': subtotal,
                        });
                      }
                    
                      int hitungTotal() {
                        int total = 0;
                        for (var item in pesanan) {
                          total += item['subtotal'] as int;
                        }
                        return total;
                      }
                    
                      double hitungDiskon(int total) {
                        if (total >= 100000) {
                          return 0.10;
                        } else if (total >= 50000) {
                          return 0.05;
                        }
                        return 0.0;
                      }
                    
                      void cetakNota() {
                        print("\n=== Nota Laundry (OOP) ===");
                        for (var item in pesanan) {
                          print("${item['paket']} (${item['kg']} kg) = Rp${item['subtotal']}");
                        }
                    
                        int total = hitungTotal();
                        double diskon = hitungDiskon(total);
                        double totalBayar = total - (total * diskon);
                    
                        print("Total sebelum diskon: Rp$total");
                        print("Diskon: ${diskon * 100}%");
                        print("Total yang harus dibayar: Rp$totalBayar");
                      }
                    }
                
            

    Dan buat kode pada bin dengan mengimport file pada lib\prosedural.dart

                
                    import 'dart:io';
                    import 'package:halo/procedural.dart';
                    
                    void main() {
                      // Definisi paket
                      PaketLaundry cuciSetrika = PaketLaundry("Cuci & Setrika", 6000);
                      PaketLaundry cuci = PaketLaundry("Cuci", 4000);
                      PaketLaundry setrika = PaketLaundry("Setrika", 3000);
                    
                      TransaksiLaundry transaksi = TransaksiLaundry();
                    
                      bool lanjut = true;
                      print("=== Aplikasi Mini Laundry (OOP dengan Menu) ===");
                    
                      while (lanjut) {
                        print("\nPilih Paket:");
                        print("1. Cuci & Setrika (Rp6000/kg)");
                        print("2. Cuci (Rp4000/kg)");
                        print("3. Setrika (Rp3000/kg)");
                        print("4. Selesai dan hitung total");
                    
                        stdout.write("Masukkan pilihan Anda (1-4): ");
                        int pilihan = int.parse(stdin.readLineSync()!);
                    
                        if (pilihan == 4) {
                          lanjut = false;
                          break;
                        }
                    
                        stdout.write("Masukkan jumlah kg: ");
                        int kg = int.parse(stdin.readLineSync()!);
                    
                        switch (pilihan) {
                          case 1:
                            transaksi.tambahPesanan(cuciSetrika, kg);
                            print(
                              "Ditambahkan: $kg kg ${cuciSetrika.nama} = Rp${cuciSetrika.hitungHarga(kg)}",
                            );
                            break;
                          case 2:
                            transaksi.tambahPesanan(cuci, kg);
                            print("Ditambahkan: $kg kg ${cuci.nama} = Rp${cuci.hitungHarga(kg)}");
                            break;
                          case 3:
                            transaksi.tambahPesanan(setrika, kg);
                            print(
                              "Ditambahkan: $kg kg ${setrika.nama} = Rp${setrika.hitungHarga(kg)}",
                            );
                            break;
                          default:
                            print("Pilihan tidak valid!");
                        }
                      }
                    
                      transaksi.cetakNota();
                    }
                
            

    Outputnya:

    https://i.imgur.com/sqibvID.png

    2. OOP

    Gunakan lib untuk menyimpan kode utamanya seperti class, fungsi, model, utilitas, dll. Dengan code:

                
                    class PaketLaundry {
                      String nama;
                      int hargaPerKg;
                    
                      PaketLaundry(this.nama, this.hargaPerKg);
                    
                      int hitungHarga(int kg) {
                        return hargaPerKg * kg;
                      }
                    }
                    
                    class TransaksiLaundry {
                      List> pesanan = [];
                    
                      void tambahPesanan(PaketLaundry paket, int kg) {
                        int subtotal = paket.hitungHarga(kg);
                        pesanan.add({'paket': paket.nama, 'kg': kg, 'subtotal': subtotal});
                      }
                    
                      int hitungTotal() {
                        int total = 0;
                        for (var item in pesanan) {
                          total += item['subtotal'] as int;
                        }
                        return total;
                      }
                    
                      double hitungDiskon(int total) {
                        if (total >= 100000) {
                          return 0.10;
                        } else if (total >= 50000) {
                          return 0.05;
                        }
                        return 0.0;
                      }
                    
                      void cetakNota() {
                        print("\n=== Nota Laundry (OOP) ===");
                        for (var item in pesanan) {
                          print("${item['paket']} (${item['kg']} kg) = Rp${item['subtotal']}");
                        }
                    
                        int total = hitungTotal();
                        double diskon = hitungDiskon(total);
                        double totalBayar = total - (total * diskon);
                    
                        print("Total sebelum diskon: Rp$total");
                        print("Diskon: ${diskon * 100}%");
                        print("Total yang harus dibayar: Rp$totalBayar");
                      }
                    }
                
            

    Dan buat kode pada bin dengan mengimport file pada lib\oop.dart

                
                    import 'dart:io';
                    import 'package:halo/oop.dart';
                    
                    void main() {
                      // Definisi paket
                      PaketLaundry cuciSetrika = PaketLaundry("Cuci & Setrika", 6000);
                      PaketLaundry cuci = PaketLaundry("Cuci", 4000);
                      PaketLaundry setrika = PaketLaundry("Setrika", 3000);
                    
                      TransaksiLaundry transaksi = TransaksiLaundry();
                    
                      bool lanjut = true;
                      print("=== Aplikasi Mini Laundry (OOP) ===");
                    
                      while (lanjut) {
                        print("\nPilih Paket:");
                        print("1. Cuci & Setrika (Rp6000/kg)");
                        print("2. Cuci (Rp4000/kg)");
                        print("3. Setrika (Rp3000/kg)");
                        print("4. Selesai dan hitung total");
                    
                        stdout.write("Masukkan pilihan Anda (1-4): ");
                        int pilihan = int.parse(stdin.readLineSync()!);
                    
                        if (pilihan == 4) {
                          lanjut = false;
                          break;
                        }
                    
                        stdout.write("Masukkan jumlah kg: ");
                        int kg = int.parse(stdin.readLineSync()!);
                    
                        switch (pilihan) {
                          case 1:
                            transaksi.tambahPesanan(cuciSetrika, kg);
                            print(
                              "Ditambahkan: $kg kg ${cuciSetrika.nama} = Rp${cuciSetrika.hitungHarga(kg)}",
                            );
                            break;
                          case 2:
                            transaksi.tambahPesanan(cuci, kg);
                            print("Ditambahkan: $kg kg ${cuci.nama} = Rp${cuci.hitungHarga(kg)}");
                            break;
                          case 3:
                            transaksi.tambahPesanan(setrika, kg);
                            print(
                              "Ditambahkan: $kg kg ${setrika.nama} = Rp${setrika.hitungHarga(kg)}",
                            );
                            break;
                          default:
                            print("Pilihan tidak valid!");
                        }
                      }
                    
                      transaksi.cetakNota();
                    }
                
            

    Outputnya:

    https://i.imgur.com/xWs3ZyT.png

    File tugas dapat dilihat pada link GitHub: https://github.com/AliffiaHumrh/2311531004_PraktikumAplikasiMobile_KelasB.git