C# cũng từ bỏ ý tưởng đa kế thừa như trong C++. Và sự khác nhau khác là C# đưa thêm thuộc tính vào trong một lớp giống như trong Visual Basic. Và những thành viên của lớp được gọi duy nhất bằng toán tử “.” khác với C++ có nhiều cách gọi trong các tình huống khác nhau. Một ngôn ngữ khác rất mạnh và phổ biến là Java, giống như C++ và C# được phát triển dựa trên C.
h a n g e Vi e N y to k lic c C# từ bỏ ý tưởng đa kế thừa C++ Và khác khác C# đưa thêm thuộc tính vào lớp giống Visual Basic Và thành viên lớp gọi toán tử “.” khác với C++ có nhiều cách gọi tình khác Một ngôn ngữ khác mạnh phổ biến Java, giống C++ C# phát triển dựa C Nếu định học Java sau này, tìm nhiều mà học từ C# áp dụng Điểm giống C# Java hai biên dịch mã trung gian: C# biên dịch MSIL cịn Java biên dịch bytecode Sau chúng thực cách thông dịch biên dịch just-in-time máy ảo tương ứng Tuy nhiên, ngôn ngữ C# nhiều hỗ trợ đưa để biên dịch mã ngôn ngữ trung gian sang mã máy C# chứa nhiều kiểu liệu Java cho phép nhiều mở rộng với kiểu liệu giá trị Ví dụ, ngơn ngữ C# hỗ trợ kiểu liệt kệ (enumerator), kiểu giới hạn đến tập định nghĩa trước, kiểu liệu cấu trúc kiểu liệu giá trị người dùng định nghĩa Chúng ta tìm hiểu kỹ kiểu liệu tham chiếu kiểu liệu giá trị trình bày phần sau Tương tự Java, C# từ bỏ tính đa kế thừa lớp, nhiên mơ hình kế thừa đơn mở rộng tính đa kế thừa nhiều giao diện Các bước chuẩn bị cho chương trình Thơng thường, việc phát triển phần mềm, người phát triển phải tuân thủ theo quy trình phát triển phần mềm cách nghiêm ngặt quy trình chuẩn hóa Tuy nhiên phạm vi tìm hiểu ngơn ngữ viết chương trình nhỏ khơng địi hỏi khắt khe việc thực theo quy trình Nhưng để giải vấn đề cần phải thực theo bước sau Đầu tiên phải xác định vấn đề cần giải Nếu khơng biết rõ vấn đề ta khơng thể tìm phương pháp giải Sau xác định vấn đề, nghĩ kế hoạch để thực Sau có kế hoạch, thực thi kế hoạch Sau kế hoạch thực thi, phải kiểm tra lại kết để xem vấn đề giải xong chưa Logic thường áp dụng nhiều lĩnh vực khác nhau, có lập trình Khi tạo chương trình C# hay ngôn ngữ nào, nên theo bước sau: Xác định mục tiêu chương trình Xác định phương pháp giải vấn đề Tạo chương trình để giải vấn đề Thực thi chương trình để xem kết 22 Ngôn Ngữ C# d o m o o c u -tr a c k C w w w d o m C lic k to Ngôn Ngữ Lập Trình C# w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c Ví dụ mục tiêu để viết chương trình xử lý văn đơn giản, mục tiêu xây dựng chương trình cho phép soạn thảo lưu trữ chuỗi ký tự hay văn Nếu khơng có mục tiêu khơng thể viết chương trình hiệu Bước thứ hai định đến phương pháp để viết chương trình Bước xác định thông tin cần thiết sử dụng chương trình, hình thức sử dụng Từ thông tin rút phương pháp để giải vấn đề Bước thứ ba bước cài đặt, bước dùng ngôn ngữ khác để cài đặt, nhiên, ngôn ngữ phù hợp để giải vấn đề cách tốt chọn Trong phạm vi sách mặc định dùng C#, đơn giản tìm hiểu nó! Và bước cuối phần thực thi chương trình để xem kết Chương trình C# đơn giản Để bắt đầu cho việc tìm hiểu ngơn ngữ C# tạo tiền đề cho chương sau, chương trình bày chương trình C# đơn giản Ví dụ 2.1 : Chương trình C# class ChaoMung { static void Main( ) { // Xuat man hinh System.Console.WriteLine(“Chao Mung”); } } Kết quả: Chao Mung Sau viết xong lưu dạng tập tin có phần mở rộng *.cs (C sharp) Sau biên dịch chạy chương trình Kết chuỗi “Chao Mung” xuất hình console Các mục sau giới thiệu xoay quanh ví dụ 2.1, cịn phần chi tiết loại trình bày chương Lớp, đối tượng kiểu liệu (type) Điều cốt lõi lập trình hướng đối tượng tạo kiểu Kiểu thứ xem trừu tượng Nó bảng liệu, tiểu trình, hay nút lệnh cửa sổ Tóm lại kiểu định nghĩa dạng vừa có thuộc tính chung (properties) hành vi ứng xử (behavior) 23 Ngơn Ngữ C# d o m o o c u -tr a c k C w w w d o m C lic k to Ngôn Ngữ Lập Trình C# w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c Nếu ứng dụng Windows tạo ba nút lệnh OK, Cancel, Help, thực chất dùng ba thể kiểu nút lệnh Windows nút chia xẻ thuộc tính hành vi chung với Ví dụ, nút có thuộc tính kích thước, vị trí, nhãn tên (label), nhiên thuộc tính thể khơng thiết phải giống nhau, thường chúng khác nhau, nút OK có nhãn “OK”, Cancel có nhãn “Cancel” Ngồi nút có hành vi ứng xử chung khả vẽ, kích hoạt, đáp ứng thơng điệp nhấn,…Tùy theo chức đặc biệt riêng loại nội dung ứng xử khác nhau, tất chúng xem kiểu Cũng nhiều ngôn ngữ lập trình hướng đối tượng khác, kiểu C# định nghĩa lớp (class), thể riêng lớp gọi đối tượng (object) Trong chương trình bày kiểu khác kiểu lớp kiểu liệt kê, cấu trúc kiểu ủy quyền (delegates) Quay lại chương trình ChaoMung trên, chương trình có kiểu đơn giản lớp ChaoMung Để định nghĩa kiểu lớp C# phải dùng từ khoá class, tiếp sau tên lớp ví dụ tên lớp ChaoMung Sau định nghĩa thuộc tính hành động cho lớp Thuộc tính hành động phải nằm dấu { } Ghi chú: Khai báo lớp C# khơng có dấu ; sau ngoặc } cuối lớp Và khác với lớp C/C++ chia thành phần header phần định nghĩa Trong C# , định nghĩa lớp gói gọn dấu { } sau tên lớp tập tin Phương thức Hai thành phần cấu thành lớp thuộc tính hay tính chất phương thức hay gọi hành động ứng xử đối tượng Trong C# hành vi định nghĩa phương thức thành viên lớp Phương thức hàm định nghĩa lớp Do đó, ta cịn gọi phương thức thành viên hàm thành viên lớp Các phương thức hành động mà lớp làm với cách thức làm hành động Thơng thường, tên phương thức thường đặt theo tên hành động, ví dụ DrawLine() hay GetString() Tuy nhiên ví dụ 2.1 vừa trình bày, có hàm thành viên Main() hàm hàm đặc biệt, không mô tả hành động lớp hết, xác định hàm đầu vào lớp (entry point) CRL gọi thực thi Ghi chú: Trong C#, hàm Main() viết ký tự hoa đầu, trả giá trị void hay int Khi chương trình thực thi, CLR gọi hàm Main() đầu tiên, hàm Main() đầu vào chương trình, chương trình phải có hàm Main() Đơi chương trình có nhiều hàm Main() lúc ta phải xác định dẫn biên dịch để CLR hàm Main() đầu vào chương trình 24 Ngôn Ngữ C# d o m o o c u -tr a c k C w w w d o m C lic k to Ngơn Ngữ Lập Trình C# w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c Việc khai báo phương thức xem giao ước người tạo lớp người sử dụng lớp Người xây dựng lớp người dùng lớp đó, khơng hồn tồn Vì lớp xây dựng thành thư viện chuẩn cung cấp cho nhóm phát triển khác…Do việc tuân thủ theo qui tắc cần thiết Để khai báo phương thức, phải xác định kiểu giá trị trả về, tên phương thức, cuối tham số cần thiết cho phương thức thực Chú thích Một chương trình viết tốt cần phải có thích đoạn mã viết Các đoạn thích khơng biên dịch khơng tham gia vào chương trình Mục đích làm cho đoạn mã nguồn rõ ràng dễ hiểu Trong ví dụ 2.1 có dịng thích : // Xuat man hinh Một chuỗi thích dịng bắt đầu ký tự “//” Khi trình biên dịch gặp hai ký tự bỏ qua dịng Ngồi C# cịn cho phép kiểu thích cho hay nhiều dịng, ta phải khai báo “/*” phần đầu thích kết thúc thích ký tự “*/” Ví dụ 2.2 : Minh họa dùng thích nhiều dòng class ChaoMung { static void Main() { /* Xuat man hinh chuoi ‘chao mung’ Su dung ham WriteLine cua lop System.Console */ System.Console.WriteLine(“Chao Mung”); } } Kết quả: Chao Mung Ngoài hai kiểu thích giống C/C++ C# cịn hỗ trợ thêm kiểu thứ ba kiểu cuối cùng, kiểu chứa định dạng XML nhằm xuất tập tin XML biên dịch để tạo sưu liệu cho mã nguồn Chúng ta bàn kiểu chương trình phần tiếp 25 Ngơn Ngữ C# d o m o o c u -tr a c k C w w w d o m C lic k to Ngơn Ngữ Lập Trình C# w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c Ứ ng dụng Console Ví dụ đơn giản gọi ứng dụng console, ứng dụng giao tiếp với người dùng thơng quan bàn phím khơng có giao diện người dùng (UI), giống ứng dụng thường thấy Windows Trong chương xây dựng ứng dụng nâng cao Windows hay Web ta dùng các giao diện đồ họa Cịn để tìm hiểu ngơn ngữ C# t cách tốt ta viết ứng dụng console Trong hai ứng dụng đơn giản ta dùng phương thức WriteLine() lớp Console Phương thức xuất hình dịng lệnh hay hình DOS chuỗi tham số đưa vào, cụ thể chuỗi “Chao Mung” Namespace Như biết NET cung cấp thư viện lớp đồ sộ thư viện có tên FCL (Framework Class Library) Trong Console lớp nhỏ hàng ngàn lớp thư viện Mỗi lớp có tên riêng, FCL có hàng ngàn tên ArrayList, Dictionary, FileSelector,… Điều làm nảy sinh vấn đề, người lập trình khơng thể nhớ hết tên lớp NET Framework Tệ sau ta tạo lại lớp trùng với lớp có chẳng hạn Ví dụ q trình phát triển ứng dụng ta cần xây dựng lớp từ điển lấy tên Dictionary, điều dẫn đến tranh chấp biên dịch C# cho phép tên Chắc chắn phải đổi tên lớp từ điển mà ta vừa tạo thành tên khác chẳng hạn myDictionary Khi làm cho việc phát triển ứng dụng trở nên phức tạp, cồng kềnh Đến phát triển định ác mộng cho nhà phát triển Giải pháp để giải vấn đề việc tạo namespace, namsespace hạn chế phạm vi tên, làm cho tên có ý nghĩa vùng định nghĩa Giả sử có người nói Tùng kỹ sư, từ kỹ sư phải kèm với lĩnh vực định đó, khơng khơng biết là kỹ sư cầu đường, khí hay phần mềm Khi lập trình viên C# bảo Tùng CauDuong.KySu phân biệt với CoKhi.KySu hay PhanMem.KySu Namespace trường hợp CauDuong, CoKhi, PhanMem hạn chế phạm vi từ theo sau Nó tạo vùng khơng gian để tên sau có nghĩa Tương tự ta tạo namespace để phân thành vùng cho lớp trùng tên không tranh chấp với Tương tự vậy, NET Framework có xây dựng lớp Dictionary bên namespace System.Collections, tương ứng ta tạo lớp Dictionary khác nằm namespace ProgramCSharp.DataStructures, điều hoàn tồn khơng dẫn đến tranh chấp với 26 Ngôn Ngữ C# d o m o o c u -tr a c k C w w w d o m C lic k to Ngơn Ngữ Lập Trình C# w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c ... dụ, nút có thuộc tính kích thước, vị trí, nhãn tên (label), nhiên thuộc tính thể khơng thiết phải giống nhau, thường chúng khác nhau, nút OK có nhãn “OK”, Cancel có nhãn “Cancel” Ngồi nút có hành... khơng có dấu ; sau ngoặc } cuối lớp Và khác với lớp C/C++ chia thành phần header phần định nghĩa Trong C# , định nghĩa lớp gói gọn dấu { } sau tên lớp tập tin Phương thức Hai thành phần cấu thành. .. Khi chương trình thực thi, CLR gọi hàm Main() đầu tiên, hàm Main() đầu vào chương trình, chương trình phải có hàm Main() Đơi chương trình có nhiều hàm Main() lúc ta phải xác định dẫn biên dịch