-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclass-constructor.dart
49 lines (42 loc) · 1.62 KB
/
class-constructor.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
void main(){
var buku = Buku(namaBuku: "Sejarah",jenisBuku: "Paket",jumlah: 25);
print("ini adalah buku ${buku.jenisBuku} yang isinya mempelajari ${buku.namaBuku}, jumlahnya ${buku.jumlah}");
print("Mengubah jumlah menggunakan method tambahJumlah");
buku.tambahJumlah(55);//mengubah menggunakan method fungsi biasa
buku.settambahJumlah = 22;// mengubah menggunakan setter
print("ini adalah buku ${buku.jenisBuku} yang isinya mempelajari ${buku.namaBuku}, jumlahnya ${buku.jumlah}");
print("====================================================================");
var buku2 = Buku(namaBuku: "Kimia",jenisBuku: "Lipat",jumlah: 77);
print("ini adalah buku ${buku2.jenisBuku} yang isinya mempelajari ${buku2.namaBuku}, jumlahnya ${buku2.jumlah}");
}
//ini adalah object
class Buku{
//ini adalah attribute object
String? namaBuku;
String? jenisBuku;
int? _jumlah;//enkapsulasi => mencegah perubahan secara langsung
//named argument menggunakan {} dan harus nullable ?
//ini adalah constructor dengan menggunakan metode named argument
// Buku({String? namaBukucons, String? jenisBukucons}){
// namaBuku = namaBukucons;
// jenisBuku = jenisBukucons;
// }
//constructor ==>> direct named argument
Buku({this.namaBuku,this.jenisBuku,int? jumlah}) {
_jumlah = jumlah;
}
//constructor ==>> direct positional argument
//Buku(this.namaBuku,this.jenisBuku);
//METHOD => memodifikasi suatu atribut
void tambahJumlah(int? jumlahBaru) {
_jumlah = jumlahBaru;
}
//getter
int? get jumlah {
return _jumlah;
}
//setter
set settambahJumlah(int? jumlahBaru) {
_jumlah = jumlahBaru;
}
}