Anda di halaman 1dari 10

Praktikum3/11S3211-PAM

Function & Object Oriented Programming (OOP)

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

fun main(args: Array<String>) {


print("Masukkan nilai 1: ")
var num1: Int = readLine()!!.toInt()
print("Masukkan Nilai 2: ")
var num2: Int = readLine()!!.toInt()
var result:Int = minValue(num1, num2)
print("Nilai Terendah: ")
printVal(result)
}
fun printVal(num:Int){
println("${num}")
}

fun minValue(num1:Int, num2:Int): Int{


return if(num1 > num2) num2 else num1
}
Output:

Analisis

Operator aritmatika digunakan untuk melakukan operasi matematis seperti penjumlahan,


pengurangan, perkalian, pembagian, dan modulus pada bilangan. Dalam program di atas,
operator aritmatika digunakan untuk menghitung hasil dari operasi matematis pada
variabel num1 dan num2.

Operator aritmatika bisa digunakan dalam berbagai situasi, seperti:


1. Pemrograman: dalam membuat aplikasi, seringkali kita membutuhkan operasi
matematis seperti hitung luas, volume, atau melakukan kalkulasi lainnya.
2. Matematika: dalam penyelesaian soal matematika, kita sering menggunakan
operasi aritmatika seperti penjumlahan, pengurangan, perkalian, dan pembagian.

3. Keuangan: dalam bidang keuangan, kita sering menggunakan operator aritmatika


untuk menghitung jumlah uang, bunga, atau melakukan kalkulasi lainnya.
4. Ilmu terapan lain: dalam bidang lain seperti fisika, kimia, atau teknik, kita sering

Page 1 of 10
Praktikum3/11S3211-PAM
Function & Object Oriented Programming (OOP)

Function
menggunakan operator aritmatika untuk melakukan perhitungan dan simulasi.

B. Object Oriented Programming (OOP)

Class & Object


Langkah pertama adalah menuliskan kode program Car.kt

Car.kt
package com.example.pampraktikum3_11s20020.ClassObject

class Car {
var name:String? = null
var model:Int? = null
}

Langkah kedua, membuatkan file kotlin baru sebagai berikut:


OOP11S20020.kt
package com.example.pampraktikum3_11s20020.ClassObject

fun main(args: Array<String>) {


var myCar = Car()
myCar.name = "Ferrari"
myCar.model = 2021

var myCar2 = Car()


myCar2.name = "Mercedes"
myCar2.model = 2010

println("Mobil ke-1: ${myCar.name} model ${myCar.model}")


println("Mobil ke-2: ${myCar2.name} model ${myCar2.model}")
}

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)

Class & Object


Setelah itu, fungsi println() dipanggil untuk menampilkan informasi nama mobil dan
modelnya pada console.

Constructor

Hewan
Langkah pertama adalah menuliskan file kotlin baru dengan nama Hewan.kt
package com.example.pampraktikum3_11s20020.Constructor

class Hewan constructor(var nama:String, var habitat:String) {


}

Kemudian File kotlin Constructor11S20020.kt


package com.example.pampraktikum3_11s20020.Constructor

fun main(args: Array<String>) {


var hewan = Hewan("Singa", "Padang Rumput")
println("Hewan ${hewan.nama} mempunyai habitat di $
{hewan.habitat}")
}

Output:

Hewan Versi Kedua


Sekarang mengubah kode program Hewan.kt

class Hewan constructor(var nama:String, var habitat:String){


init {
println("Hewan ${nama} mempunyai habitat di ${habitat}")
}
}

Pada bagian Constructor11S20020.kt


package com.example.pampraktikum3_11s20020.Constructor

fun main(args: Array<String>) {


var hewan = Hewan("Singa", "Padang Rumput")
// println("Hewan ${hewan.nama} mempunyai habitat di $
{hewan.habitat}")
}

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

fun main(args: Array<String>) {


//
//

var product = Product()


println("Product: ${product.name} dengan harga ${product.price}
dengan stok tersedia ${product.stock}")

var product2 = Product("Kecap ABC", 12000, 5)


println("Product: ${product2.name} dengan harga ${product2.price}
dengan stok tersedia ${product2.stock}")

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

fun main(args: Array<String>) {


var subject = Subject("PAM", 4)
subject.name = "Pemrograman Berbasis Mobile"
subject.setSks(6)

println("Matakuliah ${subject.name} dengan jumlah SKS $


{subject.sks}")
}
Output:

Inheritance
Menuliskan kode program berikut Vehicle.kt

package com.example.pampraktikum3_11s20020.Inheritance

open class Vehicle {


var type:String? = null
var model:String? = null
var maxSpeed:Int? = null

fun show(){
println("Type: ${type}")
println("Model: ${model}")
println("Max Speed: ${maxSpeed}")
}
}

Kemudian menuliskan kode program berikut Motorcycle.kt

package com.example.pampraktikum3_11s20020.Inheritance

class Motorcycle : Vehicle() {

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 {

Menuliskan kode program berikut untuk file Inheritance11S20020.kt

package com.example.pampraktikum3_11s20020.Inheritance

fun main(args: Array<String>) {


var motorcycle = Motorcycle()
motorcycle.type = "Motorcycle"
motorcycle.model = "Yamaha"
motorcycle.maxSpeed = 180

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

open class Card {


open fun shape(){
println("Persegi Panjang")
}
}

Kemudian menuliskan kode program berikut pada file CardChild.kt


package com.example.pampraktikum3_11s20020.FunctionOverriding

class CardChild: Card() {


fun originalShape(){
super.shape()

Page 7 of 10
Praktikum3/11S3211-PAM
Function & Object Oriented Programming (OOP)

Function Overriding
}

override fun shape() {


println("Lingkaran")
}
}

Kemudian membuat file baru, yaitu Override11S20020.kt dan menuliskan kode program
berikut
package com.example.pampraktikum3_11s20020.FunctionOverriding

fun main(args: Array<String>) {


var card = CardChild()
card.originalShape()
card.shape()
}

Output:

Abstract Class
Menuliskan kode program berikut pada file Planet.kt

package com.example.pampraktikum3_11s20020.AbstractClass

abstract class Planet {


abstract var name:String
abstract fun satellite()
}

Menuliskan kode program ini pada file Bumi.kt

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")
}
}

Kemudian menuliskan kode program ini pada file Abstract11S20020.kt


package com.example.pampraktikum3_11s20020.AbstractClass

fun main(args: Array<String>) {


var bumi = Bumi("Bumi")
print("Planet ${bumi.name} mempunyai satelit ")
bumi.satellite()
}

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

abstract class Place {


abstract var name:String
}

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"
}
}

Membuat file kotlin baur dengan nama Interface11S20020.kt


package com.example.pampraktikum3_11s20020.Interface

fun main(args: Array<String>) {


var atlantis = Atlantis("Atlantis", "Dingin" )
println("Lokasi ${atlantis.name} terletak di " +
"${atlantis.location()} memiliki suhu yang " +
"${atlantis.temperature}")
}

Output:

Page 10 of 10

Anda mungkin juga menyukai