LaporanPraktikum3 11S20020
LaporanPraktikum3 11S20020
NIM : 11S20020
Nama : Roosen Gabriel Manurung
Kelas : 13IF1
Video Source Code : https://youtu.be/stu8ysd2WPo
A. Function
Function
Menuliskan kode program berikut ini
package com.example.pampraktikum3_11s20020
Analisis
Page 1 of 10
Praktikum3/11S3211-PAM
Function & Object Oriented Programming (OOP)
Function
menggunakan operator aritmatika untuk melakukan perhitungan dan simulasi.
Car.kt
package com.example.pampraktikum3_11s20020.ClassObject
class Car {
var name:String? = null
var model:Int? = null
}
Output:
Kelas Car memiliki dua properti yaitu name dan model yang bertipe data String dan Int
dan diinisialisasi dengan nilai null.
Di dalam fungsi main, dua objek myCar dan myCar2 dibuat dengan menggunakan
konstruktor default kelas Car. Selanjutnya, nilai properti name dan model dari kedua
objek tersebut diatur menggunakan operator dot (.).
Page 2 of 10
Praktikum3/11S3211-PAM
Function & Object Oriented Programming (OOP)
Constructor
Hewan
Langkah pertama adalah menuliskan file kotlin baru dengan nama Hewan.kt
package com.example.pampraktikum3_11s20020.Constructor
Output:
Page 3 of 10
Praktikum3/11S3211-PAM
Function & Object Oriented Programming (OOP)
Constructor
Output:
Perbandingan:
Kode pertama dan kedua sama-sama merupakan contoh implementasi kelas Hewan
dengan dua properti yaitu nama dan habitat. Perbedaannya terletak pada cara
penggunaan properti tersebut.
Pada kode pertama, setelah objek hewan dibuat, properti nama dan habitat diakses dan
dicetak langsung dengan menggunakan println(). Sedangkan pada kode kedua, properti
nama dan habitat tidak diakses langsung, namun dicetak pada blok inisialisasi init yang
merupakan bagian dari kelas Hewan. Kemudian pada fungsi main(), objek hewan dibuat
seperti kode pertama namun tidak ada perintah untuk mencetak propertinya. Sedangkan
pada kode kedua, hanya akan menampilkan informasi nama hewan dan habitatnya pada
console ketika objek hewan dibuat karena penggunaan blok init di dalam kelas Hewan.
Product
Pertama, kita akan menuliskan kode program berikut yaitu Product.kt
package com.example.pampraktikum3_11s20020.product
class Product {
var name:String? = null
var price:Int? = null
var stock:Int? = null
constructor()
constructor(name:String?, price:Int?, stock:Int?){
this.name = name
this.price = price
this.stock = stock
}
}
Kemudian menuliskan kode program berikut dan mengubah program pada fungsi utama,
sebagai berikut: Constructor11S20020.kt
package com.example.pampraktikum3_11s20020.product
Page 4 of 10
Praktikum3/11S3211-PAM
Function & Object Oriented Programming (OOP)
Constructor
}
Output:
Analysis
Pada line 6, objek product dibuat menggunakan konstruktor tanpa parameter yang
akan membuat nilai dari properti name, price, dan stock menjadi null secara default.
Sementara pada line 7, objek product2 dibuat menggunakan konstruktor dengan tiga
parameter yang akan mengisi nilai dari properti name, price, dan stock sesuai dengan
nilai yang diberikan pada parameter.
Perbedaan antara class Hewan dan Product terletak pada properti dan konstruktor yang
digunakan. Properti pada class Hewan didefinisikan secara eksplisit dalam
konstruktor, sedangkan properti pada class Product didefinisikan secara terpisah dari
konstruktor. Selain itu, class Product memiliki konstruktor yang dapat menerima nilai
properti saat objek dibuat, sedangkan class Hewan tidak memiliki konstruktor seperti
itu.
Encapsulation
Pada bagian ini kita menuliskan sebuah program pada file Subject.kt
package com.example.pampraktikum3_11s20020.Encapsulation
class Subject {
var name:String? = null
var sks:Int? = null
private set
constructor(name:String?, sks:Int){
this.name = name
this.sks = sks
}
fun setSks(sks:Int){
this.sks = sks
}
}
Pada kode tersebut, terdapat modifier "private set" pada properti "sks" di dalam kelas
"Subject". Modifier ini mengindikasikan bahwa properti "sks" hanya dapat diakses dan
diubah nilai nya dari dalam kelas "Subject" itu sendiri. Oleh karena itu, pada bagian kode
"subject.sks = 6" di dalam fungsi "main", terdapat error karena mengubah nilai properti
"sks" dilakukan di luar kelas "Subject".
Untuk memperbaiki error tersebut, bisa menghapus modifier "private" pada properti "sks"
di kelas "Subject" agar dapat diakses dan diubah dari luar kelas, atau bisa menambahkan
fungsi di dalam kelas "Subject" untuk mengubah nilai properti "sks". Seperti pada kode
Page 5 of 10
Praktikum3/11S3211-PAM
Function & Object Oriented Programming (OOP)
Encapsulation
program diatas.
Dengan menambahkan fungsi "setSks" di dalam kelas "Subject", nilai properti "sks" dapat
diubah dengan cara memanggil fungsi tersebut dari luar kelas.
package com.example.pampraktikum3_11s20020.Encapsulation
Inheritance
Menuliskan kode program berikut Vehicle.kt
package com.example.pampraktikum3_11s20020.Inheritance
fun show(){
println("Type: ${type}")
println("Model: ${model}")
println("Max Speed: ${maxSpeed}")
}
}
package com.example.pampraktikum3_11s20020.Inheritance
Saat kita melakukan extend terhadap class Vehicle.kt akan mengalami error, hal ini terjadi
karena class Vehicle tidak dapat untuk diwariskan. Solusi dari hal tersebut kita perlu
Page 6 of 10
Praktikum3/11S3211-PAM
Function & Object Oriented Programming (OOP)
Inheritance
membuat class Vehicle menjadi ”Open” agar bisa diwariskan.
open class Vehicle {
package com.example.pampraktikum3_11s20020.Inheritance
motorcycle.show()
}
Analisis mengapa kita dapat mengakses properties type, model, dan maxSpeed padahal kita
tidak mendeklarasikannya pada class Motorcycle.
Kode program tersebut menggunakan konsep Inheritance atau pewarisan dalam
pemrograman berorientasi objek. Kelas "Motorcycle" merupakan subclass dari kelas
"Vehicle", sehingga memiliki semua properti dan metode yang dimiliki oleh kelas
"Vehicle". Oleh karena itu, ketika kita membuat objek dari kelas "Motorcycle", objek
tersebut juga akan memiliki properti "type", "model", dan "maxSpeed" yang diwarisi
dari kelas "Vehicle".
Pada baris kode class Motorcycle : Vehicle(), terdapat tanda ":" yang menunjukkan
bahwa kelas "Motorcycle" mewarisi properti dan metode dari kelas "Vehicle". Dengan
mewarisi kelas "Vehicle", kelas "Motorcycle" memiliki akses ke properti "type",
"model", dan "maxSpeed". Kemudian, pada baris kode var motorcycle = Motorcycle(),
kita membuat objek baru dari kelas "Motorcycle" yang kemudian kita dapat mengakses
properti dan metodenya, termasuk properti "type", "model", dan "maxSpeed".
Function Overriding
Menuliskan kode program berikut Card.kt
package com.example.pampraktikum3_11s20020.FunctionOverriding
Page 7 of 10
Praktikum3/11S3211-PAM
Function & Object Oriented Programming (OOP)
Function Overriding
}
Kemudian membuat file baru, yaitu Override11S20020.kt dan menuliskan kode program
berikut
package com.example.pampraktikum3_11s20020.FunctionOverriding
Output:
Abstract Class
Menuliskan kode program berikut pada file Planet.kt
package com.example.pampraktikum3_11s20020.AbstractClass
package com.example.pampraktikum3_11s20020.AbstractClass
Page 8 of 10
Praktikum3/11S3211-PAM
Function & Object Oriented Programming (OOP)
Abstract Class
class Bumi(override var name: String) : Planet() {
override fun satellite() {
println("Bulan")
}
}
Output:
Interfaces
Menuliskan kode berikut ini pada file interface Environment.kt
package com.example.pampraktikum3_11s20020.Interface
interface Environment {
abstract fun location():String
abstract var temperature:String
}
Kemudian menuliskan kode program ini pada file kotlin baru sebagai berikut:
Place.kt
package com.example.pampraktikum3_11s20020.Interface
Kemudian menuliskan kode program ini pada file kotlin baru pada file Atlantis.kt
package com.example.pampraktikum3_11s20020.Interface
class Atlantis (
override var name:String,
Page 9 of 10
Praktikum3/11S3211-PAM
Function & Object Oriented Programming (OOP)
Interfaces
override var temperature:String) : Place(), Environment{
override fun location(): String {
return "Samudra Atlantik"
}
}
Output:
Page 10 of 10