From 934218976a3da27a6354a26de3bae478f02fb730 Mon Sep 17 00:00:00 2001 From: toku404 Date: Sat, 25 Mar 2023 11:47:47 +0800 Subject: [PATCH 1/7] re upload --- src/H071221028/Pertemuan_1/No1.java | 24 +++++++++++ src/H071221028/Pertemuan_1/No2.java | 61 ++++++++++++++++++++++++++++ src/H071221028/Pertemuan_1/No3.java | 32 +++++++++++++++ src/H071221028/Pertemuan_1/No4.java | 41 +++++++++++++++++++ src/H071221028/Pertemuan_1/No5.java | 63 +++++++++++++++++++++++++++++ src/H071221028/Pertemuan_1/No6.java | 18 +++++++++ src/H071221028/Pertemuan_1/No7.java | 28 +++++++++++++ src/H071221028/Pertemuan_1/No8.java | 34 ++++++++++++++++ 8 files changed, 301 insertions(+) create mode 100644 src/H071221028/Pertemuan_1/No1.java create mode 100644 src/H071221028/Pertemuan_1/No2.java create mode 100644 src/H071221028/Pertemuan_1/No3.java create mode 100644 src/H071221028/Pertemuan_1/No4.java create mode 100644 src/H071221028/Pertemuan_1/No5.java create mode 100644 src/H071221028/Pertemuan_1/No6.java create mode 100644 src/H071221028/Pertemuan_1/No7.java create mode 100644 src/H071221028/Pertemuan_1/No8.java diff --git a/src/H071221028/Pertemuan_1/No1.java b/src/H071221028/Pertemuan_1/No1.java new file mode 100644 index 0000000..a2cbc87 --- /dev/null +++ b/src/H071221028/Pertemuan_1/No1.java @@ -0,0 +1,24 @@ +package H071221028.Pertemuan_1; + +import java.util.Scanner; + +public class No1 { // nama file classnya + public static void main(String[] args) { + String nim; // variable + Scanner keyboard = new Scanner(System.in); + System.out.print("Masukkan NIM: "); + nim = keyboard.next(); + String inp = nim.substring(nim.length() - 3); // memasukkan index yang diminta, -3 untuk 3 angka terakkhir + + int angka = Integer.parseInt(inp); // modifikasi tipedata + + if (angka % 7 == 0) { + System.out.println("soal: no 7"); + } else { + System.out.printf("soal : no %d\n", angka % 7); // %d untuk angka int + } + + keyboard.close(); + } + +} diff --git a/src/H071221028/Pertemuan_1/No2.java b/src/H071221028/Pertemuan_1/No2.java new file mode 100644 index 0000000..98904f0 --- /dev/null +++ b/src/H071221028/Pertemuan_1/No2.java @@ -0,0 +1,61 @@ +package H071221028.Pertemuan_1; + +import java.util.InputMismatchException; +import java.util.Scanner; + +public class No2 { + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + + try { + int n = scanner.nextInt(); + + int countDecimal = 0; + int countInteger = 0; + + for (int i = 0; i < n; i++) { + float number = scanner.nextFloat(); + + if (number - (int)number > 0) { // angka - angka, jika agka menyisakan angka dibelakang koma akan masuk ke bilangan desimal + countDecimal++; + } else { + countInteger++; + } + } + + System.out.printf("%d Bilangan Bulat\n", countInteger); + System.out.printf("%d Bilangan Desimal\n", countDecimal); + } catch (InputMismatchException e) { + System.out.println("Please input a number!"); + e.printStackTrace(); + } + + scanner.close(); + } +} + + +// import java.util.Scanner; + +// public class Dua { +// public static void main(String[] args) { +// Scanner scanner = new Scanner(System.in); +// System.out.print("Masukkan jumlah bilangan: "); +// int n = scanner.nextInt(); +// int decimals = 0; +// int integers = 0; + +// for (int i = 0; i < n; i++) { +// System.out.print("Masukkan bilangan ke-" + (i+1) + ": "); +// double num = scanner.nextDouble(); +// if (num == (int) num) { +// integers++; +// } else { +// decimals++; +// } +// } + +// System.out.println("Jumlah bilangan decimal: " + decimals); +// System.out.println("Jumlah bilangan bulat: " + integers); +// } +// } diff --git a/src/H071221028/Pertemuan_1/No3.java b/src/H071221028/Pertemuan_1/No3.java new file mode 100644 index 0000000..ff58991 --- /dev/null +++ b/src/H071221028/Pertemuan_1/No3.java @@ -0,0 +1,32 @@ +package H071221028.Pertemuan_1; + +import java.util.InputMismatchException; +import java.util.Scanner; + +public class No3 { + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + + try { + System.out.print("Name : "); + String name = scanner.nextLine(); + + System.out.print("Umur : "); + int age = scanner.nextInt(); + + scanner.nextLine(); // hapus \n yang masih tersisa di aliran input + + + System.out.print("Hobby : "); + String hobby = scanner.nextLine(); + + System.out.printf("Nama saya %s, %d tahun, hobby %s.\n", name, age, hobby); + + } catch (InputMismatchException e) { + System.out.println("Please input with proper data format!"); + + } + + scanner.close(); + } +} diff --git a/src/H071221028/Pertemuan_1/No4.java b/src/H071221028/Pertemuan_1/No4.java new file mode 100644 index 0000000..c48f928 --- /dev/null +++ b/src/H071221028/Pertemuan_1/No4.java @@ -0,0 +1,41 @@ +package H071221028.Pertemuan_1; + +import java.util.Scanner; + +public class No4 { + public static String capitalizeFirstCharacter(String sentence) { + String words[] = sentence.split("\\s"); + + String returnSentence = ""; + + // for (int i = 0; i < words.length; i++) { + // words[i] = words[i].substring(0, 1).toUpperCase() + words[i].substring(1).toLowerCase(); + + // returnSentence += words[i]; + // if (i < words.length - 1) { + // returnSentence += " "; + // } + // } + for (String word : words ){ + word = word.substring(0, 1).toUpperCase() + word.substring(1).toLowerCase(); + + returnSentence += word; + returnSentence += " "; + + + } + + return returnSentence; + } + + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + + System.out.print("Masukkan Judul Film :\n> "); + String sentence = scanner.nextLine(); + + System.out.println(capitalizeFirstCharacter(sentence)); + + scanner.close(); + } +} diff --git a/src/H071221028/Pertemuan_1/No5.java b/src/H071221028/Pertemuan_1/No5.java new file mode 100644 index 0000000..e3f7be4 --- /dev/null +++ b/src/H071221028/Pertemuan_1/No5.java @@ -0,0 +1,63 @@ +package H071221028.Pertemuan_1; + +import java.util.Scanner; + +public class No5 { + public static void main(String[] args) { + Scanner inp = new Scanner(System.in); + String a = inp.next(); + String hari = a.substring(0, 2); + System.out.print(Integer.parseInt(hari) + " "); // parseint untuk mengubah dari string ke int + String bulan = a.substring(3, 5); + int month = Integer.parseInt(bulan); + String [] bul = {"januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"} + ; + System.out.print(bul [month - 1] + " "); + + + // if (month == 1) { + // System.out.print(" Januari "); + // } + // else if (month == 2) { + // System.out.print(" Februari "); + // } + // else if (month == 3) { + // System.out.print(" Maret "); + // } + // else if (month == 4) { + // System.out.print(" April "); + // } + // else if (month == 5) { + // System.out.print(" Mei "); + // } + // else if (month == 6) { + // System.out.print(" Juni "); + // } + // else if (month == 7) { + // System.out.print(" Juli "); + // } + // else if (month == 8) { + // System.out.print(" Agustus "); + // } + // else if (month == 9) { + // System.out.print(" September "); + // } + // else if (month == 10) { + // System.out.print(" Oktober "); + // } + // else if (month == 11) { + // System.out.print(" November "); + // } + // else if (month == 12) { + // System.out.print(" Desember "); + + String tahun = a.substring(6, 8); + int year = Integer.parseInt (tahun); + if (year <= 23) { + System.out.print("20" + tahun); + } + else { + System.out.print("19" + tahun); + } + } +} \ No newline at end of file diff --git a/src/H071221028/Pertemuan_1/No6.java b/src/H071221028/Pertemuan_1/No6.java new file mode 100644 index 0000000..414d426 --- /dev/null +++ b/src/H071221028/Pertemuan_1/No6.java @@ -0,0 +1,18 @@ +package H071221028.Pertemuan_1; + +import java.util.Scanner; + +public class No6 { + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + + System.out.print("Input jari-jari: "); + double jariJari = scanner.nextDouble(); + + double area = (22.0 / 7.0) * jariJari * jariJari; + + System.out.printf("Luas lingkaran: %.2f\n", area); // pakai %.2f untuk 2 angka dibelakang koma + + scanner.close(); + } +} diff --git a/src/H071221028/Pertemuan_1/No7.java b/src/H071221028/Pertemuan_1/No7.java new file mode 100644 index 0000000..ebf997e --- /dev/null +++ b/src/H071221028/Pertemuan_1/No7.java @@ -0,0 +1,28 @@ +package H071221028.Pertemuan_1; + +import java.util.Scanner; + +public class No7 { + static String[] buah = {"Anggur", "Apel", "Belimbing", "Durian", "Rambutan", "Pisang", "Jeruk", "Semangka", "Nanas", +"Salak", "manggis"}; +public static void main(String[] args) { + Scanner inp = new Scanner(System.in); + System.out.print("Key: "); + String inputBuah = inp.next(); + int indexBuah = findIndex(inputBuah); + System.out.println(indexBuah); + inp.close(); +} +static int findIndex(String text){ + text = text.toLowerCase(); + int result = -1; + for (int i = 0; i < buah.length; i++) { + String buah1 = buah[i]; + buah1 = buah1.toLowerCase(); + if (buah1.equals(text)){ + result = i; + } + }; + return result; +} +} \ No newline at end of file diff --git a/src/H071221028/Pertemuan_1/No8.java b/src/H071221028/Pertemuan_1/No8.java new file mode 100644 index 0000000..c714c51 --- /dev/null +++ b/src/H071221028/Pertemuan_1/No8.java @@ -0,0 +1,34 @@ +package H071221028.Pertemuan_1; + +import java.util.Scanner; + +public class No8 { + public static void main(String[] args) { + int[][] angka = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9, }, { 10, 11 }, { 12 }, { 13, 14, 15, 16 } }; // menyimpan + // array + System.out.println(angka[0][2]); + Scanner inp = new Scanner(System.in); + + try { + System.out.print("Input angka yang ingin di cari : "); + int inputAngka = inp.nextInt(); + boolean found = false; + + for (int i = 0; i < angka.length; i++) { + for (int j = 0; j < angka[i].length; j++) { + int angka1 = angka[i][j]; + if (angka1 == inputAngka) { + System.out.println("Found" + inputAngka + " at [" + i + "][" + j + "]"); + break; + } + } + } + if (!found) { + System.out.println("Bilangan" + " " + inputAngka + " " + "tidak ditemukan pada bilangan"); + } + } catch (Exception e) { + System.out.println("Input harus berupa data integer (angka)"); + } + inp.close(); + } +} From 6331063bad49e00568aacecfdcbd86aaae129958 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=A4=E3=82=AF=E3=82=B5=E3=83=B3?= <54715920+ToKu404@users.noreply.github.com> Date: Sat, 25 Mar 2023 12:50:36 +0800 Subject: [PATCH 2/7] Update ci.yml --- .github/workflows/ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2dcc645..9a1be72 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,7 +2,10 @@ name: OOP CI on: pull_request: - branches: + branches-ignore: + - main + push: + branches-ignore: - main jobs: From f30b814f17f3629d3aa99ddba903a9521da9dfcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=A4=E3=82=AF=E3=82=B5=E3=83=B3?= <54715920+ToKu404@users.noreply.github.com> Date: Sat, 25 Mar 2023 16:31:13 +0800 Subject: [PATCH 3/7] Update README.md --- README.md | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index f859e46..9a768b4 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -# Lab OOP -Repository tempat pengumpulan tugas untuk Lab OOp +# Lab-OOP +Repository tempat pengumpulan tugas untuk Praktikan Lab OOP Sistem Informasi 2022 ## Aturan Pengumpulan **Note:** @@ -11,18 +11,30 @@ _Untuk perintah yang dibungkus < > maka perintah tersebut diganti sesuai instruk ``` - Pindah ke repositori hasil clone dengan perintah berikut ``` - cd lab-oop/src/ + cd Lab-Pbo-J ``` -- Buat branch baru berdasarkan NIM kalian serta gunakan branch tersebut untuk menyimpan kode dari soal yang dikerjakan +- Pindah ke branch NIM kalian serta gunakan branch tersebut untuk menyimpan kode dari soal yang dikerjakan ``` - git checkout -b + git checkout ``` -- Buat folder baru berdasarkan NIM kalian +- Buat folder baru berdasarkan NIM kalian di dalam folder `src` ``` + cd src mkdir ``` -- Di dalam folder NIM kalian buat folder dengan nama "Pertemuan_<_no_pertemuan_>" tanpa tanda kutip. contoh: Pertemuan_01 -- Di dalam folder pertemuan tersebut, kalian menambahkan file tugas praktikum yang telah kalian kerjakan dengan format nama file "assignment_<_no pertemuan_>_<_no_soal_>.java" tanpa tanda kutip +- Di dalam folder NIM kalian buat folder dengan nama "Pertemuan_<_no_pertemuan_>" tanpa tanda kutip. contoh: Pertemuan_1 +- Di dalam folder pertemuan tersebut, kalian menambahkan file tugas praktikum yang telah kalian kerjakan dengan format nama file "No<_no_soal_>.java" tanpa tanda kutip. Contoh: No1.java +- Perhatikan bahwa disetiap filenya kalian harus menambahkan packagenya di awal file tersebut. Dimana nama package nantinya harus sesuai dengan folder dimana file tersebut berada di dalma folder `src`. +Contoh: +``` +package H071191049.Pertemuan_1 + +public class Main{ + .... + ... +} +``` +berarti file di atas berada di folder `src/H071191049/Pertemuan_1`. Untuk contoh detailnya bisa dilihat di file `src/H071191049/Pertemuan_1/Main.java` dan `src/H071191049/Pertemuan_1/my_package/Person.java` - Setelah semua file tugas telah diselesaikan dan telah diasistensikan lakukan perintah berikut ``` git add . @@ -31,7 +43,7 @@ _Untuk perintah yang dibungkus < > maka perintah tersebut diganti sesuai instruk ``` Note: Pesan commit yang dibuat diharapkan sesuai dengan hal yang dilakukan. Seperti "menambah tugas praktikum ..." atau "memperbaiki type di file ..." -- Setiap file wajib menggunakan package, dengan format misal nim anda H071191049 dan Tugasnya merupakan tugas Pertemuan_02, maka packagenya - ```package H071191049.Pertemuan02``` -- Setelah perintah tersebut berhasil, silahkan membuka repository hasil fork kalian di github dan lakukan pull request ke repository ini. +- Setelah perintah tersebut berhasil, silahkan membuka repository hasil fork kalian di github dan lakukan pull request ke repository ini. +- Pastikan base branch sama dengan branch NIM kalian +![panduan pull request](https://i.ibb.co/XtWGrS6/Panduan-pull-request.png) - Apabila terdapat kesulitan, silahkan menghubungi asistennya From 1d3dd3df17f09c5bee9f139d6983e6450e2134bd Mon Sep 17 00:00:00 2001 From: Nadjwa03 Date: Tue, 4 Apr 2023 15:05:10 +0800 Subject: [PATCH 4/7] 22 --- src/H071221028/pertemuan-2/No1.java | 53 +++++++++++ src/H071221028/pertemuan-2/No2.java | 52 +++++++++++ src/H071221028/pertemuan-2/No3.java | 39 ++++++++ src/H071221028/pertemuan-2/No4.java | 22 +++++ src/H071221028/pertemuan-2/No5.java | 50 +++++++++++ src/H071221028/pertemuan-3/No1/Main.java | 90 +++++++++++++++++++ src/H071221028/pertemuan-3/No1/Quiz.java | 61 +++++++++++++ src/H071221028/pertemuan-3/No1/Utils.java | 9 ++ .../pertemuan-3/No1/tugas2.code-workspace | 19 ++++ src/H071221028/pertemuan-3/No3/No3.java | 0 src/H071221028/pertemuan-3/no2/Pllayer.java | 61 +++++++++++++ 11 files changed, 456 insertions(+) create mode 100644 src/H071221028/pertemuan-2/No1.java create mode 100644 src/H071221028/pertemuan-2/No2.java create mode 100644 src/H071221028/pertemuan-2/No3.java create mode 100644 src/H071221028/pertemuan-2/No4.java create mode 100644 src/H071221028/pertemuan-2/No5.java create mode 100644 src/H071221028/pertemuan-3/No1/Main.java create mode 100644 src/H071221028/pertemuan-3/No1/Quiz.java create mode 100644 src/H071221028/pertemuan-3/No1/Utils.java create mode 100644 src/H071221028/pertemuan-3/No1/tugas2.code-workspace create mode 100644 src/H071221028/pertemuan-3/No3/No3.java create mode 100644 src/H071221028/pertemuan-3/no2/Pllayer.java diff --git a/src/H071221028/pertemuan-2/No1.java b/src/H071221028/pertemuan-2/No1.java new file mode 100644 index 0000000..58bb312 --- /dev/null +++ b/src/H071221028/pertemuan-2/No1.java @@ -0,0 +1,53 @@ +// class Event { +// String namaEvent; +// String peserta; +// int jumlahPeserta; + +// public String getnama(){ +// return namaEvent; +// } + +// public String getpeserta(){ +// return peserta; +// } + +// public int getjumlah(){ +// return jumlahPeserta; +// } +// } + +// public class No1 { +// public static void main(String[] args) { +// Event event = new Event(); + +// event.namaEvent = "Mathematic Event"; +// event.peserta = "SD"; +// event.jumlahPeserta = 560; + +// System.out.println("Nama event: " + event.getnama() + "."); +// System.out.println("Jenjang Peserta: " + event.getpeserta()+ "."); +// System.out.println("Jumlah Peserta: " + event.getjumlah()+"."); + +// } + +// } +// Parent class +class Sepatu { + protected String brand = "Sport"; + public void running() { + System.out.println("fastest"); + } + } + + // Child class + class Shoe extends Sepatu { + private String model = "Sport"; + public static void main(String[] args) { + Shoe mynike = new Shoe(); + mynike.brand = "Nike"; + mynike.model = "Running"; + System.out.println("Brand: " + mynike.brand + ", Model: " + mynike.model); + mynike.running(); + } + } + diff --git a/src/H071221028/pertemuan-2/No2.java b/src/H071221028/pertemuan-2/No2.java new file mode 100644 index 0000000..db5b843 --- /dev/null +++ b/src/H071221028/pertemuan-2/No2.java @@ -0,0 +1,52 @@ +public class No2 { + + + public static void main(String[] args) { + Person person = new Person(); + person.setName("awa"); + person.setAge(18); + person.setGender("Male"); + + System.out.println("nama: " + person.getName()); + System.out.println("umur: " + person.getAge()); + System.out.println("Jenis kelamin: " + person.getGender()); + + + } +} + +class Person { + String name; + int age; + boolean isMale; + + public void setName(String name){ + this.name = name; + } + + public String getName(){ + return name; + } + + public void setAge(int age){ + this.age = age; + } + + public int getAge(){ + return age; + } + + public void setGender(String gender){ + this.isMale = gender == "Male"; + } + + public String getGender(){ + if (isMale) { + return "Male"; + } + else { + return "Female"; + } + +} +} \ No newline at end of file diff --git a/src/H071221028/pertemuan-2/No3.java b/src/H071221028/pertemuan-2/No3.java new file mode 100644 index 0000000..a751702 --- /dev/null +++ b/src/H071221028/pertemuan-2/No3.java @@ -0,0 +1,39 @@ +class Barang { + public int id; + public String nama; + public int stok; + public double harga; + + public boolean isAvailable(){ + return this.stok > 0; + } +} + +public class No3 { + public static void main(String[] args) { + Barang barang = new Barang(); + + barang.id = 071221; + barang.nama = "kitkat"; + barang.stok = 30; + barang.harga = 12000; + + System.out.println("Id barang: " + barang.id); + System.out.println("Nama barang: " + barang.nama); + System.out.println("Stok barang: " + barang.stok); + System.out.println("Harga barang: " + barang.harga); + System.out.printf("ketersediaan barang: %s\n" , barang.isAvailable() ? "Tersedia": "Tidak tersedia"); + + + System.out.println("========================================"); + + barang.stok = 0; + + System.out.println("Id barang: " + barang.id); + System.out.println("Nama barang: " + barang.nama); + System.out.println("Stok barang: " + barang.stok); + System.out.println("Harga barang: " + barang.harga); + System.out.printf("ketersediaan barang: %s\n" , barang.isAvailable() ? "Tersedia": "Tidak tersedia"); + + } +} diff --git a/src/H071221028/pertemuan-2/No4.java b/src/H071221028/pertemuan-2/No4.java new file mode 100644 index 0000000..3db5a3e --- /dev/null +++ b/src/H071221028/pertemuan-2/No4.java @@ -0,0 +1,22 @@ + +class Cuboid { + double height; + double width; + double lenght; + + double getVolume(){ + return height*width*lenght; + } +} + +public class No4 { + public static void main(String[] args) { + Cuboid cuboid = new Cuboid(); + cuboid.height = 10.0; + cuboid.width = 15.0; + cuboid.lenght = 30.0; + + System.out.printf("Volume = %.2f", cuboid.getVolume()); + + } +} \ No newline at end of file diff --git a/src/H071221028/pertemuan-2/No5.java b/src/H071221028/pertemuan-2/No5.java new file mode 100644 index 0000000..47732b5 --- /dev/null +++ b/src/H071221028/pertemuan-2/No5.java @@ -0,0 +1,50 @@ +class Alamat { + String jalan; + String kota; + + public String getAlamatLengkap(){ + return this.jalan + "," + this.kota; + } +} + +class Mahasiswa { + Alamat alamat; + String nama; + String nim; + + public Alamat getAlamat () { + return this.alamat; + } + + public String getName() { + return this.nama; + } + + public String getNim () { + return this.nim; + } +} + +public class No5 { + public static void main(String[] args) { + try{ + Alamat alamat = new Alamat () ; + alamat.jalan = "Minasa Upa"; + alamat.kota = "Kota Makassar"; + + + Mahasiswa mahasiswa = new Mahasiswa (); + mahasiswa.alamat = alamat; + mahasiswa.nama = "Nadjwa Amalia"; + mahasiswa.nim = "H071221028"; + + System.out.println("Nama: " + mahasiswa.getName()); + System.out.println("Nim: " + mahasiswa.getNim()); + System.out.println("Alamat: " + mahasiswa.getAlamat().getAlamatLengkap()); + }catch(Exception e){ + System.out.println(e.toString()); + } + + } +} + diff --git a/src/H071221028/pertemuan-3/No1/Main.java b/src/H071221028/pertemuan-3/No1/Main.java new file mode 100644 index 0000000..c3c0861 --- /dev/null +++ b/src/H071221028/pertemuan-3/No1/Main.java @@ -0,0 +1,90 @@ +class Taekwondo { + + private String serangan; + private int skor; + private Atlet atlet; + + + public Taekwondo ( String serangan, int skor){ + this.serangan = serangan; + this.skor = skor; + } + public Taekwondo ( Atlet atlet, String serangan, int skor){ + this.atlet = atlet; + this.serangan = serangan; + this.skor = skor; + } + public Taekwondo(){} + + public Atlet getAtlet() { + return atlet; + } + + public void setAtlet (Atlet atlet){ + this.atlet = atlet; + } + + public String getSerangan() { + return serangan; + } + + public void setSerangan( String serangan) { + this.serangan = serangan; + } + + public int getSkor(){ + return skor; + } + + public void setSkor(int skor) { + this.skor = skor; + } + + public int hitungSkor(){ + if (serangan == "kepala"){ + return 4; + } else if (serangan == "badan"){ + return 2; + } else if (serangan == "pukulan"){ + return 1; + } else { + return -1; + } + + } + public void tampilkanDataAtlet(){ + System.out.println("nama: " + atlet.getNama()); + System.out.println("Ranking: " + atlet.getRangking()); + } +} +class Atlet { + String nama; + int rangking; + + public Atlet (String nama, int rangking){ + this.nama = nama; + this.rangking = rangking; + } + public String getNama(){ + return nama; + } + public int getRangking(){ + return rangking; + } +} + +class Main { + public static void main(String[] args) { + Atlet atlet = new Atlet("awa",17); + atlet.nama = "awa"; + atlet.rangking = 17; + + Taekwondo tkd = new Taekwondo(); + + tkd.setAtlet(atlet); + + tkd.tampilkanDataAtlet(); + System.out.println("serangan : " + tkd.getSerangan()); + System.out.println("Skor: " + tkd.hitungSkor()); + } +} \ No newline at end of file diff --git a/src/H071221028/pertemuan-3/No1/Quiz.java b/src/H071221028/pertemuan-3/No1/Quiz.java new file mode 100644 index 0000000..7c28d76 --- /dev/null +++ b/src/H071221028/pertemuan-3/No1/Quiz.java @@ -0,0 +1,61 @@ + +public class Quiz { + public static void main(String[] args) { + Utils.selfDisplay(); + Pesanan pesanan1 = new Pesanan("ayam", "minasa upa"); + pesanan1.setNamaPesanan("ayam"); + pesanan1.setAlamatPemesanan("minasa upa"); + pesanan1.setTotalHarga(1000); + } +} + +class Pesanan { + String namaPesanan; + String alamatPemesanan; + double totalHarga; + + public String getNamaPesanan() { + return namaPesanan; + } + + public void setNamaPesanan(String namaPesanan) { + this.namaPesanan = namaPesanan; + } + + public String getAlamatPemesanan() { + return alamatPemesanan; + } + + public void setAlamatPemesanan(String alamatPemesanan) { + this.alamatPemesanan = alamatPemesanan; + } + + public double getTotalHarga() { + return totalHarga; + } + + public void setTotalHarga(double totalHarga) { + this.totalHarga = totalHarga; + } + + public Pesanan (String namaPesanan, String alamatPemesanan) { + this.namaPesanan = namaPesanan; + this.alamatPemesanan = alamatPemesanan; + } +} + + // public void Pesanan (double totalHarga) { + // this.totalHarga = totalHarga; + // } + + + +class Utils { + public static void selfDisplay() { + String nama = "awa"; + String nim = "H071221028"; + System.out.println("Nama: " + nama); + System.out.println("NIM: " + nim); + } +} + diff --git a/src/H071221028/pertemuan-3/No1/Utils.java b/src/H071221028/pertemuan-3/No1/Utils.java new file mode 100644 index 0000000..6537783 --- /dev/null +++ b/src/H071221028/pertemuan-3/No1/Utils.java @@ -0,0 +1,9 @@ + +class Utils { + public static void selfDisplay() { + String nama = "awa"; + String nim = "H071221028"; + System.out.println("Nama: " + nama); + System.out.println("NIM: " + nim); + } +} \ No newline at end of file diff --git a/src/H071221028/pertemuan-3/No1/tugas2.code-workspace b/src/H071221028/pertemuan-3/No1/tugas2.code-workspace new file mode 100644 index 0000000..763e748 --- /dev/null +++ b/src/H071221028/pertemuan-3/No1/tugas2.code-workspace @@ -0,0 +1,19 @@ +{ + "folders": [ + { + "path": "../../pertemuan-2/tugas2" + }, + { + "path": "../No3" + }, + { + "path": "." + }, + { + "path": "../no2" + } + ], + "settings": { + "java.debug.settings.onBuildFailureProceed": true + } +} \ No newline at end of file diff --git a/src/H071221028/pertemuan-3/No3/No3.java b/src/H071221028/pertemuan-3/No3/No3.java new file mode 100644 index 0000000..e69de29 diff --git a/src/H071221028/pertemuan-3/no2/Pllayer.java b/src/H071221028/pertemuan-3/no2/Pllayer.java new file mode 100644 index 0000000..e59906e --- /dev/null +++ b/src/H071221028/pertemuan-3/no2/Pllayer.java @@ -0,0 +1,61 @@ + + +class Player{ + private String name; + private int hp; + private int attackPower; + private int defense; + + public Player() {} + + public void getDamage(Player enemy) { + hp = hp-Math.abs(enemy.getAttackPower()-defense); + } + + // + public Player(String name, int attackPower, int defense) { + this.name = name; + this.attackPower = attackPower; + this.defense = defense; + hp = 100; + } + + // + public Player(String name, int defense) { + this.name = name; + this.defense = defense; + hp = 100; + } + + public void status() { + System.out.println(name + " status"); + System.out.println("HP = " + hp); + System.out.println("Defense = " + defense); + System.out.println("Attack = " + attackPower + "\n"); + } + + public int getAttackPower() { + return attackPower; + } + // + public void setAttackPower(int attackPower) { + this.attackPower = attackPower; + } + + +} + +class Main { + public static void main(String [] args) { + Player player1= new Player("Mino", 30, 15); + Player player2= new Player("Hilda", 10); + + player2.setAttackPower(35); + + player1.getDamage(player2); + + player1.status(); + player2.status(); + } +} + \ No newline at end of file From 57f459c1337b36cfc79bd16d3578d1701cecaa1e Mon Sep 17 00:00:00 2001 From: Nadjwa03 Date: Sat, 15 Apr 2023 15:56:26 +0800 Subject: [PATCH 5/7] kumpul semua tugas --- .../{pertemuan-2 => Pertemuan_2}/No1.java | 0 .../{pertemuan-2 => Pertemuan_2}/No2.java | 0 .../{pertemuan-2 => Pertemuan_2}/No3.java | 0 .../{pertemuan-2 => Pertemuan_2}/No4.java | 0 .../{pertemuan-2 => Pertemuan_2}/No5.java | 0 .../No1/Main.java | 1 + .../No1/Quiz.java | 2 +- .../No1/Utils.java | 2 +- .../no2 => Pertemuan_3/No2}/Pllayer.java | 2 +- src/H071221028/Pertemuan_3/No3/no1.java | 34 ++++ src/H071221028/Pertemuan_4/No2/Car.java | 60 ++++++ src/H071221028/Pertemuan_4/No2/Main.java | 21 ++ src/H071221028/Pertemuan_4/No2/SelfUtils.java | 8 + .../Pertemuan_4/login_app/login_app/Main.java | 181 ++++++++++++++++++ .../login_app/login_app/models/Profile.java | 44 +++++ .../login_app/login_app/models/User.java | 34 ++++ .../login_app/utils/StringUtils.java | 23 +++ .../Diagram Anggota_nadjwa amalia.html | 11 ++ .../Pertemuan_5/No1/BangunDatar.java | 110 +++++++++++ .../Pertemuan_5/No1/BangunRuang.java | 87 +++++++++ .../No1/Komunitas.java} | 0 src/H071221028/Pertemuan_5/No1/Main.java | 15 ++ src/H071221028/Pertemuan_5/No1/diagramno1.png | Bin 0 -> 70909 bytes src/H071221028/Pertemuan_5/No2/Anggota.java | 69 +++++++ .../No2/Diagram Anggota_nadjwa amalia.html | 11 ++ .../Pertemuan_5/No2/MainAnggota.java | 16 ++ .../pertemuan-3/No1/tugas2.code-workspace | 19 -- 27 files changed, 728 insertions(+), 22 deletions(-) rename src/H071221028/{pertemuan-2 => Pertemuan_2}/No1.java (100%) rename src/H071221028/{pertemuan-2 => Pertemuan_2}/No2.java (100%) rename src/H071221028/{pertemuan-2 => Pertemuan_2}/No3.java (100%) rename src/H071221028/{pertemuan-2 => Pertemuan_2}/No4.java (100%) rename src/H071221028/{pertemuan-2 => Pertemuan_2}/No5.java (100%) rename src/H071221028/{pertemuan-3 => Pertemuan_3}/No1/Main.java (98%) rename src/H071221028/{pertemuan-3 => Pertemuan_3}/No1/Quiz.java (97%) rename src/H071221028/{pertemuan-3 => Pertemuan_3}/No1/Utils.java (85%) rename src/H071221028/{pertemuan-3/no2 => Pertemuan_3/No2}/Pllayer.java (97%) create mode 100644 src/H071221028/Pertemuan_3/No3/no1.java create mode 100644 src/H071221028/Pertemuan_4/No2/Car.java create mode 100644 src/H071221028/Pertemuan_4/No2/Main.java create mode 100644 src/H071221028/Pertemuan_4/No2/SelfUtils.java create mode 100644 src/H071221028/Pertemuan_4/login_app/login_app/Main.java create mode 100644 src/H071221028/Pertemuan_4/login_app/login_app/models/Profile.java create mode 100644 src/H071221028/Pertemuan_4/login_app/login_app/models/User.java create mode 100644 src/H071221028/Pertemuan_4/login_app/login_app/utils/StringUtils.java create mode 100644 src/H071221028/Pertemuan_5/Diagram Anggota_nadjwa amalia.html create mode 100644 src/H071221028/Pertemuan_5/No1/BangunDatar.java create mode 100644 src/H071221028/Pertemuan_5/No1/BangunRuang.java rename src/H071221028/{pertemuan-3/No3/No3.java => Pertemuan_5/No1/Komunitas.java} (100%) create mode 100644 src/H071221028/Pertemuan_5/No1/Main.java create mode 100644 src/H071221028/Pertemuan_5/No1/diagramno1.png create mode 100644 src/H071221028/Pertemuan_5/No2/Anggota.java create mode 100644 src/H071221028/Pertemuan_5/No2/Diagram Anggota_nadjwa amalia.html create mode 100644 src/H071221028/Pertemuan_5/No2/MainAnggota.java delete mode 100644 src/H071221028/pertemuan-3/No1/tugas2.code-workspace diff --git a/src/H071221028/pertemuan-2/No1.java b/src/H071221028/Pertemuan_2/No1.java similarity index 100% rename from src/H071221028/pertemuan-2/No1.java rename to src/H071221028/Pertemuan_2/No1.java diff --git a/src/H071221028/pertemuan-2/No2.java b/src/H071221028/Pertemuan_2/No2.java similarity index 100% rename from src/H071221028/pertemuan-2/No2.java rename to src/H071221028/Pertemuan_2/No2.java diff --git a/src/H071221028/pertemuan-2/No3.java b/src/H071221028/Pertemuan_2/No3.java similarity index 100% rename from src/H071221028/pertemuan-2/No3.java rename to src/H071221028/Pertemuan_2/No3.java diff --git a/src/H071221028/pertemuan-2/No4.java b/src/H071221028/Pertemuan_2/No4.java similarity index 100% rename from src/H071221028/pertemuan-2/No4.java rename to src/H071221028/Pertemuan_2/No4.java diff --git a/src/H071221028/pertemuan-2/No5.java b/src/H071221028/Pertemuan_2/No5.java similarity index 100% rename from src/H071221028/pertemuan-2/No5.java rename to src/H071221028/Pertemuan_2/No5.java diff --git a/src/H071221028/pertemuan-3/No1/Main.java b/src/H071221028/Pertemuan_3/No1/Main.java similarity index 98% rename from src/H071221028/pertemuan-3/No1/Main.java rename to src/H071221028/Pertemuan_3/No1/Main.java index c3c0861..09ad661 100644 --- a/src/H071221028/pertemuan-3/No1/Main.java +++ b/src/H071221028/Pertemuan_3/No1/Main.java @@ -1,3 +1,4 @@ +package H071221028.Pertemuan_3.No1; class Taekwondo { private String serangan; diff --git a/src/H071221028/pertemuan-3/No1/Quiz.java b/src/H071221028/Pertemuan_3/No1/Quiz.java similarity index 97% rename from src/H071221028/pertemuan-3/No1/Quiz.java rename to src/H071221028/Pertemuan_3/No1/Quiz.java index 7c28d76..208ffc1 100644 --- a/src/H071221028/pertemuan-3/No1/Quiz.java +++ b/src/H071221028/Pertemuan_3/No1/Quiz.java @@ -1,4 +1,4 @@ - +package H071221028.Pertemuan_3.No1; public class Quiz { public static void main(String[] args) { Utils.selfDisplay(); diff --git a/src/H071221028/pertemuan-3/No1/Utils.java b/src/H071221028/Pertemuan_3/No1/Utils.java similarity index 85% rename from src/H071221028/pertemuan-3/No1/Utils.java rename to src/H071221028/Pertemuan_3/No1/Utils.java index 6537783..a4115de 100644 --- a/src/H071221028/pertemuan-3/No1/Utils.java +++ b/src/H071221028/Pertemuan_3/No1/Utils.java @@ -1,4 +1,4 @@ - +package H071221028.Pertemuan_3.No1; class Utils { public static void selfDisplay() { String nama = "awa"; diff --git a/src/H071221028/pertemuan-3/no2/Pllayer.java b/src/H071221028/Pertemuan_3/No2/Pllayer.java similarity index 97% rename from src/H071221028/pertemuan-3/no2/Pllayer.java rename to src/H071221028/Pertemuan_3/No2/Pllayer.java index e59906e..a68afef 100644 --- a/src/H071221028/pertemuan-3/no2/Pllayer.java +++ b/src/H071221028/Pertemuan_3/No2/Pllayer.java @@ -1,4 +1,4 @@ - +package H071221028.Pertemuan_3.No2; class Player{ private String name; diff --git a/src/H071221028/Pertemuan_3/No3/no1.java b/src/H071221028/Pertemuan_3/No3/no1.java new file mode 100644 index 0000000..69d5da7 --- /dev/null +++ b/src/H071221028/Pertemuan_3/No3/no1.java @@ -0,0 +1,34 @@ +package H071221028.Pertemuan_3.No3; +class Event { + String nama; + String tipe; + boolean isPaid; + double hargaTiket; + + public Event(String nama, String tipe, boolean isPaid, double hargaTiket) { + this.nama = nama; + this.tipe = tipe; + this.isPaid = isPaid; + if (isPaid == true) { + this.hargaTiket = hargaTiket; + } + else { + this.hargaTiket = 0; + } + } + public void beliTiket (){ + System.out.printf("Selamat anda telah berhasil membeli tiket %s %s", nama, isPaid? "Seharga " + hargaTiket: "Secara Gratis"); + } + + +} + +public class no1 { + public static void main(String[] args) { + Event event = new Event ("UNHAS CUP", "OLAHRAGA", true, 10.000); + System.out.println("Nama Event: " + event.nama); + System.out.println("Tipe Event: " + event.tipe); + System.out.println("Pembayaran: " + event.isPaid); + System.out.println("Harga tiket: " + event.hargaTiket); + } +} diff --git a/src/H071221028/Pertemuan_4/No2/Car.java b/src/H071221028/Pertemuan_4/No2/Car.java new file mode 100644 index 0000000..d1f426d --- /dev/null +++ b/src/H071221028/Pertemuan_4/No2/Car.java @@ -0,0 +1,60 @@ +class Car { + private String brand; + private String model; + private int year; + private double price; + private boolean isPaid; + + public Car(String brand, String model, int year, double price, boolean isPaid) { + this.brand = brand; + this.model = model; + this.year = year; + this.price = price; + this.isPaid = isPaid; + } + + public Car(){} + + public String getBrand() { + return brand; + } + public void setBrand(String brand) { + this.brand = brand; + } + public String getModel() { + return model; + } + public void setModel(String model) { + this.model = model; + } + public int getYear() { + return year; + } + public void setYear(int year) { + this.year = year; + } + public double getPrice() { + return price; + } + public void setPrice(double price) { + this.price = price; + } + public boolean getIsPaid() { + return isPaid; + } + public void setIsPaid(boolean isPaid) { + this.isPaid = isPaid; + } + + public void displayInfo(){ + System.out.println("Brand: " + brand); + System.out.println("Model: " + model); + System.out.println("Year: " + year); + System.out.println("Price: " + price); + System.out.println("Is Paid? "+( isPaid? "yes": "no")); + } + + + +} + diff --git a/src/H071221028/Pertemuan_4/No2/Main.java b/src/H071221028/Pertemuan_4/No2/Main.java new file mode 100644 index 0000000..4a9c279 --- /dev/null +++ b/src/H071221028/Pertemuan_4/No2/Main.java @@ -0,0 +1,21 @@ +public class Main { + public static void main(String[] args) { + Car car1 = new Car(); + car1.setBrand("Lexus SUV"); + car1.setModel("UX 300 e"); + car1.setYear(2020); + car1.setPrice(1495000000); + car1.setIsPaid(false); + car1.displayInfo(); + + Car car2 = new Car("Audi", "A5", 2023,821752120, true); + System.out.println("Info car 2 :"); + System.out.println("Brand: " + car2.getBrand()); + System.out.println("Model: " + car2.getModel()); + System.out.println("Year: " + car2.getYear()); + System.out.println("Price: " + car2.getPrice()); + System.out.println("Is Sold: " + car2.getIsPaid()); + + SelfUtils.displaySelfData(); + } +} diff --git a/src/H071221028/Pertemuan_4/No2/SelfUtils.java b/src/H071221028/Pertemuan_4/No2/SelfUtils.java new file mode 100644 index 0000000..6759631 --- /dev/null +++ b/src/H071221028/Pertemuan_4/No2/SelfUtils.java @@ -0,0 +1,8 @@ +public class SelfUtils { + public static void displaySelfData() { + System.out.println("Nama: Nadjwa Amalia"); + System.out.println("NIM: H071221028"); + } + + +} diff --git a/src/H071221028/Pertemuan_4/login_app/login_app/Main.java b/src/H071221028/Pertemuan_4/login_app/login_app/Main.java new file mode 100644 index 0000000..63a2744 --- /dev/null +++ b/src/H071221028/Pertemuan_4/login_app/login_app/Main.java @@ -0,0 +1,181 @@ +package login_app; + +import java.util.ArrayList; +import java.util.Scanner; +import login_app.models.Profile; +import login_app.models.User; +import login_app.utils.StringUtils; + +public class Main { + private static ArrayList listUser = new ArrayList<>(); + private static ArrayList listUserProfile = new ArrayList<>(); + private static Scanner sc = new Scanner(System.in); + + public static void main(String[] args) { + // Memanggil method runApp(); + runApp(); + } + + private static void runApp() { + // Menu Utama Aplikasi + System.out.println("-------------------------"); + System.out.println("Aplikasi Login Sederhana"); + System.out.println("-------------------------"); + System.out.println("1. Login"); + System.out.println("2. Register"); + System.out.print("> "); + + // Menginput pilihan menu + int selectMenu = sc.nextInt(); + sc.nextLine(); + switch (selectMenu) { + case 1: + // Membuka Halaman Login + showLoginMenu(); + break; + case 2: + // Membuka Halaman Register + showRegisterMenu(); + default: + // Mengulang Pemanggilan Menu Utama + runApp(); + } + } + + private static void showLoginMenu() { + // Halaman Login + System.out.println("-------------------------"); + System.out.println("Login"); + // Menginput Username dan Menyimpannya di attribute username; + System.out.println("Masukkan Username"); + System.out.print("> "); + + String username = sc.next(); + // Membuat variabel userIndex yang mana nanti akan menampung index dari user + int userIndex = -1; + for (int i = 0; i < listUser.size(); i++) { + /* + * TODO + * Buatlah sebuah perkondisian (IF) yang akan + * Mengecek apakah user index ke i dari listUser memiliki username yang sama + * dengan username yang + * diinput. + * Jika ada ganti userIndex dengan Index dari User Tersebut, kemudian hentikan + * perulangan + */ + if (listUser.get(i).getUsername().equals(username)){ + userIndex = i; + break; + } + + } + // Saat userIndex tidak sama dengan -1 atau userIndexnya ditemukan + if (userIndex != -1) { + // Menginput Password + System.out.println("Password"); + System.out.print("> "); + String password = sc.next(); + + /* + * TODO + * Mengecek apakah password dari User yang login berdasarkan username + * sama dengan password yang diinput sebelumnya, kemudian simpan + * hasilnya di variabel isPasswordMatch + */ + + // Jika passwordnya sama maka berhasil login + boolean isPasswordMatch = listUser.get(userIndex).getPassword().equals(password); + if (isPasswordMatch) { + System.out.println("Berhasil Login"); + Main.showDetailUser(listUserProfile.get(userIndex)); + /* + * TODO + * panggil method showDetailUser dan kirimkan data Profile User yang login + * + */ + showDetailUser(listUserProfile.get(userIndex)); + System.exit(0); + } else { + // saat password salah akan menampikan password salah + System.out.println("Password Salah"); + } + } + } + + private static void showRegisterMenu() { + System.out.println("-------------------------"); + System.out.println("REGISTER"); + + // Menginput username dan password + System.out.println("Username"); + System.out.print("> "); + String username = sc.nextLine(); + System.out.println("Password"); + System.out.print("> "); + String password = sc.nextLine(); + /* + * TODO + * Buatlah atau Instance objek User baru, dan tambahkan + * username dan password yang diinput sebelumnya secara langsung + * saat instance User + */ + User user = new User(username, password); + /* + * TODO + * Buatlah atau Instance objek Profile baru + */ + Profile profile = new Profile(); + + // Menginput Data Profile + System.out.println("Nama Lengkap"); + System.out.print("> "); + String fullName = sc.nextLine(); + System.out.println("Umur"); + System.out.print("> "); + int age = sc.nextInt(); + sc.nextLine(); + System.out.println("Hobby"); + System.out.print("> "); + String hobby = sc.nextLine(); + + /* + * TODO + * Berikan nilai fullName, age, dan hobby ke objek profile yang telah + * di Instance sebelumnya. Nilai ini diperoleh dari data profile yang + * diinput sebelumnya + */ + profile.setFullName(fullName); + profile.setNickName(StringUtils.generateNickName(fullName)); + profile.setAge(age); + profile.setHobby(hobby); + /* + * TODO + * Berikan nilai nickName ke objek profile, + * Nilai ini diperoleh menggunakan static method yang dibuat di class + * StringUtils, dengan mengirimkan fullName yang diinput sebelumnya + */ + + // Menambahkan user yang dibuat ke list user + listUser.add(user); + // Menambahkan profile user yang dibuat ke list profile + listUserProfile.add(profile); + System.out.println("-------------------------"); + System.out.println("Berhasil Membuat User Baru!!"); + runApp(); + } + + private static void showDetailUser(Profile profile) { + /* + * TODO * + * Tampilkan semua data profile user yang login + */ + System.out.println("-------------------------"); + System.out.println("SELAMAT DATANG!!"); + System.out.println("-------------------------"); + System.out.println("Nama Lengkap: " + profile.getFullName()); + System.out.println("Nama Panggilan: " + profile.getNickName()); + System.out.println("Umur" + profile.getAge()); + System.out.println("Hobby: " + profile.GetHobby()); + } + +} diff --git a/src/H071221028/Pertemuan_4/login_app/login_app/models/Profile.java b/src/H071221028/Pertemuan_4/login_app/login_app/models/Profile.java new file mode 100644 index 0000000..008bb1b --- /dev/null +++ b/src/H071221028/Pertemuan_4/login_app/login_app/models/Profile.java @@ -0,0 +1,44 @@ +package login_app.models; + +public class Profile { + private String fullName; + private int age; + private String hobby; + private String nickName; + + public Profile(String fullName, int age, String hobby, String nickName) { + this.fullName = fullName; + this.age = age; + this.hobby = hobby; + this.nickName = nickName; + } + public Profile() {} + + public String getFullName() { + return fullName; + } + public void setFullName(String fullName) { + this.fullName = fullName; + } + public int getAge() { + return age; + } + public void setAge(int age) { + this.age = age; + } + public String GetHobby(){ + return hobby; + } + public void setHobby(String hobby){ + this.hobby = hobby; + } + + public String getNickName(){ + return nickName; + } + + public void setNickName (String nickName){ + this.nickName = nickName; + } + +} diff --git a/src/H071221028/Pertemuan_4/login_app/login_app/models/User.java b/src/H071221028/Pertemuan_4/login_app/login_app/models/User.java new file mode 100644 index 0000000..35b3993 --- /dev/null +++ b/src/H071221028/Pertemuan_4/login_app/login_app/models/User.java @@ -0,0 +1,34 @@ +package login_app.models; + +public class User { + /* + * TODO: + * Tambahkan attribute, method, atau constructor + * yang dibutuhkan di kelas user + */ + private String username; + private String password; + + public User(String username, String password) { + this.username = username; + this.password = password; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + +} diff --git a/src/H071221028/Pertemuan_4/login_app/login_app/utils/StringUtils.java b/src/H071221028/Pertemuan_4/login_app/login_app/utils/StringUtils.java new file mode 100644 index 0000000..5245297 --- /dev/null +++ b/src/H071221028/Pertemuan_4/login_app/login_app/utils/StringUtils.java @@ -0,0 +1,23 @@ +package login_app.utils; + +public class StringUtils { + /* + TODO + * Buatlah sebuah method static yang akan + * mengembalikan nickName berdasarkan fullName yang diberikan + * aturan pembuatan nickName adalah : + * 1. Jika fullName hanya 1 kata maka nickName = fullName + * (ex: FullName = Agus, maka NickName = Agus) + * 2. Jika fullName lebih dari 1 kata maka nickName adalah kata kedua dari + * fullName + * (ex: FullName = Eurico Devon, maka NickName = Devon) + */ + public static String generateNickName(String fullName){ + String [] nameParts = fullName.split(" "); + if (nameParts.length == 1){ + return fullName; + } else { + return nameParts[1]; + } + } +} diff --git a/src/H071221028/Pertemuan_5/Diagram Anggota_nadjwa amalia.html b/src/H071221028/Pertemuan_5/Diagram Anggota_nadjwa amalia.html new file mode 100644 index 0000000..3e13d23 --- /dev/null +++ b/src/H071221028/Pertemuan_5/Diagram Anggota_nadjwa amalia.html @@ -0,0 +1,11 @@ + + + + +Diagram Tanpa Judul + + +
+ + + \ No newline at end of file diff --git a/src/H071221028/Pertemuan_5/No1/BangunDatar.java b/src/H071221028/Pertemuan_5/No1/BangunDatar.java new file mode 100644 index 0000000..0899c8c --- /dev/null +++ b/src/H071221028/Pertemuan_5/No1/BangunDatar.java @@ -0,0 +1,110 @@ +package No1; + +public class BangunDatar { + protected double nilaiA; + protected double nilaiB; + protected double nilaiC; + protected double nilaiD; + + protected double keliling; + protected double luas; + + public BangunDatar(double nilaiA) { + this.nilaiA = nilaiA; + } + + public BangunDatar(double nilaiA, double nilaiB) { + this.nilaiA = nilaiA; + this.nilaiB = nilaiB; + } + + public BangunDatar(double nilaiA, double nilaiB, double nilaiC) { + this.nilaiA = nilaiA; + this.nilaiB = nilaiB; + this.nilaiC = nilaiC; + } + + public BangunDatar(double nilaiA, double nilaiB, double nilaiC, double nilaiD) { + this.nilaiA = nilaiA; + this.nilaiB = nilaiB; + this.nilaiC = nilaiC; + this.nilaiD = nilaiD; + } + + public double keliling(){ + return keliling; + } + + public double luas(){ + return luas; + } + +} + +class Persegi extends BangunDatar { + + public Persegi(double sisi){ + super(sisi); + + } + public double keliling(){ + return 4*nilaiA; + } + public double luas(){ + return nilaiA*nilaiB; + } +} + +class PersegiPanjang extends BangunDatar{ + + + public PersegiPanjang(double panjang, double lebar){ + super(panjang, lebar); + + } + public double keliling(){ + return 2 * (nilaiA * nilaiB); + } + + public double luas(){ + return nilaiA * nilaiB; + } + + + + +} + +class Segitiga extends BangunDatar{ + + + public Segitiga( double alas, double tinggi, double sisi){ + super(alas, tinggi, sisi); + + } + public double keliling(){ + return nilaiA + nilaiB + nilaiC; + } + public double luas(){ + return (nilaiA*nilaiB)/2; + + } + + + +} + +class Trapesium extends BangunDatar{ + + public Trapesium (double tinggi, double alas, double atas, double sisimiring){ + super(tinggi, alas, sisimiring, atas); + } + + public double getLuas(){ + return 0.5*(nilaiA+nilaiB)*nilaiC; + } + + public double getKeliling(){ + return nilaiA+nilaiB+nilaiC+nilaiD; + } +} diff --git a/src/H071221028/Pertemuan_5/No1/BangunRuang.java b/src/H071221028/Pertemuan_5/No1/BangunRuang.java new file mode 100644 index 0000000..aff751b --- /dev/null +++ b/src/H071221028/Pertemuan_5/No1/BangunRuang.java @@ -0,0 +1,87 @@ +package H071221028.Pertemuan_5.No1; + +public class BangunRuang { + protected double nilaiA; + protected double nilaiB; + protected double nilaiC; + + + protected double keliling; + protected double luas; + protected double volume; + + public BangunRuang(double nilaiA) { + this.nilaiA = nilaiA; + } + public BangunRuang(double nilaiA, double nilaiB) { + this.nilaiA = nilaiA; + this.nilaiB = nilaiB; + } + public BangunRuang(double nilaiA, double nilaiB, double nilaiC) { + this.nilaiA = nilaiA; + this.nilaiB = nilaiB; + this.nilaiC = nilaiC; + } + + + + +} +class Kubus extends BangunRuang{ + + public Kubus (double sisi){ + super(sisi); + } + + public double volume(){ + return 3*nilaiA; + } + + public double luasPermukaan(){ + return 6*nilaiA*nilaiA; + } +} + +class Balok extends BangunRuang{ + + public Balok (double panjang, double lebar, double tinggi){ + super(panjang, lebar, tinggi); + } + + public double volume(){ + return nilaiA*nilaiB*nilaiC; + } + public double luasPermukaan(){ + return (2*nilaiA*nilaiB)+(2*nilaiA*nilaiC)+(2*nilaiB*nilaiC); + } +} + +class Bola extends BangunRuang{ + + public Bola (double sisi, double jariJari){ + super(sisi, jariJari); + } + + public double volume(){ + return (4*Math.PI/3); + } + + public double luasPermukaan(){ + return (4*Math.PI*jariJ); + } +} + +class Tabung extends BangunRuang{ + + public Tabung (double jariJari, double tinggi){ + super(jariJari, tinggi); + } + + public double volume(){ + return Luas()*nilaiB; + } + + public double luasPermukaan(){ + return (2*Luas())+Keliling(); + } +} diff --git a/src/H071221028/pertemuan-3/No3/No3.java b/src/H071221028/Pertemuan_5/No1/Komunitas.java similarity index 100% rename from src/H071221028/pertemuan-3/No3/No3.java rename to src/H071221028/Pertemuan_5/No1/Komunitas.java diff --git a/src/H071221028/Pertemuan_5/No1/Main.java b/src/H071221028/Pertemuan_5/No1/Main.java new file mode 100644 index 0000000..ae3d626 --- /dev/null +++ b/src/H071221028/Pertemuan_5/No1/Main.java @@ -0,0 +1,15 @@ +package No1; + + +public class Main { + public static void main(String[] args) { + Segitiga segitiga = new Segitiga(3, 2, 4); + System.out.println(segitiga.luas()); + System.out.println(segitiga.keliling()); + + Tabung kubus = new Kubus(6); + System.out.println(tabung.volume()); + System.out.println(tabung.luasPermukaan()); + + } +} diff --git a/src/H071221028/Pertemuan_5/No1/diagramno1.png b/src/H071221028/Pertemuan_5/No1/diagramno1.png new file mode 100644 index 0000000000000000000000000000000000000000..0e13621e00d1729931581345f0d1163e17d26bcf GIT binary patch literal 70909 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 literal 0 HcmV?d00001 diff --git a/src/H071221028/Pertemuan_5/No2/Anggota.java b/src/H071221028/Pertemuan_5/No2/Anggota.java new file mode 100644 index 0000000..dd1e538 --- /dev/null +++ b/src/H071221028/Pertemuan_5/No2/Anggota.java @@ -0,0 +1,69 @@ +package H071221028.Pertemuan_5.No2; +public class Anggota { + private String nama; + private int umur; + private String gender; + + public Anggota (String nama, int umur, String gender){ + this.nama = nama ; + this.umur = umur; + this.gender = gender; + } + public String getName() { + return nama; + } + + public void setName(String nama) { + this.nama = nama; + } + + public int getAge() { + return umur; + } + + public void setAge(int umur) { + this.umur = umur; + } + + public String getGender() { + return gender; + } + + public void setGender(String gender) { + this.gender = gender; + } +} + +class PengurusInti extends Anggota{ + private String jabatan; + + public PengurusInti(String nama, int umur, String gender, String jabatan){ + super(nama, umur, gender); + this.jabatan = jabatan; + } + public String getJabatan() { + return jabatan; + } + + public void setJabatan(String jabatan) { + this.jabatan = jabatan; + } +} + +class KordinatorBidangStaff extends Anggota{ + private String bidang; + + public KordinatorBidangStaff(String nama, int umur, String gender, String bidang){ + super(nama, umur, gender); + this.bidang = bidang; + } + public String getBidang() { + return bidang; + } + + public void setBidang(String bidang) { + this.bidang = bidang; + } +} + + diff --git a/src/H071221028/Pertemuan_5/No2/Diagram Anggota_nadjwa amalia.html b/src/H071221028/Pertemuan_5/No2/Diagram Anggota_nadjwa amalia.html new file mode 100644 index 0000000..3e13d23 --- /dev/null +++ b/src/H071221028/Pertemuan_5/No2/Diagram Anggota_nadjwa amalia.html @@ -0,0 +1,11 @@ + + + + +Diagram Tanpa Judul + + +
+ + + \ No newline at end of file diff --git a/src/H071221028/Pertemuan_5/No2/MainAnggota.java b/src/H071221028/Pertemuan_5/No2/MainAnggota.java new file mode 100644 index 0000000..4a0980b --- /dev/null +++ b/src/H071221028/Pertemuan_5/No2/MainAnggota.java @@ -0,0 +1,16 @@ +public class MainAnggota { + public static void main(String[] args) { //method yang dapat dipakai tanpa harus mendeklarasikan suatu class + PengurusInti pengurusInti = new PengurusInti("Diva", 19, "Wanita", "Ketua"); + System.out.println("Nama : " + pengurusInti.getName()); + System.out.println("Umur : " + pengurusInti.getAge()); + System.out.println("Gender : " + pengurusInti.getGender()); + System.out.println("Jabatan : " + pengurusInti.getJabatan()); + + + KordinatorBidangStaff koordinasiBidangStaff = new KordinatorBidangStaff("Arni", 19,"Wanita", "Humas"); + System.out.println("Nama : " + koordinasiBidangStaff.getName()); + System.out.println("Umur : " + koordinasiBidangStaff.getAge()); + System.out.println("Gender : " + koordinasiBidangStaff.getGender()); + System.out.println("Bidang : " + koordinasiBidangStaff.getBidang()); + } +} diff --git a/src/H071221028/pertemuan-3/No1/tugas2.code-workspace b/src/H071221028/pertemuan-3/No1/tugas2.code-workspace deleted file mode 100644 index 763e748..0000000 --- a/src/H071221028/pertemuan-3/No1/tugas2.code-workspace +++ /dev/null @@ -1,19 +0,0 @@ -{ - "folders": [ - { - "path": "../../pertemuan-2/tugas2" - }, - { - "path": "../No3" - }, - { - "path": "." - }, - { - "path": "../no2" - } - ], - "settings": { - "java.debug.settings.onBuildFailureProceed": true - } -} \ No newline at end of file From 61c0d0f1f2ac536be5b8f17df28b4dd8cd75fc74 Mon Sep 17 00:00:00 2001 From: Nadjwa03 Date: Sat, 15 Apr 2023 16:03:04 +0800 Subject: [PATCH 6/7] kumpul semua tugas --- src/H071221028/Pertemuan_5/No1/BangunDatar.java | 10 +++++----- src/H071221028/Pertemuan_5/No1/BangunRuang.java | 10 +++++----- src/H071221028/Pertemuan_5/No1/Komunitas.java | 0 src/H071221028/Pertemuan_5/No1/Main.java | 8 ++++---- src/H071221028/Pertemuan_5/No2/MainAnggota.java | 1 + 5 files changed, 15 insertions(+), 14 deletions(-) delete mode 100644 src/H071221028/Pertemuan_5/No1/Komunitas.java diff --git a/src/H071221028/Pertemuan_5/No1/BangunDatar.java b/src/H071221028/Pertemuan_5/No1/BangunDatar.java index 0899c8c..eb4eab9 100644 --- a/src/H071221028/Pertemuan_5/No1/BangunDatar.java +++ b/src/H071221028/Pertemuan_5/No1/BangunDatar.java @@ -1,4 +1,4 @@ -package No1; +package H071221028.Pertemuan_5.No1; public class BangunDatar { protected double nilaiA; @@ -6,8 +6,8 @@ public class BangunDatar { protected double nilaiC; protected double nilaiD; - protected double keliling; - protected double luas; + // protected double keliling; + // protected double luas; public BangunDatar(double nilaiA) { this.nilaiA = nilaiA; @@ -32,11 +32,11 @@ public BangunDatar(double nilaiA, double nilaiB, double nilaiC, double nilaiD) { } public double keliling(){ - return keliling; + return 0; } public double luas(){ - return luas; + return 0; } } diff --git a/src/H071221028/Pertemuan_5/No1/BangunRuang.java b/src/H071221028/Pertemuan_5/No1/BangunRuang.java index aff751b..9f3acd0 100644 --- a/src/H071221028/Pertemuan_5/No1/BangunRuang.java +++ b/src/H071221028/Pertemuan_5/No1/BangunRuang.java @@ -58,8 +58,8 @@ public double luasPermukaan(){ class Bola extends BangunRuang{ - public Bola (double sisi, double jariJari){ - super(sisi, jariJari); + public Bola (double sisi){ + super(sisi); } public double volume(){ @@ -67,7 +67,7 @@ public double volume(){ } public double luasPermukaan(){ - return (4*Math.PI*jariJ); + return (4*Math.PI*nilaiA); } } @@ -78,10 +78,10 @@ public Tabung (double jariJari, double tinggi){ } public double volume(){ - return Luas()*nilaiB; + return (Math.PI*nilaiA*nilaiA*nilaiB); } public double luasPermukaan(){ - return (2*Luas())+Keliling(); + return (2*Math.PI*nilaiA*(nilaiA+nilaiB)); } } diff --git a/src/H071221028/Pertemuan_5/No1/Komunitas.java b/src/H071221028/Pertemuan_5/No1/Komunitas.java deleted file mode 100644 index e69de29..0000000 diff --git a/src/H071221028/Pertemuan_5/No1/Main.java b/src/H071221028/Pertemuan_5/No1/Main.java index ae3d626..c05029f 100644 --- a/src/H071221028/Pertemuan_5/No1/Main.java +++ b/src/H071221028/Pertemuan_5/No1/Main.java @@ -1,4 +1,4 @@ -package No1; +package H071221028.Pertemuan_5.No1; public class Main { @@ -7,9 +7,9 @@ public static void main(String[] args) { System.out.println(segitiga.luas()); System.out.println(segitiga.keliling()); - Tabung kubus = new Kubus(6); - System.out.println(tabung.volume()); - System.out.println(tabung.luasPermukaan()); + Kubus kubus = new Kubus(6); + System.out.println(kubus.volume()); + System.out.println(kubus.luasPermukaan()); } } diff --git a/src/H071221028/Pertemuan_5/No2/MainAnggota.java b/src/H071221028/Pertemuan_5/No2/MainAnggota.java index 4a0980b..a824b0c 100644 --- a/src/H071221028/Pertemuan_5/No2/MainAnggota.java +++ b/src/H071221028/Pertemuan_5/No2/MainAnggota.java @@ -1,3 +1,4 @@ +package H071221028.Pertemuan_5.No2; public class MainAnggota { public static void main(String[] args) { //method yang dapat dipakai tanpa harus mendeklarasikan suatu class PengurusInti pengurusInti = new PengurusInti("Diva", 19, "Wanita", "Ketua"); From 53f33be4c56a79405a1477cb8d6c1ef95d4a167a Mon Sep 17 00:00:00 2001 From: Nadjwa03 Date: Tue, 30 May 2023 16:45:17 +0800 Subject: [PATCH 7/7] Kumpul tugas 7 8 9 --- src/H071221028/Pertemuan_4/No2/Car.java | 60 ----- src/H071221028/Pertemuan_4/No2/Main.java | 21 -- src/H071221028/Pertemuan_4/No2/SelfUtils.java | 8 - .../Pertemuan_4/login_app/login_app/Main.java | 181 ------------- .../login_app/login_app/models/Profile.java | 44 --- .../login_app/login_app/models/User.java | 34 --- .../login_app/utils/StringUtils.java | 23 -- src/H071221028/Pertemuan_8/AppRacer.java | 197 ++++++++++++++ .../Pertemuan8/TugasPraktikum.java | 101 +++++++ src/H071221028/Pertemuan_8/Pertemuan8/halo.py | 2 + src/H071221028/Pertemuan_9/.gitattributes | 9 + src/H071221028/Pertemuan_9/.gitignore | 5 + .../Pertemuan_9/.vscode/settings.json | 3 + .../Pertemuan_9/app/bin/main/css/style.css | 3 + .../app/bin/main/image/timbangan.png | Bin 0 -> 4865 bytes .../app/bin/main/image/timbanganBiru.png | Bin 0 -> 38445 bytes src/H071221028/Pertemuan_9/app/build.gradle | 47 ++++ .../app/src/main/java/javafxx/App.java | 252 ++++++++++++++++++ .../app/src/main/resources/css/style.css | 3 + .../src/main/resources/image/timbangan.png | Bin 0 -> 4865 bytes .../main/resources/image/timbanganBiru.png | Bin 0 -> 38445 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + src/H071221028/Pertemuan_9/gradlew | 244 +++++++++++++++++ src/H071221028/Pertemuan_9/gradlew.bat | 92 +++++++ src/H071221028/Pertemuan_9/settings.gradle | 11 + .../pertemuan_6/Diagram prak6 nadjwa.png | Bin 0 -> 42611 bytes src/H071221028/pertemuan_6/Dog.java | 148 ++++++++++ src/H071221028/pertemuan_6/Main.java | 20 ++ .../pertemuan_7/.vscode/settings.json | 7 + src/H071221028/pertemuan_7/No1/Main.java | 97 +++++++ src/H071221028/pertemuan_7/No2/Main.java | 58 ++++ src/H071221028/pertemuan_7/No3/Main.java | 78 ++++++ 32 files changed, 1383 insertions(+), 371 deletions(-) delete mode 100644 src/H071221028/Pertemuan_4/No2/Main.java delete mode 100644 src/H071221028/Pertemuan_4/No2/SelfUtils.java delete mode 100644 src/H071221028/Pertemuan_4/login_app/login_app/Main.java delete mode 100644 src/H071221028/Pertemuan_4/login_app/login_app/models/Profile.java delete mode 100644 src/H071221028/Pertemuan_4/login_app/login_app/models/User.java delete mode 100644 src/H071221028/Pertemuan_4/login_app/login_app/utils/StringUtils.java create mode 100644 src/H071221028/Pertemuan_8/AppRacer.java create mode 100644 src/H071221028/Pertemuan_8/Pertemuan8/TugasPraktikum.java create mode 100644 src/H071221028/Pertemuan_8/Pertemuan8/halo.py create mode 100644 src/H071221028/Pertemuan_9/.gitattributes create mode 100644 src/H071221028/Pertemuan_9/.gitignore create mode 100644 src/H071221028/Pertemuan_9/.vscode/settings.json create mode 100644 src/H071221028/Pertemuan_9/app/bin/main/css/style.css create mode 100644 src/H071221028/Pertemuan_9/app/bin/main/image/timbangan.png create mode 100644 src/H071221028/Pertemuan_9/app/bin/main/image/timbanganBiru.png create mode 100644 src/H071221028/Pertemuan_9/app/build.gradle create mode 100644 src/H071221028/Pertemuan_9/app/src/main/java/javafxx/App.java create mode 100644 src/H071221028/Pertemuan_9/app/src/main/resources/css/style.css create mode 100644 src/H071221028/Pertemuan_9/app/src/main/resources/image/timbangan.png create mode 100644 src/H071221028/Pertemuan_9/app/src/main/resources/image/timbanganBiru.png create mode 100644 src/H071221028/Pertemuan_9/gradle/wrapper/gradle-wrapper.properties create mode 100644 src/H071221028/Pertemuan_9/gradlew create mode 100644 src/H071221028/Pertemuan_9/gradlew.bat create mode 100644 src/H071221028/Pertemuan_9/settings.gradle create mode 100644 src/H071221028/pertemuan_6/Diagram prak6 nadjwa.png create mode 100644 src/H071221028/pertemuan_6/Dog.java create mode 100644 src/H071221028/pertemuan_6/Main.java create mode 100644 src/H071221028/pertemuan_7/.vscode/settings.json create mode 100644 src/H071221028/pertemuan_7/No1/Main.java create mode 100644 src/H071221028/pertemuan_7/No2/Main.java create mode 100644 src/H071221028/pertemuan_7/No3/Main.java diff --git a/src/H071221028/Pertemuan_4/No2/Car.java b/src/H071221028/Pertemuan_4/No2/Car.java index d1f426d..e69de29 100644 --- a/src/H071221028/Pertemuan_4/No2/Car.java +++ b/src/H071221028/Pertemuan_4/No2/Car.java @@ -1,60 +0,0 @@ -class Car { - private String brand; - private String model; - private int year; - private double price; - private boolean isPaid; - - public Car(String brand, String model, int year, double price, boolean isPaid) { - this.brand = brand; - this.model = model; - this.year = year; - this.price = price; - this.isPaid = isPaid; - } - - public Car(){} - - public String getBrand() { - return brand; - } - public void setBrand(String brand) { - this.brand = brand; - } - public String getModel() { - return model; - } - public void setModel(String model) { - this.model = model; - } - public int getYear() { - return year; - } - public void setYear(int year) { - this.year = year; - } - public double getPrice() { - return price; - } - public void setPrice(double price) { - this.price = price; - } - public boolean getIsPaid() { - return isPaid; - } - public void setIsPaid(boolean isPaid) { - this.isPaid = isPaid; - } - - public void displayInfo(){ - System.out.println("Brand: " + brand); - System.out.println("Model: " + model); - System.out.println("Year: " + year); - System.out.println("Price: " + price); - System.out.println("Is Paid? "+( isPaid? "yes": "no")); - } - - - -} - diff --git a/src/H071221028/Pertemuan_4/No2/Main.java b/src/H071221028/Pertemuan_4/No2/Main.java deleted file mode 100644 index 4a9c279..0000000 --- a/src/H071221028/Pertemuan_4/No2/Main.java +++ /dev/null @@ -1,21 +0,0 @@ -public class Main { - public static void main(String[] args) { - Car car1 = new Car(); - car1.setBrand("Lexus SUV"); - car1.setModel("UX 300 e"); - car1.setYear(2020); - car1.setPrice(1495000000); - car1.setIsPaid(false); - car1.displayInfo(); - - Car car2 = new Car("Audi", "A5", 2023,821752120, true); - System.out.println("Info car 2 :"); - System.out.println("Brand: " + car2.getBrand()); - System.out.println("Model: " + car2.getModel()); - System.out.println("Year: " + car2.getYear()); - System.out.println("Price: " + car2.getPrice()); - System.out.println("Is Sold: " + car2.getIsPaid()); - - SelfUtils.displaySelfData(); - } -} diff --git a/src/H071221028/Pertemuan_4/No2/SelfUtils.java b/src/H071221028/Pertemuan_4/No2/SelfUtils.java deleted file mode 100644 index 6759631..0000000 --- a/src/H071221028/Pertemuan_4/No2/SelfUtils.java +++ /dev/null @@ -1,8 +0,0 @@ -public class SelfUtils { - public static void displaySelfData() { - System.out.println("Nama: Nadjwa Amalia"); - System.out.println("NIM: H071221028"); - } - - -} diff --git a/src/H071221028/Pertemuan_4/login_app/login_app/Main.java b/src/H071221028/Pertemuan_4/login_app/login_app/Main.java deleted file mode 100644 index 63a2744..0000000 --- a/src/H071221028/Pertemuan_4/login_app/login_app/Main.java +++ /dev/null @@ -1,181 +0,0 @@ -package login_app; - -import java.util.ArrayList; -import java.util.Scanner; -import login_app.models.Profile; -import login_app.models.User; -import login_app.utils.StringUtils; - -public class Main { - private static ArrayList listUser = new ArrayList<>(); - private static ArrayList listUserProfile = new ArrayList<>(); - private static Scanner sc = new Scanner(System.in); - - public static void main(String[] args) { - // Memanggil method runApp(); - runApp(); - } - - private static void runApp() { - // Menu Utama Aplikasi - System.out.println("-------------------------"); - System.out.println("Aplikasi Login Sederhana"); - System.out.println("-------------------------"); - System.out.println("1. Login"); - System.out.println("2. Register"); - System.out.print("> "); - - // Menginput pilihan menu - int selectMenu = sc.nextInt(); - sc.nextLine(); - switch (selectMenu) { - case 1: - // Membuka Halaman Login - showLoginMenu(); - break; - case 2: - // Membuka Halaman Register - showRegisterMenu(); - default: - // Mengulang Pemanggilan Menu Utama - runApp(); - } - } - - private static void showLoginMenu() { - // Halaman Login - System.out.println("-------------------------"); - System.out.println("Login"); - // Menginput Username dan Menyimpannya di attribute username; - System.out.println("Masukkan Username"); - System.out.print("> "); - - String username = sc.next(); - // Membuat variabel userIndex yang mana nanti akan menampung index dari user - int userIndex = -1; - for (int i = 0; i < listUser.size(); i++) { - /* - * TODO - * Buatlah sebuah perkondisian (IF) yang akan - * Mengecek apakah user index ke i dari listUser memiliki username yang sama - * dengan username yang - * diinput. - * Jika ada ganti userIndex dengan Index dari User Tersebut, kemudian hentikan - * perulangan - */ - if (listUser.get(i).getUsername().equals(username)){ - userIndex = i; - break; - } - - } - // Saat userIndex tidak sama dengan -1 atau userIndexnya ditemukan - if (userIndex != -1) { - // Menginput Password - System.out.println("Password"); - System.out.print("> "); - String password = sc.next(); - - /* - * TODO - * Mengecek apakah password dari User yang login berdasarkan username - * sama dengan password yang diinput sebelumnya, kemudian simpan - * hasilnya di variabel isPasswordMatch - */ - - // Jika passwordnya sama maka berhasil login - boolean isPasswordMatch = listUser.get(userIndex).getPassword().equals(password); - if (isPasswordMatch) { - System.out.println("Berhasil Login"); - Main.showDetailUser(listUserProfile.get(userIndex)); - /* - * TODO - * panggil method showDetailUser dan kirimkan data Profile User yang login - * - */ - showDetailUser(listUserProfile.get(userIndex)); - System.exit(0); - } else { - // saat password salah akan menampikan password salah - System.out.println("Password Salah"); - } - } - } - - private static void showRegisterMenu() { - System.out.println("-------------------------"); - System.out.println("REGISTER"); - - // Menginput username dan password - System.out.println("Username"); - System.out.print("> "); - String username = sc.nextLine(); - System.out.println("Password"); - System.out.print("> "); - String password = sc.nextLine(); - /* - * TODO - * Buatlah atau Instance objek User baru, dan tambahkan - * username dan password yang diinput sebelumnya secara langsung - * saat instance User - */ - User user = new User(username, password); - /* - * TODO - * Buatlah atau Instance objek Profile baru - */ - Profile profile = new Profile(); - - // Menginput Data Profile - System.out.println("Nama Lengkap"); - System.out.print("> "); - String fullName = sc.nextLine(); - System.out.println("Umur"); - System.out.print("> "); - int age = sc.nextInt(); - sc.nextLine(); - System.out.println("Hobby"); - System.out.print("> "); - String hobby = sc.nextLine(); - - /* - * TODO - * Berikan nilai fullName, age, dan hobby ke objek profile yang telah - * di Instance sebelumnya. Nilai ini diperoleh dari data profile yang - * diinput sebelumnya - */ - profile.setFullName(fullName); - profile.setNickName(StringUtils.generateNickName(fullName)); - profile.setAge(age); - profile.setHobby(hobby); - /* - * TODO - * Berikan nilai nickName ke objek profile, - * Nilai ini diperoleh menggunakan static method yang dibuat di class - * StringUtils, dengan mengirimkan fullName yang diinput sebelumnya - */ - - // Menambahkan user yang dibuat ke list user - listUser.add(user); - // Menambahkan profile user yang dibuat ke list profile - listUserProfile.add(profile); - System.out.println("-------------------------"); - System.out.println("Berhasil Membuat User Baru!!"); - runApp(); - } - - private static void showDetailUser(Profile profile) { - /* - * TODO * - * Tampilkan semua data profile user yang login - */ - System.out.println("-------------------------"); - System.out.println("SELAMAT DATANG!!"); - System.out.println("-------------------------"); - System.out.println("Nama Lengkap: " + profile.getFullName()); - System.out.println("Nama Panggilan: " + profile.getNickName()); - System.out.println("Umur" + profile.getAge()); - System.out.println("Hobby: " + profile.GetHobby()); - } - -} diff --git a/src/H071221028/Pertemuan_4/login_app/login_app/models/Profile.java b/src/H071221028/Pertemuan_4/login_app/login_app/models/Profile.java deleted file mode 100644 index 008bb1b..0000000 --- a/src/H071221028/Pertemuan_4/login_app/login_app/models/Profile.java +++ /dev/null @@ -1,44 +0,0 @@ -package login_app.models; - -public class Profile { - private String fullName; - private int age; - private String hobby; - private String nickName; - - public Profile(String fullName, int age, String hobby, String nickName) { - this.fullName = fullName; - this.age = age; - this.hobby = hobby; - this.nickName = nickName; - } - public Profile() {} - - public String getFullName() { - return fullName; - } - public void setFullName(String fullName) { - this.fullName = fullName; - } - public int getAge() { - return age; - } - public void setAge(int age) { - this.age = age; - } - public String GetHobby(){ - return hobby; - } - public void setHobby(String hobby){ - this.hobby = hobby; - } - - public String getNickName(){ - return nickName; - } - - public void setNickName (String nickName){ - this.nickName = nickName; - } - -} diff --git a/src/H071221028/Pertemuan_4/login_app/login_app/models/User.java b/src/H071221028/Pertemuan_4/login_app/login_app/models/User.java deleted file mode 100644 index 35b3993..0000000 --- a/src/H071221028/Pertemuan_4/login_app/login_app/models/User.java +++ /dev/null @@ -1,34 +0,0 @@ -package login_app.models; - -public class User { - /* - * TODO: - * Tambahkan attribute, method, atau constructor - * yang dibutuhkan di kelas user - */ - private String username; - private String password; - - public User(String username, String password) { - this.username = username; - this.password = password; - } - - public String getUsername() { - return username; - } - - public void setUsername(String username) { - this.username = username; - } - - public String getPassword() { - return password; - } - - public void setPassword(String password) { - this.password = password; - } - - -} diff --git a/src/H071221028/Pertemuan_4/login_app/login_app/utils/StringUtils.java b/src/H071221028/Pertemuan_4/login_app/login_app/utils/StringUtils.java deleted file mode 100644 index 5245297..0000000 --- a/src/H071221028/Pertemuan_4/login_app/login_app/utils/StringUtils.java +++ /dev/null @@ -1,23 +0,0 @@ -package login_app.utils; - -public class StringUtils { - /* - TODO - * Buatlah sebuah method static yang akan - * mengembalikan nickName berdasarkan fullName yang diberikan - * aturan pembuatan nickName adalah : - * 1. Jika fullName hanya 1 kata maka nickName = fullName - * (ex: FullName = Agus, maka NickName = Agus) - * 2. Jika fullName lebih dari 1 kata maka nickName adalah kata kedua dari - * fullName - * (ex: FullName = Eurico Devon, maka NickName = Devon) - */ - public static String generateNickName(String fullName){ - String [] nameParts = fullName.split(" "); - if (nameParts.length == 1){ - return fullName; - } else { - return nameParts[1]; - } - } -} diff --git a/src/H071221028/Pertemuan_8/AppRacer.java b/src/H071221028/Pertemuan_8/AppRacer.java new file mode 100644 index 0000000..5468cc1 --- /dev/null +++ b/src/H071221028/Pertemuan_8/AppRacer.java @@ -0,0 +1,197 @@ +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Random; + +public class AppRacer { + public static void main(String[] args) throws InterruptedException { + Tes typeRacer = new Tes(); + typeRacer.setNewWordsToType(); + System.out.println("|| Text to Type ||"); + System.out.println("\"" + typeRacer.getWordsToType() + "\""); + + Typer[] typers = new Typer[3]; + + typers[0] = new Typer("Bot Mansur", 40, typeRacer); + typers[1] = new Typer("Bot ToKu", 32, typeRacer); + typers[2] = new Typer("Bot Yukiao", 30, typeRacer); + + typeRacer.getRaceContestant().addAll(Arrays.asList(typers)); + + typeRacer.startRace(); + } +} + +class Typer extends Thread { + private String botName, wordsTyped; + private double wpm; + private Tes typeRacer; + + public Typer(String botName, double wpm, Tes typeRacer) { + this.botName = botName; + this.wpm = wpm; + this.wordsTyped = ""; + this.typeRacer = typeRacer; + } + + public void setBotName(String botName) { + this.botName = botName; + } + + public void setWpm(int wpm) { + this.wpm = wpm; + } + + public void addWordTyped(String newWordsTyped) { + this.wordsTyped += newWordsTyped + " "; + } + + public String getWordsTyped() { + return wordsTyped; + } + + public String getBotName() { + return botName; + } + + public double getWpm() { + return wpm; + } + + @Override + public void run() { + + String[] wordsToType = typeRacer.getWordsToType().split(" "); + + // TODO (1): Buatlah variable howLongToType yang memuat waktu yang diperlukan + // typer + // untuk menulis 1 kata dalam milisecond + int howLongToType = (int) Math.floor(((60 / this.wpm)) * 1000); + + // TODO (2): Buatlah perulangan untuk menambahkan kata dengan method + // addWordToTyped setelah interval waktu sebanyak howLongToType + for (int i = 0; i < wordsToType.length; i++) { + try { + Thread.sleep(howLongToType); + addWordTyped(wordsToType[i]); + } catch (InterruptedException e) { + System.out.println("Error: " + this.botName); + } + } + + this.addWordTyped("(selesai)"); + // TODO (3): menambahkan typer yang telah selesai mengetik semua kata ke list + // typeRaceTabel yang ada di class typeRacer + typeRacer.addResult(new Result(botName, howLongToType * wordsToType.length)); + } +} + +class Result { + private String name; + private int finishTime; + + public Result(String name, int finishTime) { + this.name = name; + this.finishTime = finishTime; + } + + public String getName() { + return name; + } + + public void setName(String racerName) { + this.name = racerName; + } + + public int getFinishTime() { + return finishTime; + } + + public void setFinishTime(int racerTime) { + this.finishTime = racerTime; + } +} + +class Tes { + private String wordsToType; + private ArrayList raceContestant = new ArrayList<>(); + private ArrayList raceStanding = new ArrayList<>(); + + public String getWordsToType() { + return wordsToType; + } + + public ArrayList getRaceContestant() { + return raceContestant; + } + + // Word by Yusuf Syam, Silahkan diubah jika dirasa kurang bijak + private String[] wordsToTypeList = { + "Menuju tak terbatas dan melampauinya", + "Kehidupan adalah perjalanan yang penuh dengan lika-liku. Jadikan setiap tantangan sebagai kesempatan untuk tumbuh dan berkembang", + "Cinta sejati adalah ketika dua jiwa saling melengkapi, memberi dukungan dan menginspirasi satu sama lain untuk menjadi yang terbaik", + "Hidup adalah anugerah yang berharga. Nikmati setiap momen dan hargai kebahagiaan sederhana di sekitar kita", + "Perubahan adalah satu-satunya konstanta dalam hidup. Yang bertahan adalah mereka yang dapat beradaptasi dengan fleksibilitas", + "Kebersamaan adalah fondasi yang kuat dalam membangun hubungan yang langgeng dan bermakna", + "Masa depan adalah milik mereka yang memiliki imajinasi, tekad, dan kerja keras untuk mewujudkan visi mereka", + "Ketika kita berbagi dengan orang lain, kita tidak hanya mengurangi beban mereka, tetapi juga memperkaya hati kita sendiri", + "Kesuksesan sejati adalah ketika kita mencapai tujuan kita sambil tetap mempertahankan integritas dan empati terhadap orang lain", + "Rasa syukur adalah kunci untuk mengalami kebahagiaan yang sejati dalam hidup. Mencintai apa yang kita miliki adalah kunci kepuasan yang tak ternilai", + }; + + public void setNewWordsToType() { + Random random = new Random(); + int angkaRandom = random.nextInt(10); + wordsToType = wordsToTypeList[angkaRandom]; + } + + // TODO (4) : Buat method addResult yang mana digunakan untuk menambahkan typer + // yangtelah selesai (mengetik semua kata), ke dalam list race standing. + public synchronized void addResult(Result result) { + raceStanding.add(result); + } + + public void printRaceStanding() { + System.out.println("\nKlasemen Akhir Type Racer"); + System.out.println("=========================\n"); + + // TODO (5) : Tampilkan klasemen akhir dari kompetisi, dengan format + // {posisi}. {nama} = {waktu penyelesaian dalam detik} detik + int index = 1; + + for (Result result : raceStanding) { + System.out.printf("%d. %s - %.2f detik\n", index, result.getName(), + result.getFinishTime() / 1000.0); + index += 1; + } + } + + public void startRace() throws InterruptedException { + // TODO (6) : jalankan kompetisi + for (Typer racer : raceContestant) { + racer.start(); + } + + // TODO (7) : selaman semua peserta belum selesai, maka tampilkan + // SS + // Setiap 2 detik + while (raceContestant.size() != raceStanding.size()) { + Thread.sleep(2000); + System.out.println("\nTyping Progress ..."); + System.out.println("================\n"); + + for (Typer racer : raceContestant) { + System.out.printf("- %s\t=> %s\n", racer.getBotName(), racer.getWordsTyped()); + System.out.println("-".repeat(100)); + } + + System.out.println("\n" + "#".repeat(100)); + } + + // TODO (8) : Tampilkan race standing setelah semua typer selesai + for (Typer racer : raceContestant) { + racer.join(); + } + + printRaceStanding(); + } +} diff --git a/src/H071221028/Pertemuan_8/Pertemuan8/TugasPraktikum.java b/src/H071221028/Pertemuan_8/Pertemuan8/TugasPraktikum.java new file mode 100644 index 0000000..19db690 --- /dev/null +++ b/src/H071221028/Pertemuan_8/Pertemuan8/TugasPraktikum.java @@ -0,0 +1,101 @@ +package Pertemuan8; + +import java.util.Random; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +public class TugasPraktikum { + + public static void main(String[] args) { + int numData = 4; + + UiThread uiThread = new UiThread(numData); + + ExecutorService executor = Executors.newFixedThreadPool(3); + + uiThread.start(); + + for (int i = 0; i < numData; i++) { + executor.execute(new BackgroundThread(uiThread, TaskTimeHelper.generateRandomTimeExecution())); + } + executor.shutdown(); + } +} + +class UiThread extends Thread { + private int numBackgroundThreads; + private int numThreadsSuccess = 0; + private int numThreadsFailed = 0; + private int timeExecution = 0; + + public UiThread(int numBackgroundThreads) { + this.numBackgroundThreads = numBackgroundThreads; + } + + public void run() { + System.out.println("Start load " + numBackgroundThreads + " Data"); + while ((numThreadsSuccess + numThreadsFailed) < numBackgroundThreads) { + try { + Thread.sleep(1000); + timeExecution++; + System.out.printf("Loading... (%ds)\n", timeExecution); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + System.out.println("\nTask Finish."); + System.out.println("Time Execution : " + timeExecution + "s"); + if (numThreadsFailed == 0) { + System.out.println("All data is successfully loaded"); + } else if (numThreadsSuccess == 0) { + System.out.println("All data failed to load"); + } else { + System.out.println( + numThreadsSuccess + " Data Successfully loaded & " + numThreadsFailed + " Data failed to load"); + } + } + + public synchronized void incrementNumThreadsSuccess() { + this.numThreadsSuccess++; + } + + public synchronized void incrementNumThreadsFailed() { + this.numThreadsFailed++; + } +} + +class BackgroundThread extends Thread { + private UiThread uiThread; + private int timeExecution; + + public BackgroundThread(UiThread uiThread, int timeExecution) { + this.uiThread = uiThread; + this.timeExecution = timeExecution; + } + + public void run() { + try { + for (int i = 1; i <= timeExecution; i++) { + TimeUnit.SECONDS.sleep(1); + if (i * 1000 > 2000) { + System.out.println("Request Timeout"); + uiThread.incrementNumThreadsFailed(); + return; + } + } + uiThread.incrementNumThreadsSuccess(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + +} + +class TaskTimeHelper { + static int generateRandomTimeExecution() { + Random random = new Random(); + int randomNumber = random.nextInt(6) + 1; + return randomNumber; + } +} diff --git a/src/H071221028/Pertemuan_8/Pertemuan8/halo.py b/src/H071221028/Pertemuan_8/Pertemuan8/halo.py new file mode 100644 index 0000000..9a8722e --- /dev/null +++ b/src/H071221028/Pertemuan_8/Pertemuan8/halo.py @@ -0,0 +1,2 @@ +n= "Halo maul" +print(n) \ No newline at end of file diff --git a/src/H071221028/Pertemuan_9/.gitattributes b/src/H071221028/Pertemuan_9/.gitattributes new file mode 100644 index 0000000..097f9f9 --- /dev/null +++ b/src/H071221028/Pertemuan_9/.gitattributes @@ -0,0 +1,9 @@ +# +# https://help.github.com/articles/dealing-with-line-endings/ +# +# Linux start script should use lf +/gradlew text eol=lf + +# These are Windows script files and should use crlf +*.bat text eol=crlf + diff --git a/src/H071221028/Pertemuan_9/.gitignore b/src/H071221028/Pertemuan_9/.gitignore new file mode 100644 index 0000000..1b6985c --- /dev/null +++ b/src/H071221028/Pertemuan_9/.gitignore @@ -0,0 +1,5 @@ +# Ignore Gradle project-specific cache directory +.gradle + +# Ignore Gradle build output directory +build diff --git a/src/H071221028/Pertemuan_9/.vscode/settings.json b/src/H071221028/Pertemuan_9/.vscode/settings.json new file mode 100644 index 0000000..7b016a8 --- /dev/null +++ b/src/H071221028/Pertemuan_9/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.compile.nullAnalysis.mode": "automatic" +} \ No newline at end of file diff --git a/src/H071221028/Pertemuan_9/app/bin/main/css/style.css b/src/H071221028/Pertemuan_9/app/bin/main/css/style.css new file mode 100644 index 0000000..c1f15b7 --- /dev/null +++ b/src/H071221028/Pertemuan_9/app/bin/main/css/style.css @@ -0,0 +1,3 @@ +/* .startbutton { + -fx-background-color: #FFC0CB; -fx-background-radius: 10; +} */ \ No newline at end of file diff --git a/src/H071221028/Pertemuan_9/app/bin/main/image/timbangan.png b/src/H071221028/Pertemuan_9/app/bin/main/image/timbangan.png new file mode 100644 index 0000000000000000000000000000000000000000..5d71b5250751d1b328415235f65af1489537fceb GIT binary patch literal 4865 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 B%VGck literal 0 HcmV?d00001 diff --git a/src/H071221028/Pertemuan_9/app/bin/main/image/timbanganBiru.png b/src/H071221028/Pertemuan_9/app/bin/main/image/timbanganBiru.png new file mode 100644 index 0000000000000000000000000000000000000000..b95ded265275070aceb88515b29cc692f8edb0fe GIT binary patch literal 38445 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 OU2w+ooJED1C;9)f{LXFw literal 0 HcmV?d00001 diff --git a/src/H071221028/Pertemuan_9/app/build.gradle b/src/H071221028/Pertemuan_9/app/build.gradle new file mode 100644 index 0000000..aafc8da --- /dev/null +++ b/src/H071221028/Pertemuan_9/app/build.gradle @@ -0,0 +1,47 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * This generated file contains a sample Java application project to get you started. + * For more details take a look at the 'Building Java & JVM projects' chapter in the Gradle + * User Manual available at https://docs.gradle.org/8.0.2/userguide/building_java_projects.html + */ + +plugins { + // Apply the application plugin to add support for building a CLI application in Java. + id 'application' + id 'org.openjfx.javafxplugin' version '0.0.14' +} + +repositories { + // Use Maven Central for resolving dependencies. + mavenCentral() +} + +dependencies { + // Use JUnit Jupiter for testing. + testImplementation 'org.junit.jupiter:junit-jupiter:5.9.1' + + // This dependency is used by the application. + implementation 'com.google.guava:guava:31.1-jre' +} + +java { + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } +} + +javafx { + version = "17" + modules = [ 'javafx.controls' ] +} + +application { + // Define the main class for the application. + mainClass = 'javafxx.App' +} + +tasks.named('test') { + // Use JUnit Platform for unit tests. + useJUnitPlatform() +} diff --git a/src/H071221028/Pertemuan_9/app/src/main/java/javafxx/App.java b/src/H071221028/Pertemuan_9/app/src/main/java/javafxx/App.java new file mode 100644 index 0000000..5a06d41 --- /dev/null +++ b/src/H071221028/Pertemuan_9/app/src/main/java/javafxx/App.java @@ -0,0 +1,252 @@ +/* + * This Java source file was generated by the Gradle 'init' task. + */ +package javafxx; + +import javafx.application.Application; +import javafx.scene.Scene; +import javafx.stage.Stage; +import javafx.scene.layout.VBox; +import javafx.scene.text.Font; +import javafx.geometry.Insets; +import javafx.geometry.Pos; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.TextField; +import javafx.scene.image.ImageView; + + +public class App extends Application{ + + + public static void main(String[] args){ + Application.launch(args); + } + + @Override + public void start(Stage stage) throws Exception{ + + + + VBox vbox = new VBox(); + + + Label tittle = new Label ("Kalkulator Sehat"); + // tittle.getStyleClass().add("tittle"); + tittle.setFont(Font.font("Arial",30)); + tittle.setStyle("-fx-font-weight: bold; -f"); + vbox.getChildren().add(tittle); + vbox.setSpacing(12.0); + vbox.setStyle("-fx-background-color: #E8F6EF;"); + + // Image logo = new Image(getClass().getClassLoader().getResourceAsStream("/image/timbangan.png")); + ImageView calculatorLogo = new ImageView("/image/timbanganBiru.png"); + calculatorLogo.setFitWidth(254); + calculatorLogo.setFitHeight(230); + calculatorLogo.setPreserveRatio(true); + calculatorLogo.setId("logo"); + + + + + + Button startButton = new Button("Mulai"); + startButton.setMaxSize(100, 200); + startButton.getStyleClass().add("startbutton"); + startButton.setMaxSize(100, 200); + startButton.setStyle("-fx-background-color: #4C4C6D; -fx-background-radius: 20; -fx-text-fill: white;"); + vbox.getChildren().addAll(calculatorLogo,startButton); + vbox.setAlignment(Pos.CENTER); + // startButton.setStyle("-fx-background-color: #FFC0CB; -fx-background-radius: 10;"); + startButton.setOnAction(action -> { + // Seluruh kode diantara {} disini akan dijalankan / dieksekusi ketika button sedang di click. + calculatorScene(stage); + }); + + + + Scene scene = new Scene(vbox,320, 512); + + stage.setScene(scene); + stage.setTitle("Kalkulator keren"); + stage.show(); + } + + + public void calculatorScene(Stage stage){ + VBox vbox = new VBox(); + Label tittle1 = new Label ("Pilih Kalkulator"); + tittle1.setFont(Font.font("Arial",25)); + tittle1.setStyle("-fx-font-weight: bold; -f"); + vbox.getChildren().add(tittle1); + vbox.setSpacing(20.0); + + + Button calculatorBMIButton = new Button("Kalkulator BMI"); + vbox.getChildren().add(calculatorBMIButton); + vbox.setAlignment(Pos.CENTER); + calculatorBMIButton.setStyle("-fx-background-color: #4C4C6D; -fx-background-radius: 20; -fx-text-fill: white;"); + + calculatorBMIButton.setOnAction(action -> { + // Seluruh kode diantara {} disini akan dijalankan / dieksekusi ketika button sedang di click. + BMICalculator(stage); + }); + + Button calculatorCalorieButton = new Button("Kalkulator kalori"); + vbox.getChildren().add(calculatorCalorieButton); + vbox.setAlignment(Pos.CENTER); + calculatorCalorieButton.setStyle("-fx-background-color: #4C4C6D; -fx-background-radius: 20; -fx-text-fill: white;"); + + calculatorCalorieButton.setOnAction(action -> { + // Seluruh kode diantara {} disini akan dijalankan / dieksekusi ketika button sedang di click. + gender(stage); + }); + + + vbox.setStyle("-fx-background-color: #E8F6EF;"); + Scene scene = new Scene(vbox, 320, 512); + stage.setScene(scene); + stage.show(); + } + + public void BMICalculator(Stage stage){ + + + Label CalBMITittle = new Label("KALKULATOR BMI"); + CalBMITittle.setFont(Font.font("Arial",20)); + + TextField weightTextField = new TextField(); + weightTextField.setPromptText("Berat badan"); + TextField heighTextField = new TextField(); + heighTextField.setPromptText("Tinggi badan"); + + Button buttonCalculate = new Button("Calculate"); + buttonCalculate.setStyle("-fx-background-color: #4C4C6D; -fx-background-radius: 20; -fx-text-fill: white;"); + Label BMIResult = new Label(); + + Button buttonBack = new Button("Kembali"); + buttonBack.setStyle("-fx-background-color: #4C4C6D; -fx-background-radius: 20; -fx-text-fill: white;"); + buttonBack.setOnAction(v->{ + calculatorScene(stage); + }); + + buttonCalculate.setOnAction(v->{ + + try { + double tinggi= Double.parseDouble(heighTextField.getText()); + tinggi=tinggi/100; + double berat= Double.parseDouble(weightTextField.getText()); + double hasil = berat/(tinggi*tinggi); + BMIResult.setText(String.format("%f", hasil)); + + } catch (Exception e) { + BMIResult.setText("Input salah"); + + } + }); + + + + VBox vbox = new VBox(CalBMITittle, weightTextField,heighTextField,buttonCalculate, BMIResult,buttonBack); + vbox.setPadding(new Insets(24)); + vbox.setAlignment(Pos.CENTER); + vbox.setSpacing(12.0); + vbox.setStyle("-fx-background-color: #E8F6EF;"); + + + + Scene scene = new Scene(vbox, 320, 512); + stage.setScene(scene); + stage.show(); + } + + public void gender(Stage stage){ + + Button perempuaButton = new Button("Perempuan"); + perempuaButton.setStyle("-fx-background-color: #4C4C6D; -fx-background-radius: 20; -fx-text-fill: white;"); + perempuaButton.setOnAction(v->{ + calculatorCalorie(stage, false); + }); + + Button lakiButton = new Button("Laki-Laki"); + lakiButton.setStyle("-fx-background-color: #4C4C6D; -fx-background-radius: 20; -fx-text-fill: white;"); + lakiButton.setOnAction(v->{ + calculatorCalorie(stage, true); + }); + + Button backButton = new Button("Kembali"); + backButton.setStyle("-fx-background-color: #4C4C6D; -fx-background-radius: 20; -fx-text-fill: white;"); + backButton.setOnAction(v->{ + calculatorScene(stage); + }); + + VBox vbox = new VBox(perempuaButton, lakiButton,backButton); + vbox.setAlignment(Pos.CENTER); + vbox.setSpacing(20.0); + vbox.setStyle("-fx-background-color: #E8F6EF;"); + + Scene scene = new Scene(vbox, 320, 512); + stage.setScene(scene); + stage.show(); + } + + public void calculatorCalorie(Stage stage, boolean isMale){ + + Label judul2 = new Label("KALKULATOR KALORI"); + judul2.setFont(Font.font("Arial",20)); + + TextField tfBeratK = new TextField(); + tfBeratK.setPromptText("Berat badan dalam kg"); + TextField tfTinggiK = new TextField(); + tfTinggiK.setPromptText("Tinggi dalam cm"); + TextField tfUmurK = new TextField(); + tfUmurK.setPromptText("Umur dalam tahun"); + + Button calculate1 = new Button("calculate"); + calculate1.setStyle("-fx-background-color: #4C4C6D; -fx-background-radius: 20; -fx-text-fill: white;"); + + + + + Label labelHasil1Label = new Label(); + calculate1.setOnAction(v->{ + try { + double result; + if (isMale==true){ + result = 88.4 + 13.4 * Double.parseDouble(tfBeratK.getText()) + + 4.8 * Double.parseDouble(tfTinggiK.getText()) - 5.68 * Double.parseDouble(tfUmurK.getText()) * 1.55; + } + else { + result = 447.6 + 9.25 * Double.parseDouble(tfBeratK.getText()) + + 3.1 * Double.parseDouble(tfTinggiK.getText()) - 44.3 * Double.parseDouble(tfUmurK.getText()) * 1.375; + + } + + labelHasil1Label.setText(String.valueOf(result)); + } + catch (Exception e) { + labelHasil1Label.setText("Input salah"); + } + }); + Button buttonBack1 = new Button("Kembali"); + buttonBack1.setStyle("-fx-background-color: #4C4C6D; -fx-background-radius: 20; -fx-text-fill: white;"); + + buttonBack1.setOnAction(v->{ + gender(stage); + }); + + + + VBox vbox = new VBox(judul2, tfBeratK, tfTinggiK, tfUmurK,calculate1, labelHasil1Label, buttonBack1); + vbox.setAlignment(Pos.CENTER); + vbox.setSpacing(12.0); + vbox.setStyle("-fx-background-color: #E8F6EF;"); + vbox.setPadding(new Insets(24)); + + Scene scene = new Scene(vbox, 320, 512); + stage.setScene(scene); + stage.show(); + } + + +} \ No newline at end of file diff --git a/src/H071221028/Pertemuan_9/app/src/main/resources/css/style.css b/src/H071221028/Pertemuan_9/app/src/main/resources/css/style.css new file mode 100644 index 0000000..c1f15b7 --- /dev/null +++ b/src/H071221028/Pertemuan_9/app/src/main/resources/css/style.css @@ -0,0 +1,3 @@ +/* .startbutton { + -fx-background-color: #FFC0CB; -fx-background-radius: 10; +} */ \ No newline at end of file diff --git a/src/H071221028/Pertemuan_9/app/src/main/resources/image/timbangan.png b/src/H071221028/Pertemuan_9/app/src/main/resources/image/timbangan.png new file mode 100644 index 0000000000000000000000000000000000000000..5d71b5250751d1b328415235f65af1489537fceb GIT binary patch literal 4865 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 B%VGck literal 0 HcmV?d00001 diff --git a/src/H071221028/Pertemuan_9/app/src/main/resources/image/timbanganBiru.png b/src/H071221028/Pertemuan_9/app/src/main/resources/image/timbanganBiru.png new file mode 100644 index 0000000000000000000000000000000000000000..b95ded265275070aceb88515b29cc692f8edb0fe GIT binary patch literal 38445 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 OU2w+ooJED1C;9)f{LXFw literal 0 HcmV?d00001 diff --git a/src/H071221028/Pertemuan_9/gradle/wrapper/gradle-wrapper.properties b/src/H071221028/Pertemuan_9/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..bdc9a83 --- /dev/null +++ b/src/H071221028/Pertemuan_9/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip +networkTimeout=10000 +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/src/H071221028/Pertemuan_9/gradlew b/src/H071221028/Pertemuan_9/gradlew new file mode 100644 index 0000000..79a61d4 --- /dev/null +++ b/src/H071221028/Pertemuan_9/gradlew @@ -0,0 +1,244 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/src/H071221028/Pertemuan_9/gradlew.bat b/src/H071221028/Pertemuan_9/gradlew.bat new file mode 100644 index 0000000..93e3f59 --- /dev/null +++ b/src/H071221028/Pertemuan_9/gradlew.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/src/H071221028/Pertemuan_9/settings.gradle b/src/H071221028/Pertemuan_9/settings.gradle new file mode 100644 index 0000000..c94492b --- /dev/null +++ b/src/H071221028/Pertemuan_9/settings.gradle @@ -0,0 +1,11 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * The settings file is used to specify which projects to include in your build. + * + * Detailed information about configuring a multi-project build in Gradle can be found + * in the user manual at https://docs.gradle.org/8.0.2/userguide/multi_project_builds.html + */ + +rootProject.name = 'JavaFxx' +include('app') diff --git a/src/H071221028/pertemuan_6/Diagram prak6 nadjwa.png b/src/H071221028/pertemuan_6/Diagram prak6 nadjwa.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dae3a1b62f802d5ffe238ae83c12981319ba2e GIT binary patch literal 42611 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 Jd$lV!`9HRuUFiS- literal 0 HcmV?d00001 diff --git a/src/H071221028/pertemuan_6/Dog.java b/src/H071221028/pertemuan_6/Dog.java new file mode 100644 index 0000000..040da3c --- /dev/null +++ b/src/H071221028/pertemuan_6/Dog.java @@ -0,0 +1,148 @@ +abstract class Dog implements Moveable { + protected int position; + protected int averageLength; + + public Dog(int position, int averageLength) { + this.position = position; + this.averageLength = averageLength; + } + + abstract void describe(); + + public int getPosition() { + return position; + } + + public void setPosition(int position) { + this.position = position; + } + + public int getAverageLength() { + return averageLength; + } + + public void setAverageLength(int averageLength) { + this.averageLength = averageLength; + } +} +class Pitbull extends Dog{ + + public Pitbull(int position, int averageLength) { + super(position, averageLength); + } + + @Override + void describe() { + System.out.println("Pitbull : "); + System.out.println("Hewan penyayang"); + } + + @Override + public void move() { + position = position+3; + } +} + +class SiberianHusky extends Dog{ + + public SiberianHusky(int position, int averageLength) { + super(position, averageLength); + } + + @Override + public void move() { + position = position+2; + } + + @Override + void describe() { + + } + +} + +class BullDog extends Dog{ + + public BullDog(int position, int averageLength) { + super(position, averageLength); + } + + @Override + public void move() { + position = position+1; + } + + @Override + void describe() { + + + } + +} + + + +interface Moveable{ + void move(); +} + +class Smartphone implements Moveable{ + private int price; + private String brand; + public Smartphone(int price, String brand) { + this.price = price; + this.brand = brand; + } + public int getPrice() { + return price; + } + public void setPrice(int price) { + this.price = price; + } + public String getBrand() { + return brand; + } + public void setBrand(String brand) { + this.brand = brand; + } + @Override + public void move() { + System.out.println("Smartphone berpindah"); + } + +} + +class Car implements Moveable{ + private int totalForwardGear; + private String color; + private int maxSpeed; + public Car(int totalForwardGear, String color, int maxSpeed) { + this.totalForwardGear = totalForwardGear; + this.color = color; + this.maxSpeed = maxSpeed; + } + public int getTotalForwardGear() { + return totalForwardGear; + } + public void setTotalForwardGear(int totalForwardGear) { + this.totalForwardGear = totalForwardGear; + } + public String getColor() { + return color; + } + public void setColor(String color) { + this.color = color; + } + public int getMaxSpeed() { + return maxSpeed; + } + public void setMaxSpeed(int maxSpeed) { + this.maxSpeed = maxSpeed; + } + @Override + public void move() { + System.out.println("Mobil sedang berakselerasi"); + } + +} + diff --git a/src/H071221028/pertemuan_6/Main.java b/src/H071221028/pertemuan_6/Main.java new file mode 100644 index 0000000..25bd74d --- /dev/null +++ b/src/H071221028/pertemuan_6/Main.java @@ -0,0 +1,20 @@ +/** + * Main + */ +public class Main { + + public static void main(String[] args) { + Pitbull pitbull = new Pitbull(2, 50); + pitbull.describe(); + System.out.println("Current Pitbull position: "+ pitbull.getPosition()); + pitbull.move(); + System.out.println("Current pitbull position: " + pitbull.getPosition()); + + Smartphone smartphone = new Smartphone(10000, "Iphone"); + smartphone.move(); + + Car car = new Car(10, "pink", 180); + car.move(); + + } +} \ No newline at end of file diff --git a/src/H071221028/pertemuan_7/.vscode/settings.json b/src/H071221028/pertemuan_7/.vscode/settings.json new file mode 100644 index 0000000..4e9b4de --- /dev/null +++ b/src/H071221028/pertemuan_7/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "java.project.sourcePaths": [ + "No2", + "No1", + "No3" + ] +} \ No newline at end of file diff --git a/src/H071221028/pertemuan_7/No1/Main.java b/src/H071221028/pertemuan_7/No1/Main.java new file mode 100644 index 0000000..ead8616 --- /dev/null +++ b/src/H071221028/pertemuan_7/No1/Main.java @@ -0,0 +1,97 @@ +// abstract class Character{ +// protected String name; +// protected int attackPower; + +// public Character(String name, int attackPower) { +// this.name = name; +// this.attackPower = attackPower; +// } + +// public String getName(){ +// return name; +// } +// public int getAttackPower(){ +// return attackPower; + +// } +// abstract int attack(); +// abstract int attack(String attackType); +// } + +// class Fighter extends Character{ + +// public Fighter(String name, int attackPower) { +// super(name, attackPower); + +// } + +// @Override +// int attack() { +// return this.attackPower; +// } + +// @Override +// int attack(String attackType) { +// if (attackType.equalsIgnoreCase("melee")){ +// return 2*this.attackPower; +// } +// else if (attackType.equalsIgnoreCase("ranged")){ +// return this.attackPower; +// } +// return this.attackPower; +// } + + +// } +// class Mage extends Character{ + +// public Mage(String name, int attackPower) { +// super(name, attackPower); + +// } + +// @Override +// int attack() { + +// return this.attackPower; +// } + +// @Override +// int attack(String attackType) { +// if (attackType.equalsIgnoreCase("fire")){ +// return 3*attackPower; +// } +// else if (attackType.equalsIgnoreCase("frost")){ +// return 2*attackPower; +// } +// return this.attackPower; +// } + +// } + +// public class Main { +// public static void main(String[] args) { + +// Character[] character = new Character[5]; +// character[0]= new Fighter("alucard", 90); +// character[1]= new Mage("odette", 99); +// character[2]= new Fighter("Zilong", 80); +// character[3]= new Fighter("lancelot", 70); +// character[4]= new Mage("nana", 91); + + +// for (int i = 0; i < character.length; i++) { +// printAttack(character[i]); +// } +// } +// public static void printAttack(Character character) { +// if (character instanceof Fighter){ +// System.out.println("Attack power " + character.getName() + ":" + character.attack("ranged")); +// } +// if (character instanceof Mage){ +// System.out.println("Attack power " + character.getName() + ":" + character.attack("frost")); +// } +// } + + +// } diff --git a/src/H071221028/pertemuan_7/No2/Main.java b/src/H071221028/pertemuan_7/No2/Main.java new file mode 100644 index 0000000..0edaefd --- /dev/null +++ b/src/H071221028/pertemuan_7/No2/Main.java @@ -0,0 +1,58 @@ +class Product { + private String name; + private T price; + private String expiryDate; + + public Product(String name, T price, String expiryDate) { + this.name = name; + this.price = price; + this.expiryDate = expiryDate; + } + + public String getName() { + return name; + } + + public String getExpiryDate() { + return expiryDate; + } + + public T getPrice() { + return price; + } + // public String toString(){ + // return this.name + " - " + this.price + " - " + this.expiryDate; + // } + +} + +class Uang{ + public Uang(int uang) { + this.uang = uang; + } + public int getUang(){ + return uang; + } + + private int uang; +} + +public class Main { + public static void main(String[] args) { + Product product1 = new Product<>("Kinder Joy", 1000, "2023-05-01"); + Product product2 = new Product<>("Sari Roti", "Rp.15.000", "2023-05-20"); + Product product3 = new Product<>("Susu Kurma", 7.5, "2023-06-01"); + Product product4 = new Product<>("Kit", new Uang(2000), "2023-05-10"); + + System.out.println("Product 1: " + product1.getName()+ " - " + product1.getPrice() + " - " + product1.getExpiryDate()); + System.out.println("Product 2: " + product2.getName()+ " - " + product2.getPrice() + " - " + product2.getExpiryDate()); + System.out.println("Product 3: " + product3.getName()+ " - " + product3.getPrice() + " - " + product3.getExpiryDate()); + System.out.println("Product 4: " + product4.getName()+ " - " + product4.getPrice().getUang() + " - " + product4.getExpiryDate()); + // System.out.println("Product 2: " + product2); + // System.out.println("Product 3: " + product3); + + } + + + +} diff --git a/src/H071221028/pertemuan_7/No3/Main.java b/src/H071221028/pertemuan_7/No3/Main.java new file mode 100644 index 0000000..ce0d4ac --- /dev/null +++ b/src/H071221028/pertemuan_7/No3/Main.java @@ -0,0 +1,78 @@ +import java.util.ArrayList; +import java.util.List; + + +interface Food { + public int getPrice(); +} + +class Burger implements Food{ + + @Override + public int getPrice() { + return 8; + } +} + +class Pizza implements Food{ + + @Override + public int getPrice() { + return 7; + } +} + +class Steak implements Food{ + + @Override + public int getPrice() { + return 20; + } +} +class FoodFactory { + static Food getFood(FoodType food) throws Exception { // bertipe data "Food" karena mengembalikan objek makanan yang sesuai jenisnya (sesuai perintah soal) + if (food == FoodType.burger) { + return new Burger(); + } else if (food == FoodType.pizza) { + return new Pizza(); + } else if (food== FoodType.steak) { + return new Steak(); + }else{ + System.out.println("error"); + throw new Exception(); + } + } +} + + +class Restaurant { + static int calculateTotal(List foods) { + int totalPrice = 0; + for (Food i : foods) { // perulangan untuk mengeluarkan objek-objeknya, i itu adalah objek-objek nya (burger,dll) + totalPrice += i.getPrice(); + } + return totalPrice; + } +} + +public class Main { + public static void main(String[] args) throws Exception { + Food burger = FoodFactory.getFood(FoodType.burger); + Food pizza = FoodFactory.getFood(FoodType.pizza); + Food steak = FoodFactory.getFood(FoodType.steak); + + + List foods = new ArrayList<>(); + foods.add(burger); + foods.add(pizza); + foods.add(steak); + + int total = Restaurant.calculateTotal(foods); + + System.out.println("Total price: " + total); + } +} + +enum FoodType{ + burger, pizza, steak +} \ No newline at end of file