Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 57 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
57
Dung lượng
0,99 MB
Nội dung
Lời mở đầu Trong chương trình đã học trước đây chúng ta đã được làm quen với một phương pháp l ập trình đã có từ rất lâu và đơn giản đó là lậptrìnhhướng cấu trúc. Đối với các chương trình nhỏ thì phương pháp này tươngđối hiệu quả. Tuy nhiên, ngày nay khi quy mô các chương trình máy tính càng lớn và có độ phức tạp cao thì phương pháp lậptrình truyền thống này trở nên rất kém hiệu quả. Và phương pháp lậptrìnhhướngđốitượng ra đời nhằm khắc phục những nhược điểm của phương pháp l ập trình cũ này. Lậptrìnhhướngđốitượng cung cấp 4 tính năng tạo nên sự khác biệt và sức mạnh của nó khi so sánh với lậptrìnhhướng cấu trúc là tính trừu tượng, tính đóng gói, tính đa hình và tính kế thừa. Đặc biệt, khi kết hợp với một ngôn ngữ lậptrình mạnh hiện nay là C#, bộ đôi có khả năng giải quyết những bài toán từ đơn giản đến phức tạp nhất. Trong chương này, bạn sẽ được giới thiệu về nội dung quan trọng với tiêu đề là “Lập trìnhhướngđốitượng trong C#”. Chương gồm 2 phần sau: - Phần I: Lậptrìnhhướngđối t ượng. Phần này giới thiệu về phương pháp tiếp cận hướngđốitượng trong lậptrình với các tính chất, khái niệm của nó. - Phần II: Lậptrìnhhướngđốitượng trong C#. Phần này đề cập đến việc lậptrìnhhướngđốitượng trong ngôn ngữ lậptrình mạnh hiện nay là C#, bao gồm việc khai báo lớp, thuộc tính, cách thực hiện các phương thức, kế thừa và nạp chồng. Phần I: Lậptrìnhhướngđối tượng. 3 . 1.1 G i ớ i th i ệ u về l ậ p trình h ư ớ ng đối t ư ợn g. Khái niệm hướngđốitượng được xây dựng trên nền tảng của khái niệm lậptrình có cấu trúc và sự trừu tượng hóa dữ liệu. Sự thay đổi căn bản ở chỗ, một chương trìnhhướngđốitượng được thiết kế xoay quanh dữ liệu mà chúng ta có thể làm việc trên đó, hơn là theo bản thân chức năng của chương trình. Điều này hoàn toàn tự nhiên một khi chúng ta hiểu rằng mục tiêu của chương trình là xử lý dữ li ệu. Suy cho cùng, công việc mà máy tính thực hiện vẫn thường được gọi là xử lý dữ liệu. Dữ liệu và thao tác liên kết với nhau ở một mức cơ bản (còn có thể gọi là mức thấp), mỗi thứ đều đòi hỏi ở thứ kia có mục tiêu cụ thể, các chương trìnhhướngđốitượng làm tường minh mối quan hệ này. Lậptrìnhhướngđốitượng (Object Oriented Programming - gọi tắt là OOP) hay chi tiết hơn là Lậptrình định hướngđối tượng, chính là phương pháp lậptrình lấy đốitượng làm nền tảng để xây dựng thuật giải, xây dựng chương trình. Thực chất đây không phải là một phương pháp mới mà là mộ t cách nhìn mới trong việc lập trình. Để phân biệt, với phương pháp lậptrình theo kiểu cấu trúc mà chúng ta quen thuộc trước đây, hay còn gọi là phương pháp lậptrìnhhướng thủ t ục (Procedure-Oriented Programming), người lậptrình phân tích một nhiệm vụ lớn thành nhiều công việc nhỏ hơn, sau đó dần dần chi tiết, cụ thể hoá để được các vấn đề đơn giản, để tìm ra cách giải quyết vấn đề dưới dạng những thuật giải cụ thể rõ ràng qua đó dễ dàng minh hoạ bằng ngôn ngữ giải thuậ t (hay còn gọi các thuật giải này là các chương trình con). Cách thức phân tích và thiết kế như vậy chúng ta gọi là nguyên lý lậptrình từ trên xuống (top-down), để thể hiện quá trình suy diễn từ cái chung cho đến cái cụ thể. Các chương trình con là những chức năng độc lập, sự ghép nối chúng lại với nhau cho chúng ta một hệ thống chương trình để giải quyết vấn đề đặt ra. Chính vì vậy, cách thức phân tích mộ t hệ thống lấy chương trình con làm nền tảng, chương trình con đóng vai trò trung tâm của việc l ập trình, được hiểu như phương pháp lậptrình hướg về thủ tục. Tuy nhiên, khi phân tích để thiết kế một hệ thống không nhất thiết phải luôn luôn suy nghĩ theo hướng “làm thế nào để giải quyết công việc”, chúng ta có thể định hướng tư duy theo phong cách “với một số đốitượng đã có, phải làm gì để giải quyết được công việc đặt ra” hoặc phong phú hơn, “làm cái gì với một số đốitượng đã có đó”, từ đó cũng có t hể giả i quyết được những công việc cụ thể. Với phương pháp phân tích trong đó đốitượng đóng vai trò trùng tâm của việc lậptrình như vậy, người ta gọi là nguyên lý lậptrình từ dưới lên (Bottom-up). h t tp : / / w ww.ebook . edu.vn 2 Lậptrìnhhướngđốitượng liên kết cấu trúc dữ liệu với các thao tác, theo cách mà tất cả thường nghĩ về thế giới quanh mình. Chúng ta thường gắn một số các hoạt động cụ thể với một loại hoạ t động nào đó và đặt các giả thiết của mình trên các quan hệ đó. Ví dụ1.1: Để dễ hình dùng hơn, chúng ta thủ nhìn qua các công trình xây dựng hiện đại, như sân vận động có mái che hình vòng cung, những kiến trúc thẩm mĩ với đường nét hình cong. Tất cả những sản phẩm đó xuất hiện cùng với những vật liệu xây dựng. Ngày nay, không chỉ chồng lên nhau những viên gạch, những tảng đá để tạo nên những quần thể kiến trúc (như Tháp Chàm Nha Trang, Kim Tự Tháp, ), mà có thể với bêtông, sắt thép và không nhiều lắm những viên gạch, người xây dựng cũng có thể thiết kế những công trình kiến trúc tuyệt mỹ, những toà nhà hiện đại. Chính các chất liệu xây dựng đã làm ảnh hưởng phương pháp xây dựng, chất liệu xây dựng và nguyên lý kết dính caá chất liệu đó lại với nhau cho chúng ta một đốitượng để khảo sát, Chất liệu xây dựng và nguyên lý kết dính các chấ t liệu lại với nhau được hiểu theo nghĩa dữ liệu và chương trình con tác động trên dữ liệu đó. Ví dụ1.2: Chúng ta biết rằng một chiếc xe có các bánh xe, di chuyển được và có thể đổ i hướng của nó bằng cách quẹo tay lái. Tương tự như thế, một cái cây là một loại thực vật có thân gỗ và lá. Một chiếc xe không phải là một cái cây, mà cái cây không phải là một chiếc xe, chúng ta có thể giả thiết rằng cái mà chúng ta có thể làm được với một chiếc xe thì không thể làm được với một cái cây. Chẳng hạn, thật là vô nghĩa khi muốn lái một cái cây, còn chiếc xe thì lại chẳng lớn thêm được khi chúng ta tưới nước cho nó. Lậptrìnhhướngđốitượng cho phép chúng ta sử dụng các quá trình suy nghĩ như vậy với các khái niệm trừu tượng được sử dụng trong các chương trình máy tính. Một mẫu tin (record) nhân sự có thể được đọc ra, thay đổi và lưu trữ lại; còn số phức thì có thể được dùng trong các tính toán. Tuy vậy không thể nào lại viết một số phức vào tập tin làm mẫu tin nhân sự và ngược lại hai mẫu tin nhân sự l ạ i không thể cộng với nhau được. Một chương trìnhhướngđốitượng sẽ xác định đặc điểm và hành vi cụ thể của các kiểu dữ liệu, điều đó cho phép chúng ta biết một cách chính xác rằng chúng ta có thể có được những gì ở các kiểu dữ liệu khác nhau. Chúng ta còn có thể tạo ra các quan hệ giữa các kiểu dữ liệu tương tự nhưng khác nhau trong một chương trìnhhướngđối tượng. Người ta thường tự nhiên phân loại ra mọi thứ, thường đặ t mối liên hệ giữa các khái niệm mới với các khái niệm đã có, và thường có thể thực hiện suy diễn giữa chúng trên các quan hệ đó. Hãy quan niệm thế giới theo kiểu cấu trúc cây, với các mức xây dựng ch i tiết hơn kế tiếp nhau cho các thế hệ sau so với các thế hệ trước. h t tp : / / w ww.ebook . edu.vn 3 Đây là phương pháp hiệu quả để tổ chức thế giới quanh chúng ta. Các chương trìnhhướngđối t ượng cũng làm việc theo một phương thức tương tự, trong đó chúng cho phép xây dựng các các cơ cấu dữ li ệu và thao tác mới dựa trên các cơ cấu có sẵn, mang theo các tính năng của các cơ cấu nền mà chúng dựa trên đó, trong khi vẫn thêm vào các tính năng mới. Lậptrìnhhướngđốitượng cho phép chúng ta tổ chức dữ liệu trong chương trình theo mộ t cách tương tự như các nhà sinh học tổ chức các loại thực vật khác nhau. Theo cách nói lậptrình đố i tượng, xe hơi, cây cối, các số phức, các quyển sách đều được gọi là các lớp (Class). Một lớp là một bản mẫu mô tả các thông tin cấu trúc dữ liệu, lẫn các thao tác hợp lệ của các phần tử dữ liệu. Khi một phần tử dữ liệu được khai báo là phần tử của một lớp thì nó được gọi là mộ t đốitượng (Object). Các hàm được định nghĩa hợp lệ trong một lớp được gọi là các phương thức (Method) và chúng là các hàm duy nhất có thể xử lý dữ liệu của các đốitượng của lớp đó. Một thực thể (Instance) là một vật thể có thực bên trong bộ nhớ, thực chất đó là một đốitượng (nghĩa là một đối t ượng được cấp phát vùng nhớ). Mỗi một đốitượng có riêng cho mình một bản sao các phần tử dữ liệu của lớp còn gọi là các biến thực thể (Instance variable). Các phương thức định nghĩa trong một lớp có thể được gọi bởi các đố i tượng của lớp đó. Điều này được gọi là gửi một thông điệp (Message) cho đối tượng. Các thông đ i ệp này phụ thuộc vào đối tượng, chỉ đốitượng nào nhận thông điệp mới phải làm việc theo thông điệp đó. Các đốitượng đều độc lập với nhau vì vậy các thay đổi trên các biến thể hiện của đốitượng này không ảnh hưởng gì trên các biến thể hiện của các đốitượng khác và việc gửi thông điệp cho một đối t ượng này không ảnh hưởng gì đến các đốitượng khác. Như vậy, đối tợng được hiểu theo nghĩa là một thực thể mà trong đó caá dữ liệu và thủ tục tác động lên dữ liệu đã được đóng gói lại với nhau. Hay “đối tượng được đặc trưng bởi một số thao tác (operation) và các thông tin (information) ghi nhơ sự tác động của các thao tác này.” Ví dụ 1.3: Khi nghiên cứ về ngăn xếp (stack), ngoài các dữ liệu vùng chứa ngăn xếp, đỉnh của ngăn xếp, chúng ta phải cài đặt kèm theo các thao tác như khởi tạo (creat) ngăn xếp, kiểm tra ngăn xếp rỗng (empty), đẩy (push) một phần tử vào ngăn xếp, lấy (pop) một phần tử ra khỏi ngăn xếp. Trên quan điểm lấy đốitượng làm nền tảng, rõ ràng dữ liệu và các thao tác trên dữ liệu luôn gắn bó vớ i nhau, sự kết dính chúng chính là đốitượng chúng ta cần khảo sá t . Các thao tác trong đốitượng được gọi là các phương thức hay hành vi của đốitượng đó. Phương thức và dữ liệu của đốitượng luôn tác động l ẫn h t tp : / / w ww.ebook . edu.vn 4 nhau và có vai trò ngang nhau trong đối tượng, Phương thức của đốitượng được qui định bởi dữ liệu và ngược lại, dữ liệu của đốitượng được đặt trưng bởi các phương thức của đối tượng. Chính nhờ sự gắn bó đó, chúng ta có thể gởi cùng một thông điệp đến những đốitượng khác nhau. Điều này giúp người lậptrình không phải xử lý trong chương trình của mình một dãy các cấu trúc điều khiển tuỳ theo thông điệp nhận vào, mà chương trình được xử lý vào thời điểm thực hiện. Lậptrìnhhướngđốitượng là một mô hình có ưu thế trong những năm gần đây, thay thế cho "structured", công nghệ lậptrìnhhướng thủ tục là công nghệ mà đã được phát triển từ những năm 1970. Java là tổng hoà của hướngđốitượng và nó không thể lậptrình theo kiểu hướng thủ tục mà bạn đã thoải mái và quen thuộc với nó. Chúng tôi hi vọng với phần này - đặc biệt khi tổng hợp cùng với các ví dụ được hỗ trợ trong text và các website quen thuộc - sẽ giúp bạn đủ thông tin về OOP để trở thành đồng môn với Java. Chúng ta sẽ bắt đầu với câu hỏi đó, trên bề mặt, dường như không có thứ j làm với lập t rình: Làm thế nào mà các công ty như Compad, Dell, Gateway và các nhà sản xuất máy tính cá nhân khác l ạ i trở nên lớn và nhanh đến vậy? Hầu hết mọi người đều cho rằng họ làm ra những máy tính tốt và bán chúng với giá rẻ ở kỉ nguyên mà máy tính trở nên phát triển nhanh và gấp gáp. Nhưng trong t ương lai - họ đã sản xuất rất nhiều mô hình nhanh và đáp ứng lại sự thay đổi nhanh chóng? Một phần lớn của câu trả lời là những công ty này đã làm rất nhiều việc. Họ đã mua các thiết bị từ sự tin cậy của các đại lý và sau đó tập trung họ. Họ thường không đầu tư thời gian và tiền bạc cho việc thiết kế và xây dựng sức mạnh của hàng cung cấp, ổ đĩa, motherboard và các thiết bị khác. Điều này tạo cho các công ty sản xuất ra một sản phẩm và tạo sự thay đổi một cách nhanh chóng mà ít tốn kém tiền bạc nhất hơn là họ làm kĩ sư cho chính họ. Các nhà sản xuất máy tính cá nhân đã mua "các chức năng đã được đóng gói". Ví dụ, khi họ mua một bộ nguồn, họ đang mua một cái j đấy với các thuộc tính (kích cỡ, hình dạng và ) và t ấ t nhiên chức năng (bộ nguồn tốt, số power hiển thị và những điều khác). Compad cung cấp một ví dụ cụ thể về cách nó hoạt động hiệu quả. Khi Compad chuyển từ kĩ nghệ hầu hết các phần trong máy để mua các phần khác, nó cải thiện từ dưới. OOP Springs từ cùng một ý tướng. Chương trình của bạn được làm từ các object với các thuộc tính và các hoạt động mà các object có thể thực hiện. Khi bạn xây dựng một object hoặc mua nó thì phụ thuộc vào túi của bạn hoặc đúng giờ (tức là dung lượng bộ nhớ và thời gian). Nhưng về cơ bản, nó đủ để các object thoả mãn các đặc tả của bạn, bạn không phải quan tâm chức năng được bổ sung. Trong OOP, bạn chỉ quan tâm về các object bộc lộ những đ i ểm h t tp : / / w ww.ebook . edu.vn 5 j. Vì thế, những nhà sản xuất máy tính không quan tâm bên trong về nguồn cung cấp lâu như những j họ muốn, hầu hết các người lậptrình Java không quan tâm cách một object được bổ sung những j mà họ muốn. Cấu trúc lậptrình truyền thống bao gồm thiết kế một tập hợp các thủ tục (hoặc giải thuật) để giả i quyết vấn đề. Sau khi các thủ tục được xác định, bước tiếp theo là tìm cách kết hợp để lưu giữ data. Đ i ều này là điều giải thích nhà thiết kế ngôn ngữ Pascal, Niklaus Wirth, gọi quyển sách nổi tiếng về l ập trình của ông Giải thuật và Cấu trúc dữ liệu = Lậptrình (Prentice Hall, 1975). Chú ý rằng tribg tuêy đề của Wirth, giải thuật đi trước và cấu trúc dữ liệu đến sau. Cách này giống như các nhà lậptrình làm việc ở thời gian đó. Trước tiên, bạn quyết định cách thao t ác vớ i dữ liệu, sau đó bạn quyết định cấu trúc nào ép các dữ liệu này để việc thao tác dễ dàng hơn. OOP giữ việc sắp xếp và và put data vào trước sau đó mới dùng các giải thuật thao tác trên dữ li ệu. (Ngược với Pasca l ). Chìa khoá tạo nên sản phẩm trong OOP là tạo mỗi object sự phản hồi đi cùng với một t ập hợp các nhiệm vụ có liên quan. Nếu một object giảm nhẹ một nhiệm vụ mà không thuộc trách nh i ệm của nó, nó cần access đến một object khác chịu trách nhiệm đó. Object đầu tiên đề nghị object thứ hai mang nhiệm vụ ra ngoài. Nó được thực hiện với phiên bản tổng quát mà thủ tục gọi - bạn thường quen thuộc với lậptrìnhhướng thủ tục( Gọi lại trong ngôn ngữ lậptrình Java, các thủ tục này thường được gọ i là method calls). Về cá nhân, một object tốt nhất không bao giờ thao tác trực tiếp với dữ liệu bên trong của object khác, cũng không nên lộ dữ liệu cho object khác xử lý trực tiếp. Tất cả mọi việc giao tiếp nên thông qua method. Bằng cách đóng gói dữ liệu object, bạn giảm được tối đa, giảm sự phụ thuộc dữ li ệu, thời gian debug rút ngắn l ại. Tất nhiên, giống như module trong ngôn ngữ hướng thủ tục, bạn sẽ không muốn một object cá nhân làm quá nhiều. Cả việc thiết kế và debug đều trở nên đơn giản khi bản xây dựng các object nhỏ để thực hiện vài nhiệm vụ, hơn là xây dựng các object với các dữ liệu bên trong cực kì phức tạp với hàng trăm các thủ tục thao tác dữ li ệu. Tóm lại, so sánh lậptrình cấu trúc với chương trình con làm nền tảng: Chương trình = Cấu trúc dữ liệu + Thuật giả i Trong lậptrìnhhướngđốitượng chúng ta có : Đốitượng = Phương thức + Dữ li ệu h t tp : / / w ww.ebook . edu.vn 6 3 . 1.2 Các tính c h ất củ a l ậ p trình h ướng đ ố i t ư ợ ng: Đốitượng (object): Các dữ liệu và chỉ thị được kết hợp vào một đơn vị đầy đủ tạo nên một đố i tượng. Đơn vị này tương đương với một chương trình con và vì thế các đốitượng sẽ được chia thành hai bộ phận chính: phần các phương thức (method) và phần các thuộc tính (property). Trong thực t ế, các phương thức của đốitượng là các hàm và các thuộc tính của nó là các biến, các tham số hay hằng nội tại của một đốitượng (hay nói cách khác tập hợp các dữ liệu nội tại tạo thành thuộc tính của đố i tượng). Các phương thức là phương tiện để sử dụng một đốitượng trong khi các thuộc tính sẽ mô t ả đốitượng có những tính chất gì. Các phương thức và các thuộc tính thường gắn chặt với thực tế các đặc tính và sử dụng của mộ t đối tượng. Trong thực tế, các đốitượng thường được trừu tượng hóa qua việc định nghĩa của các l ớp (class). Tập hợp các giá trị hiện có của các thuộc tính tạo nên trạng thái của một đối tượng. Mỗ i phương thức hay mỗi dữ liệu nội tại cùng với các tính chất được định nghĩa (bởi người lập trình) được xem là một đặc tính riêng của đối tượng. Nếu không có gì lầm lẫn thì tập hợp các đặc tính này gọi chung là đặc tính của đối t ượng. Lậptrìnhhướngđốitượng là một phương pháp lậptrình có các tính chất chính sau: a) Tính trừu tượng (abstraction): Đây là khả năng của chương trình bỏ qua hay không chú ý đến một số khía cạnh của thông tin mà nó đang trực tiếp làm việc lên, nghĩa là nó có khả năng t ập trung vào những cốt lõi cần thiết. Mỗi đốitượng phục vụ như là một "động tử" có thể hoàn tất các công việc một cách nội bộ, báo cáo, thay đổi trạng thái của nó và liên lạc với các đốitượng khác mà không cần cho biết làm cách nào đốitượng tiến hành được các thao tác. Tính chất này thường được gọi là sự trừu tượng của dữ li ệu. Tính trừu tượng còn thể hiện qua việc một đốitượng ban đầu có thể có một số đặc đ i ểm chung cho nhiều đốitượng khác như là sự mở rộng của nó nhưng bản thân đốitượng ban đầu này có thể không có các biện pháp thi hành. Tính trừu tượng này thường được xác định trong khái niệm gọi là lớp trừu tượng hay hay lớp cơ sở trừu t ượng. b) Tính đóng gói (encapsulation) và che dấu thông tin (information hiding): Tính chất này không cho phép người sử dụng các đốitượng thay đổi trạng thái nội tại của một đối tượng. Chỉ có các phương thức nội tại của đốitượng cho phép thay đổi trạng thái của nó. Việc cho phép môi trường bên ngoài tác động lên các dữ liệu nội tại của một đốitượng theo cách nào là hoàn toàn tùy thuộc vào ngườ i viết mã. Đây là tính chất đảm bảo sự toàn vẹn của đối t ượng. h t tp : / / w ww.ebook . edu.vn 7 c) Tính đa hình (polymorphism): Thể hiện thông qua việc gửi các thông điệp (message). Việc gửi các thông điệp này có thể so sánh như việc gọi các hàm bên trong của một đối tượng. Các phương thức dùng trả lời cho một thông điệp sẽ tùy theo đốitượng mà thông điệp đó được gửi tới sẽ có phản ứng khác nhau. Người lậptrình có thể định nghĩa một đặc tính (chẳng hạn thông qua tên của các phương thức) cho một loạt các đốitượng gần nhau nhưng khi thi hành thì dùng cùng một tên gọ i mà sự thi hành của mỗi đốitượng sẽ tự động xảy ra tương ứng theo đặc tính của từng đốitượng mà không bị nhầm l ẫn. Thí dụ khi định nghĩa hai đốitượng "hinh_vuong" và "hinh_tron" thì có một phương thức chung là "chu_vi". Khi gọi phương thức này thì nếu đốitượng là "hinh_vuong" nó sẽ tính theo công thức khác với khi đốitượng là "hinh_tron". d) Tính kế thừa (inheritance): Đặc tính này cho phép một đốitượng có thể có sẵn các đặc tí nh mà đốitượng khác đã có thông qua kế thừa. Điều này cho phép các đốitượng chia sẻ hay mở rộng các đặc tính sẵn có mà không phải tiến hành định nghĩa lại. Tuy nhiên, không phải ngôn ngữ định hướngđốitượng nào cũng có tính chất này. 3 . 1.3 Các k h ái n iệ m trong lậptrình h ư ớ ng đ ố i t ư ợ ng 3.1.3.1 ĐốitượngĐốitượng là thực thể của hệ thống, của CSDL và được xác định thông qua định danh ID (IDentifier) của chúng. Mỗi đốitượng có tập các đặc trưng bao gồm: Các phần tài sản thường là các dữ liệu thành phần hay các thuộc tính mô tả các tính chất và các phương thức. Các thao tác trên các dữ liệu để xác định hành vi của đốitượng đó. Các mối quan hệ vớ i các đốitượng của các lớp khác. Như vậy, đốitượng được định nghĩa một cách trừu tượng như là một khái niệm, một cấu trúc gộp chung cả phần dữ liệu (thuộc tính) với các hàm (phương thức) thao tác trên những dữ liệu đó và có thể trao đổi với những đốitượng khác. Đốitượng là những thực thể được xác định trong thời gian hệ thống hướngđốitượng hoạ t động. Như vậy, đốitượng có thể biểu diễn cho người, vật, hay một bảng dữ liệu hoặc bất kỳ một hạng thức nào đó cần xử lý trong chương trình. Mỗi đốitượng chỉ tồn tại trong thời gian nhất định trong hệ thống. h t tp : / / w ww.ebook . edu.vn 8 3.1.3.2 Lớp đốitượng Lớp là bản mẫu hay một kiểu chung cho tất cả những đốitượng có những đặc trưng giống nhau, nghĩa là có các thuộc tính và hành vi giống nhau. Mỗi đốitượng chính là thể hiện (một cá thể, đại diện) của một lớp xác định.Phương pháp lậptrìnhhướngđốitượng là cách phân chia chương trình thành các đơn thể (các lớp) bằng cách tạo ra các vùng bộ nhớ cho cả dữ liệu lẫn hàm và chúng sẽ được sử dụng như các mẫu để tạo ra bản sao từng đốitượng khi chúng được tạo ra trong hệ thống. Con người Xe máy Tên: Nam Tuổi: 28 Trọng lượng: 65 kgs Hành động: Đ i Nói Suy nghĩ Loại: Future Màu: Đỏ Năm : 1995 Hành động: Khởi động Ngừng Chuyển động Hình: Một đốitượng Con người và một đốitượng Xe máy Lớp chính là tập các đốitượng có cùng các thuộc tính và hành vi giống nhau. Các thành phần của lớp có thể chia thành ba vùng quản lý chính: + Công khai (public), + Được bảo vệ (protected), + Riêng (private). h t tp : / / w ww.ebook . edu.vn 9 Lớp Con người - Tên: Kiểu chuỗ i - Tuổi: Kiểu sốố - Trọng lượng: Kiểu sốố . Đ i . Nói . Suy nghĩ Lớp Xe máy - Loại: Kiểu chuỗ i - Màu: Kiểu chuỗ i - Năm: Kiểu sốố . Khởi động . Ngừng . Chuyển động Hình: Một Lớp Con người và một Lớp Xe máy Chú ý: Sự khác biệt thực sự giữa một lớp và một đối t ượng: 9 Một lớp định nghĩa một thực thể, trong khi đó một đốitượng là một trường hợp của thực thể ấy. 9 Đốitượng là một mô hình thực, trong khi lớp là một mô hình khái niệm - định nghĩa tất cả các thuộc tính và các phương thức cần thiết của mộ t đối t ượng. 9 Tất cả các đốitượng thuộc về cùng một lớp có cùng các thuộc tính và các phương thức. 9 Một lớp là một nguyên mẫu của một đối tượng. Nó xác định các hành động khả thi và các t huộc tính cần thiết cho một nhóm các đốitượng cụ thể 3.1.3.3 Trừu tượng hóa dữ liệu (Abstraction) Quá trình trừu tượng hoá chỉ tập trung vào những tính chất chung nhất, chính nhất và bỏ qua những chi tiết vụn vặt. Ta nói rằng từ mô hình dữ liệu có thể dẫn ra những kiểu dữ liệu trừu t ượng.Kiểu dữ liệu trừu tượng là một mô hình dữ liệu dựa trên những những đặc tính chính và một số phép toán xác định trên những cấu trúc dữ liệu đã lựa chọn, phục vụ cho việc giải một lớp các bài toán nào đó. Trừu tượng hóa là sự mở rộng khái niệm kiểu dữ liệu và cho phép định nghĩa những phép toán trừu tượng trên các dữ liệu trừu tượng. Khi xây dựng phần mềm thì nguyên lý trừu tượng hoá được thực hiện thông qua việc trừu tượng hoá các chức năng, hàm (thuật toán) và trừu tượng hoá các kiểu dữ li ệu nguyên thuỷ. h t tp : / / w ww.ebook . edu.vn 10 [...]... Truyền thông điệp (Message Passing) Chương trình hướngđốitượng bao gồm một tập các đốitượng và mối quan hệ giữa các đốitượng đó với nhau Lậptrình trong ngôn ngữ hướngđốitượng bao gồm các bước sau: 9 Tạo ra các lớp đốitượng và mô tả hành vi của chúng, 9 Tạo ra các đốitượng theo định nghĩa của các lớp, 9 Xác định sự trao đổi thông tin giữa các đốitượng trong hệ thống Nguyên lý trao đổi thông tin... (instance) của một class nào đó trong bộ nhớ Đốitượng là một trị có thể được tạo ra, lưu giữ và sử dụng Trong C# tất cả các biến đều là đốitượng Các biến kiểu số, kiểu chuỗi … đều là đốitượng Mỗi một đốitượng đều có các biến thành viên để lưu giữ dữ liệu và có các phương thức (hàm) để tác động lên biến thành viên Mỗi đốitượng thuộc về một lớp đốitượng nào đó Các đốitượng có cùng lớp thì có cùng các biến... mỗi đốitượng trong lớp Do đó, với mỗi thành phần, chúng ta có thể hình dung chúng là một bản sao cho mỗi đốitượng được tạo ra - Lập trìnhhướngđốitượng cho phép gắn một thành phần dữ liệu hoặc một phương thức cho cả một lớp Chỉ có một bản sao như một thực thể và các đốitượng dùng nó như nhau Tức là tất cả các đốitượng cùng nhau chia sẻ thành phần tĩnh Thành phần tĩnh tồn tại ngay khi không một đối. .. một đốitượng tức là báo cho nó phải thực hiện một việc, một yêu cầu (thỉnh cầu) nào đó Cách ứng xử của đốitượng sẽ được mô tả ở trong lớp thông qua các hàm công khai (hay còn được gọi là lớp dịch vụ) Trong chương trình, thông điệp gửi đến cho một đốitượng chính là để yêu cầu thực hiện một công việc cụ thể, nghĩa là sử dụng những hàm tương ứng để xử lý dữ liệu đã được khai báo trong lớp đối tượng. .. thời (:Computer) gửi đến cho đốitượng :PrinterServer một yêu cầu Print(dataFile) http://www.ebook.edu.vn 14 Phần II: Lập trìnhhướngđốitượng với C#. NET 3.2.1 Lớp 3.2.1.1 Định nghĩa lớp Class – là một định nghĩa cho một kiểu của người dùng (user-defined type – UDT) Class hay còn gọi là lớp là sự gói gọn các dữ liệu và phương thức (method ) hoạt động trên dữ liệu đó.Trong C# lớp được coi là kiểu dữ... thông tin thêm về mục đó đựợc bỏ trong assembly đuợc biên dịch dùng cho mục đích hướng dẫn thêm 1 số attribute được định nghĩa trong các lớp cơ sở được nhận ra bởi trình biên dịch C#. mà từ đó trình biên dịch có thể gây ra những tác động trên mã Ví dụ trên trình biên dịch sẽ biên dịch mã của mục Conditional chỉ nếu biểu tượng DEBUG đã được định nghĩa trước Trong phần này ta sẽ xem xét 3 attribute sau... obsolete ( không dùng nữa) Tuỳ thuộc vào việc thiết lập trên attribute này, trình biên dịch sẽ sinh ra 1 cảnh báo hay lỗi nếu nó gặp bất kì mã nào cố gắng dùng phương thức này Ví dụ 3.2-1: Khai báo một lớp public class MyClass { public static int Main( ) { } } 3.2.1.2 Đốitượng Khi khai báo một lớp ta định nghĩa các đặc tính chung của tất cả các đốitượng của lớp và các hành vi của chúng Object – chỉ... thêm một số thuộc tính, hàm để mô tả được đúng các hành vi của những đốitượng mà lớp A quản lý + Viết đè (thay đổi hành vi ứng xử) của các hàm được kế thừa 3.1.3.6 Đa xạ (tương ứng bội) và nạp chồng (Polymorphism and Overloading) ¾ Đa xạ là kỹ thuật được sử dụng để mô tả khả năng gửi một thông điệp chung tới nhiều đốitượng mà mỗi đốitượng lại có cách xử lý riêng theo ngữ cảnh của mình http://www.ebook.edu.vn... hạn chế những truy nhập tùy tiện của những đốitượng khác Đóng gói dữ liệu và các hàm vào một đơn vị cấu trúc (gọi là lớp) được xem như một nguyên tắc bao bọc thông tin Các hàm thành phần công khai của lớp sẽ đóng vai trò như là giao diện giữa các đốitượng và với phần còn lại của hệ thống Nguyên tắc bao bọc dữ liệu để ngăn cấm sự truy nhập trực tiếp trong lậptrình được gọi là sự che giấu thông tin Dữ... truong {2}", ten, chan, moitruong); //} } vidu4 Xét phương thức ảo : nhưng sử dụng với từ khóa abstract 3.2.3.4 Phương thức ToString() - Đây là phương thức của đốitượng object (và chứa tất cả các đốitượng khác) thường dùng để chuyển đổi một đốitượng bất kỳ sang kiểu chuỗi ví dụ: int myInterger=5; string intString=myInterger.ToString(); http://www.ebook.edu.vn 35 Chuỗi intString có gí trị là “5” bằng . tiêu đề là Lập trình hướng đối tượng trong C# . Chương gồm 2 phần sau: - Phần I: Lập trình hướng đối t ượng. Phần này giới thiệu về phương pháp tiếp cận hướng đối tượng trong lập trình với các. chất, khái niệm của nó. - Phần II: Lập trình hướng đối tượng trong C#. Phần này đề cập đến việc lập trình hướng đối tượng trong ngôn ngữ lập trình mạnh hiện nay là C#, bao gồm việc khai báo lớp,. các chương trình hướng đối tượng làm tường minh mối quan hệ này. Lập trình hướng đối tượng (Object Oriented Programming - gọi tắt là OOP) hay chi tiết hơn là Lập trình định hướng đối tượng, chính