Anda di halaman 1dari 57

FRONTPAGE

1
KATA PENGANTAR
KATA PENGANTAR 2
DAFTAR GAMBAR 3
I BAGIAN TEORI 4
1 Tinjauan Umum 4
1.a Struktur 5
1b Aturan Standar Nama Kelas 6
2 Definisi Kelas 7
3 Objek 7
4 Objek berganda 8
5 Menggunakan Banyak Kelas 8
6 Metode Kelas Java 9
7 Static vs. Non-Static 10
8 Metode Akses Dengan Objek 11
9 Menggunakan Banyak Kelas 12
10 Kontruktor Java 13
11 Modifiers / Pengubah 14
11.a Pengubah Akses / Access Modifiers 14
11.b Non-Access Modifiers 15
12 Java Encapsulation 18
13 Java Packages & API 21
14 Java Inheritance (Subclass and Superclass) 23
15 Java Polymorphism / Polimorfis Java 24
16 Java Inner Classes 26
16.a Private Inner Class 27
16.b Static Inner Class 28
16.c Akses Outer Class dari Inner Class 29
17 Abstraksi Java 30
18 Interfaces 32
19 Enums 34
20 Java User Input 35
21 Java Dates / Tanggal 37
22 Metode Java 40
23 Parameters dan Arguments Metode 42
24 Method Overloading 46
25 Java Scope 48
26 Rekursi Java 49
II BAGIAN PRAKTIKUM 52
TUGAS 1 : SETUP GITLAB 53
1 Persiapan Proyek 53
2 Buat Akses Token Personal 54
TUGAS 2 : BUAT PROYEK KELAS 55
KATA PENTING 56
DAFTAR PUSTAKA 57

2
3
DAFTAR GAMBAR

4
I. TEORI

Objektif
❖ Mengikuti arahan untuk membaca seluruh halaman pelajaran
❖ Mengetahui standar pemrograman bahasa Java
❖ Mampu memahami tipe token yang digunakan dalam bahasa Java
❖ Mampu mengenali pola pemrograman bahasa Java dengan baik

1. Tinjauan Umum

1.a Struktur

Program Java memiliki kerangka struktur sebagai berikut :

Gambar 1 Struktur Umum Program Java

a) Area paket, menentukan struktur organisasi kode program


b) Area definisi kelas dan parameter atau pun deklarasi model kelas tergantung
c) Area tempat isi kode kelas dibuat, dapat berisi deklasi variable, kontruktor
atau metode tergantung kebutuhan

5
d) Area definisi metode, kontruktor , karakteristiknya ditulis disini termasuk
parameternya
e) Area isi kode program metode

1.b Aturan Standar Nama Kelas

Berbagai token dalam kode Anda (variabel, kelas, fungsi, namespace , dll.) Dapat
diberi nama menggunakan salah satu dari tiga gaya ini, secara umum:

▪ Camel Case (mis .: someVar, someClass, somePackage.xyz).


▪ Pascal Case (contoh: SomeVar, SomeClass, SomePackage.xyz).
▪ Underscore (contoh: some_var, some_class, some_package.xyz).

Dalam Camel Case / huruf Camel, nama dimulai dengan huruf kecil tetapi setiap
kata yang tepat dalam nama dikapitalisasi dan begitu juga dengan akronim.
Misalnya, token yang umum digunakan dalam banyak bahasa seperti toString,
checkValidity, lineHeight, timestampToLocalDateTime, dll. Semuanya adalah
contoh Camel Case.

Pascal Case/ Huruf Pascal mirip dengan casing unta kecuali huruf pertama juga
dimulai dengan huruf kapital (SomeClass bukan someClass).

Dalam casing garis bawah, semuanya menggunakan huruf kecil (bahkan akronim)
dan kata-kata dipisahkan oleh garis bawah (some_class, some_func, some_var, dll).
Konvensi ini juga dikenal dengan kasus ular.

Di mata pelajaran ini, kita sepakati untuk menerapkan format huruf Pascal /
Pascal Case dan Bahasa Java adalah strong type, dengan demikian setiap nilai
token harus menpunyai format huruf yang sama dan memperhatikan format
text yang terlarang (silahkan merujuk pada kuliah sebelumnya)

6
2. Definisi Kelas

Kelas dan objek adalah dua aspek utama dari pemrograman berorientasi objek.
Segala sesuatu di Java dikaitkan dengan kelas dan objek, bersama dengan atribut
dan metodenya. Misalnya: dalam kehidupan nyata, mobil adalah benda. Mobil
memiliki atribut, seperti bobot dan warna, serta metode, seperti penggerak dan rem.

Kelas seperti konstruktor objek, atau "cetak biru" untuk membuat objek. Membuat
Kelas Untuk membuat kelas, gunakan kata kunci class (buat file selalu dibawah
folder src dan save dengan format extension .java, agar syntaxhighlighter
akan membantu menyelesaikan token yang ada sehingga lebih cepat)
:

MyClass.java
Buat kelas publik dengan nama "MyClass", deklarasikan variable x:
public class MyClass {
int x = 5;
}

3. Objek

kita bisa menggunakan ini untuk membuat objek. Untuk membuat objek MyClass,
tentukan nama kelas, diikuti dengan nama objek, dan gunakan kata kunci baru:

public class MyClass {


int x = 5;

public static void main(String[] args) {


MyClass myObj = new MyClass();
System.out.println(myObj.x);

7
}
/* metode ini harus ada, apabila kelas hendak dijalankan (dengan tekan tombol
F5 dieditor kelas ini aktif */
}

4. Objek berganda

Anda dapat membuat beberapa objek dari satu kelas:


Contoh
Buat dua objek berasal dari MyClass:
public class MyClass {
int x = 5;

public static void main(String[] args) {


MyClass myObj1 = new MyClass(); // Object 1
MyClass myObj2 = new MyClass(); // Object 2
System.out.println(myObj1.x);
System.out.println(myObj2.x);
}
}

5. Menggunakan Banyak Kelas

Anda juga dapat membuat objek kelas dan mengaksesnya di kelas lain. Ini sering
digunakan untuk organisasi kelas yang lebih baik (satu kelas memiliki semua atribut
dan metode, sedangkan kelas lainnya memegang metode main () (kode yang akan
dieksekusi)). Ingatlah bahwa nama file java harus sesuai dengan nama kelas. Dalam
contoh ini, kami telah membuat dua file yang sama directory/folder:
MyClass.java
OtherClass.java

MyClass.java

8
public class MyClass {
int x = 5;

/*
public static void main(String[] args) {
MyClass myObj1 = new MyClass(); // Object 1
MyClass myObj2 = new MyClass(); // Object 2
System.out.println(myObj1.x);
System.out.println(myObj2.x);
*/
}

OtherClass.java

class OtherClass {
public static void main(String[] args) {
MyClass myObj = new MyClass();
System.out.println(myObj.x);
}
}

6. Metode Kelas Java

Anda telah belajar dari bab Metode Java bahwa metode dideklarasikan di dalam
kelas, dan metode tersebut digunakan untuk melakukan tindakan tertentu:
Contoh
Buat metode bernama myMethod() di MyClass:
public class MyClass {
static void myMethod() {
System.out.println("Hello World!");
}
}

9
myMethod() mencetak teks (tindakan), saat dipanggil. Untuk memanggil metode,
tulis nama metode diikuti dengan dua tanda kurung () dan titik koma;
myMethod() mencetak teks (tindakan), saat dipanggil. Untuk memanggil metode,
tulis nama metode diikuti dengan dua tanda kurung () dan titik koma;

7. Static vs. Non-Static

Anda akan sering melihat program Java yang memiliki atribut dan metode statis
atau publik. Pada contoh di bawah, kami membuat metode statis, yang artinya dapat
diakses tanpa membuat objek kelas, tidak seperti publik, yang hanya dapat diakses
oleh objek:

Contoh untuk menunjukkan perbedaan antara metode statis dan publik:

public class MyClass {


// metode statik
static void myStaticMethod() {
System.out.println("Static methods can be called without creating objects");
}

// metode publik
public void myPublicMethod() {
System.out.println("Public methods must be called by creating objects");
}

// metode main/utama
public static void main(String[] args) {
myStaticMethod(); // Panggil metode statis
// myPublicMethod(); Ini akan mengkompilasi kesalahan

MyClass myObj = new MyClass(); // Buat objek MyClass


myObj.myPublicMethod(); // Panggil metode publik pada objek tersebut

10
}

8. Metode Akses Dengan Objek

Buat objek Mobil bernama myCar. Panggil metode fullThrottle () dan speed () pada
objek myCar, dan jalankan program:
// Beat kelas Car
public class Car {

// Buat metode fullThrottle()


public void fullThrottle() {
System.out.println("The car is going as fast as it can!");
}

// Buat metode speed() dan tambahkan parameter


public void speed(int maxSpeed) {
System.out.println("Max speed is: " + maxSpeed);
}

// Di dalam main, panggil metode pada objek myCar


public static void main(String[] args) {
Car myCar = new Car(); // Buat objek myCar
myCar.fullThrottle(); // Panggil metode fullThrottle()
myCar.speed(200); // Panggil metode speed()
}
}

// The car is going as fast as it can!


// Max speed is: 200

11
Penjelasan
a) Kami membuat kelas Mobil khusus dengan keyword Class.
b) Kami membuat metode fullThrottle() dan speed() di kelas Car.
c) Metode fullThrottle() dan metode speed() akan mencetak beberapa teks,
saat dipanggil.
d) Metode speed() menerima parameter int yang disebut maxSpeed - kita
akan menggunakan ini di 8).
e) Untuk menggunakan class Car dan metodenya, kita perlu membuat objek
Car Class.
f) Kemudian, pergi ke metode main(), yang Anda tahu sekarang adalah
metode Java bawaan yang menjalankan program Anda (kode apa pun di
dalam main dijalankan).
g) Dengan menggunakan keyword New kami membuat objek Mobil dengan
nama myCar.
h) Kemudian, kita memanggil metode fullThrottle() dan speed() pada objek
myCar, dan menjalankan program menggunakan nama objek (myCar),
diikuti dengan titik (.), diikuti dengan nama metode ( fullThrottle(); dan
speed (200);). Perhatikan bahwa kita menambahkan parameter int 200 di
dalam metode speed().

9 Menggunakan Banyak Kelas

Seperti yang kami tentukan di bab Classes, merupakan praktik yang baik untuk
membuat objek dari kelas dan mengaksesnya di kelas lain. Ingatlah bahwa nama
file java harus sesuai dengan nama kelas. Dalam contoh ini, kami telah membuat
dua file di direktori yang sama:

Car.java
OtherClass.java

Car.java

12
public class Car {
public void fullThrottle() {
System.out.println("The car is going as fast as it can!");
}

public void speed(int maxSpeed) {


System.out.println("Max speed is: " + maxSpeed);
}
}

OtherClass.java
class OtherClass {
public static void main(String[] args) {
Car myCar = new Car(); // Create a myCar object
myCar.fullThrottle(); // Call the fullThrottle() method
myCar.speed(200); // Call the speed() method
}
}

10 Kontruktor Java

Kontruktor dalam Java adalah metode khusus yang digunakan untuk


menginisialisasi objek. Konstruktor dipanggil ketika objek kelas dibuat. Ini dapat
digunakan untuk mengatur nilai awal untuk atribut objek:
Contoh
Buat sebuah kontruktor :

// Buat kelas MyClass


public class MyClass {
int x; // buat kelas atribut

// Buat konstruktor kelas untuk kelas MyClass


public MyClass() {
x = 5; // Set the initial value for the class attribute x

13
}

public static void main(String[] args) {


MyClass myObj = new MyClass();
// Create an object of class MyClass (This will call the constructor)
System.out.println(myObj.x); // Print the value of x
}
}

// Outputs 5

11 Modifiers / Pengubah

Sekarang, Anda sudah cukup familiar dengan kata kunci publik yang muncul di
hampir semua contoh kami:

Kelas public MyClass


Kata kunci public adalah pengubah akses, artinya digunakan untuk menyetel tingkat
akses untuk kelas, atribut, metode, dan konstruktor.
Kami membagi pengubah menjadi dua kelompok :
Access Modifiers - mengontrol tingkat akses
Non-Access Modifiers - tidak mengontrol tingkat akses, tetapi menyediakan
fungsionalitas lain

11.a. Pengubah Akses / Access Modifiers

Untuk kelas secara standar , Anda dapat menggunakan public atau default :

Modifier Penjelasan
public Kelas dapat diakses oleh kelas lain

14
default Kelas hanya dapat diakses oleh kelas dalam paket yang sama. Ini
digunakan ketika Anda tidak menentukan modifier.

For attributes, methods and constructors, you can use the one of the following:

Modifier Penjelasan
public Kode dapat diakses untuk semua kelas
private Kode hanya dapat diakses di dalam kelas yang dideklarasikan
default Kode hanya dapat diakses dalam paket yang sama. Ini digunakan
ketika Anda tidak menentukan pengubah. Anda akan mempelajari
lebih lanjut
protected Kode dapat diakses dalam paket dan subclass yang sama. Anda
akan mempelajari lebih lanjut tentang subclass dan superclass

11.b. Non-Access Modifiers

Untuk kelas, Anda dapat menggunakan final atau abstract:


Modifier Penjelasan
final The class cannot be inherited by other classes (You will learn more
about inheritance in the Inheritance chapter)
abstract Kelas tidak dapat digunakan untuk membuat objek (Untuk
mengakses kelas abstrak, kelas harus diwariskan dari kelas lain.
Anda akan mempelajari lebih lanjut tentang Inheritance dan
Abstraction

Untuk atribut dan metode, Anda dapat menggunakan salah satu dari berikut ini:
Modifier Penjelasan
final Atribut dan metode tidak dapat diganti / diubah
static Atribut dan metode menjadi milik kelas, bukan objek
abstract Hanya dapat digunakan di kelas abstrak, dan hanya dapat
digunakan pada metode. Metode tersebut tidak memiliki badan

15
isi, misalnya abstrak void run() ;. Tubuh disediakan oleh subclass
(diwarisi dari). Anda akan mempelajari lebih lanjut tentang
pewarisan dan abstraksi di bab Warisan dan Abstraksi
transient Atribut dan metode dilewati saat membuat serial objek yang
memuatnya
synchronized Metode hanya dapat diakses oleh satu utas/ thread dalam satu
waktu
volatile Nilai atribut tidak di-cache thread-secara lokal, dan selalu dibaca
dari "memori utama"

final , jika Anda tidak ingin kemampuan untuk mengganti nilai atribut yang ada,
nyatakan atribut sebagai final:
Contoh :

public class MyClass {


final int x = 10;
final double PI = 3.14;

public static void main(String[] args) {


MyClass myObj = new MyClass();
myObj.x = 50; // akan menghasilkan kesalahan: tidak dapat memberikan
// nilai ke variabel akhir
myObj.PI = 25; // akan menghasilkan kesalahan: tidak dapat memberikan
// nilai ke variabel akhir
System.out.println(myObj.x);
}
}

static , Metode static artinya dapat diakses tanpa membuat objek kelas, tidak seperti
public:
Contoh untuk menunjukkan perbedaan antara metode statis dan publik:
public class MyClass {
// metode static

16
static void myStaticMethod() {
System.out.println("Static methods can be called without creating objects");
}

// Public method
public void myPublicMethod() {
System.out.println("Metode statis dapat dipanggil tanpa membuat objek ");
}

// Metode utama
public static void main(String[ ] args) {
myStaticMethod(); // panggil metode static
// myPublicMethod(); This would output an error

MyClass myObj = new MyClass(); // Buat objek MyClass


myObj.myPublicMethod(); // panggil metode public
}
}

Abstract, Metode abstrak milik kelas abstract, dan tidak memiliki badan/isi. Badan
disediakan oleh subclass:
Contoh
// sourcecode file dengan nama: Person.java
// kelas abstract
abstract class Person { // default public diganti dengan kata abstract
public String fname = "John";
public int age = 24;
public abstract void study(); // metode abstrak
}

// Subclass (inherit from Person)


class Student extends Person {
public int graduationYear = 2018;
public void study() { //tubuh metode abstrak disediakan di sini

17
System.out.println("Studying all day long");
}
}
// Akhiri kode dari nama file: Person.java

// Akhiri kode dari nama file: MyClass.java


class MyClass {
public static void main(String[] args) {
// membuat objek kelas Student (yang mewarisi atribut dan metode dari
Person)
Student myObj = new Student();

System.out.println("Name: " + myObj.fname);


System.out.println("Age: " + myObj.age);
System.out.println("Graduation Year: " + myObj.graduationYear);
myObj.study(); // panggil metode abstrak
}
}

12. Java Encapsulation

Encapsulation / Enkapsulasi
Arti dari Enkapsulasi, adalah untuk memastikan bahwa data "sensitif"
disembunyikan dari pengguna. Untuk mencapai ini, Anda harus:
▪ mendeklarasikan variabel / atribut kelas sebagai pribadi
▪ menyediakan metode publik dan setel untuk mengakses dan memperbarui
nilai private variable

Get dan Set


Anda telah belajar dari bab sebelumnya bahwa variabel privat hanya dapat diakses
di dalam kelas yang sama (kelas luar tidak memiliki akses ke sana). Namun,
dimungkinkan untuk mengaksesnya jika kami menyediakan metode public get dan
set.

18
Metode get mengembalikan nilai variabel, dan metode set menetapkan nilainya.
Sintaks untuk keduanya adalah bahwa keduanya dimulai dengan get atau set, diikuti
dengan nama variabel, dengan huruf pertama dalam huruf besar:
Contoh
public class Person {
private String name; // private = restricted access
// Getter
public String getName() {
return name;
}
// Setter
public void setName(String newName) {
this.name = newName;
}
}

Penjelasan Contoh
Metode get mengembalikan nilai nama variabel.
Metode set mengambil parameter (newName) dan menugaskannya ke variabel
nama. Kata kunci ini digunakan untuk merujuk ke objek saat ini.
Namun, karena variabel nama dideklarasikan sebagai pribadi, kita tidak dapat
mengaksesnya dari luar kelas ini:
Contoh

public class MyClass {


public static void main(String[] args) {
Person myObj = new Person();
myObj.name = "John"; // error
System.out.println(myObj.name); // error
}
}

19
If the variable was declared as public, we would expect the following output: John

Namun, saat kami mencoba mengakses variabel privat, kami mendapatkan


kesalahan:
MyClass.java:4: error: nama memiliki akses private di Person
myObj.name = "John";
^
MyClass.java:5: error: nama memiliki akses private di Person
System.out.println(myObj.name);
^
2 errors

Sebagai gantinya, kami menggunakan metode getName() dan setName() untuk


mengakses dan memperbarui variabel:
Contoh

public class MyClass {


public static void main(String[] args) {
Person myObj = new Person();
myObj.setName("John"); // Tetapkan nilai variabel nama ke "John"
System.out.println(myObj.getName());
}
}

// Hasil "John"

Kenapa harus Encapsulation?


▪ Kontrol yang lebih baik atas atribut dan metode kelas
▪ Atribut kelas dapat dibuat hanya-baca (jika Anda hanya menggunakan
metode get), atau hanya-tulis (jika Anda hanya menggunakan metode set)
▪ Fleksibel: pemrogram dapat mengubah satu bagian kode tanpa
memengaruhi bagian lain

20
▪ Peningkatan keamanan data

13. Java Packages & API

Sebuah paket di Java digunakan untuk mengelompokkan kelas terkait. Anggap saja
sebagai folder di direktori file. Kami menggunakan paket untuk menghindari
konflik nama, dan untuk menulis kode yang lebih mudah dirawat. Paket dibagi
menjadi dua kategori:

Paket Bawaan (paket dari Java API)


Paket yang ditentukan pengguna (buat paket Anda sendiri)

Packages yang termasuk

Java API adalah pustaka kelas yang telah ditulis sebelumnya, yang gratis untuk
digunakan, termasuk dalam Java Development Environment.

Pustaka berisi komponen untuk mengelola input, pemrograman database, dan


banyak lagi. Daftar lengkapnya dapat ditemukan di situs web Oracles:
https://docs.oracle.com/javase/8/docs/api/.

Perpustakaan dibagi menjadi paket dan kelas. Artinya Anda dapat mengimpor satu
kelas (bersama dengan metode dan atributnya), atau seluruh paket yang berisi
semua kelas yang termasuk dalam paket yang ditentukan.

Untuk menggunakan kelas atau paket dari perpustakaan, Anda perlu menggunakan
kata kunci import:
Sintak

import package.name.Class; // Import a single class


import package.name.*; // Import the whole package

21
Import a Class

Jika Anda menemukan class yang ingin Anda gunakan, misalnya class Scanner,
yang digunakan untuk mendapatkan input pengguna, tulis kode berikut:
Contoh :

import java.util.Scanner;

Pada contoh di atas, java.util adalah sebuah paket, sedangkan Scanner adalah kelas
dari paket java.util.

Untuk menggunakan kelas Scanner, buat objek dari kelas tersebut dan gunakan
salah satu metode yang tersedia yang ditemukan dalam dokumentasi kelas Scanner.
Dalam contoh kami, kami akan menggunakan metode nextLine(), yang digunakan
untuk membaca baris lengkap:
Contoh :

Menggunakan kelas Scanner untuk mendapatkan input pengguna:


import java.util.Scanner;

class MyClass {
public static void main(String[] args) {
Scanner myObj = new Scanner(System.in);
System.out.println("Enter username");

String userName = myObj.nextLine();


System.out.println("Username is: " + userName);
}
}

22
To import a whole package, end the sentence with an asterisk sign (*). The
following example will import ALL the classes in the java.util package:
Contoh

import java.util.*;

Paket / Packages yang ditentukan oleh pengguna

Untuk membuat paket Anda sendiri, Anda perlu memahami bahwa Java
menggunakan direktori sistem file untuk menyimpannya. Sama seperti folder di
komputer Anda:
Contoh
└── root
└── mypack
└── MyPackageClass.java

14. Java Inheritance (Subclass and Superclass)

Di Java, dimungkinkan untuk mewarisi atribut dan metode dari satu kelas ke kelas
lainnya. Kami mengelompokkan "konsep warisan" menjadi dua kategori:
subclass (child) - kelas yang diwarisi dari kelas lain
superclass (parent) - kelas yang diwarisi
Untuk mewarisi dari kelas, gunakan kata kunci extends.
Dalam contoh di bawah ini, class Car (subclass) mewarisi atribut dan metode dari
kelas Vehicle (superclass):
Contoh :
class Vehicle {
protected String brand = "Ford"; // attribut Vehicle
public void honk() { // method Vehicle
System.out.println("Tuut, tuut!");
}
}

23
class Car extends Vehicle {
private String modelName = "Mustang"; // atribut Car
public static void main(String[] args) {

// Buat object myCar


Car myCar = new Car();

// Panggil metode honk() (dari kelas Vehicle) pada object myCar


myCar.honk();

// Menampilkan nilai atribut merek (dari kelas Kendaraan) dan nilai


// modelName dari kelas Mobil
System.out.println(myCar.brand + " " + myCar.modelName);
}
}

Kata kunci final


Jika Anda tidak ingin kelas lain mewarisi dari kelas, gunakan kata kunci final:
Jika Anda mencoba mengakses kelas terakhir, Java akan menghasilkan kesalahan:
final class Vehicle {
...
}

class Car extends Vehicle {


...
}

15. Java Polymorphism / Polimorfis Java

Polimorfisme berarti "banyak bentuk", dan itu terjadi ketika kita memiliki banyak
kelas yang terkait satu sama lain melalui pewarisan.

24
Seperti yang kami tentukan di bab sebelumnya; Pewarisan memungkinkan kita
mewarisi atribut dan metode dari kelas lain. Polimorfisme menggunakan metode
tersebut untuk melakukan tugas yang berbeda. Ini memungkinkan kami untuk
melakukan satu tindakan dengan cara yang berbeda.

Misalnya, bayangkan superclass yang disebut Animal yang memiliki metode yang
disebut animalSound (). Subkelas Hewan dapat berupa Babi, Kucing, Anjing,
Burung - Dan mereka juga memiliki implementasi suara hewan sendiri (suara babi,
kucing mengeong, dll.):
Contoh

class Animal {
public void animalSound() {
System.out.println("The animal makes a sound");
}
}

class Pig extends Animal {


public void animalSound() {
System.out.println("The pig says: wee wee");
}
}

class Dog extends Animal {


public void animalSound() {
System.out.println("The dog says: bow wow");
}
}

Ingat dari bab Inheritance bahwa kita menggunakan kata kunci extends untuk
mewarisi dari kelas.

25
Sekarang kita bisa membuat objek Pig dan Dog dan memanggil metode
animalSound () pada keduanya:
Contoh
class Animal {
public void animalSound() {
System.out.println("The animal makes a sound");
}
}

class Pig extends Animal {


public void animalSound() {
System.out.println("The pig says: wee wee");
}
}

class Dog extends Animal {


public void animalSound() {
System.out.println("The dog says: bow wow");
}
}

class MyMainClass {
public static void main(String[] args) {
Animal myAnimal = new Animal(); // Create a Animal object
Animal myPig = new Pig(); // Create a Pig object
Animal myDog = new Dog(); // Create a Dog object
myAnimal.animalSound();
myPig.animalSound();
myDog.animalSound();
}
}

26
16. Java Inner Classes

In Java, it is also possible to nest classes (a class within a class). The purpose of nested
classes is to group classes that belong together, which makes your code more readable
and maintainable.
To access the inner class, create an object of the outer class, and then create an object of
the inner class:
Contoh
class OuterClass {
int x = 10;

class InnerClass {
int y = 5;
}
}

public class MyMainClass {


public static void main(String[] args) {
OuterClass myOuter = new OuterClass();
OuterClass.InnerClass myInner = myOuter.new InnerClass();
System.out.println(myInner.y + myOuter.x);
}
}

// Outputs 15 (5 + 10)

16.a Private Inner Class

Tidak seperti kelas "biasa", kelas dalam bisa bersifat pribadi atau dilindungi. Jika
Anda tidak ingin objek luar mengakses kelas dalam, deklarasikan kelas sebagai
privat:
Contoh
class OuterClass {
int x = 10;

27
private class InnerClass {
int y = 5;
}
}

public class MyMainClass {


public static void main(String[] args) {
OuterClass myOuter = new OuterClass();
OuterClass.InnerClass myInner = myOuter.new InnerClass();
System.out.println(myInner.y + myOuter.x);
}
}

Jika Anda mencoba mengakses kelas dalam pribadi dari kelas luar (MyMainClass),
kesalahan terjadi:

MyMainClass.java:12: error: OuterClass.InnerClass has private access in


OuterClass
OuterClass.InnerClass myInner = myOuter.new InnerClass();
^
16.b Static Inner Class

Kelas dalam juga bisa statis, yang berarti Anda bisa mengaksesnya tanpa membuat
objek dari kelas luar:
Contoh
class OuterClass {
int x = 10;

static class InnerClass {


int y = 5;
}
}

28
public class MyMainClass {
public static void main(String[] args) {
OuterClass.InnerClass myInner = new OuterClass.InnerClass();
System.out.println(myInner.y);
}
}

// Outputs 5

Catatan: seperti halnya atribut dan metode statis, kelas dalam statis tidak memiliki
akses ke anggota kelas luar.

16.c Akses Outer Class dari Inner Class

One advantage of inner classes, is that they can access attributes and methods of
the outer class:
Contoh
class OuterClass {
int x = 10;

class InnerClass {
public int myInnerMethod() {
return x;
}
}
}

public class MyMainClass {


public static void main(String[] args) {
OuterClass myOuter = new OuterClass();
OuterClass.InnerClass myInner = myOuter.new InnerClass();
System.out.println(myInner.myInnerMethod());
}

29
}

// Outputs 10

17. Abstraksi Java

Kelas Abstract dan Metode

Abstraksi data adalah proses menyembunyikan detail tertentu dan hanya


menampilkan informasi penting kepada pengguna.
Abstraksi dapat dicapai dengan kelas atau antarmuka abstrak (yang akan Anda
pelajari lebih lanjut di bab berikutnya).

Kata kunci abstrak adalah pengubah non-akses, digunakan untuk kelas dan metode:

Kelas abstrak / abstract: adalah kelas terbatas yang tidak dapat digunakan untuk
membuat objek (untuk mengaksesnya, harus diturunkan dari kelas lain).

Metode abstrak: hanya dapat digunakan dalam kelas abstrak, dan tidak memiliki isi.
Tubuh disediakan oleh subclass (diwarisi dari).

Kelas abstrak dapat memiliki metode abstrak dan reguler:

abstract class Animal {


public abstract void animalSound();
public void sleep() {
System.out.println("Zzz");
}
}

Dari contoh di atas, tidak mungkin membuat objek kelas Animal:

30
Animal myObj = new Animal(); // akan menghasilkan kesalahan

Untuk mengakses kelas abstrak, itu harus diwarisi dari kelas lain. Mari kita ubah
kelas Hewan yang kita gunakan di bab Polimorfisme menjadi kelas abstrak:

Ingat dari bagian Inheritance bahwa kita menggunakan kata kunci extends untuk
mewarisi dari kelas.
Contoh

// Abstract class
abstract class Animal {
// Abstract method (does not have a body)
public abstract void animalSound();
// Regular method
public void sleep() {
System.out.println("Zzz");
}
}

// Subclass (inherit from Animal)


class Pig extends Animal {
public void animalSound() {
// The body of animalSound() is provided here
System.out.println("The pig says: wee wee");
}
}

class MyMainClass {
public static void main(String[] args) {
Pig myPig = new Pig(); // Create a Pig object
myPig.animalSound();
myPig.sleep();
}
}

31
18 Interfaces

Cara lain untuk mencapai abstraksi di Java adalah dengan interfaces.


interfaces adalah "kelas abstrak" sepenuhnya yang digunakan untuk
mengelompokkan metode terkait dengan badan kosong:
Contoh
// interface
interface Animal {
public void animalSound(); // interface method (does not have a body)
public void run(); // interface method (does not have a body)
}

Untuk mengakses metode interfaces, interfaces harus "diimplementasikan" (seperti


diwariskan) oleh kelas lain dengan kata kunci implement (bukan extends). Tubuh
metode antarmuka disediakan oleh kelas "implement":
Contoh

// Interface
interface Animal {
public void animalSound(); // interface method (does not have a body)
public void sleep(); // interface method (does not have a body)
}

// Pig "implements" interface Animal interface


class Pig implements Animal {
public void animalSound() {
// The body of animalSound() is provided here
System.out.println("The pig says: wee wee");
}
public void sleep() {

32
// badab sleep() is diberikan disini
System.out.println("Zzz");
}
}

class MyMainClass {
public static void main(String[] args) {
Pig myPig = new Pig(); // Create a Pig object
myPig.animalSound();
myPig.sleep();
}
}

Catatan pada interface:


Seperti kelas abstrak, antarmuka tidak dapat digunakan untuk membuat objek
(dalam contoh di atas, tidak mungkin membuat objek "Hewan" di MyMainClass).
Metode antarmuka tidak memiliki badan kode disediakan oleh kelas "implement"
Saat mengimplementasikan sebuah antarmuka, Anda harus mengganti semua
metodenya.
▪ Metode Interface secara default oleh abstract and public
▪ Attributes Interface scara default oleh public, static dan final
Interface tidak bisa memuat constructor (as sebagaimana juga tidak bisa membuat
objek)

Kenapa dan kapan menggunakan Interfaces?


1) Untuk mencapai keamanan - sembunyikan detail tertentu dan hanya tampilkan
detail penting dari suatu objek (interface).

2) Java tidak mendukung "multiple inheritance" (kelas hanya dapat mewarisi dari
satu superclass). Namun, itu bisa dicapai dengan interfaces, karena kelas dapat

33
mengimplementasikan beberapa interfaces. Catatan: Untuk menerapkan banyak
interfaces, pisahkan dengan koma (lihat contoh).

Multiple Interfaces , Untuk melakukan multiple interfaces, pisahkan mereka


dengan:
Contoh
interface FirstInterface {
public void myMethod(); // interface method
}

interface SecondInterface {
public void myOtherMethod(); // interface method
}

class DemoClass implements FirstInterface, SecondInterface {


public void myMethod() {
System.out.println("Some text..");
}
public void myOtherMethod() {
System.out.println("Some other text...");
}
}

class MyMainClass {
public static void main(String[] args) {
DemoClass myObj = new DemoClass();
myObj.myMethod();
myObj.myOtherMethod();
}
}

34
19 Enums

enum adalah "kelas" khusus yang mewakili sekelompok konstanta (variabel yang
tidak dapat diubah, seperti variabel akhir). Untuk membuat enum, gunakan kata
kunci enum (bukan class atau interface), dan pisahkan konstanta dengan koma.
Perhatikan bahwa mereka harus dalam huruf besar:
Contoh
enum Level {
LOW,
MEDIUM,
HIGH
}

Anda dapat mengakses konstanta enum dengan sintaks titik:


Level myVar = Level.MEDIUM;

20 Java User Input

Kelas Scanner digunakan untuk mendapatkan input pengguna, dan itu ditemukan
dalam paket java.util. Untuk menggunakan kelas Scanner, buat objek dari kelas
tersebut dan gunakan salah satu metode yang tersedia yang ditemukan dalam
dokumentasi kelas Scanner. Dalam contoh kami, kami akan menggunakan metode
nextLine (), yang digunakan untuk membaca Strings:
Contoh:

import java.util.Scanner; // Import the Scanner class

class MyClass {
public static void main(String[] args) {
Scanner myObj = new Scanner(System.in); // Buat Object Scanner
System.out.println("Enter username");

35
String userName = myObj.nextLine(); // Baca input user
System.out.println("Username is: " + userName); // Hasil input user
}
}

Input Types

Dalam contoh di atas, kami menggunakan metode nextLine (), yang digunakan
untuk membaca Strings. Untuk membaca tipe lainnya, lihat tabel di bawah ini:

Metode Penjelasan
nextBoolean() Baca nilai boolean dari user
nextByte() Baca nilai byte dari user
nextDouble() Baca nilai double dari user
nextFloat() Baca nilai float dari the user
nextInt() Baca nilai int dari the user
nextLine() Baca nilai String dari the user
nextLong() Baca nilai long dari the user
nextShort() Baca nilai short dari the user

Pada contoh di bawah ini, kami menggunakan metode berbeda untuk membaca data
dari berbagai jenis:
Contoh

import java.util.Scanner;

class MyClass {
public static void main(String[] args) {
Scanner myObj = new Scanner(System.in);

System.out.println("Enter name, age and salary:");

// String input

36
String name = myObj.nextLine();

// Numerical input
int age = myObj.nextInt();
double salary = myObj.nextDouble();

// Output input by user


System.out.println("Name: " + name);
System.out.println("Age: " + age);
System.out.println("Salary: " + salary);
}
}

21 Java Dates / Tanggal

Java tidak memiliki kelas Date built-in, tetapi kita dapat mengimpor paket java.time
untuk bekerja dengan API tanggal dan waktu. Paket ini mencakup banyak kelas
tanggal dan waktu. Sebagai contoh:

Kelas Penjelasan
LocalDate Menampilkan tanggal (year, month, day (yyyy-MM-dd))
LocalTime Menampilkan waktu (hour, minute, second and nanoseconds
(HH-mm-ss-ns))
LocalDateTime Menampilkan tanggal and waktu (yyyy-MM-dd-HH-mm-ss-
ns)
DateTimeFormatter Memformat untuk menampilan atau parsing/proses object
tanggal-waktu /date-time

Menampilkan tanggal sekarang :


Untuk menampilkan tanggal saat ini, impor kelas java.time.LocalDate, dan gunakan
metode now ():
Contoh :

37
import java.time.LocalDate; // import the LocalDate class

public class MyClass {


public static void main(String[] args) {
LocalDate myObj = LocalDate.now(); // Create a date object
System.out.println(myObj); // Display the current date
}
}

Hasilnya:
2020-10-02

Menampilkan waktu sekarang


Untuk menampilkan waktu saat ini (jam, menit, detik, dan nanodetik), impor kelas
java.time.LocalTime, dan gunakan metode now():
Contoh

import java.time.LocalTime; // import the LocalTime class

public class MyClass {


public static void main(String[] args) {
LocalTime myObj = LocalTime.now();
System.out.println(myObj);
}
}

Hasil :
15:16:23.253588

Menampilkan waktu dan tanggal sekarang


Untuk menampilkan tanggal dan waktu saat ini, impor kelas
java.time.LocalDateTime, dan gunakan metode now ():

38
Contoh

import java.time.LocalDateTime; // import the LocalDateTime class

public class MyClass {


public static void main(String[] args) {
LocalDateTime myObj = LocalDateTime.now();
System.out.println(myObj);
}
}

Hasilnya :
2020-10-02T15:16:23.254409

Memformat Date dan Time


"T" pada contoh di atas digunakan untuk memisahkan tanggal dari waktu. Anda
bisa menggunakan kelas DateTimeFormatter dengan metode ofPattern() dalam paket
yang sama untuk memformat atau mengurai objek tanggal-waktu. Contoh berikut
akan menghapus "T" dan nanodetik dari tanggal-waktu:
Contoh

import java.time.LocalDateTime; // Import the LocalDateTime class


import java.time.format.DateTimeFormatter; // Import the DateTimeFormatter
class

public class MyClass {


public static void main(String[] args) {
LocalDateTime myDateObj = LocalDateTime.now();
System.out.println("Before formatting: " + myDateObj);
DateTimeFormatter myFormatObj = DateTimeFormatter.ofPattern("dd-MM-
yyyy HH:mm:ss");

String formattedDate = myDateObj.format(myFormatObj);


System.out.println("After formatting: " + formattedDate);

39
}
}

Hasilnya :
sebelum Formatting: 2020-10-02T15:16:23.254990
sesudah Formatting: 02-10-2020 15:16:23

Metode ofPattern () menerima semua jenis nilai, jika Anda ingin menampilkan
tanggal dan waktu dalam format yang berbeda. Sebagai contoh:
Contoh nilai
yyyy-MM-dd "1988-09-29"
dd/MM/yyyy "29/09/1988"
dd-MMM-yyyy "29-Sep-1988"
E, MMM dd yyyy "Thu, Sep 29 1988"

22 Metode Java

Metode adalah sekumpulan kode yang hanya berjalan saat dipanggil.


Anda dapat mengirimkan data, yang disebut parameter, ke dalam metode.
Metode digunakan untuk melakukan tindakan tertentu, dan mereka juga dikenal
sebagai fungsi.
Mengapa menggunakan metode? Untuk menggunakan kembali kode: tentukan
kode sekali, dan gunakan berkali-kali.

Membuat Metode
Metode harus dideklarasikan di dalam kelas. Ini didefinisikan dengan nama metode,
diikuti dengan tanda kurung (). Java menyediakan beberapa metode yang telah
ditentukan sebelumnya, seperti System.out.println(), tetapi Anda juga dapat membuat
metode Anda sendiri untuk melakukan tindakan tertentu:Example

Membuat metode dalam MyClass:

40
public class MyClass {
static void myMethod() {
// kode yang akan dijalankan
}
}

Contoh Dijelaskan :
myMethod() - adalah nama metode
static - berarti bahwa metode tersebut milik kelas MyClass dan bukan objek dari
kelas MyClass. Anda akan mempelajari lebih lanjut tentang objek dan cara
mengakses metode melalui objek nanti dalam tutorial ini.
void - berarti metode ini tidak memiliki nilai pengembalian. Anda akan
mempelajari lebih lanjut tentang nilai kembali nanti

Panggil Method
Untuk memanggil metode di Java, tulis nama metode diikuti dengan dua tanda
kurung () dan titik koma;

Dalam contoh berikut, myMethod () digunakan untuk mencetak teks (tindakan),


saat dipanggil:
Contoh :
Di dalam main, panggil metode myMethod ():

public class MyClass {


static void myMethod() {
System.out.println("I just got executed!");
}

public static void main(String[] args) {


myMethod();
}
}

41
// Outputs "I just got executed!"

Sebuah metode juga bisa dipanggil beberapa kali:


Contoh :
public class MyClass {
static void myMethod() {
System.out.println("I just got executed!");
}
public static void main(String[] args) {
myMethod();
myMethod();
myMethod();
}
}

// I just got executed!


// I just got executed!
// I just got executed!

23 Parameters dan Arguments Metode

Informasi dapat diteruskan ke metode sebagai parameter. Parameter bertindak


sebagai variabel di dalam metode.

Parameter ditentukan setelah nama metode, di dalam tanda kurung. Anda dapat
menambahkan parameter sebanyak yang Anda inginkan, cukup pisahkan dengan
koma.

Contoh berikut memiliki metode yang mengambil String yang disebut fname
sebagai parameter. Ketika metode ini dipanggil, kami meneruskan nama depan,
yang digunakan di dalam metode untuk mencetak nama lengkap:
Contoh

42
public class MyClass {
static void myMethod(String fname) {
System.out.println(fname + " Refsnes");
}

public static void main(String[] args) {


myMethod("Liam");
myMethod("Jenny");
myMethod("Anja");
}
}
// Liam Refsnes
// Jenny Refsnes
// Anja Refsnes

Ketika parameter dilewatkan ke metode, itu disebut argumen. Jadi, dari contoh di
atas: fname adalah parameter, sedangkan Liam, Jenny dan Anja adalah argumen.
Beberapa Parameter

Anda dapat memiliki parameter sebanyak yang Anda suka:


Contoh

public class MyClass {


static void myMethod(String fname, int age) {
System.out.println(fname + " is " + age);
}

public static void main(String[] args) {


myMethod("Liam", 5);
myMethod("Jenny", 8);
myMethod("Anja", 31);
}
}

43
// Liam is 5
// Jenny is 8
// Anja is 31

Perhatikan bahwa ketika Anda bekerja dengan beberapa parameter, pemanggilan


metode harus memiliki jumlah argumen yang sama karena ada parameter, dan
argumen harus diteruskan dalam urutan yang sama.

Nilai Kembali / Return Values, kata kunci void, yang digunakan dalam contoh di
atas, menunjukkan bahwa metode tersebut tidak boleh mengembalikan nilai. Jika
Anda ingin metode mengembalikan nilai, Anda dapat menggunakan tipe data
primitif (seperti int, char, dll.) Sebagai ganti void, dan gunakan kata kunci return di
dalam metode:
Contoh
public class MyClass {
static int myMethod(int x) {
return 5 + x;
}

public static void main(String[] args) {


System.out.println(myMethod(3));
}
}
// Outputs 8 (5 + 3)

Contoh ini mengembalikan jumlah dari dua parameter metode:


Contoh public class MyClass {
static int myMethod(int x, int y) {
return x + y;
}

public static void main(String[] args) {

44
System.out.println(myMethod(5, 3));
}
}
// Outputs 8 (5 + 3)

Anda juga dapat menyimpan hasil dalam variabel (disarankan, karena lebih mudah
dibaca dan dipelihara):
Contoh

public class MyClass {


static int myMethod(int x, int y) {
return x + y;
}

public static void main(String[] args) {


int z = myMethod(5, 3);
System.out.println(z);
}
}
// Outputs 8 (5 + 3)

Metode dengan If...Else , Ini umum digunakan pernyataan if ... else di dalam
metode:
Contoh

public class MyClass {

// Create a checkAge() method with an integer variable called age


static void checkAge(int age) {

// If age is less than 18, print "access denied"


if (age < 18) {
System.out.println("Access denied - You are not old enough!");

45
// If age is greater than 18, print "access granted"
} else {
System.out.println("Access granted - You are old enough!");
}

public static void main(String[] args) {


checkAge(20); // Call the checkAge method and pass along an age of 20
}
}

// Outputs "Access granted - You are old enough!"

24. Method Overloading

Dengan metode overloading, beberapa metode dapat memiliki nama yang sama
dengan parameter berbeda:
Contoh

int myMethod(int x)
float myMethod(float x)
double myMethod(double x, double y)

Pertimbangkan contoh berikut, yang memiliki dua metode yang menambahkan


nomor jenis berbeda:
Contoh

static int plusMethodInt(int x, int y) {

46
return x + y;
}

static double plusMethodDouble(double x, double y) {


return x + y;
}

public static void main(String[] args) {


int myNum1 = plusMethodInt(8, 5);
double myNum2 = plusMethodDouble(4.3, 6.26);
System.out.println("int: " + myNum1);
System.out.println("double: " + myNum2);
}

Daripada menentukan dua metode yang harus melakukan hal yang sama, lebih baik
untuk membebani satu metode. Dalam contoh di bawah ini, kami membebani
metode Metode plus agar berfungsi baik untuk int dan double:
Contoh

static int plusMethod(int x, int y) {


return x + y;
}

static double plusMethod(double x, double y) {


return x + y;
}

public static void main(String[] args) {


int myNum1 = plusMethod(8, 5);
double myNum2 = plusMethod(4.3, 6.26);
System.out.println("int: " + myNum1);
System.out.println("double: " + myNum2);
}

47
25 Java Scope

Di Java, variabel hanya dapat diakses di dalam region tempat variabel dibuat. Ini
disebut ruang lingkup. Metode Scope ,Variabel yang dideklarasikan langsung di
dalam metode tersedia di mana saja dalam metode mengikuti baris kode tempat
mereka dideklarasikan:
Contoh

public class MyClass {


public static void main(String[] args) {

// Code here CANNOT use x

int x = 100;

// Code here can use x


System.out.println(x);
}
}

Blok Scope , blok kode merujuk ke semua kode di antara tanda kurung kurawal {}.
Variabel yang dideklarasikan di dalam blok kode hanya dapat diakses oleh kode di
antara tanda kurung kurawal, yang mengikuti baris di mana variabel itu
dideklarasikan:
Contoh

public class MyClass {


public static void main(String[] args) {

// Code here CANNOT use x


{ // This is a block
// Code here CANNOT use x
int x = 100;

48
// Code here CAN use x
System.out.println(x);
} // The block ends here
// Code here CANNOT use x
}
}

26 Rekursi Java

Rekursi adalah teknik membuat panggilan fungsi itu sendiri. Teknik ini
memberikan cara untuk memecah masalah yang rumit menjadi masalah sederhana
yang lebih mudah dipecahkan.

Rekursi mungkin agak sulit dipahami. Cara terbaik untuk mengetahui cara kerjanya
adalah dengan bereksperimen dengannya.
Contoh Rekursi

Menjumlahkan dua angka secara bersamaan mudah dilakukan, tetapi


menambahkan serangkaian angka lebih rumit. Dalam contoh berikut, rekursi
digunakan untuk menambahkan rentang angka bersama-sama dengan memecahnya
menjadi tugas sederhana untuk menambahkan dua angka:
Contoh

Gunakan rekursi untuk menambahkan semua angka hingga 10.

public class MyClass {


public static void main(String[] args) {
int result = sum(10);
System.out.println(result);
}
public static int sum(int k) {
if (k > 0) {

49
return k + sum(k - 1);
} else {
return 0;
}
}
}

Contoh Dijelaskan

Ketika fungsi sum() dipanggil, ia menambahkan parameter k ke jumlah semua


angka yang lebih kecil dari k dan mengembalikan hasilnya. Ketika k menjadi 0,
fungsinya hanya mengembalikan 0. Saat dijalankan, program mengikuti langkah-
langkah berikut:

10 + sum(9)
10 + ( 9 + sum(8) )
10 + ( 9 + ( 8 + sum(7) ) )
...
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + sum(0)
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0

Karena fungsi tidak memanggil dirinya sendiri saat k bernilai 0, program berhenti
di sana dan mengembalikan hasilnya.

Kondisi Tersendat / Halting , Sama seperti loop dapat mengalami masalah


perulangan tak terbatas, fungsi rekursif dapat mengalami masalah rekursi tak
terbatas. Rekursi tak terbatas adalah saat fungsi tidak pernah berhenti memanggil
dirinya sendiri. Setiap fungsi rekursif harus memiliki kondisi terputus-putus, yaitu
kondisi di mana fungsi berhenti memanggil dirinya sendiri. Pada contoh
sebelumnya, kondisi terhenti adalah ketika parameter k menjadi 0.

50
Sangat membantu untuk melihat berbagai contoh yang berbeda untuk lebih
memahami konsep tersebut. Dalam contoh ini, fungsi menambahkan rentang angka
antara awal dan akhir. Kondisi terhenti untuk fungsi rekursif ini adalah ketika akhir
tidak lebih besar dari awal:
Contoh

Gunakan rekursi untuk menambahkan semua angka antara 5 hingga 10.


public class MyClass {
public static void main(String[] args) {
int result = sum(5, 10);
System.out.println(result);
}
public static int sum(int start, int end) {
if (end > start) {
return end + sum(start, end - 1);
} else {
return end;
}
}
}

51
BAGIAN PRAKTIKUM

Objektif
❖ Mampu melakukan implementasi teori object oriented program secara
umum
❖ Mampu melakukan persiapan repositori pada
❖ Mampu melakukan pekerjaan pemrograman secara terstruktur dan
mengikuti best practice

52
TUGAS 1 : SETUP GITLAB

1) Persiapan Proyek
Pada browser, login pada http:// https://gitlab.com/users/sign_in

a) Create New Project , dengan klik Tombol Menu pada


dashboard
b) Isi Project name dengan nama oop-[nnnnn] (project slug jgn diubah !)
c) Pilih visibility level (private)

d) Selesaikan dengan tekan menu


e) Pada File Explorer PC anda, pastikan sudah membuat folder dengan
mengikuti format yang sudah ditetapkan dalam modul 1, jangan ada yang
berbeda !
f) Dengan demikian anda akan mempunyai struktur folder sebagai berikut
(tidak ada spasi !):
[drive]:\data\oop-[nnnnn]
[drive]:\data\oop-[nnnnn]\lab1-oop-[nnnnn]
g) Lakukan perintah (anda berada dibawah folder [drive]:\data\oop-
[nnnnn]\ ):
h) git config --global user.name "nama anda"
i) git config --global user.email "email"
j) git init
k) git add .
l) git push --set-upstream https://gitlab.com/[usernamegitlabanda]/oop-
00000.git
m) maka popup menu akan muncul, masukan username dan password anda
n) apabila salah maka pergi ke Credential Manager -> Windows
Credential , hapus gitlab credential
o) Maka hasil pekerjaan kalian akan synch dengan gitlab hanya sampai saat ini

53
2) Buat Akses Token Personal :
a) Pada Dasboard Gitlab, pilih Project , lalu pilih pada menu tab
sebelah kiri pilih Setting > Repository
b) Klik “Expand” pada bagian Deploy Token
c) Isi nama , format nama “vscode@[usernamekalianpadagitlab] ,
exipry date (buat setahun, 08-10-2021) , pilih scope nya, klik semua)
d) Klik Create Deploy Token
e) Buat file dibawah folder oop-[nnnnn] dengan nama notes.txt, save
token tersebut disitu). Token tidak akan bisa diakses lagi
f) Buat file dengan nama .gitignore dibawah folder oop-[nnnnn] , lalu
edit
g) Masukan nama file yang dibuat sebelumnya notes.txt, Simpan.

54
TUGAS 2 : BUAT PROYEK KELAS

a) Buatlah kelas dibawah folder src untuk semua contoh materi yang telah
disebutkan dibagian teori, kelas dibuat dengan nama kelas sama tapi
ditambah dengan 5 digit terakhir NIM anda, tapi dengan variable berbeda.
Kelas tidak boleh memiliki variabel yang sama, kerjakan masing tidak
bekerja sama. Kerjakan :
b) Pada visual code, buat project pada java (apabila belum dibuat! tidak
sesuai! ) Perhatikan standar lokasi project utama dan format nama
c) Tekan Ctrl + Shift + P , pilih Java : Create Java Project > No build tools >
arahkan ke folder utama lab[n]-[nnnnn] , dalam hal ini lab2-[nnnnn], input
a java project name / masukan nama prject lab2-[nnnnn]
d) Maka visual code akan menotifikasi dipojok kanan bawah untuk meminta
seting token acces, IGNORED / CANCEL!
e) Maka folder lab2-000000 akan terisi skleton atau struktur kode yang akan
kita gunakan untuk tugas ini.
f) Setiap file .java yang dibuat, harus berada dibawah folder src!
g) Kerjakan semua contoh kelas dari bagian teori dengan merubah format
nama dan variable token menjadi nama[00000], rujuk kepada materi kuliah
online untuk aturan pengerjaannya. Berikut tabel berisikan jumlah kelas dan
catatan mana yang dimodifikasi saja :
Bab Jumlah Kelas Catatan
2,-7 2 Baru / Modifikasi
8-9 1 Baru / Modifikasi
11 1 Baru / Modifikasi
12,13 0 Modifikasi
14 1 Baru / Modifikasi
15-17 3 Baru / Modifikasi
18 1 Baru / Modifikasi
19-25 0 Modifikasi
Total 9 Keseluran Kelas

Untuk saat ini tidak dilakukan update repositori sampai diminta !

55
KATA PENTING

56
DAFTAR PUSTAKA

57

Anda mungkin juga menyukai