Chương 1
TỔNG QUAN VỀ LẬP TRÌNH
HƯỚNG ĐỐI TƯỢNG VÀ NGÔN NGỮ C#
Lê Quý Tài
HÀ NỘI – 2014
Nội dung
1
Tổng quan về lập trình hướng đối tượng
2
Giới thiệu về ngôn ngữ C#
Chương 1. Tổng quan về lập trình hướng đối
2/46
1. Tổng quan về lập trình hướng đối tượng
Vấn đề: Phần mềm ngày càng lớn
Một số hệ Unix chứa khoảng 4M dòng lệnh
Windows chứa hàng chục triệu dòng lệnh
Người dùng ngày càng đòi hỏi nhiều chức năng, đặc
biệt là các chức năng thông minh
Phần mềm luôn cần được sửa đổi
Giải pháp: Sử dụng lại mã nguồn
Giảm chi phí và thời gian phát triển
Nâng cao chất lượng
Yêu cầu khi sử dụng lại mã nguồn
Dễ hiểu, chính xác, rõ ràng
Không cần thay đổi khi sử dụng trong chương trình
mới
Chương 1. Tổng quan về lập trình hướng đối
3/46
Các phương pháp lập trình
Lập trình không có cấu trúc
Lập trình cấu trúc (lập trình thủ tục)
Lập trình hướng đối tượng
Lập trình hướng sự kiện
Lập trình hướng thành phần
Chương 1. Tổng quan về lập trình hướng đối
4/46
Lập trình không có cấu trúc (non-structured programming)
Là phương pháp xuất hiện đầu tiên
các ngôn ngữ như Assembly, Basic
sử dụng các biến tổng thể
lạm dụng lệnh GOTO
Nhược điểm
khó hiểu, khó bảo trì, hầu như không thể sử dụng
lại
chất lượng kém
chi phí cao
không thể phát triển các ứng dụng lớn
Chương 1. Tổng quan về lập trình hướng đối
5/46
Lập trình cấu trúc/lập trình thủ tục
(structured/procedural programming)
Đặc điểm
Xây dưng chương trình dựa trên các hàm/thủ
tục/chương trình con
Mỗi chương trình con có thể được gọi nhiều lần
trong CT chính.
Các CT con có thể được gọi đến để thực hiện
theo một thứ tự bất kỳ, tùy thuộc vào giải thuật
trong CT chính mà không phụ thuộc vào thứ tự
khai báo của các CT con.
Ch¬ng tr×nh chÝnh
m ai
n()
Hµm_1
Hµm_2
Hµm_4
Hµm_7
Hµm_3
Hµm_5
Hµm_8
Hµm_6
Hµm_9
Chương 1. Tổng quan về lập trình hướng đối
6/46
Lập trình cấu trúc/lập trình thủ tục
Nhược điểm
Không hỗ trợ sử dụng lại mã nguồn vì giải thuật
luôn phụ thuộc chặt chẽ vào CTDL, do đó khi thay
đổi CTDL phải thay đổi giải thuật và viết lại CT.
Không phù hợp với các phần mềm lớn: tư duy cấu
trúc với các giải thuật chỉ phù hợp với các bài toán
nhỏ, nằm trong phạm vi modul của CT
Chương 1. Tổng quan về lập trình hướng đối
7/46
Lập trình hướng đối tượng
Object-oriented programming
Có 2 đặc trưng cơ bản:
Đóng gói dữ liệu: dữ liệu luôn được tổ chức thành
các thuộc tính của lớp đối tượng. Việc truy nhập
đến dữ liệu phải thông qua các phương thức của
lớp đối tượng.
Sử dụng lại mã nguồn: thể hiện qua cơ chế kế
thừa. Cơ chế này cho phép các lớp đối tượng có
thể kế thừa từ các lớp đối tượng khác và có thể
sử dụng lại các phương thức (mã nguồn) của các
lớp bị kế thừa mà không cần định nghĩa lại.
Chương 1. Tổng quan về lập trình hướng đối
8/46
Lập trình hướng đối tượng
Ưu điểm:
Dữ liệu không bị thay đổi tự do trong CT vì dữ liệu
đã được đóng gói vào các đối tượng. Muốn truy
nhập vào dữ liệu phải thông qua phương thức cho
phép của đối tượng.
Khi thay đổi CTDL của một đối tượng, chỉ cần
thay đổi một số hàm thành phần của đối tượng
này mà không cần thay đổi các mã nguồn của các
đối tượng khác.
Có thể sử dụng lại mã nguồn,tiết kiệm tài nguyên.
Phù hợp với các dự án phần mềm lớn,phức tạp.
Chương 1. Tổng quan về lập trình hướng đối
9/46
Hướng cấu trúc vs Hướng đối tượng
Hướng cấu trúc
Data structures + algorithms = Program
Hướng đối tượng
Object + message = Program
Chương 1. Tổng quan về lập trình hướng đối
10/46
Các khái niệm cơ bản của LTHĐT
Đối tượng (Object)
Lớp (Class)
Trừu tượng hóa (abstraction)
Đóng gói/Che giấu thông tin (encapsulation)
Truyền thông điệp (message)
Kế thừa (inheritance)
Đa hình (polymorphism)
Chương 1. Tổng quan về lập trình hướng đối
11/46
Đối tượng (Object)
Đối tượng” là gì?
là một người, địa điểm, sự kiện, sự vật …
Ví dụ: Đối tượng trong thế giới thực: Khách
hàng sử dụng thẻ ATM
Thông tin cá nhân: tên, tuổi, số tài khoản, lượng
tiền đang có trong tài khoản…
Hoạt động: Đăng ký làm thẻ, huỷ thẻ, rút tiền, nạp
tiền…
Chương 1. Tổng quan về lập trình hướng đối
12/46
Đối tượng trong thế giới thực
Một đối tượng trong thế giới thực là một
thực thể cụ thể mà thông thường chúng ta có
thể sờ, nhìn thấy hay cảm nhận được
Đối tượng có:
trạng thái (state)
và hành động
(behavior)
Trạng thái
Hành động
Con chó
Tên
Màu
Giống
Sủa
Vẩy tai
Chạy
ăn
Xe đạp
Bánh xe
Bàn đạp
Dây xích
Tăng tốc
Giảm tốc
Chuyển bánh răng
Chương 1. Tổng quan về lập trình hướng đối
13/46
Đối tượng phần mềm
Các đối tượng phần mềm có thể được dùng để biểu
diễn các đối tượng trong thế giới thực
Cũng có trạng thái và hành động
Trạng thái: thuộc tính (attribute, property)
Hành động: Phương thức (method)
Đối tượng (object) là một thực thể phần mềm bao bọc
thuộc tính và các phương thức liên quan
Thuộc tính
Có trạng thái và hành động
Trạng thái: Thuộc tính (attribute, property)
Hành động: Phương thức (method)
Thuộc tính được xác định bởi
các giá trị gọi là thuộc tính thể hiện
Các đối tượng giao tiếp
với nhau bằng các thông điệp
Chương 1. Tổng quan về lập trình hướng đối
Phương thức
14/46
Lớp (class)
Trong thế giới có nhiều đối tượng cùng loại
Ví dụ: Tên, Tuổi, Trường, Khoa, đăng kí học,.. Bạn nghĩ tới ?
Một lớp là một thiết kế (blueprint) hay mẫu (prototype)
cho các đối tượng cùng kiểu
Lớp định nghĩa tất cả các thuộc tính và phương thức
chung cho tất cả các đôi tượng thuộc cùng một loại.
Lớp và đối tượng? Có mối quan hệ tương ứng lẫn nhau nhưng bản
chất lại khác nhau:
- Lớp là sự trừu tượng hóa của các đối tượng, đối tượng lại là một
thể hiện của lớp.
- Đối tượng là một thực thể cụ thể,có thực. Lớp là một khái niệm trừu
tượng, chỉ tồn tại ở dạng khái niệm để mô tả các đặc tính chung
của một số đối tượng.
- Tất cả các đối tượng thuộc cùng 1 lớp có cùng các thuộc tính và
phương thức.
Chương 1. Tổng quan về lập trình hướng đối
15/46
Trừu tượng hoá (Abstraction)
Sử dụng để quản lý các đối tượng phức tạp
Tập trung vào các thuộc tính cần thiết
Tóm lược nội dung chính của vấn đề
Tìm ra những điểm chung giữa các đối tượng
Trừu tượng hóa
Tam giác
Cạnh 1, canh 2, cạnh 3
Màu nền, màu biên
Độ đậm biên
Vẽ, tính diện tích, tính chu vi
Các đối tượng
Lớp
Chương 1. Tổng quan về lập trình hướng đối
16/46
Đóng gói (Encapsulation)
Đóng gói dữ liệu là các thao tác tác động lên
dữ liệu thành một thể thống nhất (lớp đối
tượng) thuận tiện cho sử dụng lại
Che giấu thông tin
thao tác với dữ liệu thông qua các giao diện xác
định
Người dùng không phụ thuộc vào việc sửa đổi,
thực thi bên trong
Tăng cường tính mềm dẻo
Chương 1. Tổng quan về lập trình hướng đối
17/46
Đóng gói
Implementation
Outside View
Order
int orderNum
int custNum
CalculatePrice( )
Public methods
of Order
PUBLIC:
CreateOrder( )
UpdateOrder( )
GetOrderTotal( )
Next( )
CreateOrder
UpdateOrder
GetOrderTotal
Next
Chương 1. Tổng quan về lập trình hướng đối
18/46
Truyền thông điệp (message)
Các đối tượng gửi và nhận thông tin với nhau
giống như con người trao đổi với nhau.
Truyền thông điệp cho một đối tượng là yêu
cầu đối tượng thực hiện một việc gì đó
CONGNHAN.TINHLUONG (Hoten)
Đối tượng
Thông điệp
Thông tin
Chương 1. Tổng quan về lập trình hướng đối
19/46
Kế thừa (inheritance)
Một lớp này được quyền sử dụng một số tính
chất (cả dữ liệu và các hàm thành phần) của
các lớp khác.
Nguyên lý chung của kế thừa: Chỉ những
thuộc tính, hàm thành phần được bảo vệ và
công khai là được quyền kế thừa, còn những
thuộc tính, hàm thành phần riêng là không
được phép kế thừa.
Chương 1. Tổng quan về lập trình hướng đối
20/46
Đa hình (polymorphism)
Là khả năng gửi một thông điệp chung đến
nhiều đối tượng mà mỗi đối tượng lại có cách
xử lý riêng theo ngữ cảnh của mình.
Chương 1. Tổng quan về lập trình hướng đối
21/46
2. Giới thiệu về ngôn ngữ C#
Microsoft .NET
Ngôn ngữ C#
Chương 1. Tổng quan về lập trình hướng đối
22/46
Microsoft .NET
Cung cấp giao diện lập trình (API) cho các
dịch vụ (services) và các hàm API truyền
thống của hệ điều hành Windows
Cung cấp một nền tảng phát triển chung cho
nhiều ngôn ngữ khác nhau của Microsoft: C#,
Visual J#, Visual Basic…
Microsoft .NET gồm 2 phần chính: Framework
và Integrated Development Environment
(IDE)
Chương 1. Tổng quan về lập trình hướng đối
23/46
.NET framework
.NET Framework có 2 thành phần chính:
Bộ thực thi ngôn ngữ chung (Common Language
Runtime – CLR)
Thư viện lớp (Framework Class Library)
Common
Language
Runtime CLR
Framework
Class
Library FLC
.NET
Framework
Chương 1. Tổng quan về lập trình hướng đối
24/46
.NET Framework
.NET Framework được dùng để phát triển
những kiểu ứng dụng và dịch vụ:
Ứng dụng console
Ứng dụng giao diện đồ hoạ người dùng - GUI trên
Windows (Windows Forms)
Ứng dụng ASP.NET
Dịch vụ XML Web
…
Chương 1. Tổng quan về lập trình hướng đối
25/46