SlideShare a Scribd company logo
Lập trình hướng đối tượng
   Lập trình hướng đối tượng với C++


     Hà Văn Sang
     Khoa HTTT,
     Academy Of Finance, Hanoi




                                 sanghv@hvtc.edu.vn
Chương I




Object Oriented Programing– Information Systems Department   2
Giới thiệu
   Tổng quan
       Lập trình hướng đối tượng
           Lập trình định hướng đối tượng
           Object Oriented Programming (OOP)
       Được xem là:
           Cách tiếp cận mới, hiệu quả hơn
           Giúp tăng năng suất
           Dễ dàng bảo trì, sửa đổi, nâng cấp
       Mục đích:
           Giảm bớt thao tác viết trình
           Mô tả chân thực thế giới thực
                               Vậy OOP khó học hay dễ học ?


Object Oriented Programing– Information Systems Department    3
1. Tổng quan về các kỹ thuật lập trình

       1.1 Lập trình tuyến tính
       1.2 Lập trình cấu trúc
       1.3 Lập trình môđun
       1.4 Nhược điểm của lập trình cấu trúc
       1.5 Lập trình hướng đối tượng




Object Oriented Programing– Information Systems Department   4
1.1 Lập trình tuyến tính
   Lập       trình tuyến tính :
         •   Còn gọi là lập trình phi cấu trúc
         •   Giải quyết các bài toán tương nhỏ, đối đơn giản
   Đặc        điểm:
         •   Chỉ gồm một chương trình chính
         •   Gồm một dãy tuần tự các câu lệnh
         •   Chương trình ngắn, ít hơn 100 dòng




Object Oriented Programing– Information Systems Department     5
1.1 Lập trình tuyến tính (tiếp)
           Nhược điểm:
                Không sử dụng lại được các đoạn mã
                Không có khả năng kiểm soát phạm vi truy xuất dữ liệu
                Mọi dữ liệu trong chương trình là toàn cục
                Dữ liệu có thể bị sửa đổi ở bất cứ vị trí nào trong
                 chương trình
           Không đáp ứng được việc triển khai phần mềm




Object Oriented Programing– Information Systems Department               6
1.2 Lập trình cấu trúc
           Ra đời vào những năm 70:
           Chương trình được chia nhỏ thành chương
            trình con:
                Thủ tục (Procedure)
                Hàm (Function)
           Các chương trình con:
                Độc lập với nhau và có dữ liệu riêng
                Trao đổi qua: tham số và biến toàn cục



Object Oriented Programing– Information Systems Department   7
1.2 Lập trình cấu trúc (tiếp)
           Xuất hiện khái niệm trừu tượng hoá
                Là khả năng quan sát sự vật mà:
                     Không quan tâm tới các chi tiết không quan trọng
                      bên trong
                     Không quan tâm tới việc thực hiện như thế nào
                Trừu tượng hoá dữ liệu
                Trừu tượng hoá thao tác
           Ngôn ngữ lập trình cấu trúc:
                C, Pascal
                Foxpro …

Object Oriented Programing– Information Systems Department               8
1.3 Lập trình môđun
           Với lập trình môđun:
                Các thủ tục có chung một chức năng được nhóm lại
                 với nhau
                Chương trình được chia thành nhiều phần nhỏ
                Các phần tương tác thông qua việc gọi thủ tục
                Mỗi mô đun có dữ liệu của riêng nó




Object Oriented Programing– Information Systems Department          9
1.4 Nhược điểm của lập trình truyền thống

           Nhược điểm:
                Chương trình khó kiểm soát
                Khó khăn trong việc bổ sung, nâng cấp
                 chương trình
                Khi thay đổi, bổ sung dữ liệu dùng chung thì
                 phải thay đổi gần như tất cả thủ tục/hàm liên
                 quan
                Khả năng sử dụng lại các đoạn mã chưa nhiều
                Không mô tả đầy đủ, trung thực hệ thống trong
                 thực tế

Object Oriented Programing– Information Systems Department       10
1.5 Lập trình hướng đối tượng
           Là phương pháp lập trình:
            Mô tả chính xác các đối tượng trong thế giới
            Lấy đối tượng làm nền tảng xây dựng thuật toán
            Thiết kế xoay quanh dữ liệu của hệ thống
            Chương trình được chia thành các lớp đối tượng
            Dữ liệu được đóng gói, che dấu và bảo vệ
            Đối tượng làm việc với nhau qua thông báo
            Chương trình được thiết kết theo cách từ dưới
             lên (bottom-up)


Object Oriented Programing– Information Systems Department    11
1.5 Lập trình hướng đối tượng




Object Oriented Programing– Information Systems Department   12
2. Một số khái niệm cơ bản
          2.1 Hệ thống hướng đối tượng
          2.2 Đối tượng
          2.3 Thuộc tính & Phương thức
          2.4 Lớp & Lớp con
          2.5 Lớp trừu tượng
          2.6 Truyền thông điệp
          2.7 Sự trừu tượng hoá
          2.8 Sự đóng gói
          2.9 Sự kế thừa
          2.10 Sự đa hình
Object Oriented Programing– Information Systems Department   13
2.1 Hệ thống hướng đối tượng
           Là hệ thống có đặc điểm sau:
            Gồm tập hợp các đối tượng
                           Sự đóng gói của 2 thành phần:
                                       Dữ liệu (thuộc tính của đối tượng)
                                       Các thao tác trên dữ liệu
            Các đối tượng có thể kế thừa các đặc tính của
             đối tượng khác
            Hoạt động thông qua sự tương tác giữa các đối
             tượng nhờ cơ chế truyền thông điệp
                           Thông báo
                           Gửi & nhận thông báo

Object Oriented Programing– Information Systems Department                   14
2.2 Đối tượng (Object)
           Là khái niệm trừu tượng phản ánh các thực
            thể trong thế giới thực
            Có thể là một thực thể vật lý
            Có thể là một khái niệm trừu tượng
           Được định nghĩa là sự thể hiện của một
            lớp
           Chính là các thực thể trong hệ thống
            hướng đối tượng
           Một đối tượng là sự đóng gói 2 thành phần:
            Trạng thái (state) hay dữ liệu
            Các ứng xử (behavior) hay hành vi, thao tác
Object Oriented Programing– Information Systems Department   15
2.3 Thuộc tính & phương thức
           Thuộc tính bao gồm:
            Hằng, biến
            Tham số nội tại
           Thuộc tính được xác định kiểu, gồm:
            Kiểu cổ điển
            Kiểu do người dùng định nghĩa
           Phương thức là:
            Các hàm nội tại của đối tượng
            Có kiểu trả về
            Tên gọi khác: hàm thành viên
Object Oriented Programing– Information Systems Department   16
2.4 Lớp (Class) & Lớp con (SubClass)
           Lớp: là tập hợp các đối tượng có cùng
            thuộc tính và hành vi
           Là bản thiết kế hoặc bản mẫu mô tả một
            cấu trúc dữ liệu gồm:
            Các thành phần dữ liệu
            Các phương thức
           Lớp được sử dụng như kiểu dữ liệu người
            dùng định nghĩa
           Lớp con:
            Là lớp thông thường
            Có thêm tính chất kế thừa đặc tính của lớp khác
Object Oriented Programing– Information Systems Department     17
2.5 Lớp trừu tượng
           Là lớp mà nó không thể trở thành một lớp
            thực tế nào
           Được thiết kế nhằm tạo ra lớp có đặc tính
            tổng quát
           Bản thân nó chưa có ý nghĩa nên chưa thể
            viết mã cho đối tượng
           Ví dụ:
            Lớp hình phẳng
            Lớp động vật


Object Oriented Programing– Information Systems Department   18
2.6 Truyền thông điệp
           Thông điệp:
            Là phương tiện để đối tượng này chuyển yêu cầu tới đối
             tượng khác.
           Một thông điệp bao gồm:
            Handle của đối tượng đích (đối tượng chủ)
            Tên phương thức cần thực hiện
            Các thông tin cần thiết khác (tham số)
           Hệ thống yêu cầu đối tượng thực hiện phương
            thức như sau:
            Gửi thông báo và tham số cho đối tượng
            Kiểm tra tính hợp lệ của thông báo
            Gọi thực hiện hàm tương ứng phương thức
Object Oriented Programing– Information Systems Department            19
2.7 Sự trừu tượng hoá
           Khái niệm:
            Là khả năng bỏ qua hay không để ý tới các
             thành phần không quan trọng.
           Các loại trừu tượng hoá:
            Trừu tượng hoá dữ liệu: không quan tâm các chi
             tiết không quan trọng bên trong
            Trừu tượng hoá chức năng: không quan tâm làm
             thế nào để thực hiện công việc
           Tóm lại:
            Chỉ quan tâm tới đặc điểm quan trọng
            Bỏ qua các chi tiết không liên quan

Object Oriented Programing– Information Systems Department    20
2.8 Sự đóng gói
           Khái niệm:
            Là cơ chế ràng buộc dữ liệu và các thao tác trên
             dữ liệu thành thể thống nhất.
           Đóng gói gồm:
            Bao gói: người dùng giao tiếp với hệ thống qua
             giao diện
            Che dấu: ngăn chặn các thao tác không được
             phép từ bên ngoài
           Ưu điểm:
            Quản lý sự thay đổi
            Bảo vệ dữ liệu

Object Oriented Programing– Information Systems Department      21
2.9 Sự kế thừa
           Khái niệm:
            Khả năng cho phép xây dựng lớp mới được thừa
             hưởng các thuộc tính của lớp đã có
           Đặc điểm:
            Lớp nhận được có thể bổ sung các thành phần
            Hoặc định nghĩa là các thuộc tính của lớp cha
           Các loại kế thừa:
            Đơn kế thừa
            Đa kế thừa


Object Oriented Programing– Information Systems Department   22
2.10 Sự đa hình
           Khái niệm:
            Khả năng đưa một phương thức có cùng tên
             trong các lớp con
           Thực hiện bởi:
            Định nghĩa lại
            Nạp chồng
           Cơ chế dựa trên sự kết gán:
            Kết gán sớm
            Kết gán muộn


Object Oriented Programing– Information Systems Department   23
3. Các bước thiết kế chương trình OOP

           Các bước chính:
            Xác định các dạng đối tượng (lớp)
            Tìm dữ liệu dùng chung, chia xẻ
            Xác định lớp cơ sở dựa vào dữ liệu dùng
             chung
            Xây dựng lớp dẫn xuất từ lớp cơ sở




Object Oriented Programing– Information Systems Department   24
4. Ưu điểm của OOP
           Ưu điểm chính:
            Loại bỏ các đoạn mã lặp lại
            Tạo ra các chương trình an toàn, bảo mật
            Dễ dàng mở rộng và nâng cấp
            Rút ngắn thời gian xây dựng hệ thống
            Tăng năng xuất và hiệu quả hơn
            Chương trình được thiết kế theo đúng qui
             trình


Object Oriented Programing– Information Systems Department   25
5. Một số ngôn ngữ OOP
           Hầu hết các ngôn ngữ lập trình đều hỗ
            trợ OOP, có thể chia thành 2 loại:
            Ngôn ngữ hỗ trợ hướng đối tượng:
                           Object C, Pascal, C++, Delphi…
            Ngôn ngữ hướng đối tượng:
                           SmallTalk, JAVA
           Một số ngôn ngữ OOPhiện nay:
            Visual C++
            VB.NET, C#...
Object Oriented Programing– Information Systems Department   26
6. Ứng dụng của OOP
           Dùng để phát triển phần mềm trong
            nhiều lĩnh vực khác nhau:
            Ví dụ: hệ điều hành Windows
           Lĩnh vực chính:
            Hệ thống thời gian thực
            Cơ sở dữ liệu hướng đối tượng
            Hệ siêu văn bản, đa phương tiện
            Trí tuệ nhân tạo
            Lập trình song song, mạng nơron …
Object Oriented Programing– Information Systems Department   27
Bài tập
   Sử dụng TC++ để lập trình:
   1. Tìm Min, Max của dãy n số nguyên, thực
   2. Tính tổng S=1+1/2+…+1/n
   3. Sắp xếp dãy n số nguyên, thực bằng các phương pháp:
       Selection, Insert, Bubble, Quick sort, merge sort
   4. Quản lý danh sách n sinh viên thông tin gồm: họ tên, ngày
       sinh, gt, toán, lý, hóa, đtb.
   Viết các hàm/thủ tục nhập danh sách, in danh sách, sắp xếp
       theo họ tên, đtb




Object Oriented Programing– Information Systems Department        28
Qui cách nộp bài
   Gửi Email tới địa chỉ: sanghv@gmail.com
   Tiêu đề (Subject):
   [Lớp][BT1][Ho_va_Ten][Ngày sinh]
   Ví dụ:
   [K44/41.01][BT1][Nguyen_Van_A][xx/xx/xxxx]
   Đính kèm bài làm (nên zip lại thành 1 thư mục)




Object Oriented Programing– Information Systems Department   29

More Related Content

Viewers also liked

Oop 0
Oop 0Oop 0
Lập trình hướng đối tượng với C++
Lập trình hướng đối tượng với C++Lập trình hướng đối tượng với C++
Lập trình hướng đối tượng với C++Trần Thiên Đại
 
Bài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPT
Bài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPTBài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPT
Bài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPT
MasterCode.vn
 
LTHDT
LTHDTLTHDT
LTHDT
sangpn
 
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGBÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Trường Phạm
 
Bài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giảiBài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giải
Trung Thanh Nguyen
 

Viewers also liked (9)

Chapter 3 (cont)
Chapter 3 (cont)Chapter 3 (cont)
Chapter 3 (cont)
 
Chapter 2
Chapter 2Chapter 2
Chapter 2
 
Oop 0
Oop 0Oop 0
Oop 0
 
Lập trình hướng đối tượng với C++
Lập trình hướng đối tượng với C++Lập trình hướng đối tượng với C++
Lập trình hướng đối tượng với C++
 
Bài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPT
Bài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPTBài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPT
Bài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPT
 
Lesson00
Lesson00Lesson00
Lesson00
 
LTHDT
LTHDTLTHDT
LTHDT
 
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGBÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
 
Bài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giảiBài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giải
 

Similar to Chapter 1

Các phương pháp phân tích thiết kế phần.pptx
Các phương pháp phân tích thiết kế phần.pptxCác phương pháp phân tích thiết kế phần.pptx
Các phương pháp phân tích thiết kế phần.pptx
dong92356
 
Bai1_GioiThieuOOP.pptx
Bai1_GioiThieuOOP.pptxBai1_GioiThieuOOP.pptx
Bai1_GioiThieuOOP.pptx
HLan34
 
Mai hoàng luân k33103241 kich ban day hoc
Mai hoàng luân k33103241 kich ban day hocMai hoàng luân k33103241 kich ban day hoc
Mai hoàng luân k33103241 kich ban day hocTin 5CBT
 
Chuong 1phuong-phap-luan-pttkht
Chuong 1phuong-phap-luan-pttkhtChuong 1phuong-phap-luan-pttkht
Chuong 1phuong-phap-luan-pttkht
nghia_790a
 
K34103001 nhom 01
K34103001 nhom 01K34103001 nhom 01
K34103001 nhom 01
SP Tin K34
 
Bài Giảng Ngôn Ngữ Lập Trình CC++
Bài Giảng Ngôn Ngữ Lập Trình CC++ Bài Giảng Ngôn Ngữ Lập Trình CC++
Bài Giảng Ngôn Ngữ Lập Trình CC++
nataliej4
 
T d que_lap_trinh_huong_doi_tuong
T d que_lap_trinh_huong_doi_tuongT d que_lap_trinh_huong_doi_tuong
T d que_lap_trinh_huong_doi_tuong
toiseden91
 
Lap trinh huong doi tuong voi java tran dinh que
Lap trinh huong doi tuong voi java   tran dinh queLap trinh huong doi tuong voi java   tran dinh que
Lap trinh huong doi tuong voi java tran dinh que
Nguyễn Công Hoàng
 
Lập trình hướng đối tượng với Java - Trần Đình Quế
Lập trình hướng đối tượng với Java  - Trần Đình QuếLập trình hướng đối tượng với Java  - Trần Đình Quế
Lập trình hướng đối tượng với Java - Trần Đình Quế
f3vthd
 
Lthdt
LthdtLthdt
Lthdt
tammao123
 
Lap trinhhuongdoituong v3.1
Lap trinhhuongdoituong v3.1Lap trinhhuongdoituong v3.1
Lap trinhhuongdoituong v3.1volll
 
1.OOP Introduction (1).pptx
1.OOP Introduction (1).pptx1.OOP Introduction (1).pptx
1.OOP Introduction (1).pptx
Hải Nguyễn Đăng
 
lap-trinh-huong-doi-tuong_nguyen-manh-son_lthdt_ptit - [cuuduongthancong.com]...
lap-trinh-huong-doi-tuong_nguyen-manh-son_lthdt_ptit - [cuuduongthancong.com]...lap-trinh-huong-doi-tuong_nguyen-manh-son_lthdt_ptit - [cuuduongthancong.com]...
lap-trinh-huong-doi-tuong_nguyen-manh-son_lthdt_ptit - [cuuduongthancong.com]...
tPhan78
 
Bai01 oop overview
Bai01 oop overviewBai01 oop overview
Bai01 oop overview
Nhuận Lê Văn
 
Kbdh_Lê Thị Lệ Thắm_Bài 7 Chương 1 Lớp 10
Kbdh_Lê Thị Lệ Thắm_Bài 7 Chương 1 Lớp 10Kbdh_Lê Thị Lệ Thắm_Bài 7 Chương 1 Lớp 10
Kbdh_Lê Thị Lệ Thắm_Bài 7 Chương 1 Lớp 10TIN D BÌNH THUẬN
 
Lập trình hướng đối tượng với java
Lập trình hướng đối tượng với javaLập trình hướng đối tượng với java
Lập trình hướng đối tượng với java
Ngô Đăng Tân
 
OOP
OOPOOP

Similar to Chapter 1 (20)

Các phương pháp phân tích thiết kế phần.pptx
Các phương pháp phân tích thiết kế phần.pptxCác phương pháp phân tích thiết kế phần.pptx
Các phương pháp phân tích thiết kế phần.pptx
 
Lesson06
Lesson06Lesson06
Lesson06
 
Bai1_GioiThieuOOP.pptx
Bai1_GioiThieuOOP.pptxBai1_GioiThieuOOP.pptx
Bai1_GioiThieuOOP.pptx
 
Mai hoàng luân k33103241 kich ban day hoc
Mai hoàng luân k33103241 kich ban day hocMai hoàng luân k33103241 kich ban day hoc
Mai hoàng luân k33103241 kich ban day hoc
 
Chuong 1phuong-phap-luan-pttkht
Chuong 1phuong-phap-luan-pttkhtChuong 1phuong-phap-luan-pttkht
Chuong 1phuong-phap-luan-pttkht
 
Bai1
Bai1Bai1
Bai1
 
K34103001 nhom 01
K34103001 nhom 01K34103001 nhom 01
K34103001 nhom 01
 
Bài Giảng Ngôn Ngữ Lập Trình CC++
Bài Giảng Ngôn Ngữ Lập Trình CC++ Bài Giảng Ngôn Ngữ Lập Trình CC++
Bài Giảng Ngôn Ngữ Lập Trình CC++
 
T d que_lap_trinh_huong_doi_tuong
T d que_lap_trinh_huong_doi_tuongT d que_lap_trinh_huong_doi_tuong
T d que_lap_trinh_huong_doi_tuong
 
Lap trinh huong doi tuong voi java tran dinh que
Lap trinh huong doi tuong voi java   tran dinh queLap trinh huong doi tuong voi java   tran dinh que
Lap trinh huong doi tuong voi java tran dinh que
 
Lập trình hướng đối tượng với Java - Trần Đình Quế
Lập trình hướng đối tượng với Java  - Trần Đình QuếLập trình hướng đối tượng với Java  - Trần Đình Quế
Lập trình hướng đối tượng với Java - Trần Đình Quế
 
Lthdt
LthdtLthdt
Lthdt
 
Lap trinhhuongdoituong v3.1
Lap trinhhuongdoituong v3.1Lap trinhhuongdoituong v3.1
Lap trinhhuongdoituong v3.1
 
1.OOP Introduction (1).pptx
1.OOP Introduction (1).pptx1.OOP Introduction (1).pptx
1.OOP Introduction (1).pptx
 
lap-trinh-huong-doi-tuong_nguyen-manh-son_lthdt_ptit - [cuuduongthancong.com]...
lap-trinh-huong-doi-tuong_nguyen-manh-son_lthdt_ptit - [cuuduongthancong.com]...lap-trinh-huong-doi-tuong_nguyen-manh-son_lthdt_ptit - [cuuduongthancong.com]...
lap-trinh-huong-doi-tuong_nguyen-manh-son_lthdt_ptit - [cuuduongthancong.com]...
 
bai tap oop
bai tap oopbai tap oop
bai tap oop
 
Bai01 oop overview
Bai01 oop overviewBai01 oop overview
Bai01 oop overview
 
Kbdh_Lê Thị Lệ Thắm_Bài 7 Chương 1 Lớp 10
Kbdh_Lê Thị Lệ Thắm_Bài 7 Chương 1 Lớp 10Kbdh_Lê Thị Lệ Thắm_Bài 7 Chương 1 Lớp 10
Kbdh_Lê Thị Lệ Thắm_Bài 7 Chương 1 Lớp 10
 
Lập trình hướng đối tượng với java
Lập trình hướng đối tượng với javaLập trình hướng đối tượng với java
Lập trình hướng đối tượng với java
 
OOP
OOPOOP
OOP
 

Chapter 1

  • 1. Lập trình hướng đối tượng Lập trình hướng đối tượng với C++ Hà Văn Sang Khoa HTTT, Academy Of Finance, Hanoi sanghv@hvtc.edu.vn
  • 2. Chương I Object Oriented Programing– Information Systems Department 2
  • 3. Giới thiệu Tổng quan  Lập trình hướng đối tượng  Lập trình định hướng đối tượng  Object Oriented Programming (OOP)  Được xem là:  Cách tiếp cận mới, hiệu quả hơn  Giúp tăng năng suất  Dễ dàng bảo trì, sửa đổi, nâng cấp  Mục đích:  Giảm bớt thao tác viết trình  Mô tả chân thực thế giới thực Vậy OOP khó học hay dễ học ? Object Oriented Programing– Information Systems Department 3
  • 4. 1. Tổng quan về các kỹ thuật lập trình  1.1 Lập trình tuyến tính  1.2 Lập trình cấu trúc  1.3 Lập trình môđun  1.4 Nhược điểm của lập trình cấu trúc  1.5 Lập trình hướng đối tượng Object Oriented Programing– Information Systems Department 4
  • 5. 1.1 Lập trình tuyến tính Lập trình tuyến tính : • Còn gọi là lập trình phi cấu trúc • Giải quyết các bài toán tương nhỏ, đối đơn giản Đặc điểm: • Chỉ gồm một chương trình chính • Gồm một dãy tuần tự các câu lệnh • Chương trình ngắn, ít hơn 100 dòng Object Oriented Programing– Information Systems Department 5
  • 6. 1.1 Lập trình tuyến tính (tiếp)  Nhược điểm:  Không sử dụng lại được các đoạn mã  Không có khả năng kiểm soát phạm vi truy xuất dữ liệu  Mọi dữ liệu trong chương trình là toàn cục  Dữ liệu có thể bị sửa đổi ở bất cứ vị trí nào trong chương trình  Không đáp ứng được việc triển khai phần mềm Object Oriented Programing– Information Systems Department 6
  • 7. 1.2 Lập trình cấu trúc  Ra đời vào những năm 70:  Chương trình được chia nhỏ thành chương trình con:  Thủ tục (Procedure)  Hàm (Function)  Các chương trình con:  Độc lập với nhau và có dữ liệu riêng  Trao đổi qua: tham số và biến toàn cục Object Oriented Programing– Information Systems Department 7
  • 8. 1.2 Lập trình cấu trúc (tiếp)  Xuất hiện khái niệm trừu tượng hoá  Là khả năng quan sát sự vật mà:  Không quan tâm tới các chi tiết không quan trọng bên trong  Không quan tâm tới việc thực hiện như thế nào  Trừu tượng hoá dữ liệu  Trừu tượng hoá thao tác  Ngôn ngữ lập trình cấu trúc:  C, Pascal  Foxpro … Object Oriented Programing– Information Systems Department 8
  • 9. 1.3 Lập trình môđun  Với lập trình môđun:  Các thủ tục có chung một chức năng được nhóm lại với nhau  Chương trình được chia thành nhiều phần nhỏ  Các phần tương tác thông qua việc gọi thủ tục  Mỗi mô đun có dữ liệu của riêng nó Object Oriented Programing– Information Systems Department 9
  • 10. 1.4 Nhược điểm của lập trình truyền thống  Nhược điểm:  Chương trình khó kiểm soát  Khó khăn trong việc bổ sung, nâng cấp chương trình  Khi thay đổi, bổ sung dữ liệu dùng chung thì phải thay đổi gần như tất cả thủ tục/hàm liên quan  Khả năng sử dụng lại các đoạn mã chưa nhiều  Không mô tả đầy đủ, trung thực hệ thống trong thực tế Object Oriented Programing– Information Systems Department 10
  • 11. 1.5 Lập trình hướng đối tượng  Là phương pháp lập trình:  Mô tả chính xác các đối tượng trong thế giới  Lấy đối tượng làm nền tảng xây dựng thuật toán  Thiết kế xoay quanh dữ liệu của hệ thống  Chương trình được chia thành các lớp đối tượng  Dữ liệu được đóng gói, che dấu và bảo vệ  Đối tượng làm việc với nhau qua thông báo  Chương trình được thiết kết theo cách từ dưới lên (bottom-up) Object Oriented Programing– Information Systems Department 11
  • 12. 1.5 Lập trình hướng đối tượng Object Oriented Programing– Information Systems Department 12
  • 13. 2. Một số khái niệm cơ bản  2.1 Hệ thống hướng đối tượng  2.2 Đối tượng  2.3 Thuộc tính & Phương thức  2.4 Lớp & Lớp con  2.5 Lớp trừu tượng  2.6 Truyền thông điệp  2.7 Sự trừu tượng hoá  2.8 Sự đóng gói  2.9 Sự kế thừa  2.10 Sự đa hình Object Oriented Programing– Information Systems Department 13
  • 14. 2.1 Hệ thống hướng đối tượng  Là hệ thống có đặc điểm sau:  Gồm tập hợp các đối tượng  Sự đóng gói của 2 thành phần:  Dữ liệu (thuộc tính của đối tượng)  Các thao tác trên dữ liệu  Các đối tượng có thể kế thừa các đặc tính của đối tượng khác  Hoạt động thông qua sự tương tác giữa các đối tượng nhờ cơ chế truyền thông điệp  Thông báo  Gửi & nhận thông báo Object Oriented Programing– Information Systems Department 14
  • 15. 2.2 Đối tượng (Object)  Là khái niệm trừu tượng phản ánh các thực thể trong thế giới thực  Có thể là một thực thể vật lý  Có thể là một khái niệm trừu tượng  Được định nghĩa là sự thể hiện của một lớp  Chính là các thực thể trong hệ thống hướng đối tượng  Một đối tượng là sự đóng gói 2 thành phần:  Trạng thái (state) hay dữ liệu  Các ứng xử (behavior) hay hành vi, thao tác Object Oriented Programing– Information Systems Department 15
  • 16. 2.3 Thuộc tính & phương thức  Thuộc tính bao gồm:  Hằng, biến  Tham số nội tại  Thuộc tính được xác định kiểu, gồm:  Kiểu cổ điển  Kiểu do người dùng định nghĩa  Phương thức là:  Các hàm nội tại của đối tượng  Có kiểu trả về  Tên gọi khác: hàm thành viên Object Oriented Programing– Information Systems Department 16
  • 17. 2.4 Lớp (Class) & Lớp con (SubClass)  Lớp: là tập hợp các đối tượng có cùng thuộc tính và hành vi  Là bản thiết kế hoặc bản mẫu mô tả một cấu trúc dữ liệu gồm:  Các thành phần dữ liệu  Các phương thức  Lớp được sử dụng như kiểu dữ liệu người dùng định nghĩa  Lớp con:  Là lớp thông thường  Có thêm tính chất kế thừa đặc tính của lớp khác Object Oriented Programing– Information Systems Department 17
  • 18. 2.5 Lớp trừu tượng  Là lớp mà nó không thể trở thành một lớp thực tế nào  Được thiết kế nhằm tạo ra lớp có đặc tính tổng quát  Bản thân nó chưa có ý nghĩa nên chưa thể viết mã cho đối tượng  Ví dụ:  Lớp hình phẳng  Lớp động vật Object Oriented Programing– Information Systems Department 18
  • 19. 2.6 Truyền thông điệp  Thông điệp:  Là phương tiện để đối tượng này chuyển yêu cầu tới đối tượng khác.  Một thông điệp bao gồm:  Handle của đối tượng đích (đối tượng chủ)  Tên phương thức cần thực hiện  Các thông tin cần thiết khác (tham số)  Hệ thống yêu cầu đối tượng thực hiện phương thức như sau:  Gửi thông báo và tham số cho đối tượng  Kiểm tra tính hợp lệ của thông báo  Gọi thực hiện hàm tương ứng phương thức Object Oriented Programing– Information Systems Department 19
  • 20. 2.7 Sự trừu tượng hoá  Khái niệm:  Là khả năng bỏ qua hay không để ý tới các thành phần không quan trọng.  Các loại trừu tượng hoá:  Trừu tượng hoá dữ liệu: không quan tâm các chi tiết không quan trọng bên trong  Trừu tượng hoá chức năng: không quan tâm làm thế nào để thực hiện công việc  Tóm lại:  Chỉ quan tâm tới đặc điểm quan trọng  Bỏ qua các chi tiết không liên quan Object Oriented Programing– Information Systems Department 20
  • 21. 2.8 Sự đóng gói  Khái niệm:  Là cơ chế ràng buộc dữ liệu và các thao tác trên dữ liệu thành thể thống nhất.  Đóng gói gồm:  Bao gói: người dùng giao tiếp với hệ thống qua giao diện  Che dấu: ngăn chặn các thao tác không được phép từ bên ngoài  Ưu điểm:  Quản lý sự thay đổi  Bảo vệ dữ liệu Object Oriented Programing– Information Systems Department 21
  • 22. 2.9 Sự kế thừa  Khái niệm:  Khả năng cho phép xây dựng lớp mới được thừa hưởng các thuộc tính của lớp đã có  Đặc điểm:  Lớp nhận được có thể bổ sung các thành phần  Hoặc định nghĩa là các thuộc tính của lớp cha  Các loại kế thừa:  Đơn kế thừa  Đa kế thừa Object Oriented Programing– Information Systems Department 22
  • 23. 2.10 Sự đa hình  Khái niệm:  Khả năng đưa một phương thức có cùng tên trong các lớp con  Thực hiện bởi:  Định nghĩa lại  Nạp chồng  Cơ chế dựa trên sự kết gán:  Kết gán sớm  Kết gán muộn Object Oriented Programing– Information Systems Department 23
  • 24. 3. Các bước thiết kế chương trình OOP  Các bước chính:  Xác định các dạng đối tượng (lớp)  Tìm dữ liệu dùng chung, chia xẻ  Xác định lớp cơ sở dựa vào dữ liệu dùng chung  Xây dựng lớp dẫn xuất từ lớp cơ sở Object Oriented Programing– Information Systems Department 24
  • 25. 4. Ưu điểm của OOP  Ưu điểm chính:  Loại bỏ các đoạn mã lặp lại  Tạo ra các chương trình an toàn, bảo mật  Dễ dàng mở rộng và nâng cấp  Rút ngắn thời gian xây dựng hệ thống  Tăng năng xuất và hiệu quả hơn  Chương trình được thiết kế theo đúng qui trình Object Oriented Programing– Information Systems Department 25
  • 26. 5. Một số ngôn ngữ OOP  Hầu hết các ngôn ngữ lập trình đều hỗ trợ OOP, có thể chia thành 2 loại:  Ngôn ngữ hỗ trợ hướng đối tượng:  Object C, Pascal, C++, Delphi…  Ngôn ngữ hướng đối tượng:  SmallTalk, JAVA  Một số ngôn ngữ OOPhiện nay:  Visual C++  VB.NET, C#... Object Oriented Programing– Information Systems Department 26
  • 27. 6. Ứng dụng của OOP  Dùng để phát triển phần mềm trong nhiều lĩnh vực khác nhau:  Ví dụ: hệ điều hành Windows  Lĩnh vực chính:  Hệ thống thời gian thực  Cơ sở dữ liệu hướng đối tượng  Hệ siêu văn bản, đa phương tiện  Trí tuệ nhân tạo  Lập trình song song, mạng nơron … Object Oriented Programing– Information Systems Department 27
  • 28. Bài tập Sử dụng TC++ để lập trình: 1. Tìm Min, Max của dãy n số nguyên, thực 2. Tính tổng S=1+1/2+…+1/n 3. Sắp xếp dãy n số nguyên, thực bằng các phương pháp: Selection, Insert, Bubble, Quick sort, merge sort 4. Quản lý danh sách n sinh viên thông tin gồm: họ tên, ngày sinh, gt, toán, lý, hóa, đtb. Viết các hàm/thủ tục nhập danh sách, in danh sách, sắp xếp theo họ tên, đtb Object Oriented Programing– Information Systems Department 28
  • 29. Qui cách nộp bài Gửi Email tới địa chỉ: sanghv@gmail.com Tiêu đề (Subject): [Lớp][BT1][Ho_va_Ten][Ngày sinh] Ví dụ: [K44/41.01][BT1][Nguyen_Van_A][xx/xx/xxxx] Đính kèm bài làm (nên zip lại thành 1 thư mục) Object Oriented Programing– Information Systems Department 29