Lập trình hướng đối tượng
Object-oriented Programming


            Giảng viên: Nguyễn Thị Minh Huyền
            nguyenth...
Môn học OOP
   2 tín chỉ: 30 tiết
        Nghe giảng lý thuyết trên lớp: 15t
        Thực hành tại phòng máy: 12t x 2
 ...
Tổ chức học tập
   Giờ lí thuyết + thực hành: Phòng máy B (502-T5)
   Lịch học: Chiều thứ Hai hàng tuần, một số buổi sán...
Nhập môn
   Giới thiệu
   Các khái niệm cơ bản của lập trình
    hướng đối tượng
   Giới thiệu ngôn ngữ lập trình Java
...
Giới thiệu (1)
   Công nghệ phần mềm (software engineering):
           Đặc tả yêu cầu (requirements): làm gì?
        ...
Giới thiệu (2)
   Phân loại ngôn ngữ lập trình:
        Ngôn ngữ máy, hợp ngữ
        Ngôn ngữ lập trình bậc cao
      ...
Giới thiệu (3)
   Lập trình hướng đối tượng:
        Ý tưởng: Mô hình hóa các thực thể thành các đối
         tượng độc ...
Nhập môn
   Giới thiệu
   Các khái niệm cơ bản của lập trình
    hướng đối tượng
   Giới thiệu ngôn ngữ lập trình Java
...
Đối tượng (object)
   Biểu diễn trừu tượng của các thực thể (vật thể
    hay phi vật thể)
   Mô tả đối tượng:
        T...
Chương trình hướng đối tượng

                 Object                                             Object communication



...
Đối tượng – Ví dụ (1)
   Ô tô
           Thuộc tính:
                Biển số
                Loại xe
                ...
Đối tượng – Ví dụ (2)
   Mô tả một điểm trong mặt phẳng tọa
    độ Oxy
           Thuộc tính: x, y (tung độ, hoành độ)
 ...
Đặc điểm LT hướng đối tượng
   Chương trình hướng đối tượng:
        Mô tả các đối tượng (thuộc tính, phương
         th...
Đặc điểm LT hướng đối tượng
   Trừu tượng dữ liệu (abstraction): chương trình chỉ quan
    tâm đến các đặc tính của đối t...
Đặc điểm LT hướng đối tượng
   Hệ quả:
        Người sử dụng chỉ cần biết đặc tả của đối
         tượng
        Thay đổ...
Lớp
   Lớp (class): cấu trúc (“kiểu dữ liệu”) của đối
    tượng. Mỗi đối tượng sinh ra nhờ việc thực thể
    hóa (instanc...
Đóng gói dữ liệu
   Định nghĩa các mức truy cập khác nhau
    tới các thuộc tính/phương thức của một
    đối tượng:
     ...
Kế thừa
   Tạo một lớp mới (lớp con - subclass) từ
    một lớp đã có (lớp cha – parent class)
        Lớp mới kế thừa tấ...
Đa hình
   Các loại đa hình:
        Tải bội (overloading): cùng một tên hàm, chức năng
         tương tự nhưng bản chất...
Nhập môn
   Giới thiệu
   Các khái niệm cơ bản của lập trình
    hướng đối tượng
   Giới thiệu ngôn ngữ lập trình Java
...
Phân loại ngôn ngữ lập trình
    hướng đối tượng
   Biên dịch hoàn toàn ra mã máy (C++,
    Eiffel, v.v.): hiệu năng cao ...
Ngôn ngữ thực hành: Java
   Phiên bản: J2SE 5.0 (JDK 5.0)
        http://java.sun.com




    2009-2010        OOP - htt...
Java – tổng quan (1)
   Lịch sử:
        Do hãng Sun Microsystems triển khai năm 1991
               Dự án Green: chế t...
Java – tổng quan (2)
   So sánh Java và C++:
        Cú pháp Java gần như C++
        Java không có các đặc tính phức t...
Java – tổng quan (3)
   Chương trình Java:
        Biên dịch: tệp mã nguồn ASCII (*.java) => tệp mã
         bytecode (*...
Java – tổng quan (4)
   Phát triển phần mềm bằng Java:
        Bộ công cụ hỗ trợ JDK (Java Development Kit), miễn
      ...
Tài liệu tham khảo
   Học liệu: BigJava
    http://www.horstmann.com/bigjava2.html
   Giáo trình Lập trình Java
    (lap...
Phần tiếp theo...
   Học liệu: BigJava
    http://www.horstmann.com/bigjava2.html
   27 chương
   Tự đọc các chương: 5,...
Upcoming SlideShare
Loading in...5
×

Oop 0

2,171

Published on

slide java o lop

Published in: Education, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,171
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
116
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Oop 0"

  1. 1. Lập trình hướng đối tượng Object-oriented Programming Giảng viên: Nguyễn Thị Minh Huyền nguyenthiminhhuyen@hus.edu.vn Đỗ Thanh Hà dothanhha@hus.edu.vn OOP - 2009-2010 http://mim.hus.edu.vn/elearning 1
  2. 2. Môn học OOP  2 tín chỉ: 30 tiết  Nghe giảng lý thuyết trên lớp: 15t  Thực hành tại phòng máy: 12t x 2  Tự học: 3t  Đề cương môn học 2009-2010 OOP - http://mim.hus.edu.vn/elearning 2
  3. 3. Tổ chức học tập  Giờ lí thuyết + thực hành: Phòng máy B (502-T5)  Lịch học: Chiều thứ Hai hàng tuần, một số buổi sáng thứ Tư (xem lịch cụ thể kèm theo)  Ghép nhóm 2-3 người: lên danh sách (cuối giờ)  Bài tập thực hành:  Chuẩn bị chương trình ở nhà  Phân tích, chữa bài tập, chạy chương trình tại phòng máy  Kiểm tra kiến thức:  Kiểm tra thường xuyên (bài tập về nhà theo nhóm 2 người)  Kiểm tra giữa kì  Bài tập lớn (nhóm 4-5 người) + trả lời câu hỏi trên giấy 2009-2010 OOP - http://mim.hus.edu.vn/elearning 3
  4. 4. Nhập môn  Giới thiệu  Các khái niệm cơ bản của lập trình hướng đối tượng  Giới thiệu ngôn ngữ lập trình Java 2009-2010 OOP - http://mim.hus.edu.vn/elearning 4
  5. 5. Giới thiệu (1)  Công nghệ phần mềm (software engineering):  Đặc tả yêu cầu (requirements): làm gì?  Phân tích (analysis): làm thế nào?  Thiết kế (design): tổ chức ra sao?  Lập trình (coding): viết mã chương trình  Dò lỗi (debugging): sửa lỗi  Kiểm tra (testing): đảm bảo chương trình chạy đúng  Phân phối (deployment): đưa vào sử dụng  Bảo trì (maintenance): tiếp tục hoàn thiện, phát triển, giữ phần mềm hoạt động 2009-2010 OOP - http://mim.hus.edu.vn/elearning 5
  6. 6. Giới thiệu (2)  Phân loại ngôn ngữ lập trình:  Ngôn ngữ máy, hợp ngữ  Ngôn ngữ lập trình bậc cao  Lập trình thủ tục: Pascal, C, v.v.  Lập trình hàm: Lisp, CML, v.v.  Lập trình mô tả (lôgic): Prolog, v.v.  Lập trình hướng đối tượng: C++, Java, C# v.v. 2009-2010 OOP - http://mim.hus.edu.vn/elearning 6
  7. 7. Giới thiệu (3)  Lập trình hướng đối tượng:  Ý tưởng: Mô hình hóa các thực thể thành các đối tượng độc lập, có thể tương tác bằng cách trao đổi thông báo cho nhau  Lịch sử:  1967: ngôn ngữ Simula triển khai khái niệm lớp (class)  1976: ngôn ngữ Smalltalk triển khai khái niệm đóng gói, thừa kế, đa hình – các khái niệm cơ bản của lập trình hướng đối tượng  Các ngôn ngữ khác: C++, Objective-C, Eiffel, Java, C#, Visual Basic.NET, Python, Ruby, v.v. 2009-2010 OOP - http://mim.hus.edu.vn/elearning 7
  8. 8. Nhập môn  Giới thiệu  Các khái niệm cơ bản của lập trình hướng đối tượng  Giới thiệu ngôn ngữ lập trình Java 2009-2010 OOP - http://mim.hus.edu.vn/elearning 8
  9. 9. Đối tượng (object)  Biểu diễn trừu tượng của các thực thể (vật thể hay phi vật thể)  Mô tả đối tượng:  Thuộc tính (attribute): mô tả đặc điểm đối tượng  Phương thức, còn gọi là hàm thành viên (method, member function): mô tả các hành vi có thể của đối tượng  Lập trình: thuộc tính – biến, phương thức – hàm  Tập hợp giá trị hiện thời của các thuộc tính: trạng thái của đối tượng 2009-2010 OOP - http://mim.hus.edu.vn/elearning 9
  10. 10. Chương trình hướng đối tượng Object Object communication Function 1 Function 2 Object 1 Message Function Function 6 DATA 3 Object 3 Function 5 Function 4 Object 2 2009-2010 OOP - http://mim.hus.edu.vn/elearning 10
  11. 11. Đối tượng – Ví dụ (1)  Ô tô  Thuộc tính:  Biển số  Loại xe  Màu sơn  ...  Phương thức:  Tăng tốc độ  Bóp còi  ... 2009-2010 OOP - http://mim.hus.edu.vn/elearning 11
  12. 12. Đối tượng – Ví dụ (2)  Mô tả một điểm trong mặt phẳng tọa độ Oxy  Thuộc tính: x, y (tung độ, hoành độ)  Hành vi của các đối tượng điểm:  setX(m), setY(n)  getX(), getY()  printXY() 2009-2010 OOP - http://mim.hus.edu.vn/elearning 12
  13. 13. Đặc điểm LT hướng đối tượng  Chương trình hướng đối tượng:  Mô tả các đối tượng (thuộc tính, phương thức)  Chương trình chính: tạo các đối tượng, gửi thông báo yêu cầu thực hiện các hành vi nào đó (gọi hàm) 2009-2010 OOP - http://mim.hus.edu.vn/elearning 13
  14. 14. Đặc điểm LT hướng đối tượng  Trừu tượng dữ liệu (abstraction): chương trình chỉ quan tâm đến các đặc tính của đối tượng (gồm có gì, làm gì), bỏ qua các tiểu tiết (làm như thế nào).  Đóng gói dữ liệu (encapsulation): Cơ chế đảm bảo môi trường bên ngoài chỉ có thể tác động vào đối tượng thông qua các dịch vụ (phương thức) cho bởi người viết mã chương trình => tính toàn vẹn dữ liệu  Tính đa hình (polymorphism): cùng một thông báo, mỗi đối tượng “phản ứng” khác nhau  Kế thừa (inheritance): Cho phép đối tượng này lấy lại (kế thừa) những đặc tính sẵn có của đối tượng khác 2009-2010 OOP - http://mim.hus.edu.vn/elearning 14
  15. 15. Đặc điểm LT hướng đối tượng  Hệ quả:  Người sử dụng chỉ cần biết đặc tả của đối tượng  Thay đổi mã bên trong đối tượng không ảnh hưởng gì đến chương trình bên ngoài sử dụng đối tượng  Ưu điểm: tính tái sử dụng cao, tăng năng suất, đơn giản hóa độ phức tạp khi bảo trì/mở rộng phần mềm 2009-2010 OOP - http://mim.hus.edu.vn/elearning 15
  16. 16. Lớp  Lớp (class): cấu trúc (“kiểu dữ liệu”) của đối tượng. Mỗi đối tượng sinh ra nhờ việc thực thể hóa (instanciation) một lớp.  Thuộc tính: dữ liệu biểu diễn trạng thái đối tượng  Phương thức (hàm): thao tác áp dụng được cho các đối tượng. Đặc biệt:  hàm dựng (constructor) – cài đặt giá trị ban đầu, đăng kí bộ nhớ, v.v.,  hàm hủy (destructor) – thực hiện các thao tác cần thiết khi hủy bỏ 1 đối tượng 2009-2010 OOP - http://mim.hus.edu.vn/elearning 16
  17. 17. Đóng gói dữ liệu  Định nghĩa các mức truy cập khác nhau tới các thuộc tính/phương thức của một đối tượng:  Công khai (public): biến/hàm truy cập được từ tất cả các lớp khác  Bảo vệ (protected): biến/hàm chỉ truy cập được trong nội bộ hoặc các lớp con của nó  Riêng (private): biến/hàm chỉ có thể truy cập được trong nội bộ lớp 2009-2010 OOP - http://mim.hus.edu.vn/elearning 17
  18. 18. Kế thừa  Tạo một lớp mới (lớp con - subclass) từ một lớp đã có (lớp cha – parent class)  Lớp mới kế thừa tất cả các thuộc tính/phương thức của lớp cha  Có thể bổ sung các thuộc tính/phương thức mới  Ví dụ: Lớp “xe tải” kế thừa từ lớp “ô tô”  Một số ngôn ngữ cho phép kế thừa bội (vd: C++) 2009-2010 OOP - http://mim.hus.edu.vn/elearning 18
  19. 19. Đa hình  Các loại đa hình:  Tải bội (overloading): cùng một tên hàm, chức năng tương tự nhưng bản chất thực hiện khác nhau (ví dụ: phép cộng - số, xâu).  Định nghĩa chồng (overriding): Cho phép định nghĩa lại hàm thuộc lớp cha thành hàm mới trong lớp con (ví dụ: định nghĩa hàm di chuyển cho các lớp con của lớp Quân Cờ)  Tham biến (template): cùng một tên hàm trong một lớp, nhưng số lượng tham biến khác nhau hoặc kiểu các tham biến khác nhau. 2009-2010 OOP - http://mim.hus.edu.vn/elearning 19
  20. 20. Nhập môn  Giới thiệu  Các khái niệm cơ bản của lập trình hướng đối tượng  Giới thiệu ngôn ngữ lập trình Java 2009-2010 OOP - http://mim.hus.edu.vn/elearning 20
  21. 21. Phân loại ngôn ngữ lập trình hướng đối tượng  Biên dịch hoàn toàn ra mã máy (C++, Eiffel, v.v.): hiệu năng cao hơn  Biên dịch ra mã byte chạy bởi máy ảo (Smalltalk, Java, v.v.): chương trình ổn định, chạy trong mọi môi trường  Thông dịch hoặc ngôn ngữ script (Ruby, Python, JavaScript, v.v.) 2009-2010 OOP - http://mim.hus.edu.vn/elearning 21
  22. 22. Ngôn ngữ thực hành: Java  Phiên bản: J2SE 5.0 (JDK 5.0)  http://java.sun.com 2009-2010 OOP - http://mim.hus.edu.vn/elearning 22
  23. 23. Java – tổng quan (1)  Lịch sử:  Do hãng Sun Microsystems triển khai năm 1991  Dự án Green: chế tạo điều khiển từ xa vạn năng chứa hệ điều hành có thể điều khiển toàn bộ các đồ điện tử trong nhà  Cần một ngôn ngữ lập trình tích hợp trong các đồ điện tử gia dụng để điều khiển và cho phép chúng tương tác/trao đổi với nhau: ngôn ngữ hướng đối tượng  C++: phức tạp, kém tính mang được (portable)  James Gosling: định nghĩa ngôn ngữ lập trình mới mang tên Oak, sau đổi tên là Java: cơ bản dựa trên C++, chương trình đơn giản/gọn nhẹ hơn, có tính mang được  Java được đánh giá là thích hợp cho web: chương trình nhỏ gọn, chạy trên mọi máy  1994: Trình duyệt HotJava cho phép chạy Java applets. Từ cuối 1995: Java phát triển mạnh với sự hỗ trợ của Netscape 2009-2010 OOP - http://mim.hus.edu.vn/elearning 23
  24. 24. Java – tổng quan (2)  So sánh Java và C++:  Cú pháp Java gần như C++  Java không có các đặc tính phức tạp (dễ gây lỗi lập trình) của C++:  Không dùng con trỏ  Không dùng thừa kế bội  Giải phóng bộ nhớ tự động  Kiểu xâu kí tự và mảng được tích hợp trong ngôn ngữ  Java chạy chậm hơn C++ (đổi lại tính mang được)  Các phiên bản của Java:  1.0, 1.1, v.v., 1.5 (Java 5), 1.6 (Java 6) 2009-2010 OOP - http://mim.hus.edu.vn/elearning 24
  25. 25. Java – tổng quan (3)  Chương trình Java:  Biên dịch: tệp mã nguồn ASCII (*.java) => tệp mã bytecode (*.class)  Chạy chương trình: máy ảo Java (JVM: Java Virtual Machine)  Ứng dụng (application) và ứng dụng con (applet):  Ứng dụng: chương trình thông thường chạy trên máy  Ứng dụng con nhúng vào trình duyệt Internet: có tính năng giới hạn (để đảm bảo tính an toàn) dùng cho ứng dụng web 2009-2010 OOP - http://mim.hus.edu.vn/elearning 25
  26. 26. Java – tổng quan (4)  Phát triển phần mềm bằng Java:  Bộ công cụ hỗ trợ JDK (Java Development Kit), miễn phí  javac: trình biên dịch (*.java -> *.class)  java: máy ảo thực hiện ứng dụng  appletviewer: máy ảo thực hiện applet  jdb: debugger  javap: trình dịch ngược (*.class -> *.java)  javadoc: bộ sinh tài liệu chương trình  jar: trình nén các tệp bytecode  Các phiên bản của JDK: phiên bản Java + môi trường (Windows, Linux, Unix) – jdk1.6 2009-2010 OOP - http://mim.hus.edu.vn/elearning 26
  27. 27. Tài liệu tham khảo  Học liệu: BigJava http://www.horstmann.com/bigjava2.html  Giáo trình Lập trình Java (laptrinh_java.pdf) 2009-2010 OOP - http://mim.hus.edu.vn/elearning 27
  28. 28. Phần tiếp theo...  Học liệu: BigJava http://www.horstmann.com/bigjava2.html  27 chương  Tự đọc các chương: 5, 10, 12, 14, 16, 18, 19, 24, 25, 26, 27 2009-2010 OOP - http://mim.hus.edu.vn/elearning 28
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×