วัตถุประสงค์การเรียนรู้ 3.1.A: แสดงการออกแบบโปรแกรมโดยใช้ภาษาธรรมชาติหรือสร้างแผนภาพที่ระบุคลาสในโปรแกรมและ抽象ข้อมูลและกระบวนการที่พบในแต่ละคลาสโดยรวมถึงคุณสมบัติและการกระทำทั้งหมด
- 3.1.A.1 Abstraction คือกระบวนการลดความซับซ้อนด้วยการมุ่งเน้นไปที่แนวคิดหลัก通过将ไม่เกี่ยวข้องกับคำถามปัจจุบันซ่อนไว้และรวบรวมรายละเอียดที่เกี่ยวข้องและมีประโยชน์เข้าด้วยกัน Abstraction ช่วยลดความซับซ้อนและทำให้สามารถมุ่งเน้นไปที่แนวคิดได้
- 3.1.A.2 Data abstraction ให้การแยกระหว่างคุณสมบัติเชิงนามธรรมของชนิดข้อมูล รายละเอียดจริงของการแสดงผล Data abstraction จัดการความซับซ้อนโดยให้ชื่อแก่ข้อมูลโดยไม่อ้างอิงรายละเอียดเฉพาะของการแสดงผล ข้อมูลอาจอยู่ในรูปแบบของตัวแปรเดียวหรือกลุ่มข้อมูล เช่น ในคลาสหรือชุดข้อมูล
- 3.1.A.3 Attribute เป็นประเภทหนึ่งของ Data abstraction ที่กำหนดไว้ในคลาสภายนอก-method หรือ constructor Instance variable เป็น attribute ที่มีค่าเฉพาะสำหรับแต่ละ instance ของคลาส Class variable เป็น attribute ที่แบ่งปันโดยทุก instance ของคลาส
- 3.1.A.4 Procedural abstraction ให้ชื่อสำหรับกระบวนการและทำให้สามารถใช้ method ได้โดยรู้เพียงว่าทำอะไร ไม่ใช่วิธีการทำ ผ่าน method decomposition นักเขียนโปรแกรมจะย่อยพฤติกรรมขนาดใหญ่ของคลาสออกเป็นพฤติกรรมย่อยๆ โดยการสร้าง methods เพื่อแสดงพฤติกรรมย่อยแต่ละอย่าง Procedural abstraction อาจดึงคุณลักษณะที่ร่วมกันมาเพื่อทำให้ฟังก์ชัน性工作ทั่วไปแทนที่จะทำซ้ำโค้ด สิ่งนี้ช่วยให้ใช้โค้ดซ้ำได้ ซึ่งช่วยจัดการความซับซ้อน
- 3.1.A.5 การใช้ parameters ช่วยให้ procedures可以被 generalize ทำให้ procedures สามารถถูก reuse ด้วยช่วงของ input values หรือ arguments
- 3.1.A.6 การใช้ procedural abstraction ในโปรแกรมอนุญาตให้นักเขียนโปรแกรมเปลี่ยนแปลงภายในของ method (เพื่อให้เร็วขึ้น มีประสิทธิภาพมากขึ้น ใช้พื้นที่จัดเก็บน้อยลง ฯลฯ) โดยไม่ต้องแจ้ง给用户关于การเปลี่ยนแปลงตราบใดที่ method signature และสิ่งที่ method ทำยังคงอยู่
- 3.1.A.7 ก่อนที่จะดำเนินการสร้างคลาส จะเป็นการดีที่จะใช้เวลาในการออกแบบแต่ละคลาส รวมถึง properties และ behaviors การออกแบบนี้สามารถแสดงได้ด้วยภาษาธรรมชาติหรือแผนภาพ

