Lompat ke konten

Pembuatan Kelas

AP Ilmu Komputer A · Topik 3

Pelajaran video untuk topik ini Buka halaman video
7:26

Pembuatan Kelas

Berikut seorang siswa, disimpan sebagai tiga variabel terpisah: nama, tahun, dan nilai. Itu berhasil. Sekarang tambahkan seribu siswa. Anda memerlukan tiga ribu variabel…

Narasi bahasa Inggris · Subtitle bahasa Inggris + 中文 disematkan langsung

3.1

Abstraksi dan Desain Program

Silabus

Tujuan Pembelajaran 3.1.A: Representasikan desain program menggunakan bahasa alami atau membuat diagram yang menunjukkan kelas-kelas dalam program dan abstraksi data serta prosedural yang ditemukan di setiap kelas dengan menyertakan semua atribut dan perilaku.

  • 3.1.A.1 Abstraksi adalah proses mengurangi kompleksitas dengan memfokuskan pada ide utama. Dengan menyembunyikan detail yang tidak relevan dengan pertanyaan saat ini dan mengumpulkan detail yang terkait dan berguna, abstraksi mengurangi kompleksitas dan memungkinkan seseorang untuk memfokuskan pada ide tersebut.
  • 3.1.A.2 Abstraksi data menyediakan pemisahan antara sifat abstrak dari tipe data dan detail konkret dari representasinya. Abstraksi data mengelola kompleksitas dengan memberikan nama pada data tanpa merujuk pada detail spesifik representasinya. Data dapat berbentuk variabel tunggal atau kumpulan data, seperti dalam kelas atau set data.
  • 3.1.A.3 Atribut adalah jenis abstraksi data yang didefinisikan dalam kelas di luar metode atau konstruktor apa pun. Variabel instance adalah atribut yang nilainya unik untuk setiap instance dari kelas tersebut. Variabel kelas adalah atribut yang dibagikan oleh semua instance dari kelas tersebut.
  • 3.1.A.4 Abstraksi prosedural menyediakan nama untuk suatu proses dan memungkinkan sebuah metode digunakan hanya dengan mengetahui apa yang dilakukannya, bukan bagaimana hal itu dilakukan. Melalui dekomposisi metode, seorang programmer memecah perilaku kelas yang lebih besar menjadi perilaku yang lebih kecil dengan membuat metode untuk mewakili setiap perilaku kecil individu. Abstraksi prosedural dapat mengekstrak fitur bersama untuk mengeneralisasi fungsi daripada menduplikasi kode. Hal ini memungkinkan penggunaan kembali kode, yang membantu mengelola kompleksitas.
  • 3.1.A.5 Menggunakan parameter memungkinkan prosedur digeneralisasikan, memungkinkan prosedur digunakan kembali dengan rentang nilai input atau argumen.
  • 3.1.A.6 Menggunakan abstraksi prosedural dalam program memungkinkan programmer mengubah internal metode (untuk membuatnya lebih cepat, lebih efisien, menggunakan penyimpanan kurang, dll.) tanpa perlu memberi tahu pengguna metode tentang perubahan tersebut selama tanda tangan metode dan apa yang dilakukan metode tetap terjaga.
  • 3.1.A.7 Sebelum mengimplementasikan kelas, sangat membantu meluangkan waktu untuk merancang setiap kelas termasuk atribut dan perilakunya. Desain ini dapat direpresentasikan menggunakan bahasa alami atau diagram.

Sumber: Deskripsi Kursus dan Ujian College Board AP

Teka-teki yang sedang berlangsung: kelas dan metode adalah bagian modular dari desain program yang lebih besar
Teka-teki yang sedang berlangsung: kelas dan metode adalah bagian modular dari desain program yang lebih besar

Abstraksi berarti menyembunyikan detail di balik antarmuka sederhana – Anda menggunakan String tanpa tahu bagaimana cara menyimpan karakter. Desain yang baik memecah masalah menjadi kelas-kelas, masing-masing bertanggung jawab atas satu ide. Topik ini tentang menulis kelas Anda sendiri.

Mendekomposisi program menjadi modul dan sub-modul
Mendekomposisikan program menjadi modul dan sub-modul
3.2

Dampak Desain Program

Silabus

Tujuan Pembelajaran 3.2.A: Jelaskan implikasi sosial dan etika dari sistem komputasi.

  • 3.2.A.1 Keandalan sistem merujuk pada kemampuan program untuk menjalankan tugasnya sesuai harapan di bawah kondisi yang ditetapkan tanpa kegagalan. Pemrogram harus berusaha memaksimalkan keandalan sistem dengan menguji program dengan berbagai kondisi.
  • 3.2.A.2 Pembuatan program memiliki dampak pada masyarakat, ekonomi, dan budaya. Dampak-dampak ini dapat bersifat menguntungkan maupun merugikan. Program yang dirancang untuk memenuhi kebutuhan atau memecahkan masalah dapat menimbulkan efek merugikan tak terduga di luar penggunaannya yang dimaksudkan.
  • 3.2.A.3 Isu hukum dan kekhawatiran terkait hak kekayaan intelektual muncul saat pembuatan program. Para pemrogram sering kali menggunakan ulang kode yang ditulis oleh orang lain dan dipublikasikan sebagai sumber terbuka (open source) serta gratis digunakan. Penggunaan kode yang tidak dipublikasikan sebagai sumber terbuka mengharuskan pemrogram untuk mendapatkan izin dan seringkali membeli kode tersebut sebelum mengintegrasikannya ke dalam program mereka.

Sumber: Deskripsi Kursus dan Ujian College Board AP

Pilihan desain mempengaruhi apakah kode benar, mudah dibaca, dan dapat digunakan kembali. Enkapsulasi – menyimpan data secara privat dan mengeksposnya hanya melalui metode – melindungi state objek dari penyalahgunaan dan memungkinkan Anda mengubah bagian dalam tanpa merusak pengguna kelas. Penamaan yang bijaksana, metode tunggal-tujuan, dan pengujian mengurangi bug.

Desain juga membawa tanggung jawab di luar kode. Keandalan sistem - sebuah program yang menjalankan tugasnya sesuai harapan, tanpa kegagalan - adalah sesuatu yang pemrogram harus maksimalkan melalui desain dan pengujian yang hati-hati. Program memiliki dampak nyata pada masyarakat, ekonomi, dan budaya yang dapat baik menguntungkan maupun merugikan. Dan membuat program menimbulkan kekhawatiran hukum dan hak kekayaan intelektual: pemrogram sering menggunakan ulang kode yang dipublikasikan sebagai open source dan gratis digunakan, tetapi harus menghormati lisensinya dan memberikan kredit daripada meniru karya orang lain sebagai milik mereka sendiri.

Kosa kata Latih
English Bahasa Indonesia
Abstraction/əbˈstrækʃn/ Abstraksi
Encapsulation/ɪnˌkæpsjʊˈleɪʃn/ Pencapsulan (Encapsulation)
System reliability/ˈsɪstəm rɪˌlaɪəˈbɪlɪti/ Keandalan sistem
legal and intellectual-property/ˈliːɡl ænd ˌɪntəˈlektʃuːəl ˈprɒpəti/ hukum dan properti intelektual
open source/ˈəʊpən sɔːs/ open source
instance variables/ˈɪnstəns ˈveərɪəblz/ variabel instance
3.3

Anatomi Kelas

Silabus

Tujuan Pembelajaran 3.3.A: Mengembangkan kode untuk menetapkan batasan akses dan visibilitas pada kelas, data, konstruktor, dan metode.

  • 3.3.A.1 Encapsulasi data adalah teknik di mana detail implementasi sebuah kelas disembunyikan dari kelas eksternal. Kata kunci public dan private memengaruhi akses terhadap kelas, data, konstruktor, dan metode. Kata kunci private membatasi akses hanya pada kelas pengumuman, sedangkan kata kunci public memungkinkan akses dari kelas di luar kelas pengumuman.
  • 3.3.A.2 Dalam kursus ini, kelas selalu ditetapkan sebagai public dan dideklarasikan dengan kata kunci class.
  • 3.3.A.3 Dalam kursus ini, konstruktor selalu ditetapkan sebagai public.
  • 3.3.A.4 Variabel instance milik objek, dan setiap objek memiliki salinan variabelnya sendiri.
  • 3.3.A.5 Akses terhadap atribut harus dijaga tetap internal dalam kelas guna mencapai encapsulasi. Oleh karena itu, praktik pemrograman yang baik adalah menetapkan variabel instance untuk atribut-atribut tersebut sebagai private kecuali spesifikasi kelas menyatakan sebaliknya.
  • 3.3.A.6 Akses terhadap perilaku bisa bersifat internal atau eksternal terhadap kelas. Metode yang ditetapkan sebagai public dapat diakses secara internal maupun eksternal terhadap sebuah kelas, sementara metode yang ditetapkan sebagai private hanya dapat diakses secara internal terhadap kelas.

Sumber: Deskripsi Kursus dan Ujian College Board AP

Sebuah kelas memiliki tiga bagian: variabel instance (field – data objek), konstruktor (membangun objek), dan metode (perilaku). Field biasanya private; metode biasanya public:

Diagram kelas: atribut privat dan publik metode
Diagram kelas: atribut privat dan publik metode
public class Student {
    private String name;      // instance variable
    private int score;

    public Student(String n, int s) {   // constructor
        name = n;
        score = s;
    }
    public int getScore() { return score; }   // accessor
}
Cetak biru: sebuah kelas adalah template yang mendefinisikan bagaimana objek tipe tersebut dibangun
Cetak biru: sebuah kelas adalah template yang mendefinisikan bagaimana objek tipe tersebut dibangun
Jelajahi

Lihat bidang objek sebagai kotak-kotak

Kelas mengelompokkan data terkait (bidangnya) dan metode. Setiap objek mendapatkan set kotak bidangnya sendiri; menugaskan ke salah satunya hanya mengubah objek tersebut.

Kosa kata Latih
English Bahasa Indonesia
constructor/kənˈstrʌktə/ konstruktor
accessor (getter)/əkˈsesə/ aksesor (getter)
3.4

Konstruktor

Silabus

Tujuan Pembelajaran 3.4.A: Mengembangkan kode untuk mendeklarasikan variabel instance bagi atribut yang akan diinisialisasi dalam tubuh konstruktor sebuah kelas.

  • 3.4.A.1 Status (state) suatu objek merujuk pada atribut dan nilainya pada waktu tertentu, dan didefinisikan oleh variabel instance yang dimiliki objek tersebut. Hal ini mendefinisikan hubungan memiliki (has-a) antara objek dan variabel instance-nya.
  • 3.4.A.2 Konstruktor digunakan untuk menetapkan status awal sebuah objek, yang harus mencakup nilai awal untuk semua variabel instance. Ketika konstruktor dipanggil, memori dialokasikan untuk objek dan referensi objek yang terkait dikembalikan. Parameter konstruktor, jika ditentukan, menyediakan data untuk menginisialisasi variabel instance.
  • 3.4.A.3 Ketika objek yang dapat diubah (mutable object) merupakan parameter konstruktor, variabel instance harus diinisialisasi dengan salinan objek yang dirujuk. Dengan cara ini, variabel instance tidak memegang referensi ke objek asli, dan metode dicegah dari memodifikasi status objek asli.
  • 3.4.A.4 Ketika tidak ada konstruktor yang ditulis, Java menyediakan konstruktor tanpa parameter, dan variabel instance diatur ke nilai default sesuai dengan tipe data atributnya. Konstruktor ini disebut konstruktor default.
  • 3.4.A.5 Nilai default untuk atribut bertipe int adalah 0. Nilai default untuk atribut bertipe double adalah 0.0. Nilai default untuk atribut bertipe boolean adalah false. Nilai default untuk tipe referensi adalah null.

Sumber: Deskripsi Kursus dan Ujian College Board AP

Sebuah konstruktor memiliki nama yang sama dengan kelas dan tidak memiliki tipe kembalian. Ia berjalan ketika Anda menulis new, dan tugasnya adalah menginisialisasi field. Sebuah kelas dapat memiliki beberapa konstruktor dengan daftar parameter yang berbeda (overloading); sebuah konstruktor tanpa-argumen menetapkan nilai default.

Kosa kata Latih
English Bahasa Indonesia
overloading/ˌəʊvəˈləʊdɪŋ/ pemuatan ulang
3.5

Metode: Cara Menulisnya

Silabus

Tujuan Pembelajaran 3.5.A: Mengembangkan kode untuk mendefinisikan perilaku objek melalui metode yang ditulis dalam kelas menggunakan nilai primitif dan menentukan hasil pemanggilan metode-metode tersebut.

  • 3.5.A.1 Metode void tidak mengembalikan nilai. Header-nya berisi kata kunci void sebelum nama metode.
  • 3.5.A.2 Metode non-void mengembalikan satu nilai. Header-nya mencakup tipe kembali (return type) menggantikan kata kunci void.
  • 3.5.A.3 Dalam metode non-void, ekspresi return yang kompatibel dengan tipe kembali dievaluasi, dan nilainya dikembalikan. Ini disebut kembali melalui nilai (return by value).
  • 3.5.A.4 Kata kunci return digunakan untuk mengembalikan alur kendali ke titik di mana metode atau konstruktor dipanggil. Kode apa pun yang berada secara berurutan setelah pernyataan return tidak akan pernah dieksekusi. Mengeksekusi pernyataan return di dalam pernyataan pemilihan atau iterasi akan menghentikan pernyataan tersebut dan keluar dari metode atau konstruktor.
  • 3.5.A.5 Metode aksesor memungkinkan objek dari kelas lain untuk mendapatkan salinan nilai variabel instance atau variabel kelas. Metode aksesor adalah metode non-void.
  • 3.5.A.6 Metode mutator (modifikator) adalah metode yang mengubah nilai variabel instance atau variabel kelas. Metode mutator sering kali merupakan metode void.
  • 3.5.A.7 Metode dengan parameter menerima nilai melalui parameter tersebut dan menggunakan nilai-nilai tersebut dalam menyelesaikan tugas metode.
  • 3.5.A.8 Ketika argumen adalah nilai primitif, parameter diinisialisasi dengan salinan nilai tersebut. Perubahan pada parameter tidak berpengaruh pada argumen yang bersangkutan.

Sumber: Deskripsi Kursus dan Ujian College Board AP

Sebuah metode memiliki signature, tipe kembalian, dan badan. Sebuah aksesor (getter) mengembalikan informasi tanpa mengubah objek; sebuah mutator (setter) mengubah field. Metode yang mengembalikan nilai harus memiliki return dari tipe yang benar di setiap jalur; metode void tidak mengembalikan apa pun.

public void setScore(int s) { score = s; }   // mutator
public String toString() { return name + ": " + score; }
Jelajahi

Ikuti pemanggilan metode dan pengembaliannya

Memanggil metode mendorong bingkai dengan parameternya; ketika mencapai return, bingkai dilepas dan nilai kembali ke Caller.

Kosa kata Latih
English Bahasa Indonesia
mutator (setter)/mjuːˈteɪtə/ mutator (setter)
static (class) variable/ˈstætɪk ˈveərɪəbl/ variabel statis (kelas)
3.6

Mengirim dan Mengembalikan Referensi Objek

Silabus

Tujuan Pembelajaran 3.6.A: Mengembangkan kode untuk mendefinisikan perilaku objek melalui metode yang ditulis dalam kelas menggunakan referensi objek dan menentukan hasil pemanggilan metode-metode tersebut.

  • 3.6.A.1 Ketika argumen adalah referensi objek, parameter diinisialisasi dengan salinan dari referensi tersebut; hal ini tidak membuat salinan objek baru yang independen. Jika parameter merujuk pada objek yang dapat diubah (mutable), metode atau konstruktor dapat menggunakan referensi ini untuk mengubah keadaan objek. Merupakan praktik pemrograman yang baik untuk tidak memodifikasi objek yang dapat diubah yang dilempar sebagai parameter kecuali diperlukan dalam spesifikasi.
  • 3.6.A.2 Ketika ekspresi return mengevaluasi ke sebuah referensi objek, maka referensilah yang dikembalikan, bukan referensi ke salinan objek baru.
  • 3.6.A.3 Metode tidak dapat mengakses data pribadi dan metode dari parameter yang memegang referensi ke objek kecuali jika parameter tersebut memiliki tipe yang sama dengan kelas pembungkus dari metode tersebut.

Sumber: Deskripsi Kursus dan Ujian College Board AP

= menyalin referensi, bukan objek

Ketika Anda mengirim objek ke metode, Java menyalin referensi, sehingga metode bertindak pada objek yang sama – perubahan pada field-nya terlihat oleh pemanggil. (Primitif disalin oleh nilai, jadi perubahannya tidak.) Metode juga dapat mengembalikan referensi ke sebuah objek. Karena String bersifat immutable, mengirimkannya aman; mengirim objek yang dapat diubah memungkinkan metode mengubahnya.

Java mengirim by value: metode mendapatkan salinan; true pass by reference, yang tidak dimiliki Java, akan memungkinkannya assigns ulang variabel pemanggil
Java selalu mengirim by value (kiri): metode mendapatkan salinan dari referensinya. True pass by reference (kanan) – yang tidak dimiliki Java – akan memungkinkannya metode assigns ulang variabel pemanggil itu sendiri.

Keterampilan ujian: ketahui bahwa memutasi field objek di dalam metode mempengaruhi yang asli, tetapi assigns ulang parameter (param = new...) tidak mempengaruhi pemanggil.

Contoh terpecahkan. Misalkan s adalah Student dengan skor 50, dan kami memanggil tweak(s):

public static void tweak(Student a) {
    a.setScore(100);          // (1) mutates the shared object
    a = new Student("Z", 0);  // (2) repoints the local copy only
    a.setScore(5);            // (3) changes only the new local object
}

Baris (1) mengubah objek yang ditunjuk oleh s, sehingga pemanggil sekarang melihat 100. Baris (2) membuat salihan sendiri dari metode yang menunjuk ke objek baru – s pemanggil tetap utuh – dan baris (3) hanya mempengaruhi objek baru itu. Setelah panggilan, s.getScore() adalah 100: mutasinya menempel, assigns ulangnya tidak.

3.7

Variabel Kelas dan Metode Kelas

Silabus

Tujuan Pembelajaran 3.7.A: Mengembangkan kode untuk mendefinisikan perilaku kelas melalui metode kelas.

  • 3.7.A.1 Metode kelas tidak dapat mengakses atau mengubah nilai variabel instance atau memanggil metode instance tanpa dilemparkan sebuah instance dari kelas tersebut melalui parameter.
  • 3.7.A.2 Metode kelas dapat mengakses atau mengubah nilai variabel kelas dan dapat memanggil metode kelas lainnya.

Tujuan Pembelajaran 3.7.B: Mengembangkan kode untuk mendeklarasikan variabel kelas yang milik kelas.

  • 3.7.B.1 Variabel kelas milik kelas, dengan semua objek dari sebuah kelas berbagi satu salinan dari variabel kelas tersebut. Variabel kelas ditandai dengan kata kunci static sebelum tipe variabel.
  • 3.7.B.2 Variabel kelas yang ditunjuk public diakses di luar kelas dengan menggunakan nama kelas dan operator titik, karena mereka terkait dengan kelas, bukan objek dari kelas.
  • 3.7.B.3 Ketika sebuah variabel dideklarasikan final, nilainya tidak dapat dimodifikasi.

Sumber: Deskripsi Kursus dan Ujian College Board AP

field statis vs instance

Sebuah variabel statis (kelas), ditandai static, dibagi oleh semua objek dari kelas – satu salinan total (misalnya counter berapa banyak objek yang ada). Metode statis milik kelas dan tidak dapat menggunakan field instance secara langsung. Akseslah mereka dengan nama kelas: Student.getCount().

3.8

Ruang Lingkup dan Akses

Silabus

Tujuan Pembelajaran 3.8.A: Menjelaskan di mana variabel dapat digunakan dalam kode.

  • 3.8.A.1 Variabel lokal adalah variabel yang dideklarasikan di header atau badan blok kode. Variabel lokal hanya dapat diakses di blok tempat mereka dideklarasikan. Karena konstruktor dan metode adalah blok kode, parameter untuk konstruktor atau metode juga dianggap sebagai variabel lokal. Variabel-variabel ini hanya dapat digunakan di dalam konstruktor atau metode dan tidak dapat dideklarasikan sebagai public atau private.
  • 3.8.A.2 Ketika ada variabel lokal atau parameter dengan nama yang sama dengan variabel instance, nama variabel akan merujuk ke variabel lokal alih-alih variabel instance di dalam badan konstruktor atau metode.

Sumber: Deskripsi Kursus dan Ujian College Board AP

Ruang lingkup adalah tempat nama terlihat. Variabel lokal yang dideklarasikan dalam metode hanya ada di dalamnya; parameter hanya ada di metodenya; variabel instance terlihat di seluruh objek. Modulator akses mengontrol visibilitas melintasi kelas: private (hanya kelas ini) versus public (di mana saja). Variabel lokal menyelimuti field dengan nama yang sama – sumber bug.

Variabel global terlihat di mana saja; variabel lokal hanya di dalam bloknya
Variabel global terlihat di mana saja; variabel lokal hanya di dalam bloknya
Kosa kata Latih
English Bahasa Indonesia
Scope/skəʊp/ Cakupan
3.9

Kata Kunci this

Silabus

Tujuan Pembelajaran 3.9.A: Mengembangkan kode untuk ekspresi yang merujuk pada diri sendiri dan menentukan hasil dari ekspresi-ekspresi tersebut.

  • 3.9.A.1 Di dalam metode instance atau konstruktor, kata kunci this bertindak sebagai variabel khusus yang memegang referensi ke objek saat ini—objek yang metode atau konstruktornya sedang dipanggil.
  • 3.9.A.2 Kata kunci this dapat digunakan untuk melempar objek saat ini sebagai argumen dalam pemanggilan metode.
  • 3.9.A.3 Metode kelas tidak memiliki referensi this.

Sumber: Deskripsi Kursus dan Ujian College Board AP

this adalah referensi ke objek saat ini. Gunakan ini untuk membedakan field dari parameter dengan nama yang sama, atau untuk memanggil metode lain dari objek yang sama:

public Student(String name, int score) {
    this.name = name;      // this.name is the field; name is the parameter
    this.score = score;
}

Keterampilan ujian: ketika parameter konstruktor atau setter memiliki nama yang sama dengan field, Anda harus menulis this.field = param – tanpa this, penugasan tersebut tidak melakukan apa-apa yang berguna.

3.9

Tips ujian

  • Rancanglah dengan metode dan kelas: enkapsulasi data sebagai private fields dan tampilkan perilaku melalui metode publik.
  • Pahami perbedaan antara objek dan kelasnya, serta fakta bahwa objek dikirim berdasarkan nilai — parameter mendapatkan salinan referensinya, sehingga metode dapat mengubah state objek, tetapi menetapkan ulang parameter tidak mempengaruhi pemanggil (Java tidak memiliki pengiriman berdasarkan referensi).
  • Jelajahi array dan ArrayList dengan aman — ukurannya adalah length vs .size(), dan penghapusan selama perulangan akan menggeser indeks.
  • Jejak metode rekursif untuk menentukan hasilnya: temukan kasus basis terlebih dahulu, lalu ikuti setiap panggilan rekursif hingga nilainya kembali (menulis kode rekursif berada di luar cakupan ujian).
  • Kenali kosakata pewarisan — superclass, subclass, method overriding, dan bahwa setiap kelas adalah subclass dari Object (merancang dan mengimplementasikan pewarisan berada di luar ruang lingkup ujian).

Pelajaran interaktif untuk topik ini

Kerjakan langkah demi langkah, dengan latihan pengecekan instan.

Soal-Soil Masa Lalu

Topik lain dalam AP Ilmu Komputer A

Masuk atau buat akun

IGCSE, A-Level & AP