Bài giảng Lập trình Java cơ bản - Chương 1: Giới thiệu lập trình hướng đối tượng

ppt 25 trang hapham 2830
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình Java cơ bản - Chương 1: Giới thiệu lập trình hướng đối tượng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pptbai_giang_lap_trinh_may_tinh_chuong_1_gioi_thieu_lap_trinh_h.ppt

Nội dung text: Bài giảng Lập trình Java cơ bản - Chương 1: Giới thiệu lập trình hướng đối tượng

  1. LẬP TRÌNH JAVA CƠ BẢN Chương 1 GIỚI THIỆU LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Lê Tân Bộ môn: Lập trình máy tính 1
  2. Tài liệu tham khảo n Giáo trình “Lập trình Java cơ bản” n Trần Tiến Dũng - Giáo trình lý thuyết và bài tập Java - NXB Giáo dục, 1999 n Nell Dale, Chip Weems - Java and Software Design - Mark Headington, 2001 2
  3. Mục đích và yêu cầu n Làm quen với các cú pháp và phong cách lập trình hướng đối tượng với ngôn ngữ Java. n Nghiên cứu các mô hình lập trình Java trong việc phát triển các phần mềm hướng đối tượng n Tạo và biên dịch các chương trình Java như các chương trình ứng dụng n Tìm và sử dụng các tài liệu chính thức của Java 3
  4. Nội dung môn học 1. Giới thiệu Lập trình 6. Điều kiện, biểu thức hướng đối tượng logic và cấu trúc chọn 2. Ngôn ngữ lập trình Java 7. Lớp và phương thức 3. Điều khiển sự kiện xuất 8. Thừa kế, đa hình và 4. Các kiểu số và biểu phạm vi thức 9. Nhập xuất file, lặp và 5. Điều khiển sự kiện ngoại lệ nhập 10. Mảng 11. Danh sách và đệ quy 4
  5. Nội dung chương 1 n Tổng quan về lập trình hướng đối tượng (OOP) n Các tính chất cơ bản của lập trình hướng đối tượng n Các ngôn ngữ lập trình hướng đối tượng 5
  6. 1.1 Tổng quan về lập trình hướng đối tượng n Lập trình tuyến tính: • Lập trình bằng assembly • Các ngôn ngữ cấp cao lần đầu tiên được sử dụng • Các chương trình tương đối ngắn (<100 dòng) • Các ngôn ngữ lập trình không còn phù hợp với công việc lập trình đòi hỏi cao hơn 6
  7. 1.1 Tổng quan về lập trình hướng đối tượng n Lập trình cấu trúc: • Vào cuối các năm 1960, đầu 1970, ngôn ngữ lập trình có cấu trúc ra đời • Chương trình có cấu trúc được tổ chức theo các công việc mà chúng thực hiện • Chương trình chia nhỏ thành các chương trình con riêng rẽ (còn gọi là hàm hay thủ tục) thực hiện các công việc rời rạc trong quá trình lớn hơn, phức tạp hơn. 7
  8. 1.1 Tổng quan về lập trình hướng đối tượng n Lập trình cấu trúc: • Thông tin được chuyển giao giữa các hàm thông qua các tham số • Các hàm có thể có các biến cục bộ • Các hàm có thể được xem là các chương trình con được đặt chung với nhau để xây dựng nên một ứng dụng • Đã có sự trừu tượng hóa theo chức năng (Functional abstraction) 8
  9. 1.1 Tổng quan về lập trình hướng đối tượng n Nhược điểm của Lập trình cấu trúc: • Khi độ phức tạp của một chương trình tăng lên, sự phụ thuộc của nó vào các kiểu dữ liệu cơ bản cũng tăng theo • Khi có sự thay đổi trong các dữ liệu này, cần thực hiện các thay đổi mọi nơi có thao tác tác động trên chúng • Khi có nhiều lập trình viên làm việc theo nhóm, sai sót trong việc trao đổi thông tin giữa các thành viên có thể dẫn tới hậu quả là mất rất nhiều thời gian để sửa chữa chương trình 9
  10. 1.1 Tổng quan về lập trình hướng đối tượng n Trừu tượng hóa dữ liệu : • Các cấu trúc dữ liệu và các phần tử có thể được sử dụng mà không cần bận tâm đến các chi tiết cụ thể • Trừu tượng hóa theo dữ liệu đã tồn tại sẵn trong mọi ngôn ngữ lập trình • Gần đây, đã phát triển các ngôn ngữ cho phép chúng ta định nghĩa các kiểu dữ liệu trừu tượng riêng 10
  11. 1.1 Tổng quan về lập trình hướng đối tượng n Lợi ích của trừu tượng hóa dữ liệu : • Tập trung vào vấn đề đang giải quyết • Xác định những thuộc tính và hành động thiết yếu • Loại trừ những chi tiết không cần thiết 11
  12. 1.1 Tổng quan về lập trình hướng đối tượng n Lập trình hướng đối tượng (OOP): • Được xây dựng trên nền tảng của khái niệm lập trình có cấu trúc và sự trừu tượng hóa dữ liệu • Một chương trình hướng đối tượng được thiết kế xoay quanh dữ liệu mà chúng ta có thể làm việc trên đó, hơn là theo bản thân chức năng của chương trình • Lập trình hướng đối tượng liên kết cấu trúc dữ liệu với các thao tác trên dữ liệu đó 12
  13. 1.1 Tổng quan về lập trình hướng đối tượng n Ưu điểm của Lập trình hướng đối tượng (OOP): • Tạo ra sự gần gũi giữa bài toán thực tế và việc cài đặt chương trình • Đẩy mạnh việc chia sẻ trong phạm vi một ứng dụng • Đẩy mạnh sự sử dụng lại của các đối tượng khi cài đặt những ứng dụng mới • Về lâu dài, giảm đáng kể chi phí khi phát triển các ứng dụng mới • Giảm lỗi và sự phức tạp trong bảo trì • Sửa đổi nhanh hơn 13
  14. 1.2 Các tính chất cơ bản của OOP n Một lớp (Class) là một bản mẫu mô tả các thông tin cấu trúc dữ liệu, lẫn các thao tác hợp lệ của các phần tử dữ liệu n Một phần tử dữ liệu được khai báo là phần tử của một lớp thì nó được gọi là một đối tượng (Object) n Các hàm được định nghĩa hợp lệ trong một lớp được gọi là các phương thức (Method) 14
  15. 1.2 Các tính chất cơ bản của OOP n Lớp định nghĩa một thực thể, còn đối tượng là một thực thể thực tế n Lớp là một mô hình khái niệm định rõ các thuộc tính và các hành động của một đối tượng, còn đối tượng là một mô hình thực tiễn. n Lớp là khuôn mẫu của đối tượng n Tất cả các đối tượng trong cùng một lớp có tập các thuộc tính và hành động như nhau 15
  16. 1.2 Các tính chất cơ bản của OOP n Đối tượng: • Thuộc tính n Tính chất mô tả một đối tượng • Hành động n Dịch vụ mà đối tượng có thể đáp ứng • Phương thức n Cách hành động được đáp ứng khi được yêu cầu • Thông điệp n Yêu cầu một hành động • Sự kiện n Sự kích thích từ đối tượng này gửi sang đối tượng khác 16
  17. 1.2 Các tính chất cơ bản của OOP n Một thực thể (Instance) là một vật thể bên trong bộ nhớ, đó chính là một đối tượng (được cấp phát vùng nhớ) n Mỗi đối tượng có riêng một bản sao các phần tử dữ liệu của lớp, còn gọi là các biến thực thể (Instance variable) n Các phương thức định nghĩa trong một lớp có thể được gọi bởi các đối tượng của lớp đó: gửi một thông điệp (Message) cho đối tượng 17
  18. 1.2 Các tính chất cơ bản của OOP n Đóng gói (Encapsulation): • Cơ chế ràng buộc dữ liệu và thao tác trên dữ liệu đó thành một thể thống nhất • Tránh được các tác động bất ngờ từ bên ngoài n Thừa kế (Inheritance): • Xây dựng các lớp mới từ các lớp cũ • Lớp mới (lớp dẫn xuất - derived class) có thể thừa kế dữ liệu và phương thức của lớp cơ sở (base class) 18
  19. 1.2 Các tính chất cơ bản của OOP 19
  20. 1.2 Các tính chất cơ bản của OOP n Đa hình (Polymorphism): • Khả năng của một thông điệp có thể thay đổi cách thực hiện theo lớp cụ thể của đối tượng nhận thông điệp • Khi một lớp dẫn xuất được tạo ra, nó có thể thay đổi cách thực hiện các phương thức mà nó thừa kế từ lớp cơ sở • Nếu một thông điệp có cùng tên với phương thức này được gởi tới một đối tượng của lớp dẫn xuất sẽ gọi phương thức đã định nghĩa cho lớp dẫn xuất 20
  21. 1.2 Các tính chất cơ bản của OOP 21
  22. 1.3 Các ngôn ngữ OOP n Ngôn ngữ OOP đầu tiên là Smalltalk, do trung tâm nghiên cứu Palo Alto (PARC) của hãng XEROR tập trung 10 năm nghiên cứu để hoàn thiện từ tư tưởng của ngôn ngữ SIMULA67 n Sau đó các ngôn ngữ OOP lần lượt ra đời như Eiffel, Clos, Loops, Flavors, Object Pascal, Object C, C++, Delphi, Java n Trên cơ sở ngôn ngữ OOP, XEROR đã đề ra tư tưởng giao diện biểu tượng trên màn hình 22
  23. 1.3 Các ngôn ngữ OOP n Java: là một ngôn ngữ lập trình (programming language) hướng đối tượng n Java hiện đang là một ngôn ngữ rất phổ biến n Java là một ngôn ngữ mạnh và có tầm bao quát rộng • nhưng nó không đơn giản! n Được so sánh với C++, Java rất "tao nhã" (elegant) 23
  24. 1.3 Các ngôn ngữ OOP Các đặc điểm của Java n Simple n đơn giản n Object-oriented n hướng đối tượng n Distributed n phân tán n Interpreted n thông dịch n Robust n mạnh mẽ n Secure n bảo mật n Architecture-neutral n kiến trúc trung tính n Portable n khả chuyển n Performance n hiệu quả cao n Multithreaded n đa tuyến n n Dynamic linh động 24
  25. Câu hỏi và bài tập 1. Thế nào là lập trình tuyến tính? Cho ví dụ. 2. Sự khác nhau giữa lập trình tuyến tính và lập trình có cấu trúc? 3. Lập trình hướng đối tượng? Nêu một vài ngôn ngữ lập trình hướng đối tượng. 4. Tính đóng gói thể hiện trong lập trình hướng đối tượng như thế nào? 5. Thế nào là trừu tượng hóa quá trình và trừu tượng hóa dữ liệu? 6. Tính kế thừa là gì? 7. Tính đa hình thể hiện trong OOP như thế nào? 25