Learning Objective 3.1.A: Represent the design of a program by using natural language or creating diagrams that indicate the classes in the program and the data and procedural abstractions found in each class by including all attributes and behaviors.
- 3.1.A.1 Abstraction is the process of reducing complexity by focusing on the main idea. By hiding details irrelevant to the question at hand and bringing together related and useful details, abstraction reduces complexity and allows one to focus on the idea.
- 3.1.A.2 Data abstraction provides a separation between the abstract properties of a data type and the concrete details of its representation. Data abstraction manages complexity by giving data a name without referencing the specific details of the representation. Data can take the form of a single variable or a collection of data, such as in a class or a set of data.
- 3.1.A.3 An attribute is a type of data abstraction that is defined in a class outside any method or constructor. An instance variable is an attribute whose value is unique to each instance of the class. A class variable is an attribute shared by all instances of the class.
- 3.1.A.4 Procedural abstraction provides a name for a process and allows a method to be used only knowing what it does, not how it does it. Through method decomposition, a programmer breaks down larger behaviors of the class into smaller behaviors by creating methods to represent each individual smaller behavior. A procedural abstraction may extract shared features to generalize functionality instead of duplicating code. This allows for code reuse, which helps manage complexity.
- 3.1.A.5 Using parameters allows procedures to be generalized, enabling the procedures to be reused with a range of input values or arguments.
- 3.1.A.6 Using procedural abstraction in a program allows programmers to change the internals of a method (to make it faster, more efficient, use less storage, etc.) without needing to notify method users of the change as long as the method signature and what the method does is preserved.
- 3.1.A.7 Prior to implementing a class, it is helpful to take time to design each class including its attributes and behaviors. This design can be represented using natural language or diagrams.
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.

