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 n
Trang 1Chương 1 TỔNG QUAN VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VÀ NGÔN NGỮ C#
Lê Quý Tài quytai3985@gmail.com
Trang 31 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
Trang 5Lậ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
Trang 6 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
Trang 7Lập trình cấu trúc/lập trình thủ tục
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
Trang 8Lậ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
Trang 9Lập trình hướng đối tượng
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
Trang 10Hướng cấu trúc vs Hướng đối tượng
Data structures + algorithms = Program
Object + message = Program
Trang 11Cá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)
Trang 12Đố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…
Trang 13Đối tượng trong thế giới thực
Một đối tượng trong thế giới thực là một
Sủa Vẩy tai Chạy ăn
Bàn đạp Dây xích
Tăng tốc Giảm tốc Chuyển bánh răng
Đối tượng có:
trạng thái (state)
và hành động
(behavior)
Trang 14Đố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
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
Thuộc tính
Phương thức
Trang 15Lớ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.
Trang 16Trừu tượng hoá (Abstraction)
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
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
Trừu tượng hóa
Trang 17Đó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
Trang 19Truyề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
Trang 20Kế 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à
thuộc tính, hàm thành phần riêng là không được phép kế thừa
Trang 21Đ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.
Trang 222 Giới thiệu về ngôn ngữ C#
Microsoft NET
Trang 23Microsoft 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…
Framework và Integrated Development Environment (IDE)
Trang 24Common Language Runtime - CLR
Framework Class Library - FLC
Framework Class Library - FLC
.NET Framework
.NET Framework
Trang 25.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)
Dịch vụ XML Web
Trang 26.NET Framework
Trang 27Biên dịch
NET không biên dịch trực tiếp các chương
trình thành file thực thi
NET biên dịch các chương trình thành các
assembly, chứa các mã chương trình trung gian của Microsoft (Microsoft Intermediate Language – MSIL)
CLR sẽ dịch một lần nữa, sử dụng chương
trình biên dịch Just In Time (JIT) chuyển các
mã MSIL sang mã máy và thực thi
Trang 28Biên dịch
Trang 29Visual Studio 2010
Được thiết kế dựa trên NET Framwork 4.0
Cho phép triển khai
Ứng dụng trên nhiều ngôn ngữ Visual Basic,
Visual C++, Visual C#, Visual J#
Ứng dụng Web và Web Services
Ứng dụng di động
Tất cả các ngôn ngữ đều dùng chung một môi
trường phát triển tích hợp – IDE
Lập trình ASP.NET: truy cập CSDL hiệu quả, viết
ứng dụng dễ dàng hơn
Trang 30Ví dụ: Chương trình HelloWorld
Mở Visual Studio 2010
Start All Programs Microsoft Visual Studio 2010
Microsoft Visual Studio 2010
Chọn New Project hoặc File New Project (Ctrl +
Shift + N)
Chọn ngôn ngữ, chọn chọn kiểu chương trình
(Console hoặc Windows Forms)
Đặt tên cho đồ án ở mục Name
Chọn thư mục lưu đồ án ở mục Location
Trang 31Ví dụ: Viết chương trình HelloWorld
Trang 32đơn giản hiển thị
thông báo Hello
Trang 33Ngôn ngữ C#
C# được phát triển bởi nhóm tác giả điều hành
bởi Anders Hejlsberg
C# được dẫn xuất từ C và C++ nhưng nó được
tạo từ nền tảng tốt hơn
C# là ngôn ngữ hướng đối tượng (Object
Oriented Language)
Hỗ trợ định nghĩa và làm việc với lớp (class)
Hỗ trợ đầy đủ các đặc trưng của lập trình hướng
đối tượng: đóng gói (encapsulation), kế thừa (inheritance) và đa hình (polymorphism)
C# cung cấp những đặc tính hướng thành
phần (component oriented): thuộc tính, sự kiện
Trang 34Ngôn ngữ C#
C# là ngôn ngữ đơn giản
C# là ngôn ngữ hiện đại
C# là ngôn ngữ hướng đối tượng
C# là ngôn ngữ có ít từ khoá
C# sẽ trở nên phổ biến
Trang 35Ngôn ngữ C#
lệnh không hỗ trợ giao diện cho người sử dụng
kế để chạy trên màn hình nền có hỗ trợ giao diện cho người sử dụng
Trang 36Tạo mới một Window Application
File New Project Windows Forms
Application
Trang 37Tạo mới một Console Application
File New Project Console Application
Trang 38Các thành phần cơ bản trong Visual Studio
Trang 39 Title bar: Chứa tên dự án
Menu bar: Chứa các thực đơn File, Edit,
View, Project, Build, Debug…)
Tools bar: Có 39 thanh công cụ
Thanh Standard
Ẩn/hiện: Nháy phải chuột lên thanh công cụ, chọn/
bỏ chọn tên thanh công cụ
Các thành phần cơ bản trong Visual Studio
Trang 40Các thành phần cơ bản trong Visual Studio
Toolbox: chứa các điều khiển khi thiết kế giao
diện người dùng
Ẩn/hiện: View Toolbox
Trang 41Các thành phần cơ bản trong Visual Studio
Cho phép thiết kế
giao diện người dùng, sử dụng các điều khiển trong Toolbox
Solution Explorer
View Solution Explorer
View Code: Xem mã
nguồn
View Designer: Xem
thiết kế giao diện
Trang 42Các thành phần cơ bản trong Visual Studio
Trang 43Một số thao tác cơ bản
Mở chương trình
File Open Project/Solution…
Lưu chương trình
File - Save All
Khi tạo đồ án, Visual Studio sinh ra các tập tin:
gồm một hoặc nhiều tập tin dự án
nguồn (các tập tin trong cùng dự án có cùng ngôn ngữ)
Trang 44Một số thao tác cơ bản
Biên dịch
Dịch Solution: Build Build Solution (F6)
Dịch dự án: Build Build tên dự án (Shift + F6)
Chạy chương trình
Chạy chương trình kèm sửa lỗi:
Debug Start Debugging (F5 hoặc nhấn )
Chạy chương trình không kèm sửa lỗi:
Debug Start Without Debugging (Ctrl + F5)
Debug Stop Debugging (Ctrl + Alt + Break )
Trang 45Bài tập về nhà
1 Cài đặt Visual Studio 2010 (bản Ultimate) và Crytal Reports 10 for Visual Studio 2010
2 Viết lại bài tập trên lớp
3 Viết các chương trình sau: (bằng ngôn ngữ C) a) Nhập vào một dãy số nguyên, sắp xếp dãy số theo chiều tăng dần và in kết quả ra màn hình (Viết hàm: Nhập dãy số, In dãy, sắp xếp)
b) Nhập vào 2 phân số, in ra màn hình tổng, hiệu, tích, thương của 2 phân số đó (viết hàm nhập, in phân số, tính tổng, hiệu, tích, thương)
Trang 46Bài tập về nhà
c) Viết chương trình quản lý sinh viên Mỗi SV gồm các thông tin: Mã SV, Họ tên, Ngày sinh, Quê quán, Điểm Toán, Lý, Hoá, Điểm trung bình
Nhập danh sách N sinh viên
In ra màn hình danh sách SV
Tìm kiếm sinh viên theo Mã SV
Đưa ra danh sách SV có điểm TB>7.0
(Viết các hàm: Nhập, In danh sách)