Cập nhật thông tin chi tiết về 10 Sách Lập Trình C# Siêu Chất Cho Developer mới nhất trên website Theindochinaproject.com. Hy vọng nội dung bài viết sẽ đáp ứng được nhu cầu của bạn, chúng tôi sẽ thường xuyên cập nhật mới nội dung để bạn nhận được thông tin nhanh chóng và chính xác nhất.
C# (hay còn gọi là C-Sharp) là ngôn ngữ lập trình hướng đối tượng, được Microsoft phát triển dựa trên nền tảng của ngôn ngữ Java và C++. Lập trình C# có nhiều điểm thú vị và nổi bật hơn những ngôn ngữ khác. Chỉ khi càng học và tìm hiểu sâu về nó, bạn mới nhận ra sức hút mạnh mẽ của “con cá mập” này.
ITviec đã chọn lọc 10 sách lập trình C# xuất sắc nhất bằng cả tiếng Việt và tiếng Anh. Sách chia ra nhiều cấp độ từ cơ bản đến nâng cao, giúp bạn:
Nhanh chóng làm chủ ngôn ngữ lập trình tuyệt vời này
Phát hiện những lỗi sai phổ biến và cách khắc phục khi lập trình C#
Tìm hiểu về Lập trình C#
C# là gì?
C# (hay còn gọi là C-Sharp) là ngôn ngữ lập trình hướng đối tượng, được Microsoft phát triển dựa trên nền tảng của ngôn ngữ Java và C++. Nó là tiền đề cho sự thâm nhập và phát triển của .NET framwork sau này.
Với sự kết hợp của C# và .NET framework, việc tạo các ứng dụng WinForm, WPF hay tạo website bằng MVC.NET… trở nên dễ dàng hơn rất nhiều.
Sách học lập trình C# tiếng Việt
Tác giả: Phạm Công Ngô. Xuất bản năm 2007 nhưng vẫn còn rất giá trị với những người muốn tìm hiểu về C#.
Ưu điểm:
Tải về miễn phí
Sách trình bày ngắn gọn, dễ hiểu, có ví dụ minh họa.
Nội dung ebook xuất phát từ chính kinh nghiệm giảng dạy của tác giả nên rất dễ áp dụng.
Nhược điểm:
Sách được thể hiện dưới dạng trắng đen, có thể khiến người đọc cảm thấy không hứng thú.
Sách phù hợp với người mới và những người có tính chủ động trong việc tự học.
Tác giả: Đây là tài liệu được biên soạn bởi đội ngũ giảng viên của trung tâm đào tạo CNTT Nhất Nghệ, phát hành từ năm 2008.
Ưu điểm:
Tải về miễn phí
Độ dày vừa phải (102 trang) giúp người đọc nhanh chóng nắm bắt những kiến thức nền tảng về lập trình C#.
Minh họa trực quan, dễ thực hành.
Nhược điểm:
Sách chỉ thích hợp với người mới bắt đầu vì nội dung chỉ ở mức cơ bản.
Tác giả: Dương Quang Thiện. Trọn bộ 8 tập, bao gồm cả lí thuyết và thực hành. Đặc biệt: tập 1 – C# căn bản, tập 2 – C# và .NET Framework.
Ưu điểm:
Bộ sách lập trình C# hiếm hoi được viết bằng tiếng Việt, hướng dẫn cặn kẽ từ căn bản đến chuyên sâu về .NET và C#.
Ngôn ngữ trình bày rõ ràng mạch lạc, cực kì dễ tiếp cận với mọi đối tượng độc giả.
Nhược điểm:
Xuất bản từ 2005 nên một số kiến thức có thể đã lạc hậu.
Sách hơi khó tìm mua. Các bạn có thể mượn ở Thư viện Khoa học Tổng hợp Tp.Hồ Chí Minh hoặc mua ebook.
Tác giả: Nguyễn Ngọc Bình Phương, Thái Thanh Phong. Sách dùng kèm đĩa.
Sách dày hơn 700 trang, cung cấp cái nhìn tổng quan khá đầy đủ về ứng dụng của ngôn ngữ C# trên các phương diện lập trình web, ứng dụng, cơ sở dữ liệu, đồ họa…
Ưu điểm
Cách trình bày hợp lý, thiên về thực hành. Có thể tham khảo riêng từng phần nội dung, không cần đọc từ đầu tới cuối sách.
Nội dung khái quát song các hướng dẫn đều chi tiết, dễ hiểu dễ theo dõi
Nhược điểm
Sách lập trình C# cơ bản, chỉ phù hợp với newbie
Sách học lập trình C# tiếng Anh
Ừ thì tên sách ngớ ngẩn thật, nhưng bạn chớ vội bỏ qua! Cuốn sách lập trình C# cơ bản này là bước khởi đầu hoàn hảo cho các newbie, đặc biệt những ai chưa từng code.
Ưu điểm:
Nhược điểm:
Sách rất cơ bản, không phù hợp với developer đã có kinh nghiệm về C#. Sau khi hoàn thành cuốn sách này, bạn nên tìm đọc các cuốn sách cung cấp nội dung chi tiết hơn, đặc biệt về data sources. MSDN và StackOverFlow cũng là những resources hữu ích để học chuyên sâu C#.
Sách được dùng làm giáo trình cho sinh viên năm nhất khoa Computer Science tại trường Đại học Hull (Anh).
Ưu điểm:
Văn phong hài hước, thân thiện. Cách viết đơn giản, dễ hiểu.
Cung cấp đầy đủ kiến thức cơ bản cần thiết.
Nhược điểm
Chỉ phù hợp với newbie
Ưu điểm:
Lối viết đơn giản, sáng rõ, súc tích – có thể sử dụng thay cho giáo trình trên lớp hoặc tutorials. Ngôn ngữ phóng khoáng và giọng điệu hài hước mang lại cảm giác thú vị như đọc tiểu thuyết.
Cung cấp những kiến thức trọng yếu về ngôn ngữ C#, đặc biệt cách sử dụng các functions và resources khác nhau của C# trong lập trình games.
Hướng dẫn kĩ thuật lập trình rất tốt, nhất là cấu trúc lập trình.
Nhược điểm
Khối lượng kiến thức lớn được trình bày cô đọng trong vòng 350 trang có thể khiến người đọc newbie thấy “đuối”. Đôi chỗ, lượng thông tin lẽ ra cần đến 20 phút tutorial và một chuỗi ví dụ để giải thích, thì ở đây tác giả lại chỉ tóm gọn trong 2 trang sách và 1 ví dụ.
Thiếu các chỉ dẫn cơ bản cho một người chưa từng code, tuy nhiên lại hơi đơn giản đối với một C# developer giàu kinh nghiệm.
C# là ngôn ngữ thông dụng của các .NET developer. Vì vậy, khi tìm hiểu về C#, bạn cũng rất nên tìm hiểu về .NET framework.
Cuốn sách này cung cấp kiến thức nền vững chắc về ngôn ngữ lập trình C# và các phương diện chính của .NET platform.
Ưu điểm:
Với dung lượng đồ sộ hơn 1600 trang, cuốn sách bao quát kiến thức rộng lớn về các công nghệ được xây dựng trên C# và .NET như: chúng tôi và Entity Framework, Windows Communication Foundation (WCF), Windows Presentation Foundation (WPF), chúng tôi (WebForms, MVC, WebAPI), cũng như kiến trúc, protocols…
Đồng thời, tác giả cũng lí giải logic phía sau các công nghệ, giúp người đọc có cái nhìn sâu sắc hơn nguyên do và sự phát triển của .NET framework.
Ngôn ngữ giản dị, dễ hiểu.
Nhược điểm:
Không phù hợp với những ai mới bước đầu tìm hiểu C# và .NET.
Cấu trúc sách không thật sự chặt chẽ. Đôi lúc tác giả lặp lại cùng một nội dung ở các chương khác nhau, nên có thể gây phiền lòng độc giả khắt khe.
Vì lượng thông tin quá lớn nên nhìn chung nội dung sách vẫn mang tính chất tổng quan. Để tìm hiểu kĩ hơn, bạn nên tìm đọc các cuốn sách chuyên sâu về từng khía cạnh/công nghệ của .NET như WPF, WCF, và đặc biệt là ASP.NET.
Nếu bạn dự định chỉ đọc 05 cuốn sách lập trình C# trong đời, thì CLR via C# nên là một trong số đó.
Sách phù hợp với các Senior C# Developer.
Ưu điểm
Nhược điểm
Sách lập trình C# do Jon Skeet viết? Chỉ vậy thôi đã đủ đảm bảo chất lượng 10/10!
Thực vậy, cuốn sách cực chất, cực cool này phơi bày những ngóc ngách phức tạp, lắt léo nhất của C# mà chỉ Jon Skeet biết. Qua đó, bạn sẽ chứng kiến sức mạnh của C# trong hành động, học được cách làm việc với các tính năng đỉnh cao trong toolkit, đồng thời tránh được những sai lầm tiềm ẩn khi lập trình C#.
Ưu điểm
Không học thuật, không sử dụng ngôn ngữ phức tạp! Đây là cuốn sách hết sức thực tế được viết bởi chuyên gia đầu ngành.
Nội dung cực kì chuyên sâu và hữu ích.
Nhược điểm
Chỉ dành cho các chuyên gia nhiều năm kinh nghiệm về C# và .NET. Cuốn sách này sẽ giúp bạn trở thành guru!
Các Giải Pháp Lập Trình C#
Published on
1. 1
2. 2 tổng hợp và biên dịch Nguyễn Ngọc Bình Phương – Thái Thanh Phong cùng sự cộng tác của Nguyễn Thanh Nhân – Trần Lê Vĩnh Phong Nguyễn Quang Nam – Đinh Phan Chí Tâm Bùi Minh Khoa – Lê Ngọc Sơn Thái Kim Phụng – Lê Trần Nhật Quỳnh Chịu trách nhiệm xuất bản: TS. Nguyễn Xuân Thủy Biên tập: Hồ Nguyễn Thị Thanh Thúy Trình bày bìa: Nguyễn Thị Thanh Thủy Chế bản & Sửa bản in: Nguyễn Ngọc Bình Phương Nhà sách Đất Việt Địa chỉ: 225 Nguyễn Tri Phương, Q.5, TP. Hồ Chí Minh Điện thoại: (08) 2 652 039 E-mail: datviet@dvpub.com.vn
3. 3Website: www.dvpub.com.vn
4. 4 Nguyễn Ngọc Bình Phương – Thái Thanh Phong tổng hợp biên dịchhttp://www.dvpub.com.vn/dv/details.aspx?itemid=243
5. 5NHÀ XUẤT BẢN GIAO THÔNG VẬN TẢI
7. 7LỜI NÓI ĐẦU LỜI NÓI ĐẦU C ác giải pháp lập trình C# khảo sát chiều rộng của thư viện lớp .NET Framework và cung cấp giải pháp cụ thể cho các vấn đề thường gặp. Mỗi giải pháp được trình bày theo dạng “vấn đề/giải pháp” một cách ngắn gọn và kèm theo là các ví dụ mẫu. Các giải pháp lập trình C# không nhằm mục đích hướng dẫn bạn cách lập trình C#. Tuy vậy, ngay cả khi mới làm quen với lập trình ứng dụng được xây dựng trên .NET Framework với C#, bạn cũng sẽ nhận thấy quyển sách này là một tài nguyên vô giá. Ở mức lý tưởng, khi bạn đối mặt với một vấn đề, quyển sách này sẽ cung cấp một giải pháp-hay ít nhất nó sẽ gợi cho bạn hướng đi đúng. Ngay cả nếu bạn chỉ muốn mở rộng kiến thức của mình về thư viện lớp .NET, Các giải pháp lập trình C# cũng là một tài liệu rất hữu ích. Bạn không thể trở nên thành thạo C# và các lớp trong thư viện lớp .NET nếu chỉ đơn thuần đọc về chúng, bạn phải sử dụng và thử nghiệm chúng bằng cách viết thật nhiều chương trình. Cấu trúc và nội dung của quyển sách này cũng như tính khả thi trong thế giới thực của các giải pháp được đưa ra sẽ cung cấp điểm khởi đầu hoàn hảo, để từ đó làm bàn đạp cho việc thử nghiệm của chính bạn. Phần mã lệnh trong quyển sách này đã được viết và chạy thử nghiệm trên phiên bản 1.1 của .NET Framework. Trong nhiều trường hợp, bạn sẽ nhận thấy ví dụ mẫu này cũng sẽ chạy trên phiên bản 1.0 hay 2.0 của .NET Framework, tuy nhiên điều này chưa được thử nghiệm. Chúng tôi xin chân thành cảm ơn các bạn Nguyễn Thanh Nhân, Trần Lê Vĩnh Phong, Nguyễn Quang Nam, Đinh Phan Chí Tâm, Bùi Minh Khoa, Lê Ngọc Sơn, Thái Kim Phụng, và Lê Trần Nhật Quỳnh đã có những đóng góp
8. 8 quý báu cho quyển sách; cảm ơn Nhà xuất bản Giao thông Vận tải và Nhà sách Đất Việt đã tạo điều kiện cho quyển sách này đến với bạn đọc. Do lần đầu tiên xuất bản nên quyển sách này khó tránh khỏi những thiếu sót. Rất mong nhận được ý kiến đóng góp và nhận xét của các bạn để lần tái bản sau được hoàn thiện hơn. Trân trọng cảm ơn
12. 12QUY ƯỚC QUY ƯỚC Quyển sách này sử dụng các quy ước như sau: Về font chữ Chữ in nghiêng-Dùng cho tên riêng, tên file và thư mục, và đôi khi để nhấn mạnh. Chữ với bề rộng cố định (font Courie New)-Dùng cho các đoạn chương trình, và cho các phần tử mã lệnh như câu lệnh, tùy chọn, biến, đặc tính, khóa, hàm, kiểu, lớp, không gian tên, phương thức, module, thuộc tính, thông số, giá trị, đối tượng, sự kiện, phương thức thụ lý sự kiện, thẻ XML, thẻ HTML, nội dung file, và kết xuất từ các câu lệnh. Chữ in đậm với bề rộng cố định-Dùng trong các đoạn chương trình để nêu bật một phần quan trọng của mã lệnh hoặc dùng cho các dòng lệnh, câu lệnh SQL. Về ký hiệu Vấn đề Thủ thuật
13. 13Giải pháp Ghi chú
15. 15YÊU CẦU VỀ HỆ THỐNG YÊU CẦU VỀ HỆ THỐNG Để chạy được những ví dụ mẫu đi kèm quyển sách này, bạn sẽ cần những phần mềm sau đây: Microsoft .NET Framework SDK version 1.1 Microsoft Visual Studio .NET 2003 Microsoft Windows 2000, Windows XP, hoặc Microsoft Windows Server 2003 Microsoft SQL Server 2000 hoặc MSDE đối với các mục trong chương 10 Microsoft Internet Information Services (IIS) đối với một số mục trong chương 7 và chương 12 Yêu cầu tối thiểu về phần cứng là bộ vi xử lý Pentium II 450 MHz, với dung lượng RAM tối thiểu là 128 MB nếu bạn đang sử dụng Microsoft Windows 2000, và là 256 MB nếu bạn đang sử dụng Windows XP, Windows 2000 Server, hay Windows Server 2003. Bạn cần khoảng 5 GB dung lượng đĩa cứng còn trống để cài đặt Visual Studio .NET 2003. Những giá trị này là mức tối thiểu, quá trình phát triển sẽ dễ dàng hơn trên một hệ thống với dung lượng RAM lớn và đĩa cứng còn trống nhiều. Mặc dù bản hiện thực .NET Framework cho Windows của Microsoft là tiêu điểm của quyển sách này, một mục tiêu quan trọng là cấp một
18. 18CÁCH SỬ DỤNG ĐĨA CD CÁCH SỬ DỤNG ĐĨA CD M ã lệnh được cấp ở dạng tập các giải pháp và dự án Visual Studio .NET 2003, được tổ chức theo chương và số đề mục. Mỗi chương là một giải pháp độc lập, và mỗi đề mục là một dự án độc lập bên trong giải pháp của chương. Một vài đề mục trong chương 11 và chương 12 trình bày về lập trình mạng gồm những dự án độc lập có chứa các phần client và server trong giải pháp của đề mục. Mặc dù tất cả những ví dụ mẫu được cấp ở dạng dự án Visual Studio .NET, nhưng hầu hết đều bao gồm một file nguồn đơn mà bạn có thể biên dịch và chạy độc lập với Visual Studio .NET. Nếu không sử dụng Visual Studio .NET 2003, bạn có thể định vị mã nguồn cho một đề mục cụ thể bằng cách duyệt cấu trúc thư mục của ví dụ mẫu. Ví dụ, để tìm mã nguồn cho mục 4.3, bạn sẽ tìm nó trong thư mục Chuong0404-03. Nếu sử dụng trình biên dịch dòng lệnh thì phải bảo đảm rằng bạn đã thêm tham chiếu đến tất cả các assembly cần thiết. Một số ứng dụng mẫu yêu cầu các đối số dòng lệnh (sẽ được mô tả trong phần văn bản của đề mục). Nếu sử dụng Visual Studio .NET, bạn có thể nhập các đối số này trong Project Properties (mục Debugging của phần Configuration Properties). Nhớ rằng, nếu cần nhập tên thư mục hay file có chứa khoảng trắng thì bạn cần đặt tên đầy đủ trong dấu nháy kép. Tất cả ví dụ truy xuất dữ liệu chúng tôi được tạo với SQL Server 2000. Chúng cũng có thể được sử dụng với SQL Server 7 và MSDE.
20. 20MỤC LỤC MỤC LỤC LỜI NÓI ĐẦU……………………………………………………………………………………………………………….. 7 CẤU TRÚC CỦA SÁCH………………………………………………………………………………………………..10 QUY ƯỚC………………………………………………………………………………………………………………….. 12 YÊU CẦU VỀ HỆ THỐNG……………………………………………………………………………………………. 15 CÁCH SỬ DỤNG ĐĨA CD……………………………………………………………………………………………..18 MỤC LỤC…………………………………………………………………………………………………………………… 20 Chương 1: PHÁT TRIỂN ỨNG DỤNG 29 1. Tạo ứng dụng Console………………………………………………………………………………. 31 2. Tạo ứng dụng dựa-trên-Windows………………………………………………………………… 33 3. Tạo và sử dụng module……………………………………………………………………………… 37 4. Tạo và sử dụng thư viện…………………………………………………………………………….. 39 5. Truy xuất các đối số dòng lệnh……………………………………………………………………. 40 6. Chọn biên dịch một khối mã vào file thực thi…………………………………………………. 42 7. Truy xuất một phần tử chương trình có tên trùng với một từ khóa……………………………………………………………………………. 45
21. 21 8. Tạo và quản lý cặp khóa tên mạnh………………………………………………………………. 45 9. Tạo tên mạnh cho assembly……………………………………………………………………….. 47 10. Xác minh một assembly tên mạnh không bị sửa đổi…………………………………….. 49 11. Hoãn việc ký assembly…………………………………………………………………………….. 50 12. Ký assembly với chữ ký số Authenticode……………………………………………………. 52 13. Tạo và thiết lập tin tưởng một SPC thử nghiệm…………………………………………… 54 14. Quản lý Global Assembly Cache……………………………………………………………….. 56 15. Ngăn người khác dịch ngược mã nguồn của bạn………………………………………… 56Chương 2: THAO TÁC DỮ LIỆU 59 1. Thao tác chuỗi một cách hiệu quả……………………………………………………………….. 61 2. Mã hóa chuỗi bằng các kiểu mã hóa ký tự……………………………………………………. 62 3. Chuyển các kiểu giá trị cơ bản thành mảng kiểu byte…………………………………….. 65 4. Mã hóa dữ liệu nhị phân thành văn bản……………………………………………………….. 67 5. Sử dụng biểu thức chính quy để kiểm tra dữ liệu nhập…………………………………… 70 6. Sử dụng biểu thức chính quy đã được biên dịch…………………………………………….72 7. Tạo ngày và giờ từ chuỗi……………………………………………………………………………. 75 8. Cộng, trừ, so sánh ngày giờ……………………………………………………………………….. 76 9. Sắp xếp một mảng hoặc một ArrayList…………………………………………………………. 78 10. Chép một tập hợp vào một mảng………………………………………………………………. 79 11. Tạo một tập hợp kiểu mạnh………………………………………………………………………. 80 12. Lưu một đối tượng khả-tuần-tự-hóa vào file………………………………………………… 81Chương 3: MIỀN ỨNG DỤNG, CƠ CHẾ PHẢN CHIẾU, VÀ SIÊU DỮ LIỆU 86 1. Tạo miền ứng dụng…………………………………………………………………………………….88 2. Chuyển các đối tượng qua lại các miền ứng dụng…………………………………………. 90 3. Tránh nạp các assembly không cần thiết vào miền ứng dụng…………………………. 91 4. Tạo kiểu không thể vượt qua biên miền ứng dụng…………………………………………. 92 5. Nạp assembly vào miền ứng dụng hiện hành……………………………………………….. 92 6. Thực thi assembly ở miền ứng dụng khác……………………………………………………. 94 7. Thể hiện hóa một kiểu trong miền ứng dụng khác…………………………………………. 95 8. Truyền dữ liệu giữa các miền ứng dụng……………………………………………………… 101 9. Giải phóng assembly và miền ứng dụng…………………………………………………….. 103 10. Truy xuất thông tin Type…………………………………………………………………………. 104 11. Kiểm tra kiểu của một đối tượng……………………………………………………………….106 12. Tạo một đối tượng bằng cơ chế phản chiếu……………………………………………….107 13. Tạo một đặc tính tùy biến…………………………………………………………………………110 14. Sử dụng cơ chế phản chiếu để kiểm tra các đặc tính của một phần tử chương trình………………………………………………………113Chương 4: TIỂU TRÌNH, TIẾN TRÌNH, VÀ SỰ ĐỒNG BỘ 115 1. Thực thi phương thức với thread-pool…………………………………………………………117 2. Thực thi phương thức một cách bất đồng bộ………………………………………………. 121 3. Thực thi phương thức bằng Timer………………………………………………………………129 4. Thực thi phương thức bằng cách ra hiệu đối tượng WaitHandle……………………. 132 5. Thực thi phương thức bằng tiểu trình mới……………………………………………………135 6. Điều khiển quá trình thực thi của một tiểu trình……………………………………………. 137
22. 22 7. Nhận biết khi nào một tiểu trình kết thúc…………………………………………………….. 142 8. Đồng bộ hóa quá trình thực thi của nhiều tiểu trình……………………………………….143 9. Tạo một đối tượng tập hợp có tính chất an-toàn-về-tiểu-trình…………………………148 10. Khởi chạy một tiến trình mới……………………………………………………………………. 149 11. Kết thúc một tiến trình…………………………………………………………………………….. 152 12. Bảo đảm chỉ có thể chạy một thể hiện của ứng dụng tại một thời điểm…………………………………………………… 154 Chương 5: XML 157 1. Hiển thị cấu trúc của một tài liệu XML trong TreeView………………………………….. 159 2. Chèn thêm nút vào tài liệu XML…………………………………………………………………. 164 3. Chèn thêm nút vào tài liệu XML một cách nhanh chóng……………………………….. 166 4. Tìm một nút khi biết tên của nó…………………………………………………………………..169 5. Thu lấy các nút XML trong một không gian tên XML cụ thể…………………………… 170 6. Tìm các phần tử với biểu thức XPath…………………………………………………………. 172 7. Đọc và ghi XML mà không phải nạp toàn bộ tài liệu vào bộ nhớ……………………. 175 8. Xác nhận tính hợp lệ của một tài liệu XML dựa trên một Schema………………….. 178 9. Sử dụng XML Serialization với các đối tượng tùy biến…………………………………. 184 10. Tạo XML Schema cho một lớp .NET………………………………………………………… 188 11. Tạo lớp từ một XML Schema……………………………………………………………………188 12. Thực hiện phép biến đổi XSL……………………………………………………………………189 Chương 6: WINDOWS FORM 193 1. Thêm điều kiểm vào form lúc thực thi…………………………………………………………. 195 2. Liên kết dữ liệu vào điều kiểm…………………………………………………………………… 197 3. Xử lý tất cả các điều kiểm trên form…………………………………………………………… 199 4. Theo vết các form khả kiến trong một ứng dụng………………………………………….. 200 5. Tìm tất cả các form trong ứng dụng MDI…………………………………………………….. 201 6. Lưu trữ kích thước và vị trí của form………………………………………………………….. 203 7. Buộc ListBox cuộn xuống…………………………………………………………………………..205 8. Chỉ cho phép nhập số vào TextBox……………………………………………………………. 206 9. Sử dụng ComboBox có tính năng auto-complete…………………………………………. 207 10. Sắp xếp ListView theo cột bất kỳ……………………………………………………………… 211 11. Liên kết menu ngữ cảnh vào điều kiểm…………………………………………………….. 213 12. Sử dụng một phần menu chính cho menu ngữ cảnh………………………………….. 214 13. Tạo form đa ngôn ngữ……………………………………………………………………………. 217 14. Tạo form không thể di chuyển được…………………………………………………………. 219 15. Làm cho form không đường viền có thể di chuyển được…………………………….. 220 16. Tạo một icon động trong khay hệ thống……………………………………………………. 222 17. Xác nhận tính hợp lệ của đầu vào cho một điều kiểm…………………………………. 223 18. Thực hiện thao tác kéo-và-thả…………………………………………………………………. 226 19. Sử dụng trợ giúp cảm-ngữ-cảnh……………………………………………………………….228 20. Áp dụng phong cách Windows XP…………………………………………………………….229 21. Thay đổi độ đục của form…………………………………………………………………………231 Chương 7: chúng tôi VÀ WEB FORM 234
23. 23 1. Chuyển hướng người dùng sang trang khác………………………………………………..236 2. Duy trì trạng thái giữa các yêu cầu của trang………………………………………………. 237 3. Tạo các biến thành viên có trạng thái cho trang…………………………………………… 243 4. Đáp ứng các sự kiện phía client với JavaScript…………………………………………… 244 5. Hiển thị cửa sổ pop-up với JavaScript………………………………………………………… 247 6. Thiết lập focus cho điều kiểm……………………………………………………………………..249 7. Cho phép người dùng upload file………………………………………………………………..250 8. Sử dụng IIS authentication…………………………………………………………………………253 9. Sử dụng Forms authentication……………………………………………………………………257 10. Thực hiện xác nhận tính hợp lệ có-chọn-lựa……………………………………………… 260 11. Thêm động điều kiểm vào Web Form……………………………………………………….. 263 12. Trả về động một bức hình………………………………………………………………………..266 13. Nạp điều kiểm người dùng bằng mã lệnh…………………………………………………..270 14. Sử dụng page-caching và fragment-caching……………………………………………… 275 15. Dùng lại dữ liệu với chúng tôi Cache……………………………………………………….. 276 16. Kích hoạt việc gỡ rối ứng dụng Web………………………………………………………… 280 17. Thay đổi quyền đã cấp cho mã ASP.NET…………………………………………………. 284Chương 8: ĐỒ HỌA, ĐA PHƯƠNG TIỆN, VÀ IN ẤN 287 1. Tìm tất cả các font đã được cài đặt……………………………………………………………. 289 2. Thực hiện “hit testing” với shape……………………………………………………………….. 291 3. Tạo form có hình dạng tùy biến…………………………………………………………………. 295 4. Tạo điều kiểm có hình dạng tùy biến………………………………………………………….. 297 5. Thêm tính năng cuộn cho một bức hình……………………………………………………… 301 6. Thực hiện chụp màn hình Desktop…………………………………………………………….. 303 7. Sử dụng “double buffering” để tăng tốc độ vẽ lại………………………………………….. 305 8. Hiển thị hình ở dạng thumbnail………………………………………………………………….. 308 9. Phát tiếng “beep” của hệ thống…………………………………………………………………..310 10. Chơi file audio……………………………………………………………………………………….. 311 11. Chơi file video……………………………………………………………………………………….. 313 12. Lấy thông tin về các máy in đã được cài đặt……………………………………………… 317 13. In văn bản đơn giản……………………………………………………………………………….. 321 14. In văn bản có nhiều trang…………………………………………………………………………324 15. In text dạng wrapping……………………………………………………………………………… 328 16. Hiển thị print-preview……………………………………………………………………………… 330 17. Quản lý tác vụ in……………………………………………………………………………………. 333 18. Sử dụng Microsoft Agent………………………………………………………………………… 338Chương 9: FILE, THƯ MỤC, VÀ I/O 346 1. Truy xuất các thông tin về file hay thư mục…………………………………………………. 348 2. Thiết lập các thuộc tính của file và thư mục………………………………………………… 353 3. Chép, chuyển, xóa file hay thư mục…………………………………………………………… 354 4. Tính kích thước của thư mục……………………………………………………………………..357 5. Truy xuất thông tin phiên bản của file…………………………………………………………. 359 6. Sử dụng TreeView để hiển thị cây thư mục just-in-time ……………………………….. 360 7. Đọc và ghi file văn bản……………………………………………………………………………… 363 8. Đọc và ghi file nhị phân……………………………………………………………………………..365
24. 24 9. Đọc file một cách bất đồng bộ…………………………………………………………………….367 10. Tìm file phù hợp một biểu thức wildcard…………………………………………………….370 11. Kiểm tra hai file có trùng nhau hay không…………………………………………………..371 12. Thao tác trên đường dẫn file…………………………………………………………………….373 13. Xác định đường dẫn tương ứng với một file hay thư mục…………………………… 374 14. Làm việc với đường dẫn tương đối………………………………………………………….. 375 15. Tạo file tạm…………………………………………………………………………………………… 376 16. Lấy dung lượng đĩa còn trống…………………………………………………………………..377 17. Hiển thị các hộp thoại file………………………………………………………………………… 379 18. Sử dụng không gian lưu trữ riêng…………………………………………………………….. 382 19. Theo dõi hệ thống file để phát hiện thay đổi………………………………………………. 384 20. Truy xuất cổng COM………………………………………………………………………………. 386 Chương 10: CƠ SỞ DỮ LIỆU 389 1. Kết nối cơ sở dữ liệu…………………………………………………………………………………392 2. Sử dụng connection-pooling……………………………………………………………………… 394 3. Thực thi câu lệnh SQL hoặc thủ tục tồn trữ…………………………………………………. 397 4. Sử dụng thông số trong câu lệnh SQL hoặc thủ tục tồn trữ…………………………… 400 5. Xử lý kết quả của truy vấn SQL bằng data-reader……………………………………….. 403 6. Thu lấy tài liệu XML từ truy vấn SQL Server……………………………………………….. 407 7. Nhận biết tất cả các thể hiện SQL Server 2000 trên mạng……………………………. 411 8. Đọc file Excel với ADO.NET……………………………………………………………………… 413 9. Sử dụng Data Form Wizard………………………………………………………………………. 415 10. Sử dụng Crystal Report Wizard……………………………………………………………….. 424 Chương 11: LẬP TRÌNH MẠNG 435 1. Download file thông qua HTTP………………………………………………………………….. 437 2. Download và xử lý file bằng stream……………………………………………………………. 438 3. Lấy trang HTML từ một website có yêu cầu xác thực…………………………………… 440 4. Hiển thị trang web trong ứng dụng dựa-trên-Windows………………………………….. 442 5. Lấy địa chỉ IP của máy tính hiện hành………………………………………………………… 446 6. Phân giải tên miền thành địa chỉ IP……………………………………………………………. 447 7. “Ping” một địa chỉ IP…………………………………………………………………………………. 448 8. Giao tiếp bằng TCP…………………………………………………………………………………..452 9. Lấy địa chỉ IP của client từ kết nối socket……………………………………………………. 457 10. Thiết lập các tùy chọn socket……………………………………………………………………459 11. Tạo một TCP-server hỗ-trợ-đa-tiểu-trình…………………………………………………… 460 12. Sử dụng TCP một cách bất đồng bộ………………………………………………………… 463 13. Giao tiếp bằng UDP……………………………………………………………………………….. 467 14. Gửi e-mail thông qua SMTP……………………………………………………………………. 470 15. Gửi và nhận e-mail với MAPI …………………………………………………………………..471 Chương 12: DỊCH VỤ WEB XML VÀ REMOTING 474 1. Tránh viết mã cứng cho địa chỉ URL của dịch vụ Web XML………………………….. 477 2. Sử dụng kỹ thuật response-caching trong dịch vụ Web XML…………………………. 478 3. Sử dụng kỹ thuật data-caching trong dịch vụ Web XML…………………………………479
25. 25 4. Tạo phương thức web hỗ trợ giao dịch ……………………………………………………… 482 5. Thiết lập thông tin xác thực cho dịch vụ Web XML………………………………………..485 6. Gọi bất đồng bộ một phương thức web………………………………………………………. 486 7. Tạo lớp khả-truy-xuất-từ-xa………………………………………………………………………. 488 8. Đăng ký tất cả các lớp khả-truy-xuất-từ-xa trong một assembly…………………….. 494 9. Quản lý các đối tượng ở xa trong IIS………………………………………………………….. 496 10. Phát sinh sự kiện trên kênh truy xuất từ xa ………………………………………………. 497 11. Kiểm soát thời gian sống của một đối tượng ở xa ………………………………………502 12. Kiểm soát phiên bản của các đối tượng ở xa…………………………………………….. 504 13. Tạo phương thức một chiều với dịch vụ Web XML hay Remoting……………………………………………………………….. 506Chương 13: BẢO MẬT 509 1. Cho phép mã lệnh có-độ-tin-cậy-một-phần sử dụng assembly tên mạnh của bạn……………………………………………………………… 512 2. Vô hiệu bảo mật truy xuất mã lệnh…………………………………………………………….. 514 3. Vô hiệu việc kiểm tra quyền thực thi…………………………………………………………… 516 4. Bảo đảm bộ thực thi cấp cho assembly một số quyền nào đó……………………….. 517 5. Giới hạn các quyền được cấp cho assembly………………………………………………. 519 6. Xem các yêu cầu quyền được tạo bởi một assembly…………………………………….520 7. Xác định mã lệnh có quyền nào đó lúc thực thi hay không……………………………. 522 8. Hạn chế ai đó thừa kế các lớp của bạn và chép đè các thành viên lớp……………………………………………………………………….. 523 9. Kiểm tra chứng cứ của một assembly………………………………………………………… 525 10. Xử lý chứng cứ khi nạp một assembly …………………………………………………….. 527 11. Xử lý bảo mật bộ thực thi bằng chứng cứ của miền ứng dụng ……………………. 529 12. Xử lý bảo mật bộ thực thi bằng chính sách bảo mật của miền ứng dụng…………………………………………………..531 13. Xác định người dùng hiện hành có là thành viên của một nhóm Windows nào đó hay không……………………………………………………… 535 14. Hạn chế những người dùng nào đó thực thi mã lệnh của bạn……………………… 538 15. Giả nhận người dùng Windows……………………………………………………………….. 543Chương 14: MẬT MÃ 548 1. Tạo số ngẫu nhiên…………………………………………………………………………………… 550 2. Tính mã băm của password……………………………………………………………………….552 3. Tính mã băm của file…………………………………………………………………………………554 4. Kiểm tra mã băm……………………………………………………………………………………… 555 5. Bảo đảm tính toàn vẹn dữ liệu bằng mã băm có khóa………………………………….. 558 6. Bảo vệ file bằng phép mật hóa đối xứng…………………………………………………….. 560 7. Truy lại khóa đối xứng từ password ……………………………………………………………566 8. Gửi một bí mật bằng phép mật hóa bất đối xứng…………………………………………. 568 9. Lưu trữ khóa bất đối xứng một cách an toàn ……………………………………………….574 10. Trao đổi khóa phiên đối xứng một cách an toàn………………………………………….577Chương 15: KHẢ NĂNG LIÊN TÁC MÃ LỆNH KHÔNG-ĐƯỢC-QUẢN-LÝ 584 1. Gọi một hàm trong một DLL không-được-quản-lý………………………………………… 586 2. Lấy handle của một điều kiểm, cửa sổ, hoặc file………………………………………….. 590
26. 26 3. Gọi một hàm không-được-quản-lý có sử dụng cấu trúc………………………………… 591 4. Gọi một hàm không-được-quản-lý có sử dụng callback………………………………… 594 5. Lấy thông tin lỗi không-được-quản-lý…………………………………………………………. 595 6. Sử dụng thành phần COM trong .NET-client……………………………………………….. 597 7. Giải phóng nhanh thành phần COM…………………………………………………………… 600 8. Sử dụng thông số tùy chọn……………………………………………………………………….. 600 9. Sử dụng điều kiểm ActiveX trong .NET-client……………………………………………….602 10. Tạo thành phần .NET dùng cho COM-client………………………………………………. 603 Chương 16: CÁC GIAO DIỆN VÀ MẪU THÔNG DỤNG 605 1. Hiện thực kiểu khả-tuần-tự-hóa (serializable type)……………………………………….. 607 2. Hiện thực kiểu khả-sao-chép (cloneable type)…………………………………………….. 614 3. Hiện thực kiểu khả-so-sánh (comparable type)……………………………………………. 617 4. Hiện thực kiểu khả-liệt-kê (enumerable type)………………………………………………. 622 5. Hiện thực lớp khả-hủy (disposable class)…………………………………………………….629 6. Hiện thực kiểu khả-định-dạng (formattable type)…………………………………………..633 7. Hiện thực lớp ngoại lệ tùy biến………………………………………………………………….. 636 8. Hiện thực đối số sự kiện tùy biến………………………………………………………………. 640 9. Hiện thực mẫu Singleton……………………………………………………………………………642 10. Hiện thực mẫu Observer………………………………………………………………………….643 Chương 17: SỰ HÒA HỢP VỚI MÔI TRƯỜNG WINDOWS 651 1. Truy xuất thông tin môi trường……………………………………………………………………653 2. Lấy giá trị của một biến môi trường……………………………………………………………. 657 3. Ghi một sự kiện vào nhật ký sự kiện Windows…………………………………………….. 658 4. Truy xuất Windows Registry……………………………………………………………………… 659 5. Tạo một dịch vụ Windows…………………………………………………………………………. 663 6. Tạo một bộ cài đặt dịch vụ Windows………………………………………………………….. 668 7. Tạo shortcut trên Desktop hay trong Start menu………………………………………….. 671 PHỤ LỤC A: GIỚI THIỆU MỘT SỐ CÔNG CỤ .NET ……………………………………………………. 676 A.1 Biên dịch các đoạn mã ngắn với Snippet Compiler ……………………………………..676 A.2 Xây dựng biểu thức chính quy với Regulator …………………………………………….. 678 A.3 Sinh mã với CodeSmith…………………………………………………………………………… 679 A.4 Viết kiểm thử đơn vị với NUnit ………………………………………………………………….681 A.5 Kiểm soát mã lệnh với FxCop …………………………………………………………………. 683 A.6 Khảo sát assembly với .NET Reflector ………………………………………………………684 A.7 Lập tài liệu mã lệnh với NDoc……………………………………………………………………686 A.8 Tạo dựng giải pháp với NAnt…………………………………………………………………….689 A.9 Chuyển đổi phiên bản chúng tôi với chúng tôi Version Switcher………………….. 691 A.10 Chuyển đổi phiên bản dự án với Visual Studio .NET Project Converter……….. 692 A.11 Chuyển mã nguồn chúng tôi sang C# với chúng tôi to C# Converter……………… 693 A.12 Chuyển mã nguồn C# sang chúng tôi với Convert C# to VB.NET………………… 693 A.13 Xây dựng website quản trị cơ sở dữ liệu với chúng tôi Maker 1.1………………. 694 PHỤ LỤC B: THUẬT NGỮ ANH – VIỆT……………………………………………………………………….. 697
27. 27TÀI LIỆU THAM KHẢO……………………………………………………………………………………………… 705
29. 29Chương 1:PHÁT TRIỂN ỨNG DỤNG 1
31. 31 Chương 1: Phát triển ứng dụngC hương này trình bày một số kiến thức nền tảng, cần thiết trong quá trình phát triển một ứng dụng C#. Các mục trong chương sẽ trình bày chi tiết các vấn đề sau đây: Xây dựng các ứng dụng Console và Windows Form (mục 1.1 và 1.2). Tạo và sử dụng đơn thể mã lệnh và thư viện mã lệnh (mục 1.3 và 1.4). Truy xuất đối số dòng lệnh từ bên trong ứng dụng (mục 1.5). Sử dụng các chỉ thị biên dịch để tùy biến việc biên dịch mã nguồn (mục 1.6). Truy xuất các phần tử chương trình (được xây dựng trong ngôn ngữ khác) có tên xung đột với các từ khóa C# (mục 1.7). Tạo và xác minh tên mạnh cho assembly (mục 1.8, 1.9, 1.10, và 1.11). Ký một assembly bằng chữ ký số Microsoft Authenticode (mục 1.12 và 1.13). Quản lý những assembly chia sẻ được lưu trữ trong
Kế Hoạch Lập Hồ Sơ Quản Lý Chất Lượng Công Trình
CÔNG TRÌNH NÀO CŨNG CẦN PHẢI LẬP KẾ HOẠCH, CÁC BẠN THAM KHẢO BÀI VIẾT CỦA 1 CÔNG TRÌNH THỰC TẾ SAU ĐỂ PHỤC VỤ CÔNG TÁC: QUẢN LÝ, THỰC HIỆN …DỰ ÁN THẬT TỐT.
Sự thành công của một dự án thường được đo lường trong điều khoản của việc đạt được các mục tiêu về “thời gian, chi phí và chất lượng”. Khi mục tiêu “thời gian” và “chi phí” được thiết lập trong dự án, chúng ta cần phải vạch ra những mục tiêu “chất lượng” và xác định các phương pháp được sử dụng để đảm bảo với khách hàng (CĐT) rằng các mục tiêu chất lượng sẽ được thực hiện trong dự án này.
Theo ISO 9000:2000 định nghĩa về “chất lượng”: Mức độ của một tập hợp các đặc tính vốn có đáp ứng các yêu cầu. Mức độ có thể là kém, tốt và tuyệt hảo.
Hay nói cách khác “Chất lượng” là mức độ phù hợp của mỗi công trình (bàn giao) theo các yêu cầu của khách hàng.
Các yêu cầu của khách hàng (CĐT) trong dự án xây dựng được nêu trong các tài liệu Dự án đầu tư, thiết kế và Hợp đồng. Trong đó chất lượng công trình xây dựng phải đạt các yêu cầu Tiêu chuẩn kỹ thuật được nêu trong thiết kế.
Mục tiêu chất lượng của công trình phải đảm bảo rằng công trình bàn giao sẽ đáp ứng các yêu cầu của khách hàng (CĐT).
Để cung cấp cho khách hàng (CĐT) với đảm bảo rằng các mục tiêu chất lượng sẽ được đáp ứng, “Đảm bảo chất lượng” cần xác định được các Biện pháp kỹ thuật. Các Biện pháp bảo đảm chất lượng là các bước “phòng bệnh”, phòng ngừa bất kỳ sai lệch về chất lượng của công trình bàn giao từ các mục tiêu chất lượng. QA thường được nêu ra những biện pháp cần thực hiện của dự án đầu tư xây dựng. Người quản lý QA sẽ kiểm soát QC có thực hiện đúng kế hoạch của QA hay không. Các loại Biện pháp được sử dụng để “đảm bảo” chất lượng giao phẩm bao gồm:
Các yêu cầu: Một tập hợp được xác định rõ các yêu cầu sẽ cung cấp cho các đội nhóm với một thấu hiểu rõ ràng về những gì họ có để cung cấp sự hài lòng cho khách hàng (CĐT);
Tiêu chuẩn: Là một tập hợp cụ thể các Tiêu chí chất lượng và Tiêu chuẩn, nhóm dự án sẽ hiểu rõ mức độ phải đạt được để cung cấp chất lượng;
Nhân viên có tay nghề: Sử dụng nhân viên có tay nghề cao sẽ trực tiếp ảnh hưởng đến chất lượng của các sản phẩm bàn giao. Nhân viên có kỹ năng phù hợp cần có kiến thức, kinh nghiệm, phù hợp với yêu cầu dự án và được khách hàng (CĐT) chấp thuận để thực hiện các nhiệm vụ được phân bổ trong kế hoạch dự án và để đạt được mức độ chất lượng mong muốn;
Thẩm tra, đánh giá chất lượng: Đánh giá độc lập để có thể đánh giá tổng thể chất lượng của mỗi giao phẩm cung cấp cho khách hàng (CĐT) sự tự tin rằng dự án và khả năng sản xuất đủ tiêu chuẩn đáp ứng mọi yêu cầu của họ;
Quản lý sự thay đổi: Sự thay đổi phạm vi thường ảnh hưởng đến chất lượng. Thông qua việc xác định các quá trình kiểm soát những thay đổi rõ ràng, những thay đổi cần thiết được phân tích lợi hại để phê duyệt và thực hiện;
Ngoài việc thực hiện bảo đảm chất lượng để cải thiện chất lượng, một loạt các “Kiểm soát có thể được thực hiện. QC được định nghĩa là các bước chữa bệnh được thực hiện để loại bỏ bất kỳ các sai lệch trong chất lượng công trình bàn giao so với chất lượng mục tiêu thiết lập. Kỹ thuật QC thường được thực hiện ở một mức độ chi tiết của dự án từ một nguồn trong dự án nội bộ. Người quản lý QC phải báo cáo kết quả thực hiện cho QA và Giám đốc dự án. Các loại biện pháp được sử dụng để kiểm soát, chất lượng của sản phẩm bàn giao bao gồm:
v Thực hiện các giải pháp kiểm soát chất lượng (các giải pháp chữa bệnh) gồm:
– Thực hiện việc kiểm soát chất lượng công việc thiết kế theo qui trình quản lý chất lượng thiết kế và dự toán ( SCR/PRE/QT.02).-
– Giám sát việc thi công theo “Đề cương GSTC” đã được phê duyệt với sự quản lý của Giám đốc chất lượng;
– Kiểm tra chất lượng thi công qua checklist, xong bước thứ nhất mới cho phép thực hiện bước thứ hai, nếu không đạt yêu cầu phải thi công lại, checklist là chứng cứ trong tài liệu nghiệm thu;
– Mọi công việc phải được thí nghiệm kiểm tra để kết luận chất lượng, việc kiểm tra phải thực hiện theo “Chỉ dẫn kỹ thuật” và “Đề cương GSTC” đã được phê duyệt
– Tư vấn GSTC và Nhà thầu phải có báo cáo chất lượng về từng công việc và đảm bảo rằng không còn một sai sót hay hư hỏng nào trước khi đề nghị Ban/Ph QLDA nghiệm thu
– Nghiệm thu bàn giao công việc, hạng mục, giai đoạn, công trình theo “Kế hoạch nghiệm thu” của từng gói thầu đã được phê duyệt;
– Ban/Ph QLDA bố trí 01 nhóm quản lý chất lượng chuyên ngành xây dựng và ME để quản lý chất lượng;
1. Quyết định thành lập Ban Điều hành và các Tổ TVGS;
2. Quyết định phê duyệt thiết kế – dự toán;
3. Các Hợp đồng giữa CĐT với các nhà thầu;
5. Đề cương GSTC của tư vấn;
6. Chỉ dẫn kỹ thuật thi công và nghiệm thu được duyệt (do TVTK lập)
Lập Trình Hướng Đối Tượng Java
Trong bài viết này, mình sẽ nói về các khái niệm lập trình hướng đối tượng trong Java. Bởi vì Java như là một hình mẫu lý tưởng cho triết lý lập trình hướng đối tượng.
Vậy lập trình hướng đối tượng là gì? Đó chính là một kiểu lập trình với các khái niệm như Lớp (Class), Đối tượng (Object), Kế thừa (Inheritance), tính đóng gói (Encapsulation), Trừu tượng (Abstraction), Đa hình (Polymorphism) gọi tắt là OOP.
Phần lớn các ngôn ngữ lập trình giống như Java, C++, C#, Ruby… đều theo mô hình lập trình hướng đối tượng.
Qua bài viết này, chúng ta sẽ hiểu rõ bản chất các khái niệm cốt lõi của lập trình hướng đối tượng Java qua 4 tính chất của lập trình hướng đối tượng
Nội dung chính của bài viết
#Lập trình hướng đối tượng là gì?
Lập trình hướng đối tượng hay còn gọi là lập trình OOP là kỹ thuật lập trình mà tất cả các logic, yêu cầu thực tế đều được xây dựng xoay quanh các đối tượng.
Khi sử dụng OOP, chúng ta sẽ định nghĩa các class để mô hình hóa các đối tượng thực tế. Trong ứng dụng các class sẽ được khởi tạo thành các instance. Trong suốt thời gian ứng dụng chạy, các phương thức (method) của đối tượng này sẽ được gọi.
Trong thế giới thực, đối tượng là những thực thể tồn tại có trạng thái và hành vi.
#Ưu điểm của OOP
Do lập trình hướng đối tượng ra đời sau này, nên nó kế thừa và khắc phục được những nhược điểm của các mô hình lập trình trước đó.
Với 4 tính chất OOP đặc thù của mình, có thể nói lập trình hướng đối tượng rất thích hợp cho các ứng dụng dành cho doanh nghiệp.
Mình có thể liệt kê một số ưu điểm của OOP:
Khả năng mở rộng cao.
Có khả năng tái sử dụng rất tốt nhờ tính kế thừa.
Dễ quản lý code khi cần thêm tính năng.
Dễ học, đơn giản, dễ bảo trì…
#4 Tính chất của lập trình hướng đối tượng
Chúng ta hãy bắt đầu với khái niệm đầu tiên của lập trình hướng đối tượng: Tính kế thừa
1.Tính kế thừa
Trong lập trình hướng đối tượng, các chương trình máy tính được thiết kế theo nguyên tắc là tất cả mọi thứ đều được xem là đối tượng và tương tác với những đối tượng khác.
Tính kế thừa là một khái niệm được hiểu những thuộc tính của một lớp có thể được kế thừa bởi một lớp khác. Nó giúp chúng ta có thể sử dụng lại code và thiết lập một mối quan hệ giữa các class khác nhau.
Lớp cha còn được hiểu là Lớp siêu cấp, Lớp cơ sở (Parent class hoặc Super class hay Base class)
Lớp con còn được hiểu Lớp phụ, Lớp dẫn xuất (Child class hoặc Sub class hoặc Derived class)
Một lớp kế thừa những thuộc tính được biết đến là một Sub class trong khi một lớp có các thuộc tính được kế thừa được gọi là Parent class.
Kế thừa được phân chia làm 4 loại:
1.1 Đơn kế thừa (Single Inheritance)
Điều này sẽ cho phép code khả năng tái sử dụng code cũng như thêm các tính năng mới vào các đoạn code hiện có.
Ở ví dụ bên dưới, Class A là lớp cha và Class B là lớp con với những thuộc tính và hành vi của lớp cha.
Trong java thì để kế thừa, đơn giản là sử dụng từ khóa extend
Class A { --- } Class B extends A { --- }1.2.Kế thừa kiểu Đa cấp (Multilevel Inheritance)
Hãy xem sơ đồ, Class B kế thừa các thuộc tính và hành vi của class A, và class C kế thừa các thuộc tính, hành vi của Class B. Ở đây, Class A là lớp cha của Class B và Class B là lớp cha của Class C.
Trong trường hợp này, Class C ngầm kế thừa các thuộc tính và hành vi của Class A thông qua Class B. Đó chính là kế thừa kiểu Đa cấp
Cách viết kế thừa kiểu đa cấp trong java cũng tương tự như đơn kế thừa
Class A{ --- } Class B extends A{ --- } Class C extends B{ --- }1.3. Kế thừa thứ bậc (Hierarchical Inheritance)
Hãy xem sơ đồ bên trên, Class B and Class C là lớp con đang kế thừa chung lớp cha là Class A.
Cùng xem cấu trúng kế thừa thứ bậc trong Java
Class A{ --- } Class B extends A{ --- } Class C extends A{ --- }1.4. Kế thừa lai (Hybrid Inheritance)
Hãy xem sơ đồ trên, Class A là lớp cha của Class B và Class C. Trong khi Class B và Class C đều là lớp cha của Class D
2. Tính đóng gói (Encapsulation)
Tính đóng gói là một cơ chế liên kết dữ liệu và code chung với nhau thành một đơn vị duy nhất. Nó cũng được hiểu với mục đích che giấu dữ liệu của bạn để đảm bảo toàn vẹn dữ liệu từ những chỉnh sửa bên ngoài.
Điều này có nghĩa là gì?
Cách tốt nhất để hiểu tính đóng gói là nhìn vào viên nang y tế bên dưới. Ở đây, thuốc luôn được an toàn bên trong viên nang.
Tương tự, thông qua việc đóng gói, các phương thức và biến của một lớp cũng được ẩn và an toàn.
Định nghĩa các biến của lớp với phạm vi là private.
Chỉ cho phép truy cập vào các thuộc tính/biến của đối tượng thông qua hàm getter, setter.
Hãy xem đoạn code bên dưới để hiểu rõ hơn về tính đóng gói:
public class Employee { private String name; public String getName() { return name; } public void setName(String name) { chúng tôi = name; } public static void main(String[] args) { } }Mình đã tạo một Class Employee với biến name có phạm vi là private. Sau đó mình đã tạo các phương thức getter và setter. Thông qua đó, chúng ta có thể lấy và gán giá trị cho cho tên của một Employee.
Thông qua các phương thức này, bất kỳ lớp nào muốn truy xuất biến name đều phải sử dụng các phương thức getter và setter mà không thể được phép truy cập trực tiếp vào thuộc tính name
3. Tính trừu tượng (Abstraction)
Tính trừu tượng hướng đến chất lượng của các ý tưởng hơn là các sự kiện. Về cơ bản, tính trừu tượng đề cập đến việc ẩn hay hiện các chi tiết cần thiết cho người dùng.
Hãy tưởng tượng rằng chúng ta có một cuộc gọi, chúng ta chỉ có thể lựa chọn nhấc máy hoặc từ chối cuộc gọi. Nhưng thực tế, có rất nhiều code chạy ngầm bên dưới. Nên bạn không thể biết được quá trình xử lý cuộc gọi, đó chính là ưu điểm của tính trừu tượng.
Do đó, tính trừu tượng giúp chúng ta giảm sự phức tạp. Có hai cách thực hiện tính trừu tượng như bên dưới:
Lớp trừu tượng (Abstract Class)
Giao diện (Interface)
Lớp trừu tượng (Abstract class)
Lớp trừu tượng trong java chứa từ khóa “abstract”.
Từ khóa abstract là gì? Nếu một lớp được định nghĩa là trừu tượng nó không thể được khởi tạo bằng toán từ ” new “, có nghĩa là bạn không thể tạo instance từ một lớp trừu tượng. Ngoài ra, một lớp trừu tượng có thể chứa phương thức trừu tượng hoặc các phương thức bình thường.
Để sử dụng lớp trừu tượng, bắt buộc nó phải được một lớp khác kế thừa và override toàn toàn bộ abstract method .
Một Interface trong Java là một tập hợp các phương thức trừu tượng (abstract). Một class triển khai một interface, do đó kế thừa các phương thức abstract của interface.
Một interface không phải là một lớp. Viết một interface giống như viết một lớp, nhưng chúng có 2 định nghĩa khác nhau. Một lớp mô tả các thuộc tính và hành vi của một đối tượng. Một interface chứa các hành vi mà một class triển khai.
public interface ParentCar { public void changeGear( int newValue); public void speedUp(int increment); public void applyBrakes(int decrement); }Mọi chiếc oto đều có những hàng vi này phải không? Nhưng mỗi loại xe cụ thể lại thực hiện khác nhau
Giả sử bạn đang làm việc với ô tô số sàn, ở đó bạn phải tăng từng số từng cấp một. Nhưng nếu bạn đang làm việc với một chiếc xe tự động, thì hệ thống của bạn sẽ quyết định cách thay đổi số dựa trên đến tốc độ.
Do đó, không phải tất cả các lớp con của mình đều có cùng một logic được viết cho việc thay đổi số.
Tương tự với trường hợp tăng tốc. Giả sử bạn nhấn ga, tốc độ tăng lên10 km hoặc 15km. Nhưng giả sử một ai đó đang lái một chiếc siêu xe và nhấn ga, tốc độ tăng 30kms hoặc 50kms là chắc. Một lần nữa logic thay đổi
Giống như nhấn phanh, một người có thể có một hệ thống phanh mạnh mẽ hoặc không.
Vì tất cả các chức năng đều là common với tất cả các lớp con, nên mình đã tạo interface ‘ParentCar’ có tất các chức năng mà một ôtô đều phải có. Sau đó, từng loại class ôtô cụ thể sẽ phải thực hiện các hành vi này
public class Audi implements ParentCar { int speed = 0; int gear = 1; public void changeGear(int value) { gear = value; } public void speedUp(int increment) { speed = speed + increment; } public void applyBrakes(int decrement) { speed = speed - decrement; } void printStates() { System.out.println("speed:" + speed + "gear:" + gear); } public static void main(String[] args) { Audi A6 = new Audi(); A6.speedUp(50); A6.printStates(); A6.changeGear(4); A6.SpeedUp(100); A6.printStates(); } }4. Tính đa hình (Polymorphism)
Đa hình có nghĩa là nhiều hình thức, trong đó ‘ poly‘ có nghĩa là nhiều, còn ‘ morph ‘ có nghĩa là hình thức. Đa hình có thể là một biến, một chức năng hoặc một đối tượng được đưa vào nhiều hình thức.
Nói cách khác, đa hình cho phép bạn định nghĩa một giao diện hoặc một chức năng với nhiều cách cài đặt.
Để hiểu hơn về đa hình, mình lấy ví dụ như thế này
Như bạn thấy ở hình bên trên, lớp cha BowlerClass có 3 lớp con là FastPacer, MediumPacer và Spinner.
Lớp Bower có phương thức bowlingMethod() nơi tất cả các lớp con đều kế thừa phương thức này. Như chúng ta biết, tốc độ một trái banh bánh sẽ khác so với ném trung bình và ném banh xoáy cũng như trong cách chơi và kinh nghiệm của người ném banh,..v.v..
Tương tự như vậy, việc thực hiện bowling của phương thức bowlingMethod() cũng sẽ khác so với những bowler khác. Và cũng tương tự với class spinner.
Hi vọng, qua bài viết này bạn sẽ có cái nhìn toàn diện về lập trình java cũng như lập trình hướng đối tượng. Từ đó dễ dàng tiếp cận thế giới lập trình bao la.
Chờ chút, nếu bạn muốn học lập trình Java ngay bây giờ và cần tìm một lời khuyên thì của bạn đây: Học lập trình java ở đâu tốt nhất? Có cần phải đến trung tâm học lập trình?
Bạn đang xem bài viết 10 Sách Lập Trình C# Siêu Chất Cho Developer trên website Theindochinaproject.com. Hy vọng những thông tin mà chúng tôi đã chia sẻ là hữu ích với bạn. Nếu nội dung hay, ý nghĩa bạn hãy chia sẻ với bạn bè của mình và luôn theo dõi, ủng hộ chúng tôi để cập nhật những thông tin mới nhất. Chúc bạn một ngày tốt lành!