1. Trang chủ >
  2. Kỹ Thuật - Công Nghệ >
  3. Kĩ thuật Viễn thông >

Lập trình hớng đối tợng trong C C và những vấn đề nâng cao

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (753.09 KB, 79 trang )


GC thực hiện rất nhiều việc, tuy nhiên nó đợc thực thực hiện tự động bằng CLR, giảm nhẹ đi rất nhiều công việc của ngời lập trình.
I.4.8. Vòng đời của mã Trong phần này, chúng em sẽ giới thiệu về trình làm việc của một ứng dụng
.NET từ khi soạn thảo mã nguồn đến khi chạy chơng trình : Bắt đầu từ việc soạn thảo mã nguồn trên một ngôn ngữ .NET quen thuộc
trên một hệ soạn thảo văn bản thông thờng. Dùng một chơng trình dịch .NET dịch mã nguồn ra mã IL, đồng thời xây
dựng assembly cho ứng dụng. Khi chơng trình ứng dụng thực thi, hệ điều hành sẽ đọc header của chơng
trình và đa CLR vào quản lí chơng trình, CLR đọc các thông tin metadata, điều khiển Loader nạp các th viện cần thiết vào bộ nhớ.
Hàm _CorExeMain đợc chèn vào điểm nhập của chơng trình. Bộ phËn Loader nh¶y vào điểm nhập chơng trình và gọi hµm
_CorExeMain thùc thi.  Khi _CorExeMain thùc thi, nó gọi chơng trình dịch JIT ra thực thi.
JIT dịch mã IL sang mã máy và đa vào thực thi đồng thời đợc dự trữ ở bộ nhớ đệm để khi cần không phải dịch lại.

II. Giới thiệu sơ bộ ngôn ngữ lập trình C


Có thể coi ngôn ngữ lập trình C là ngôn ngữ lập trình đơn giản vì nó chỉ có khoảng 80 từ khoá và khoảng 12 kiểu dữ liệu xây dựng sẵn built-in tuy nhiên nó hỗ
trợ tất cả các mô hình lËp tr×nh : lËp tr×nh cÊu tróc, lËp tr×nh híng đối tợng và lập trình hớng thành phần COM .

II.1. Lập trình hớng đối tợng trong C


C là ngôn ngữ hoàn toàn hớng đối tợng. Tính chất hớng đối tợng có thể trình bày tóm tắt nh sau:
Tất cả đều là đối tợng. Trong C, mọi thực thể đều đợc biểu diễn là đối tợng, đi cùng với nó là các thuộc tính, hành vi method cđa thùc thĨ ®ã.
Nh vËy, mét thc tÝnh hay một method chắc chắn phải thuộc về một đối tợng nào đó.
Một chơng trình ứng dụng bao gồm nhiều đối tợng. Khi chúng muốn một đối tợng thực hiện một công việc hay đối tợng này muốn đối tợng kia thực
hiện một công việc, chúng ta hay các đối tợng giao tiếp với nhau bằng cách gửi thông ®iƯp. Th«ng ®iƯp cã thĨ hiĨu nh mét lêi gäi hàm gọi một
method của đối tợng nào đó làm việc.
Mỗi đối tợng có một vùng nhớ riêng.
14
Mỗi đối tợng có một kiểu dữ liệu riêng, kiểu dữ liệu đợc định nghĩa bởi một class lớp .
Mỗi ®èi tỵng cã mét giao diƯn ®Ĩ giao tiÕp víi các đối tợng khác và một phần dữ liệu đợc che giấu đối với các đối tợng khác.
Ngoài ra, C cúng cho phép ngời lập trình thực hiện các hoạt động sử dụng lại dữ liệu nh kế thừa, đa hình thái và kết tập.

II.2. Những đặc điểm của ngôn ngữ C


C đợc xây dựng từ những ngôn ngữ tiền đặc biệt là C và C++ cho nên những đặc điểm ngôn ngữ của C rất giống với ngôn ngữ C, C++. Trong phần này, chúng em
sẽ trình bày một vài đặc điểm của C.

II.2.1. Các toán tử Trong C có các toán tử thông thờng sau:


Các toán tử một toán hạng: ++,- -, ,~ Các toán tử hai toán hạng: , , , +, -
 C¸c to¸n tư g¸n: =, =, =, =, +=, -=, =, =, =, =, =  C¸c to¸n tư quan hƯ: , , =, =, is, as, ==, =
Các toán tử lô- gíc: , , , , |, , Các toán tử điều kiện: , ||, ?:
Toán tử sizeof xác định kích thớc một kiểu dữ liệu.
Trong C cũng cho phép chồng toán tử và định nghĩa các toán tử mới theo các qui tắc sau:
Toán tử một toán hạng: type_of_x operation opx Toán tử hai toán hạng: type_of_x,y operation opx,y
Trong C không cho phép định nghĩa lại toán tử gán.
II.2.2. Các kiểu dữ liệu: C hỗ trợ hai loại kiểu dữ liệu là kiểu tham trị và kiểu tham biến. Kiểu tham trị
bao gồm các kiểu đơn giản nh char, int, float. KiĨu tham biÕn gåm c¸c kiĨu líp, kiểu Interface, kiểu mảng hay nói cách khác tất cả các đối tợng đều là tham biễn.
Kiểu tham trị khác kiểu tham biến ở chỗ: những biến tham trị la trữ trực tiếp dữ liệu của nó, trái lại biến tham biến la trữ con trỏ trỏ tới đối tợng.
C cung cấp một tập các kiểu đợc định nghĩa trớc hầu hết đã có trong C và C++. Ngoài ra , C lại đa thêm vào kiểu boolean, string gièng nh trong Pascal.
C cho phÐp chuyÓn kiÓu gièng nh C nà C++.
15
II.2.3. Các câu lệnh C kế thừa hầu hết các câu lệnh từ C và C++, tuy nhiên cũng có một vài bổ xung
và thay đổi đánh chú ý. Chúng ta sẽ điểm qua các câu lệnh sau: Các lệnh đợc gán nhãn và lệnh goto: các lệnh đợc gắn nhẵn có một nhãn
đứng đằng trớc. Các lệnh goto sẽ nhảy đến các nhãn này và thực thi câu lệnh đợc gán nhãn
Lẹnh if: lệnh if sẽ chọn một biểu thức để làm việc dựa trên giá trị một biểu thức lô- gic . Một lệnh if có thể có thêm lệnh else để thực thi câu lệnh
khác khi giá trị biểu thức là sai.  LƯnh swich: lƯnh switch thùc thi mét nh÷ng lệnh phụ thuộc vào giá trị
một biểu thức cho trớc. Các lệnh lặp: các lệnh lặp trong C bao gồm các lệnh lặp while, do
while, for nh trong C  LƯnh lỈp foreach gièng nh trong VB: một lệnh lặp foreach liệt kê các
thành phần trong một tập hợp, thực thi một câu lệnh cho mỗi thành phần của tập hợp đó.
Các lệnh throw, try, catch: các lệnh phục vụ cho quá trình quản lí lỗi trong thêi gian ch¹y runtime – error gåm có phát ra một lỗi throw , cặp
lệnh try catch đón nhận một lỗi và đa ra hành động xử lí lỗi.
II.2.4. Cấu tạo của một chơng trình C Nếu nh trong C, đơn vị chơng trình lớn nhất là các hàm modul, trong Java và
C++, đơn vị chơng trình lớn nhất là các lớp class thì trong C, đơn vị chơng trình lớn nhất là không gian tên namespace. Một chơng trình C chứa một hay nhiều không
gian tên, trong đó một không gian tên chứa dữ liệu của chơng trình, các không gian tên còn lại là các không gian tên chứa phần dữ liệu ở các chơng trình khác đợc khai báo với
từ khoá using sử dụng nh là phần th viƯn, vÝ dơ :
Namespace 1: namespace Microsoft.CSharp.Introduction
{ public class HelloMessage
{ public string GetMessage {
return Hello, world; }
} }
Namespace 2: using Microsoft.CSharp.Introduction;
class Hello {
static void Main { HelloMessage m = new HelloMessage;
System.Console.WriteLinem.GetMessage; }
}
Trong mét namespace cã thĨ lång mét hay nhiỊu namespace kh¸c, vÝ dơ:
16
namespace Microsoft {
namespace CSharp {
namespace Introduction {....}
} }
Dới namespace là các đơn vị chơng trình có thể coi lµ cïng cÊp : líp class, cÊu tróc struct, giao diện Interface.
Lớp: lớp đợc dùng để định nghĩa những kiểu đối tợng mới. Trong một lớp có thể có các hằng số, các trờng, phơng thức, thuộc tính, sự kiện, toán tử,
hàm dựng, hàm huỷ. Đối với mỗi thành phần của lớp thì có các thuộc tính truy cập sau:
- public: tất cả các đối tợng khác đều có thể truy cập đến các thành phần này.
- protected: chỉ những đối tợng kế thừa từ một đối tợng mới có thể truy cập vào thành phần protected của lớp cha.
- Internal: những đối tợng đợc định nghĩa trong một assembly các file định nghĩa chúng cùng nằm trong 1 assembly có thể truy cập những
thành phần Internal của nhau. Những thành phần Internal là những thành phần không khai báo thuộc tính truy cập.
- Private: thành phần này chỉ đợc truy cập từ những thành phần trong cïng 1 líp.
 CÊu tróc struct: chóng ta cã thể xây dựng một loại struct nằm ngoài các lớp và nằm trong 1 namespace nên có thể coi nó là một đơn vị chơng trình
ngang với class. Struct cũng kh¸ gièng víi class khi nã còng cã c¸c biÕn dữ liệu thành phần với thuộc tính truy cập của chúng, hàm khởi tạo. Tuy
nhiên struct lại là dữ liệu kiểu tham trị còn class là dữ liệu kiểu tham biÕn, struct kh«ng cho phÐp kÕ thõa.
 Giao diƯn Interface : ngôn ngữ C++ cho phép đa thừa kế, từ đó sinh ra các nhập nhằng, rắc rối khi truy cập các thành phần của các lớp cha.
Trong C không cho phép chúng ta thực hiện đa thừa kế từ nhiều lớp. Tuy nhiên để thực hiện đa thừa kế, C tạo ra một đơn vị chơng trình mới là
Interface, thay vì khai báo thừa kế từ nhiều lớp, chóng ta cã thĨ khai b¸o thõa kÕ tõ mét lớp và thực thi nhiều Interface. Qua đó, chúng ta còng cã
thĨ thùc hiƯn ®a kÕ thõa. Mét Interface cã thể chứa các phơng thức, thuộc tính, sự kiện , vÝ dô:

interface IExample {
string this[int index] { get; set; } event EventHandler E;
void Fint value; string P { get; set; }
} public delegate void EventHandlerobject sender, Event e;
Mäi øng dông trên C đều có hàm main. Hàm main chính là điểm vào của chơng trình entry point, chơng trình bắt đầu từ hàm main và kết thúc ở đây. Trong hàm main
17
chúng ta có thể khởi tạo các đối tợng trong lập trình giao diện Windows hay gọi các hàm khác thực thi trong lập trình Console . Hàm main phải là
static và xây dựng
trong một lớp, có thể trả lại giá trị Int hay không trả về giá trị.

II.3. C và những vấn đề nâng cao


II.3.1. C với cơ sở dữ liệu C cho phép thao tác thuận tiện với các loại cơ së d÷ liƯu SQL Server 2000, MS
access, Oracle, b»ng th
viện lớp ADO.NET. ADO.NET là phiên bản mới nhất của chiến lợc truy cập cơ sở dữ liệu vạn năng của Microsoft. Th viện lớp ADO.NET chia
thành 2 loại là lớp kết nối và lớp không kết nối. Lớp kết nối là trình điều khiển kết nối cơ sở dữ liệu Data Provider cụ thể, có nghĩa là chúng ta phải sử dụng một .NET Data
Provider mà chúng hỗ trợ cơ sở dữ liệu cần làm việc. Trong khi đó lớp không kết nối sử dụng bất kì .NET data Provider nào. Khi chúng ta cần thiết phải truy cập, xử lí dữ liệu
nguồn với các thao tác select, insert, delete, update chóng ta ph¶i sư dơng líp kÕt nối, ngợc lại nếu chỉ thao tác trên dữ liệu tạm thời thì dùng lớp không kết nối.
Loại lớp kết nèi gåm 4 líp sau:  Connection: Líp kÕt nèi cơ sở dữ liệu.
DataAdapter: Lớp chứa dữ liệu. Command: lớp chứa lệnh.
DataReader: Lớp đọc dữ liệu.
Loại lớp không kết nối gồm các lớp sau: Lớp DataSet: DataSet nắm giữ Tables và Relations
Lớp DataTable: DataTable nắm giữ các Rows, Column Lớp DataView: DataView tạo nên các view cho dữ liệu
II.3.2. C với Internet Từ giữa những năm 90, thế giới lập trình có sự thay đổi từ lập trình ứng dụng
trên các máy riêng lẻ chuyển sang lập trình các ứng dụng trên Internet. Các chơng trình ứng dụng trên Web có các u ®iĨm nh : chi phÝ thÊp, truy cËp thn tiện từ các nơi khác
nhau Đối với các site tĩnh static site dù là đơn giản nhất cũng cần phải lập trình để
quản lí Web Form. Lớp HttpHandler cung cấp những phơng thức đơn giản, rõ ràng để quản lí các Web Form. Đối với các site động Dynamic site, ASP.NET là th viện hoàn
hảo để tạo ra những trang Web cã néi dung thay ®ỉi theo thêi gian đặc biệt là thơng mại điện tử. Đối với mạng ngang hàng Peer-To-Peer, C có các công cụ mạnh để tạo
nên các hệ thống mạng ngang hàng có khả năng chia sẻ các tài nguyên.
18
Phần II: Đồ họa trong C
Đồ họa là một phần không thể thiếu trong các ngơn ngữ lập trình cũng như các bộ cơng cụ phát triển nhất là trong thời đại các giao diện đồ họa người sử dụng phát
triển mạnh như hiện nay. Thực tế là hiện nay giao diện đẹp và thân thiện đóng góp một phần khơng nhỏ trong thành công của các phần mềm. Trong phần này chúng ta
sẽ khảo sát các công cụ đồ họa GDI+ của C và tổng quát hơn là của môi trường phát triển ứng dụng .NET.
I. Giíi thiƯu vỊ GDI+
GDI+ là một phân hệ của hệ điều hành MS Windows XP cung cấp những tính năng dựng hình 2D cơ bản như đồ họa vector, xử lý hình ảnh. Đúng như tên của nó
đã hàm ý, GDI+ là phiên bản cải tiến của GDI thế hệ giao diện thiết bị đồ họa trước của Windows. Nó chịu trách nhiệm hiển thị và dựng hình trên màn hình, máy in.
GDI+ được trang bị thêm nhiều tính năng mới và tối ưu các tính năng sẵn có.
GDI+ cho phép lập trình viên viết mã độc lập ứng dụng. Điều này có nghĩa là lập trình viên chỉ việc viết mã để hiển thị thông tin mà không cần quan tâm đến thiết
bị hiển thị cụ thể bên dưới. Người lập trình chỉ việc gọi các hàm cung cấp bởi các lớp của GDI+ và các hàm này đến lượt chúng sẽ chịu trách nhiệm giao tiếp với một
driver của thiết bị cụ thể. GDI cách ly ứng dụng khỏi phần cứng và như vậy cho phép lập trình viên viết mã độc lập thiết bị.
Các lớp được quản lý của GDI+ là một phần của kiến trúc Microsoft .NET, môi trường để xây dựng, phân phối và chạy các dịch vụ Web XML và các ứng dụng
khác.
II. KiÕn tróc cđa GDI+
Các dịch vụ của GDI+ được chia thành 3 lớp rộng sau:  Hình học vector 2D
 Hình ảnh.  Typography.
Sau đây chúng ta sẽ xem xét lần lượt từng lớp này:
19

Xem Thêm
Tải bản đầy đủ (.doc) (79 trang)

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×