Bab 6 Class & Constructor

May 7, 2019 | Author: Afrizal Bagas | Category: N/A
Share Embed Donate


Short Description

laporean...

Description

BAB VI

CONSTRUCTOR DAN CLASS

6.1.

Tujuan

1.

Praktikan dapat mengetahui mana yang disebut class dan mana yang disebut constructor .

2.

Praktikan dapat memahami fungsi dari class dan constructor di masing –  masing  –  masing bahasa pemrograman Java, C#, Python, dan PHP.

3.

Praktikan dapat membuat class dan constructor  di  di masing –  masing –  masing  masing bahasa  pemrograman Java, C#, Python, dan PHP.

4.

Praktikan mampu menghafal source code class dan constructor  di   di masing  –  masing  masing bahasa pemrograman Java, C#, Python, dan PHP.

5.

Praktikan

dapat

memahami

apa

yang

disebut

Object-Oriented

 atau OOP  setelah  setelah memahami tujuan –  tujuan –  tujuan  tujuan sebelumnya.  Programming  atau

6.2. Dasar Teori 6.2.1. Konsep Pemogramman Berbasis Objek 

Pemrograman berorientasi objek (object-oriented programming  disingkat   disingkat OOP) merupakan pemograman yang berorientasikan berorientasi kan kepada objek. Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelas atau objek-objek. Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya. Model data berorientasi objek dikatakan dapat memberi fleksibilitas yang lebih, kemudahan mengubah program, dan digunakan luas dalam teknik piranti lunak skala besar. Lebih jauh lagi, pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari bagi pemula dibanding dengan pendekatan sebelumnya, dan  pendekatan OOP lebih mudah dikembangkan di kembangkan dan dirawat. (Sumber: http://technopark.surakarta.go.id/id/media-publik/komputer-teknologiinformasi/189-konsep-dasar-pemrograman-berorientasi-objek  )

6.2.2. Class

Class dapat dibayangkan sebagai blueprint dari suatu object yang akan di

 buat, class merupakan kumpulan definisi state atau attribute (kondisi) dari suatu object yang akan dibuat, dan method dari object tersebut. Sebagai contoh class dapat di gambarkan dalam diagram seperti dibawah:

Gambar 6.1 contoh class

Dalam diagram class yang harus di perhatikan adalah 1.Simbol dari setiap attribute untuk simbol minus (-) maka berarti suatu attribute memiliki encapsulasi private, simbol plus (+) untuk encapsulasi public, pagar (#) untuk encapsulasi protected, simbol garis miring (/) dimaksukan bahwa fungsi telah kedaluarsa. 2.Kemudian dalam class diagram terdapat 3 bagian yaitu nama class, attribute class, dan method class.

Dalam diagram kelas diatas dapat dilihat kalau suatu class akun bank memiliki attribute atau ciri berupa idAkun, saldo, tanggalDiBuka, dan tipeAkun. Dan akun tersebut dapat melakukan operasi buka, tutup, menabung sejumlah uang, menarik sejumlah uang. (Sumber: https://pccontrol.wordpress.com/2013/01/21/pengetahuan-dasar-dan-contoh-diagramkelas-class-diagram/ dan Modul 5 Praktikum DKP)

6.2.3. Constructor

Constructor adalah method   khusus yang akan dijalankan secara otomatis  pada saat sebuah objek  dibuat (instansiasi), yakni ketika perintah “new” dijalankan. Constructor   digunakan untuk membuat suatu obejct dari class yang bersangkutan,

seperti memberi nilai awal kepada attribute, memanggil method internal dan  beberapa proses lain yang digunakan untuk ‘mempersiapkan’ objek. Ide

dasar

constructor

adalah

membangun

object

dengan

menginstansiasikannya dengan cara mengisi attribute object tersebut dengan nilai tertentu dan melakukan operasi yang diperlukan agar object itu siap digunakan. Analogi hubungan constructor dan class adalah class merupakan blueprint dari suatu bangunan, berisi berbagai rancangan kamar, ukuran rumah dan sebagainya, tetapi karena hanya blueprint maka class bukanlah object nyata, untuk membangun rumah dari blueprint tersebut maka di gunakan peralatan dan tukang agar rumah dapat dibuat, peralatan dan tukang yang membangun rumah inilah yang dimaksud contructor. Dan seperti membuat rumah pada umumnya satu blueprint atau class dapat digunakan berkali-kali untuk membuat rumah yang banyak.

Gambar 6.2 diagram constructor Sumber:modul bab VI class dan constructor  (Sumber:http://www.duniailkom.com)

6.3.

Hasil Percobaan dan Analisa

6.3.1. Class Pada Java package modul5; class student { public String name; public String id; private String address; private float gpa; public student() //Constructor yang akan langsung dijalankan saat kelas pertama kali diinisialisasi { System.out.println("Mahasiswa telah dibuat"); } public student(String parameter { this.name= name; this.id = id; }

name,

String

public student(String name, //Overloading Constructor { this.name = name; this.id = id; this.address = address;

id)

String

//Constructor

id,

String

dengan

address)

System.out.println("Mahasiswa telah dibuat"); } public String intro() //Method non parameter { return "Nama saya: "+name+ "\nNIM saya:" + id; } public String { if (gpa >= return } else { return } }

tellGPA(float gpa) //Method berparameter 3) { "IPK saya "+ gpa;

"IPK saya tidak boleh di beritahu ke orang lain";

public String tellAddress(){ //Method non parameter return "Alamat saya di " + address; } }

Pada source code ini dapat kita lihat pada kelas ini bahwa nama dari kelas ini adalah kelas student,kemuadian di deklarasikan  public string name,yang  berarti bahwa method ini memiliki parameter dengan nama name memiliki tipe data string dengan akses modifier public yang berarti data ini nantinya dapat diakses secara bebas pada kelas lain.kemudian ada public string id yang mana method ini juga memiliki fungsi yang sama dengan yang sebelumnya yaitu tipe data string dan akses modifier nya secara publik yang dapat diakses oleh kelas lain,selanjutnya private string address yang mana akses modifier private yang berarti seluruh

atribut atau method tersebut tidak adapat diakses oleh kelas lainhanya dapat diakses oleh kelas tersebut begitu juga dengan private float gpa yang berarti tipe data ini adalah tipe data berkoma atau bukan bilangan bulat dengan acces modifierprivate sama seperti sebelumnya yang mana method ini tidak dapat diakses secara bebas oleh kelas lain,selanjutnya public student yang mana method ini dapat diakse oleh kelas lain dan merupakan konstructor yang akan dijalankan. Selanjutnya System.out.println(Mahasiswa telah dibuat); yang mana ini nantiya akan mencetak “Mahasiswa telah dibuat”lalu public string intro

ini merupakan method dengan non parameter,lalu

saya(“+name+”/nNim saya:”+ id; yang

return:”nama

mana ini nantinya akan mengembalikan

 Nilai nama dan nim. Kemudian  public

string

telGPA(floatGPA)  ini

merupakan method dengan tipe data float yang berparameter selanjutnya if(gpa>=3)ini nantinya jika ipk kita lebih besar dari 3 dan else  jika lebih kecil

dari tiga maka nilai tidak boleh diberitahukan pada orang lain.Kemudian public string tellAddress()}ini merupak method yang non parameter terakhir return “alamat saya +address”

maka hasilnya akan mencetak alamat.

6.3.2. Constructor Pada Java package modul5 * @author ASUS A442U public class Modul5 { public static void main(String[] args) { //mengeluarkan nilai dari method tellAddress // TODO code application logic here student one = new student(); System.out.println(one.intro()); System.out.println(one.tellGPA(4)); System.out.println(one.tellAddress()); student two = new student("Afrizal "21120117130075"); System.out.println(two.intro()); System.out.println(two.tellGPA(4)); System.out.println(two.tellAddress());

Bagas

student three = new student("Lita "21120117120025", "GKB"); System.out.println(three.intro()); System.out.println(three.tellGPA(4)); System.out.println(three.tellAddress());

S",

Muflikha",

} }

 pada kode ini dapat kita lihat public class Modul5 yang mana kode ini  bernama modul5 selanjutnya student one = new studet ini men set student ,kemudian

System.out.println(one.intro() ;ini

merupakan

pernyataan

 pertama yang nanti akan berniali null atau akan dicetak null karena tidak ada nila akan

diinputkan

kemudian

akan

dicetak

System.out.println(one.tellGPA(4)) yang

lagi

nim

dengan

kode

mana ini nantinya juga kan

mencetak nilai 4 karena tadi diawal nilainya telah diinputkan begitu juga dengan System.out.println(one.tellAddress(); yang mana nilainya juga akan dicetak null karena nialinya tidak di inputkan diawal. Selanjutnya Student two =new student yang mana ini dibuat untuk siswa ke dua dengan nama objek Afrizal Bagas S dengan nim 2120117130075 ,selanjutnya System.out.println(two.intro();yang mana ini nantinya akan menjadikan

ini

menjadi

objek

kedua,selanjutnya

System.out.println.(tellGPA); yang mana ini nanti akan mencetak nilai dari

nim yaitu 21120117130075  begitu juga dengan address yang mana nanti alamatnya

akan dicetak di GKB sesuai dengan yang telah didekalrasikan pada class sebelumnya Sama halnya dengan student three=new yang mana ini dibuat untuk siswa ke tiga dengan nama objek Lita

Muflikha

dengan nim  21120117120025

selanjutnya System.out.println(two.intro();yang mana ini nantinya akan menjadikan

ini

menjadi

objek

kedua,selanjutnya

System.out.println.(tellGPA);

yang mana ini nanti akan mencetak nilai dari nim yaitu 21120117120025  begitu juga dengan address yang mana nanti alamatnya akan dicetak di GKB sesuai dengan yang telah didekalrasikan pada class sebelumnya.maka outputnya kan jadi sebagai berikut:

Gambar 6.3 output program pada java

6.3.3. Class pada C# using System.Text; using System.Threading.Tasks; namespace Modul_5 { class Student { public String name; public String id; private String address; private float gpa; public Student() //Constructor default// { Console.WriteLine("Mahasiswa telah dibuat"); } public String intro() //Method non parameter// { return "Nama saya: " + name + "/NIM saya:" + id; } public String tellGPA(float gpa) //Method berparameter { if (gpa >= 3) { return "IPK saya " + gpa; } else { return "IPK saya tidak boleh di beritahu ke orang lain"; } } public String tellAddress() { //Method non parameter return "Alamat saya di " + address; } } }

Class ini bernama modul5kelompok8  berada pada class student,pertama kita deklarasikan dengan public string name yang mana ini bertipe data string dengan acces modifier public yang berarti method itu bisa diakses secara bebas oleh kelas lain selanjutnya public string id yang nantinya akan mencetak nilai id lalu private string ini merupakan acces modifier dengan type private yang mana ini tidak dapat diakses pada kelas lain dengan parameter addres dengan type data string begitu juga dengan private

float

gpa  yang

nanti akan

mendeklarasikan nilai dari nim yang akan di inputkan,selanjutnya public student()

ini merupakan constructor default yang akan mencetak mahasiswa telah dibuat kemudian public student(string name,string id)ini merupakan constructor dengan parameter dan setelah itu kita panggil this name=name yang artinya nilai yang akan dipanggil adalah nilai name dan juga id selanjutnya adalah kita memasukkan nilai public student(string name,string id,string addres) ini merupakan overload constructor karna pada satu method terdapat lebih dari dua  parameter sehingga disebut sebagai overload parameter kemudian kita panggil nama,id dan alamat yang telah di deklarasikan sebelumnya pada class yang telah dibuat,lalu kita buat public

string

intro()yang mana ini merupakan

constructor tanpa parameter lalu kita mengembalikan nilai nama yaitu “nama saya:” dan juga nim,selanjutnya kita mencetak niali dari ip yang ingin dikeluar kan dengan mengembalikan nilai pada class sebelumnyadan jika ipk yang di masukkan lebih kecil daripada 3 maka yang akan dikeluarkan nanti adalah “ipk saya tidak  boleh diberitahukan pada orang lain”da yang terakhir adalah menampilkan alamat yang telah kita input maka nilainya nanti akan di kembalikan untuk mengambil alamat yang telah di input.

6.3.4. Constructor pada C# Student dkp = new Student(); //Inisialisasi objek dari class student Console.WriteLine(dkp.intro()); //Mengeluarkan nilai dari method intro Console.WriteLine(dkp.tellGPA((float)3.5)); //Menginputkan argument sekaligus mengeluarkan nilai dari method tellGPA Console.WriteLine(dkp.tellAddress()); //mengeluarkan nilai dari method tellAddress Console.ReadKey();

Pada source code constructor ini kita dapat melihat bahwa nama dari  program ini adalah modul5_kelompok16 pada kelas ini kita hanya ingin untuk menampilkan semua niali yang telah kita deklarasikan pada kelas sebelumnya yaitu kita menginisialisasi objek dari class student yang telah kita buat sebelumnya dengan

student

dkp

=

new

student()selanjutnya

kita

tulis

console.writeline(dkp.intro) yang akan mengeluarkan nilai dari method

intro,selanjutnya

console.writeline(dkp.

tellGPA((float)3.5));ini

merupakan penginputan argumen sekaligus mengeluarkan niali dari ipk yaitu 3.5,selanjutnya console.writeline(dkp.tellAdress()) ;yang mana ini adalah untuk mengeluarkan nilai dari method tellAddress yang telah di deklarasikan pada class sebelumnya dan yang terakhir adalah console.Readkey();yang nantinya akan mengakhiri program dan akan mencetak nilai.maka yang akan menjadi outputan dari program ini adalah:

Gambar 6.4.output pada c#

6.3.5. Class pada Python class Student(object): """description of class""" name = "Afrizal Bagas Santoso" id = "21120117130075" address = "GKB" gpa = 0.0 def __init__(self): #default constructor print("Mahasiswa telah dibuat") def intro(self): #method print("Nama saya: " + self.name + " / NIM saya: " + self.id) def tellGPA(self, gpa): #method if gpa >= 3.0: print("IPK saya: " + str(gpa)) else: print("IPK saya tidak boleh diberitahu orang lain") def tellAddress(self): #method print("Alamat saya di" + self.address)

 pada class student(object); ini berarti kelas ini berada pada kelas student

dengan

parameter

name=”Afrizal Bagas S”

input,kemudian

pertama

kita

deklarasikan

 berarti nama dari objek ini adalah Afrizal Bagas S lalu

kita inputkan nim mahasiswa dengan nim 21120117130075 lalu kita deklarasikan alamat dengan

address=”gkb”

lalu yang kita deklarasikan terakhir adalah

gpa=0.0 selanjutnya kita  def_init_(self):ini adalah constructor default maka

nanti yang akan sicetak adalah “mahasiswa telah dibuat” apabila yang diminta adalah constrctor default dan begitu juga dengan yang selanjutnya yaitu def_init_(self,name,id,address): ini merupakan constructor berparameter

namun konstruktor ini merupakan overload konstructor karena terdiri dari 3  parameter yaitu nama ,id dan juga address,lalu setelah itu kita print (“Mahasiswa Telah dibuat”) lalu kita buat self.name=name yang menginputkan nilai nama lalu self.id yang akan menginputkan nilai nim dan address untuk address Setelah itu kita panggil method def intro(self) untuk memprint nama saya:+self.name+(/”Nim

saya:”+

self.id)  

yang mana ini nantinya

mengeluarkan nama dan nim yang telah di deklarasikan sebelumnya.Lalu kita memanggil method def tellGPA(self,GPA)yang akn mencetak nilai dari nim dengan  if gpa>=3 maka akan di print

“ipk saya”

 jika ip yang dimasukkan

lebih besar atau sama dengan 3 keculai jika nilainya kurang dari 3 maka yang akan dikeluarkan adalah “ipk

saya tidak boleh diberitahukan orang lain”. Lalu

akan dilanjutkan dengan nilai dari gpa yang telah diinput sebelumnya,begitu juga dengan method def tellAdress(self) yang nantinya akan mencetak nama alamat sesuai yang kita masukkan yaitu”alamat saya di”lalu akan dilanjutkan dengan inputan self address yang akan menunjukkan nama alamatnya.

6.3.6. Constructor pada Python from Student import Student Student_Three = Student(" Afrizal Bagas Santoso"," 21120117130075"," GKB") Student_Three.intro() Student_Three.tellGPA(3.5) Student_Three.tellAddress() Student_Four = Student(" Lita Muflikha "," 21120117120025"," GKB") Student_Four.intro() Student_Four.tellGPA(2.5) Student_Four.tellAddress()

Pada source code python kali ini dapat kita lihat bahwa  student three=new

student kita menginisialisasi objek dari kelas yang telah dibuat

sebelumnya yaitu objek ketiga dengan nama  Afrizal Bags S dengan Nim 21120117130075

dan

student_three.intro

dengan

alamat

di

“GKB”,lalu

kita

buat

()yang nanti akan mengambil nilai intro pada class

sebelumnya selanjutnya Student_Three.tellGPA(3.5) yang mana ini nantinya akan mencetak nilai dari ipk yaitu

“ipk

saya

3.5” dan

yang terakhir adalah

Student_Three.tellAddress() yang nanti akan mengeluarkan alamat yang telah

di masukkan pada kelas sebelumnya,begitu juga dengan objek yang kedua yaitu student Four=new student kita menginisialisasi objek dari kelas yang telah

dibuat sebelumnya yaitu objek keempat dengan nama Lita Muflikha dengan Nim 21120117120025 dan dengan alamat di GKB,lalu kita buat Student_Four.intro ()yang nanti akan mengambil nilai intro pada class sebelumnya selanjutnya Student_Four.tellGPA(2.5) yang mana ini nantinya akan mencetak “ipk saya tidak

boleh

diberitahu

orang

lain”  

dan

yang

terakhir

adalah

Student_Four.tellAddress() yang nanti akan mengeluarkan alamat yang telah

di masukkan pada kelas sebelumnya yaitu gkb maka akan keluar outputan sebagai  berikut:

Gambar 6.5 output program pada python

6.3.7. Class pada PHP

Pada source code ini kita dapat meihat bahwa nama dari kelas ini adalah class student lalu selanjutnya kita deklarasikan variabel yang ingin dinputkan yaitu public$name=”praktikan

DKP” ini

berarti namanya nanti akan diinputkan pada

main programnya selanjutnya kita dekalrasikan id untuk menginput Nim dengan dan yang kita deklarasikan selanjutnya adalah

public$id=21120117130075”

public$address=”GKB”  yang akan mengeluarkan nama alamatnya yaitu GKB,lalu

kita buat  function__construct(){} yang mana ini merupakan constructor,garis  bawah dibuat dua lalu diberi construct untuk menyatakan bahwa ini adalah construct dan selanjutnya kita buat public function intro(){  yang ini akan menginisialisasi objek lalu kita buat >id ”  yang

echo”nama saya $this ->nameNJM-

nanatinya akan mencetak “Nama

saya”  lalu

akan dimasukkan

nilai dari this yang telah dideklarasikan sebelumnya lalu dilanjutkan dengan nilai this id yaitu nim yang kita input di awal,selanjutnya  public

function

tellAddress(){  yang nantinya akan mengeluarkan nilai alamat lalu akan di print

dengan menuliskan echo”alamat di keluarkan adalah

“alamat

saya di $this -> address”;  maka

saya”   lalu

telah di deklarasikan sebelumnya.

yang akan

akn dilanjutkan dengan nilai this yang

6.3.8. Constructor pada PHP

Pada source code ini dapat kita lihat bahwa kita pertama harus mengisialisasikan constructnya lalu selanjutnya kita deklarasikan objek a dengan $a = func_get_args(); dan juga dengan pendeklarasian objek i dengan $I=func_num_args();

dan

selanjutnya

kita

buat

pengandaian

if(method_exists($this,$f=’.$I)){dan juga kita memanggil niali dari variabel “a” dan variabel “I” dan selanjutnya fuction__construct1($a1){yang mana ini untuk menginisiasi objek a1 lalu nantinya akan dicetak dengan echo”nama saya$1”; yaitu akan memanggil nama yang nanti akan di buat di kode

selanjutnya

begitu

juga

dengan

objek

2

kita

juga

membuat

function__construct2(a1,a2){  yang mana ini merupakan constructor dengan dua parameter yaitu objek  a1 dan objek a2  maka akan dikeluarkan dengan echo”nama saya lalu diikuti dengan nama dari objek 1 yang telah dibuat disertai dengan nim dan juga objek 2,lalu kita buat tampilan outputnya dengan membuat

echo”

Data

Mahasiswa/”  

dan

kita

inisialisasikan kedua objek agar dapat ditampilkan pada outputnya yaitu “Afrizal Bagas Santoso”  dengan

 Nim

nim “21120117130075”  dan “Lita

“21120117120025”  

 berikut:

Muflikha”  dengan

maka outputannya nanti akan ditampilkan sebagai

6.4.

Tugas

package bakmandi; public class rumus { public public public public

float float float float

panjang; lebar; tinggi; hasil;

public float rumusvol(){ float volume; volume = panjang*lebar*tinggi; hasil = volume; return volume; } public float rumusluas(){ float luas; luas = panjang*lebar 2*(lebar*tinggi); hasil = luas; return luas; } }

+

2*(panjang*tinggi)

+

package bakmandi; import java.util.Scanner; public class volume { float float float rumus

volbakmandi; luasperbakmandi; panjang, lebar, tinggi; ope;

public volume(){ ope = new rumus(); inputData(); } public void inputData(){ Scanner scan = new Scanner (System.in); System.out.println ("Masukan Nilai Panjang : "); panjang = scan.nextInt(); ope.panjang = this.panjang; System.out.println("Masukan Nilai Lebar : "); lebar = scan.nextInt(); ope.lebar = this.lebar; System.out.println("Masukan Nilai Tinggi : "); tinggi = scan.nextInt(); ope.tinggi = this.tinggi; } public void volumebakmandi(){ volbakmandi = (float) 1 *ope.rumusvol (); luasperbakmandi =(float)1 *ope.rumusluas(); } public void hasilvolume(){ System.out.println("Volume Bak Mandi "+volbakmandi); } public void hasilluaspermukaan(){ System.out.println("Luas "+luasperbakmandi); } }

Permukaan

Bak

Mandi

adalah:

adalah:

package bakmandi; public class Bakmandi { public static void main(String[] args) { volume ls = new volume (); ls.volumebakmandi(); ls.hasilvolume(); ls.hasilluaspermukaan(); }

}

Pertama kita membuat class membuat data yang ada pada program ini yaitu Panjang, lebar, tinggi, dan  hasil. volumebakmandi digunakan untuk

menampilkan hasil program perhitungan volume bak mandi, kemudian hasilvolume digunakan untuk memanggil fuction rumus volume selanjutnya yang

terakhir hasilluaspermukaan volume.

digunakan untuk memanggil fuction rumus

Gambar 6.6 output tugas pada java

Gambar 6.7 upload tugas pada GitHub

Gambar 6.8 upload tugas pada GitHub

6.5. 1.

Kesimpulan

Memanggil

variable

class

dalam

bahasa

pemrograman

phyton

menggunakan keyword self. 2.

Pada python mengatur encapsulasi digunakan underscore(_)  pada awal variable

untuk

menunjukan

bahwa

variable

tersebut

adalah

 private,selainnya maka akan dianggap sebagai public. 3.

Di dalam bahasa pemrograman PHP, penulisan class diawali dengan keyword class lalu akan diikuti dengan nama dari kelas.

4.

Penulisan method construct pada PHP di awali dengan syntax function, lalu di ikuti dengan __construct. (double underscore dan construct)Fungsi construct tidak perlu dipanggil lagi pada saat instansiasi karena construct akan di jalankan otomatis jika classnya yang di instansiasi.

5.

Constructor adalah method khusus yang akan dijalankan secara otomatis  pada saat sebuah objek dibuat (instansiasi), yakni ketika perintah “new” dijalankan.

6.

Dalam project java terdapat tipe class yaitu driver class, class driver adalah class yang memiliki method main didalamnya,

7.

Object class adalah sebuah class yang menyediakan definisi untuk object yang akan di buat di driver class, class ini dapat di buat sendiri atau menggunakan class yang ada pada Library Java.

8.

Keyword this  pada constructor adalah keyword yang menunjukan bahwa variable tersebut mereferensikan dengan variable level class.

9.

Plain Old Java Object, merupakan class yang berdiri sendiri dan tidak memiliki ketergantungan dengan class lain baik itu extends maupun implements.

10.

Default Constructor akan melakukan 3 hal kepada variable class yaitu: -Mengisi semua variable bertipe numeric(float, int, double dsb) menjadi 0. -Mengisi semua variable bertipe boolean menjadi false.

-Mengisi semua varible bertipestring menjadi null.

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF