ภาษาที่สนับสนุนโปรแกรมแบบนี้ ได้แก่ สมอลล์ทอล์ก (Smalltalk) ซีพลัสพลัส (C++) จาวา (Java) เป็นต้น แนวความคิดในการเขียนโปรแกรมเชิงวัตถุประกอบไปด้วยแนวคิดเกี่ยวกับชนิด (type) คลาส (Class) และวัตถุ (Object) สำหรับชนิด คือ กลุ่มของชนิดข้อมูล ซึ่งชนิดของข้อมูลพื้นฐาน ได้แก่ จำนวนเต็ม จำนวนจริง ค่าตรรกะ (Boolean) และกลุ่มตัวอักษร (Character String) ผู้ใช้สามารถสร้างชนิดของข้อมูลชนิดใหม่ได้ โดยใช้ตัวสร้างชนิด (Type Constructor)ซึ่งชนิดของข้อมูลที่สร้างได้คือ
1. โครงสร้างแบบระเบียน (Record Structures) กำหนดรายการของชนิดข้อมูลจำนวน n ชนิด ได้แก่ T1, T2, ..., Tn พร้อมทั้งระบุชื่อชนิดของข้อมูลแต่ละตัว ผู้ใช้สามารถสร้างชนิดของระเบียน ซึ่งประกอบด้วย n ตัว ได้ โดยองค์ประกอบที่ i เป็นชนิด Ti
2. ชนิดของข้อมูลแบบกลุ่ม (Collection Types) ถ้าชนิดของข้อมูล T ถูกกำหนดขึ้น ผู้ใช้สามารถสร้างชนิดของข้อมูลชนิดใหม่ได้ โดยการระบุกลุ่มของชนิดข้อมูล T เช่น แถวลำดับ (Array) รายการ (List) และเซต (Set) เป็นต้น
3. ชนิดของข้อมูลแบบอ้างถึง (Reference Types) เป็นชนิดของข้อมูลที่อ้างถึงชนิดของข้อมูล T อาจมองง่ายๆ ได้ว่า ชนิดข้อมูลแบบอ้างถึงคือ ตัวชี้ (Pointer) ในภาษาซี และภาษาซีพลัสพลัสนั่นเอง เพียงแต่ว่าในทางระบบฐานข้อมูล ชนิดของข้อมูลแบบนี้จะต้องอ้างถึงหลายๆ สิ่ง ไม่ใช่เป็นเพียงแค่ตัวชี้ธรรมดาเท่านั้น นั่นคือ จะต้องอ้างถึงรายละเอียดของการจัดเก็บระเบียนหนึ่ง ๆ เช่น เลขที่ของจานบันทึก กลุ่มระเบียนภายในจานบันทึกนั้น พร้อมทั้งตำแหน่งภายในกลุ่ม ระเบียนนั้นด้วย